{
  "schema_version": 1,
  "description": "Canonical lightweight ledger for Primo benchmark, fuzzing, profiling, tuning, and reference-comparison runs.",
  "entries": [
    {
      "id": "2026-10-28-long-limits-documentation-status",
      "date": "2026-10-28",
      "kind": "existing-evidence-status-inspection",
      "evidence_status": "existing timing and ground-model audit complete; native errors keep comparison diagnostic",
      "inspected_git": "e3974390750af76d068b4772dd01c84dff6a1abb",
      "measured_native_git": "4419dc902f03fe12b8933d5dee4378dd11497035",
      "parent_run": "2026-10-24-all-theories-enforced-memory",
      "report": "docs/coverage/long-limits-status-20261028.json",
      "inspection": "Read-only SSH: squeue for owner, SHA256 and selected JSON fields from timing-audit.json and qualified-audit.json. No solver process or benchmark job started.",
      "resources": "Original campaign: CPU SLURM, 1200s/input, 8GiB soft/hard RLIMIT_AS; no new measurement.",
      "summary": {
        "timing_status": "timing-complete",
        "final_status": "complete-diagnostic-native-errors",
        "direct_dolmen_ground_models": 13484,
        "native_execution_errors": 1052,
        "headline_and_default_promotion_blocked": true
      },
      "limitations": "Existing audit summaries inspected, not raw artifacts reaggregated. Frozen binary does not qualify later implementations. Quantified printed models unsupported; reference gaps and original error classifications retained."
    },
    {
      "id": "2026-10-27-publication-secret-audit",
      "date": "2026-10-27",
      "kind": "publication-secret-audit",
      "evidence_status": "four local scans clean; hosted content and publication rights outside scope",
      "candidate_git": "7bdfa8bf09179db9369c37686e88c6cb83ca1d0c",
      "report": "docs/coverage/secret-audit-20261027.json",
      "raw_artifacts": "results/secret-audit-20261027/",
      "tool": "Gitleaks 8.30.1, checksum-verified official binary; default rules, no project suppressions, full redaction",
      "summary": {
        "reachable_commits": 1700,
        "complete_historical_blobs": 8211,
        "tracked_worktree_files": 1240,
        "remote_branches": 36,
        "remote_tags": 2,
        "local_mirror_refs": 102,
        "secret_detections": 0,
        "credential_ssh_reading_binary_archive_filename_candidates": 0
      },
      "coverage": "Git patches, full historical blobs, tracked working tree, commit messages, ref/tag annotations and historical path names. Remote refs identical before/after. Separate synthetic private-key positive control passes.",
      "execution": "Local static analysis only; no solver run or history rewrite. Supplemental full-blob scan restricted to two CPUs during execution.",
      "limitations": "Hosted Actions logs/artifacts, release assets and issue/PR attachments unreviewed: no GitHub API authentication. No content-rights approval or guarantee of absence of all secret types. Patch-count difference documented and supplemented by full-blob/metadata coverage."
    },
    {
      "id": "2026-10-27-uf-rollback-memory",
      "date": "2026-10-27",
      "kind": "paired-resource-diagnostic",
      "evidence_status": "complete focused sample; no full-corpus/default claim; neither prior failure recovered",
      "jobs": {
        "paired_cpu_array": "258443"
      },
      "measurement_commit": "170d0ec",
      "qualification": "docs/coverage/uf-rollback-memory-20261027.json",
      "manifest": "benchmarks/uf-rollback-memory-20261027.json",
      "raw_artifacts": "results/uf-rollback-memory-20261027/258443/",
      "native_source_git": {
        "baseline": "0d5970400743e1403b7160b7f0126de6ececa8fe",
        "fixed": "ed8c227aea49925ed8117f656bf44f14a030a4b9"
      },
      "binary_sha256": {
        "baseline": "3b464f63254ff87309c18850f3ea2e3f36bdd45c82cf97842faa5434e0f3e901",
        "fixed": "4a680d24feef6b49947bf1ec6610170b78bc6d7307ccce055a1874d41bee40d4"
      },
      "execution": {
        "location": "CPU SLURM compute partition; Xeon E5-2690 v4; one pinned CPU per paired case",
        "reservation": "10GiB; requested 1 CPU, allocated 2 logical CPUs, pinned to one",
        "solver_rlimit_as_bytes": 8589934592,
        "solver_timeout_seconds": 180,
        "solver_args": [
          "--quiet",
          "--stats"
        ],
        "repetitions_per_binary_per_case": 3,
        "order": "alternating AB/BA; same allocation per input",
        "memory": "wait4 process max RSS; /proc VmPeak sampled every 50ms is a lower bound"
      },
      "summary": {
        "inputs": 6,
        "quantified_uf_inputs": 4,
        "qf_uf_inputs": 2,
        "solver_runs": 36,
        "solved_inputs_per_binary": 4,
        "unsat_runs": 24,
        "explicit_allocation_failure_runs": 6,
        "cleanup_abort_runs": 6,
        "timeouts": 0,
        "other_errors": 0,
        "declared_or_paired_answer_disagreements": 0,
        "sat_answers_requiring_validation": 0
      },
      "correctness": "Fixed native binary is already correctness-qualified in 2026-10-27-static-diagnostic-repair. All successful runs agree with declared UNSAT and paired answers; no new independent UNSAT certification. No SAT answers to replay. Cleanup abort is preserved separately, not blanket-classified as a confirmed fresh OOM trace.",
      "analysis": "Neither memory failure recovered. Solved-case median time changes -2.24% to +0.46%, mixed memory changes; all non-timer counters match per solved input. Quantified UNSAT incremental EUF zeros expose an unflushed-statistics limitation, not measured resident-node counts.",
      "commands": [
        "sbatch scripts/qualification/uf_memory/paired.sbatch (PRIMO_WORKDIR, PRIMO_UF_PLAN, PRIMO_UF_ROOT, PRIMO_QF_UF_ROOT, PRIMO_UF_OUT, PRIMO_UF_BASELINE, PRIMO_UF_FIXED supplied outside tracked files)",
        "python3 scripts/summarize_uf_memory.py --plan benchmarks/uf-rollback-memory-20261027.json --results results/uf-rollback-memory-20261027/258443 --output docs/coverage/uf-rollback-memory-20261027.json"
      ],
      "limitations": [
        "Six selected diagnostics, not an unbiased full-corpus evaluation.",
        "No final solver counters on failed runs; no peak closure-size or unreachable-term measurement.",
        "Quantified UNSAT EUF counter publication needs repair; this task changes no solver source."
      ]
    },
    {
      "id": "2026-10-27-static-diagnostic-repair",
      "date": "2026-10-27",
      "kind": "resource-regression-and-static-triage",
      "evidence_status": "correctness-qualified; warnings triaged, follow-ups explicit; no timing/default claim",
      "native_source_git": "ed8c227aea49925ed8117f656bf44f14a030a4b9",
      "binary_sha256": "4a680d24feef6b49947bf1ec6610170b78bc6d7307ccce055a1874d41bee40d4",
      "reference_sha256": {
        "z3": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0",
        "cvc5": "4a93548398445cf1a774655583f5465b156c26f63f2cdfb94f4728fdf7adde46",
        "dolmen": "08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e"
      },
      "jobs": {
        "checks": "258339",
        "asan": "258340",
        "generated": "258341",
        "online": "258342",
        "build": "258327",
        "baseline": "258350",
        "asan_cli": "258361",
        "online_accepted": "258416"
      },
      "execution": {
        "native": "CPU SLURM compute partition; isolated source workspace",
        "local": "Static analysis, result audit, lint and mocked metadata tests only; no local solver batch",
        "reservations": {
          "build": "4 CPUs/8GiB/30min",
          "release_and_asan": "4 CPUs/12GiB/40min each",
          "public_fuzz_shard": "1CPU/4GiB/30min",
          "online_fuzz_shard": "1CPU/4GiB/60min",
          "baseline_probe": "1CPU/4GiB/10min",
          "asan_cli": "1CPU/2GiB/3min"
        },
        "solver_timeout_seconds": 5,
        "dolmen_timeout_seconds": 10,
        "session_dolmen_timeout_seconds": 20,
        "validator_size_limit": "1G",
        "memory_limit_note": "Scheduler requests are reservations, not claimed hard per-process limits. ASan has no virtual-address-space cap. Local broad analysis used two workers, 8GiB inherited RLIMIT_AS per process and 30min outer deadline."
      },
      "qualification": "docs/coverage/static-diagnostic-repair-qualification-20261027.json",
      "triage": "docs/coverage/local-static-triage-20261027.json",
      "raw_artifacts": "results/static-diagnostics-20261027/",
      "summary": {
        "diagnostics_triaged": 745,
        "confirmed_issue": "Disabled representative-proof arrays allocated during pop",
        "release_tests": 45,
        "asan_lsan_tests": 45,
        "python_tests_at_native_snapshot": 284,
        "focused_current_tooling_tests": 27,
        "generated_inputs_or_sessions": 4200,
        "direct_dolmen_models": 8086,
        "incremental_queries": 9000,
        "wrong_answers": 0,
        "fuzz_crashes": 0,
        "untriaged_reference_disagreements": 0,
        "invalid_models": 0,
        "fuzz_timeouts": 0,
        "fresh_static_translation_units": 132,
        "unused_include_gate_blockers": 0
      },
      "commands": [
        "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir FROZEN_NATIVE_SNAPSHOT --reuse-dependencies --build-via-slurm --jobs 4 --extra-target all --cxx-header-manifest HEADER_MANIFEST",
        "PRIMO_MERGE_PHASE=checks|asan sbatch scripts/qualification/migration_main_merge.sbatch",
        "PRIMO_EXPECTED_REVISION=ed8c227 PRIMO_SEED_BASE=2026102710 sbatch --array=0-3,12-15,24-27%4 scripts/qualification/public_launch.sbatch",
        "PRIMO_FUZZ_COUNT=250 PRIMO_FINITE_DOMAIN_FUZZ_COUNT=25 PRIMO_FUZZ_SEED_BASE=2026102710 PRIMO_FUZZ_SOLVER_ARGS=--qf-uflra-online-euf PRIMO_EXPECTED_REVISION=ed8c227 sbatch --array=0-3%2 scripts/slurm_qf_uflra_fuzz_gate.sbatch",
        "sbatch scripts/qualification/rollback_regression.sbatch",
        "make tidy STATIC_BUILD_DIR=build-static-audit STATIC_REPORT_DIR=results/static-diagnostics-20261027/final-tidy",
        "make include-cleaner STATIC_BUILD_DIR=build-static-audit STATIC_REPORT_DIR=results/static-diagnostics-20261027/includes",
        "python3 scripts/qualification/summarize_static_diagnostics.py --artifacts results/static-diagnostics-20261027 --out QUALIFICATION_JSON",
        "make lint"
      ],
      "provisional_attempts": [
        {
          "job": 258342,
          "status": "setup failure: cvc5 missing; no generated solver cases"
        },
        {
          "job": 258365,
          "status": "answer checks pass; finite-QF_UF models omitted by old gate"
        },
        {
          "job": 258383,
          "status": "provisional replay: finite-QF_UF omitted forced strong option"
        },
        {
          "job": 258388,
          "status": "provisional replay: strong was incorrectly added to finite-QF_UFLRA"
        },
        {
          "job": 258405,
          "status": "profiles correct; superseded by run258416 with before/after binary fingerprints"
        }
      ],
      "scope": "One conditional-storage repair; new unused-include gate and replay/provenance workflow fixes. Follow-ups retain exception-contract, dependency leak, test presence checks, direct includes and copy/layout/API advice. No solver profile/default/search heuristic change.",
      "workflow_sha256": {
        "scripts/slurm_qf_uflra_fuzz_gate.sbatch": "cfcfbc95203702dbd1e51092084725bdad37a8b48c517a23b20e40c16f02d2dc",
        "scripts/qualification/rollback_regression.sbatch": "76bb5a9dcbaaba84f5969a725d5d3fa39221b5c4e62350aad9b643abc47bdf5d",
        "scripts/qualification/summarize_static_diagnostics.py": "030d1deea3e0abbc4e639b71bfab8ab190c8fc21112a8483f67c11c72aa07ce2",
        "scripts/summarize_static_analysis.py": "06d2bcaee0c8f113fac3d69ffea776ee5cd5e1387b302d299ab760d65c55da47"
      },
      "verification_limits": {
        "static_tool_tests_current": 26,
        "model_replay_workflow_tests_current": 1,
        "model_replay_scenarios": [
          "default profile",
          "requested preprocessing override",
          "binary change rejected"
        ],
        "full_python_suite": "284 tests on frozen native snapshot ed8c227; current changed tooling covered separately by 27 focused local tests."
      }
    },
    {
      "id": "2026-10-27-local-static-analysis",
      "date": "2026-10-27",
      "source_git": "88ca31342d15c1e8bdebef176cd6b2d7b15daaec",
      "evidence_status": "complete-with-findings; diagnostic inventory, not a correctness or performance qualification",
      "execution": {
        "location": "local workstation; explicitly authorized for static analysis",
        "jobs": 2,
        "nice": 10,
        "address_space_limit_bytes_per_process": 8589934592,
        "aggregate_memory_limit": "No aggregate reservation; inherited address-space limit is per process.",
        "tidy_overall_timeout_seconds": 1800,
        "header_timeout_seconds": 60,
        "solver_execution": false,
        "solver_build": false,
        "configure_probes": "CMake may compile/link small compiler/dependency capability probes."
      },
      "tools": {
        "clang": "Ubuntu LLVM 18.1.3",
        "clang-tidy": "Ubuntu LLVM 18.1.3",
        "run-clang-tidy": "distribution /usr/bin/run-clang-tidy-18 with /usr/bin/python3 and PyYAML 6.0.1",
        "ruff": "0.16.1"
      },
      "profile": {
        "checks": [
          "clang-diagnostic-*",
          "clang-analyzer-*",
          "bugprone-*",
          "performance-*",
          "portability-*",
          "misc-include-cleaner"
        ],
        "config_sha256": "cfdfbdb2c3d2d45bcea7a3fd1fff203acdcd96e465df958fb067222f9910a7ac",
        "auto_fixes_applied": false,
        "header_filter": "(^|/)(src|tests|docs/examples)/",
        "note": "Analyzer path reports may still point into dependencies. No diagnostics have been blanket-suppressed."
      },
      "commands": [
        "ulimit -v 8388608; nice -n 10 timeout -k 10s 30m make tidy STATIC_BUILD_DIR=build-static-audit STATIC_REPORT_DIR=results/local-static-20261027/final",
        "ulimit -v 8388608; nice -n 10 python3 scripts/check_static_headers.py --database results/local-static-20261027/make-check/database/compile_commands.json --out results/local-static-20261027/headers --jobs 2",
        "python3 -m unittest discover -s tests/python -p 'test_*static_analysis*.py'",
        "make lint"
      ],
      "coverage": {
        "translation_units": 132,
        "compile_commands": 132,
        "derived_commands": [
          {
            "file": "docs/examples/boolean-abstraction.cpp",
            "flags_from": "src/smt/solver_engines.cpp"
          },
          {
            "file": "docs/examples/rational-layout.cpp",
            "flags_from": "src/smt/solver_engines.cpp"
          },
          {
            "file": "docs/examples/soi-zero-step.cpp",
            "flags_from": "src/smt/solver_engines.cpp"
          },
          {
            "file": "docs/examples/term-layout.cpp",
            "flags_from": "src/smt/solver_engines.cpp"
          },
          {
            "file": "tests/bench/word_gcd_bench.cpp",
            "flags_from": "src/util/rational.cpp"
          }
        ],
        "standalone_headers": 100,
        "header_contexts": 1,
        "header_checks": 100,
        "header_passes": 100
      },
      "limits": [
        "The remaining diagnostics are not individually accepted or classified. Suggestions involving copies, references, enums or includes require ownership/layout/source review and appropriate verification before changes.",
        "No solver C++ changes, solver execution, fuzzing, model validation or performance measurements in this local audit.",
        "No cross-translation-unit analyzer setup, full Clang code-generation/link/test qualification, clangd check, UBSan/MSan/TSan workload or source-based coverage run.",
        "Standalone syntax covers one configured Debug feature profile and explicit derived contexts, not every feature/template configuration."
      ],
      "kind": "static-analysis",
      "artifact": "docs/coverage/local-static-20261027.json",
      "raw_artifacts": "results/local-static-20261027/",
      "diagnostics": {
        "unique": 745,
        "counts": {
          "misc-include-cleaner": 409,
          "performance-enum-size": 81,
          "bugprone-easily-swappable-parameters": 40,
          "bugprone-unchecked-optional-access": 109,
          "bugprone-exception-escape": 12,
          "clang-analyzer-optin.performance.Padding": 1,
          "performance-inefficient-string-concatenation": 8,
          "performance-faster-string-find": 3,
          "performance-inefficient-vector-operation": 6,
          "performance-unnecessary-value-param": 15,
          "performance-move-const-arg": 23,
          "bugprone-implicit-widening-of-multiplication-result": 4,
          "clang-analyzer-optin.core.EnumCastOutOfRange": 16,
          "performance-no-automatic-move": 1,
          "performance-unnecessary-copy-initialization": 3,
          "clang-analyzer-cplusplus.NewDeleteLeaks": 1,
          "bugprone-optional-value-conversion": 2,
          "bugprone-branch-clone": 5,
          "bugprone-assert-side-effect": 6
        }
      },
      "verification": {
        "metadata_unit_tests": 15,
        "make_lint": "passed"
      },
      "preparation_failures": [
        "Existing compilation databases were stale or omitted tracked standalone files; final analysis uses a fresh Clang CMake database plus five documented derived contexts.",
        "Initial broad run1 returned nonzero because main.cpp lacked the generated Git revision header. A main-only retry parsed successfully, but was not used to override the failed aggregate.",
        "Final whole-source scan used the corrected analysis-db target, including metadata header generation, and returned zero."
      ]
    },
    {
      "id": "2026-10-27-main-migration-merge",
      "date": "2026-10-27",
      "kind": "merge-correctness-qualification",
      "evidence_status": "correctness-qualified-no-new-performance-claim",
      "main_parent": "97e6e11223e92d284df54f426e49b1da7bcb6dd2",
      "migration_parent": "97bb4266200f79032b6202e78d43abcdc2f5c1b2",
      "native_source_git": "0d5970400743e1403b7160b7f0126de6ececa8fe",
      "scope": "Merge existing automatic declared-QF_LRA rebuild/auto phase and monotone policies with the shared assignment/integer drivers, conflict-budget repairs and default-off equality experiment. Bound diagnostics excluded. Historical timings remain tied to their original binaries.",
      "execution": {
        "scheduler": "CPU SLURM compute partition",
        "isolated_workspace": true,
        "ongoing_benchmark_workspace_unchanged": true,
        "per_process_memory_limits": {
          "generated": "5-second solver/reference timeouts; 4GiB scheduler reservation per1CPU.",
          "integer_retry": "8GiB scheduler reservation per1CPU and8GiB process address-space limit.",
          "additional_lra": "5-second solver/reference,10-second Dolmen;6GiB reservation per1CPU.",
          "mutations": "5-second mutation solve,10-second answer replay,30-second model replay;4GiB reservation per1CPU.",
          "checks_asan_static": "12GiB reservation per4CPUs; ASan has no address-space cap.",
          "tooling": "4GiB reservation per2CPUs.",
          "note": "Scheduler reservations are not claimed as hard per-process limits; the long-limit benchmark has its own separately enforced8GiB RLIMIT_AS."
        },
        "job_ids": {
          "build": 258048,
          "checks": 258057,
          "asan": 258058,
          "static": 258059,
          "generated_initial": 258060,
          "generated_integer_retry": 258103,
          "mutations": 258061,
          "additional_lra": 258062,
          "artifact_audit": 258111,
          "tooling_initial": 258120,
          "tooling_dependency_failure": 258124,
          "tooling_final": 258128
        }
      },
      "commands": [
        "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir CLEAN_CANDIDATE --reuse-dependencies --build-via-slurm --jobs 4 --extra-target all --cxx-header-manifest HEADER_MANIFEST",
        "PRIMO_MERGE_PHASE=checks|asan|static|lra sbatch scripts/qualification/migration_main_merge.sbatch",
        "PRIMO_EXPECTED_REVISION=0d59704 PRIMO_SEED_BASE=202610270 PRIMO_BUDGET_REPLAY=1 sbatch --partition=compute --array=0-31%4 scripts/qualification/public_launch.sbatch",
        "PRIMO_EXPECTED_REVISION=0d59704 PRIMO_SEED_BASE=202610270 sbatch --partition=compute --array=0-1%2 scripts/qualification/public_mutations.sbatch",
        "PRIMO_GATE_JOB=258060 PRIMO_INTEGER_JOB=258103 PRIMO_MUTATION_JOB=258061 PRIMO_MERGE_PHASE=report sbatch scripts/qualification/migration_main_merge.sbatch",
        "PRIMO_MERGE_PHASE=tooling PRIMO_MERGE_ATTEMPT=final PRIMO_TOOLING_WORKDIR=CLEAN_TOOLING_SNAPSHOT sbatch scripts/qualification/migration_main_merge.sbatch"
      ],
      "planned_gate": {
        "public_generated_inputs_or_sessions": 8000,
        "per_route": 1000,
        "routes": [
          "QF_UF",
          "QF_LRA",
          "QF_LIA",
          "QF_UFLRA",
          "QF_UFLIA",
          "UF",
          "incremental_QF_UF",
          "incremental_QF_LRA"
        ],
        "additional_LRA_explicit_phase_monotone": 2000,
        "additional_LRA_equality_row_reverse": 1000,
        "additional_LRA_seeds": [
          2026102701,
          2026102702
        ],
        "generated_timeout_seconds": 5,
        "ground_model_validator": "Dolmen",
        "reference": "Z3",
        "mutations": "14 real QF_LRA seeds x8 and2 real QF_UFLRA seeds x50; original seeds checked before mutation; retained models replayed independently",
        "status": "completed; counts and incomplete outcomes are in results"
      },
      "validation": {
        "lint": "make lint passed",
        "documentation": "make docs-check-links passed265pages33235local1102Gitlinks with0failures;1306compatibility targets preserved; external HTTP not rechecked.",
        "ledger": "Structured three-way union preserved729distinct parent entries and every branch-specific update before adding this run.",
        "python_tooling": "Final mandatory recommended Ruff checks and269Python tests passed on CPU SLURM258128;21shebang modes,29import-order findings,4missingcheck= arguments and31additional recommended findings repaired. Intentional gate-heredoc exec and reporting boundaries have narrow documented suppressions.",
        "report_runner_retry": "258143 completed0; report-final matches original aggregate report byte-for-byte (SHA25672de4c5fa1ea04da17ca012956886a7fc2f15424cdb69d7b8d5da86ccf4786b5)."
      },
      "artifacts": {
        "local": "results/main-migration-merge-20261027",
        "remote_relative": "results/merge-qualification, results/public-launch/258060, results/public-mutations/258061",
        "local_terminal_accounting": "results/main-migration-merge-20261027/final-jobs.txt",
        "local_final_tooling": "results/main-migration-merge-20261027/qualification/tooling-final"
      },
      "limitations": [
        "No fresh full-corpus performance evaluation of combined implementation.",
        "Existing1200-second timing/model campaign continues on its frozen4419dc9 source.",
        "No complete LLVM toolchain qualification: this milestone uses GCC release/ASan and Clang18 tidy/format. Clang compiler, clangd, UBSan and CTU coverage are not claimed."
      ],
      "native_binary_sha256": "3b464f63254ff87309c18850f3ea2e3f36bdd45c82cf97842faa5434e0f3e901",
      "native_source_equivalence_manifest_sha256": "4fb88da10ade709fe32fc8d3ba64683c40961c894646de5c978b80aac79c3661",
      "results": {
        "generated_inputs_or_sessions": 11000,
        "generated_pass": 10985,
        "generated_timeout": 15,
        "real_seeds": 16,
        "real_mutants": 212,
        "wrong_answers": 0,
        "untriaged_errors": 0,
        "invalid_models": 0,
        "direct_dolmen_models": 20950,
        "budget_replay_samples": 800,
        "budget_outcomes": {
          "pass": 351,
          "resource-exhausted": 449
        },
        "budget_queries": 2600,
        "budget_query_conflicts": {
          "0": 1978,
          "1": 622
        },
        "quantified_models_independently_validated": false
      },
      "verification": {
        "release_tests": {
          "passed": 45,
          "total": 45,
          "job": 258057
        },
        "asan_tests": {
          "passed": 45,
          "total": 45,
          "job": 258058
        },
        "python_tests": {
          "passed": 269,
          "total": 269,
          "job": 258128,
          "tooling_source_snapshot": "d1f9eb2fff774bf43fd7bd9a949c65857b0d7b57"
        },
        "documentation_examples": {
          "passed": 12,
          "total": 12,
          "job": 258057
        },
        "static": {
          "job": 258059,
          "source_test_translation_units": 128,
          "example_translation_units": 4,
          "analyzer_diagnostics": 18,
          "include_cleaner_advisories": 402,
          "example_include_cleaner_advisories": 7,
          "disposition": "Inherited diagnostics: CLI11/shared-pointer ownership analysis and guarded enum-table test casts. Paired self-includes and direct-include hygiene advisories remain explicit debt. Not a warning-free claim.",
          "check_profile": "clang-analyzer-*,misc-include-cleaner plus compiler diagnostics; explicit bugprone/performance/portability and CTU qualification are separate follow-ups."
        },
        "artifact_audit": {
          "job": 258111,
          "status": "passed"
        },
        "lint": {
          "ruff_version": "0.16.1",
          "policy": "Ruff recommended checks plus E4/E7/E9/F/EXE001/I001/PLW1510; scripts, contrib, tests/python; missing Ruff is an error.",
          "rule_regression_tests": 5
        }
      },
      "attempts": [
        {
          "job": 258060,
          "slots": [
            8,
            9,
            10,
            11
          ],
          "outcome": "setup-failed-before-generation",
          "reason": "FuzzSMT absent from PATH; failed shards retained; replaced only these slots with258103, same seeds and source."
        },
        {
          "job": 258124,
          "outcome": "lint-dependency-failed",
          "reason": "Source resync removed .venv/Ruff. Mandatory lint correctly failed; isolated Ruff installation restored under preserved contrib/local, with .venv symlink; accepted final run258128."
        }
      ],
      "public_report": {
        "path": "docs/coverage/main-migration-merge-qualification.json",
        "sha256": "106ec44547736f51368bd2ca163a386200618a08b7d5719bc7431367eb087f06"
      },
      "review": {
        "code": "No new blocking integration issues found; preserved automatic tri-state policy, conflict budgets, shared LIA driver and opt-in equality enablement. All native source and tests match the fresh compiled snapshot. Full-tree static findings remain explicit.",
        "documentation": "Independent read-only writer/reviewer loop accepted current policy/ownership/reset/assumptions contracts, CLI help, lint/source navigation, historical compatibility repairs, final qualification report and collected evidence. All required findings resolved; final269-test logs and terminal accounting inspected. Scope excludes fresh performance measurement and independent solver reruns."
      },
      "generators": {
        "harness_source_git": "0d5970400743e1403b7160b7f0126de6ececa8fe",
        "public_gate_recipe": "scripts/qualification/public_launch.sbatch",
        "seed_base": 202610270,
        "ground_shard_seeds": "base+slot",
        "quantified_session_shard_seeds": "base+10000*slot; session case seed adds case index",
        "QF_LIA": {
          "name": "FuzzSMT",
          "wrapper_sha256": "d0319e2dca480218b3b3c6d6828c41302b7147a9e906f680035e3b08615fe0b9",
          "arguments": "-ms 1 -Ms 4 -mv 1 -Mv 6 -mf 1 -mp 1 -ma 1 -Ma 4",
          "retry": "Same4shard seeds; existing generator on PATH; no native source or binary change."
        },
        "mutations": {
          "name": "YinYang/OpFuzz through scripts/seeded_opfuzz.py",
          "seed_base": 202610270,
          "recipe": "scripts/qualification/public_mutations.sbatch"
        }
      }
    },
    {
      "id": "2026-10-24-all-theories-enforced-memory",
      "date": "2026-10-24",
      "kind": "matched-full-corpus-long-limit-comparison",
      "evidence_status": "timings-running-confirmed-oom-and-remaining-aborts-under-triage",
      "branch": "docs/public-repository-migration",
      "native_source_git": "4419dc902f03fe12b8933d5dee4378dd11497035",
      "native_binary_sha256": "e06bd36239ccc7af9fd29ed55af9f595f2e7cbd52f6ba5961b962c9d8d6fc26d",
      "scope": "Fresh 1200-second non-incremental comparisons over all six supported divisions (32095 inputs). Primo default plus the known phase/monotone QF_LRA candidate, against Z3/cvc5 and capability-admitted Yices/OpenSMT. No easy-instance filtering or per-input oracle Primo selection.",
      "configuration": {
        "timeout_seconds": 1200,
        "memory_mib": 8192,
        "maximum_inputs_per_shard": 24,
        "maximum_concurrent_tasks": 128,
        "native_source_git": "4419dc902f03fe12b8933d5dee4378dd11497035",
        "native_binary_sha256": "e06bd36239ccc7af9fd29ed55af9f595f2e7cbd52f6ba5961b962c9d8d6fc26d",
        "corpora": {
          "QF_UF": 7503,
          "QF_LRA": 1753,
          "QF_LIA": 13306,
          "QF_UFLRA": 1284,
          "QF_UFLIA": 659,
          "UF": 7590
        },
        "native_profiles": {
          "primo": [
            "--quiet"
          ],
          "primo-phase-mono": [
            "--quiet",
            "--lra-model-phase",
            "--monotone-elimination"
          ]
        },
        "references": [
          "z3",
          "cvc5",
          "yices",
          "opensmt"
        ],
        "memory_limit_kind": "per-process RLIMIT_AS"
      },
      "execution": {
        "environment": "CPU SLURM compute, Xeon E5-2690 v4, one physical CPU per timed solver; no GPU nodes",
        "memory": "8192 MiB hard and soft RLIMIT_AS per process, verified before work and recorded in worker provenance; separate SLURM8GiB reservation is not relied on for enforcement.",
        "source_workspace": "/home/janotmik/primo-lra-equality-20261021",
        "corpora_source": "/home/janotmik/primo-evaluation-20261005/corpora",
        "corpus_policy": "Read-only reuse with fresh complete input hashing; fresh timings for every admitted solver. None of the429 old complete shards is reused as bounded timing.",
        "tools_policy": "Copy exact preserved native/reference/Dolmen executables from October22 cohort after verifying original SHA256; no native source change or rebuild.",
        "models": "After all timings and cross-answer audit: every successful ground Primo SAT row, original logic, same arguments plus model production/check-model;1800-second solver/300-second Dolmen limits,5G Dolmen size. Quantified printed models unsupported and not claimed qualified.",
        "timing_shard_wall_limit": "9 hours",
        "model_shard_wall_limit": "15 hours",
        "maximum_timing_concurrency": 128,
        "maximum_model_concurrency": 64
      },
      "jobs": {
        "prepare": "242896",
        "inventory": "242897",
        "gate_audit": "242903",
        "campaign_out": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261024/run2-as8g",
        "plan_sha256": "dd01e5c49cdbb9a75b4e2c819d15cc4f15514c0f2506506d6030127946db48ca",
        "timing": [
          "242904",
          "242905",
          "242906",
          "242907",
          "242908",
          "242909",
          "242910"
        ],
        "models": [
          "242912",
          "242913"
        ],
        "chunks": [
          {
            "phase": "timing",
            "job": "242904",
            "offset": 0,
            "tasks": 1000,
            "throttle": 18
          },
          {
            "phase": "timing",
            "job": "242905",
            "offset": 1000,
            "tasks": 1000,
            "throttle": 18
          },
          {
            "phase": "timing",
            "job": "242906",
            "offset": 2000,
            "tasks": 1000,
            "throttle": 18
          },
          {
            "phase": "timing",
            "job": "242907",
            "offset": 3000,
            "tasks": 1000,
            "throttle": 18
          },
          {
            "phase": "timing",
            "job": "242908",
            "offset": 4000,
            "tasks": 1000,
            "throttle": 18
          },
          {
            "phase": "timing",
            "job": "242909",
            "offset": 5000,
            "tasks": 1000,
            "throttle": 18
          },
          {
            "phase": "timing",
            "job": "242910",
            "offset": 6000,
            "tasks": 462,
            "throttle": 18
          },
          {
            "phase": "models",
            "job": "242912",
            "offset": 0,
            "tasks": 1000,
            "throttle": 32
          },
          {
            "phase": "models",
            "job": "242913",
            "offset": 1000,
            "tasks": 98,
            "throttle": 32
          }
        ],
        "timing_audit": "242911",
        "final_report": "242914"
      },
      "memory_probes": {
        "uncapped": {
          "job": "242893",
          "host": "node-04.ciircluster",
          "requested_memory_mib": 8192,
          "rlimit_as_bytes": [
            -1,
            -1
          ],
          "exposed_cgroup_memory_max": "max at every exposed ancestor",
          "artifact": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/memory-probe-242893.json"
        },
        "first_small_memory_smoke": {
          "job": "242894",
          "status": "FAILED",
          "reason": "Expected allocation diagnostic assertion failed: native instead aborted with CaDiCaL disconnect_external_propagator invalid-state API diagnostic. This was not a memory-out pass.",
          "artifact": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/memory-native-smoke-242894"
        },
        "enforced": {
          "job": "242895",
          "status": "COMPLETED",
          "rlimit_as_bytes": [
            8589934592,
            8589934592
          ],
          "oversized_mapping_bytes": 9663676416,
          "oversized_mapping_result": "ENOMEM",
          "artifact": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/memory-probe-242895.json",
          "native_control": {
            "limit_bytes": 67108864,
            "exit_code": -6,
            "classification": "native-error-under-forced-small-memory",
            "diagnostic": "CaDiCaL disconnect_external_propagator invalid-state API usage",
            "artifact": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/memory-native-smoke-242895",
            "input": "sledgehammer/FFT/uf.557340.smt2"
          }
        }
      },
      "correctness": {
        "generated_gate_job": "218459",
        "native_identity": "Identical frozen4419dc9/e06bd362 binary; no native behavior changes.",
        "generated_gate_summary": {
          "pass": 5972,
          "timeout": 28,
          "timeout_route": "QF_LIA",
          "sat_models": 3551
        },
        "generated_gate_resource_qualification": "Existing correctness evidence only; its original memory cap was unverified and it is not a fresh bounded timing.",
        "failure_policy": "Wrong answers and opposite definite answers cancel owned arrays. Native/reference process errors, unsupported and explicit memory-out remain unsolved PAR2 rows with raw logs. Native errors permit diagnostic comparison but block headline/default qualification.",
        "ground_models": "Every successful native SAT row checked separately after strict global timing barrier; original logic, same profile arguments. No model-check time in timing data.",
        "quantified_limit": "UF printed-model qualification unavailable; reference-answer corroboration and explicit uncorroborated counts only."
      },
      "artifacts": {
        "local": "results/long-limits-20261024",
        "remote": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261024/run2-as8g",
        "preparation_workflow": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261024/workflow/memory-candidate-v3",
        "frozen_workflow": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261024/workflow/a7b02725143c32ca6726f580d9c4762ae71cac3a"
      },
      "reproduction": {
        "limit_command": "ulimit -v 8388608; both soft/hardRLIMIT_AS must equal8589934592 before any worker workload",
        "prepare": "CPU SLURM run.sbatch phaseprepare, PRIMO_TOOLS_FROM=<October22-cohort>, freshout; then inventoryarray0-5%6 using existing read-only corpora",
        "launch": "python3 scripts/qualification/long_limits/launch.py --ssh-config <private-config> --remote <private-alias> --workspace <source_workspace> --local-source <frozen4419-source> --remote-out <remote-artifacts> --workflow <committed-frozen-workflow> --plan <local-artifacts>/plan.json --gate-job <held-gate-audit> --state <local-artifacts>/submission.json",
        "memory_probe": "CPU SLURM memory_probe.sbatch with PRIMO_ENFORCE_AS=1, PRIMO_MEMORY_BASE=<October22-cohort>, PRIMO_LONG_DRIVER=<frozen-campaign.py>"
      },
      "verification": [
        "20 metadata unit tests pass",
        "make lint passes",
        "nested workflow Ruff and Python compile pass",
        "four SLURM batch script validators pass",
        "memory proof242895 completed0; explicit oversized mapping rejected",
        "make docs and assembled-site link check pass (263pages,32582local links,1067Gitlinks,0failures); independent documentation review and final a7b0272 source-pin check accepted",
        "No native C++ changes: native test/ASan/tidy/include-cleaner reruns are inapplicable to this harness-only fix; identical native binary and generated correctness-gate audit retained. Full separate ground-model stage remains pending."
      ],
      "remaining": "Finish fresh timings, strict timing/cross-answer audit, full successful-ground-SAT model replay, six static-profile/reference cactus comparisons, final audit and committed summary. No performance/default claim yet.",
      "workflow_git": "a7b02725143c32ca6726f580d9c4762ae71cac3a",
      "admission": "Fresh capped probes242896 passed all five solver candidates on ground divisions; quantifiedUF admits Primo(partial SAT completion),Z3,cvc5,Yices; OpenSMT explicitly unavailable.",
      "plan": {
        "timing_shards": 6462,
        "model_shards": 1098,
        "series": 30,
        "timed_inputs": 154638,
        "sha256": "dd01e5c49cdbb9a75b4e2c819d15cc4f15514c0f2506506d6030127946db48ca"
      },
      "initial_health": {
        "new_worker_executions": 169,
        "address_space_limits_bytes": [
          [
            8589934592,
            8589934592
          ]
        ],
        "partitions": [
          "compute"
        ],
        "hosts": [
          "node-02.ciircluster",
          "node-03.ciircluster",
          "node-04.ciircluster",
          "node-05.ciircluster",
          "node-06.ciircluster"
        ],
        "complete_timing_csvs": 43,
        "global_failure_files": [],
        "local_task_failure_files": [],
        "gate_status": "complete",
        "gate_routes": {
          "QF_UF": {
            "cases": 1000,
            "pass": 1000,
            "timeout": 0,
            "sat_models": 599,
            "resource_incomplete": 0
          },
          "QF_LRA": {
            "cases": 1000,
            "pass": 1000,
            "timeout": 0,
            "sat_models": 1000,
            "resource_incomplete": 0
          },
          "QF_LIA": {
            "cases": 1000,
            "pass": 972,
            "timeout": 28,
            "sat_models": 872,
            "resource_incomplete": 0
          },
          "QF_UFLRA": {
            "cases": 1000,
            "pass": 1000,
            "timeout": 0,
            "sat_models": 574,
            "resource_incomplete": 0
          },
          "QF_UFLIA": {
            "cases": 1000,
            "pass": 1000,
            "timeout": 0,
            "sat_models": 506,
            "resource_incomplete": 0
          },
          "UF": {
            "cases": 1000,
            "pass": 1000,
            "timeout": 0,
            "sat_models": 0,
            "resource_incomplete": 0
          }
        },
        "scope": "Launch verification only, not a performance conclusion or a crash-free claim. All observed workers record both AS limits exactly8GiB; no global/task harness-failure records at this check."
      },
      "inventory": {
        "QF_LIA": {
          "count": 13306,
          "job": "242900",
          "address_space_limit_bytes": [
            8589934592,
            8589934592
          ],
          "sha256": "fbf6a3fb102519bb9570df411efdf143607014f921115ad09666818367945f89"
        },
        "QF_UFLRA": {
          "count": 1284,
          "job": "242901",
          "address_space_limit_bytes": [
            8589934592,
            8589934592
          ],
          "sha256": "2726a1874ca5f77cd7274e4e88853da5ee505f3492cb6bd6e83cff337059e366"
        },
        "QF_UFLIA": {
          "count": 659,
          "job": "242902",
          "address_space_limit_bytes": [
            8589934592,
            8589934592
          ],
          "sha256": "9d675833a2663e8eba6ce531bac8000b8b46934659d00833c8b0f73338806a33"
        },
        "QF_UF": {
          "count": 7503,
          "job": "242898",
          "address_space_limit_bytes": [
            8589934592,
            8589934592
          ],
          "sha256": "eb3490fa872839b193072cf765787640d02144e2f84fe8ec8d41bc0ca37dacbf"
        },
        "QF_LRA": {
          "count": 1753,
          "job": "242899",
          "address_space_limit_bytes": [
            8589934592,
            8589934592
          ],
          "sha256": "17249b025b789c9bdcdf3292e4b17ec50e536b82fb67c012bb1287fdfd227e3d"
        },
        "UF": {
          "count": 7590,
          "job": "242897",
          "address_space_limit_bytes": [
            8589934592,
            8589934592
          ],
          "sha256": "5f7808516b2168fe3fb501f77041d124fcecd9febfd9ac96c31057d198849789"
        }
      },
      "submission": "All7 timing arrays and dependent timing audit,2 model arrays and final audit submitted with preflight before each sbatch; held gate audit242903 released after submission and completed0. Total timing throttle126, model throttle64.",
      "progress_checks": [
        {
          "snapshot_start_utc": "2026-10-26T13:29:16.088169+00:00",
          "captured_by_utc": "2026-10-26T13:35:44.206882+00:00",
          "artifact": "results/long-limits-20261024/status-20261026.json",
          "artifact_sha256": "ccb56813029d5c3cc70efd25b0b9505845e93e591f679fc724c3533a18af0100",
          "accounting_artifact": "results/long-limits-20261024/accounting-20261026.txt",
          "completed_timing_shards": 4525,
          "planned_timing_shards": 6462,
          "started_timing_shards": 4633,
          "running_tasks_at_scheduler_check": 108,
          "by_logic": {
            "QF_UF": {
              "complete_shards": 990,
              "planned_shards": 1565
            },
            "QF_LRA": {
              "complete_shards": 356,
              "planned_shards": 444
            },
            "QF_LIA": {
              "complete_shards": 2048,
              "planned_shards": 2775
            },
            "QF_UFLRA": {
              "complete_shards": 245,
              "planned_shards": 270
            },
            "QF_UFLIA": {
              "complete_shards": 140,
              "planned_shards": 140
            },
            "UF": {
              "complete_shards": 746,
              "planned_shards": 1268
            }
          },
          "incorrect_limit_records": 0,
          "global_failure_records": 0,
          "task_failure_records": 0,
          "wrong_flags_in_completed_rows": 0,
          "model_execution_records": 0,
          "plots": [],
          "native_completed_row_errors": {
            "QF_UF/primo": {
              "completed_rows": 4743,
              "error_rows": 0,
              "sigabrt_rows": 0,
              "other_error_exit_2_rows": 0
            },
            "QF_LRA/primo": {
              "completed_rows": 1425,
              "error_rows": 4,
              "sigabrt_rows": 4,
              "other_error_exit_2_rows": 0
            },
            "QF_LRA/primo-phase-mono": {
              "completed_rows": 1401,
              "error_rows": 2,
              "sigabrt_rows": 2,
              "other_error_exit_2_rows": 0
            },
            "QF_LIA/primo": {
              "completed_rows": 9850,
              "error_rows": 415,
              "sigabrt_rows": 168,
              "other_error_exit_2_rows": 247
            },
            "QF_UFLRA/primo": {
              "completed_rows": 1164,
              "error_rows": 8,
              "sigabrt_rows": 5,
              "other_error_exit_2_rows": 3
            },
            "QF_UFLIA/primo": {
              "completed_rows": 659,
              "error_rows": 4,
              "sigabrt_rows": 0,
              "other_error_exit_2_rows": 4
            },
            "UF/primo": {
              "completed_rows": 4470,
              "error_rows": 452,
              "sigabrt_rows": 448,
              "other_error_exit_2_rows": 4
            }
          },
          "native_error_rows": 885,
          "native_sigabrt_rows": 627,
          "error_triage": "Inspected native SIGABRT rows show CaDiCaL disconnect_external_propagator invalid-state cleanup diagnostic, matching the earlier forced64MiB control. Exact cause of every abort is not established. Other observed error rows explicitly report std::bad_alloc. Do not relabel all aborts as memory-out. Rows stay unsolved; native execution errors block headline/default qualification. References also have unsolved process-error rows.",
          "qualification": "Active diagnostic timing collection only. Full cross-answer audit and all successful ground SAT-model replay remain pending; no winner or default-promotion conclusion.",
          "verification": [
            "Read SLURM squeue/sacct for recorded campaign jobs",
            "Read completed provenance/CSV rows and all4633 observed worker execution records; each records both AS limits8589934592bytes",
            "Cross-checked snapshot totals, native exit counts and zero wrong flags; JSON run ledger parses. No native execution or source changes in this status check."
          ]
        },
        {
          "checked_at_utc": "2026-10-27T06:22:26.934013+00:00",
          "scope": "SLURM scheduler and phase-marker status only; completed task counts are not a fresh CSV/provenance/cross-answer audit. Known allocation-failure/error rows remain separate.",
          "scheduler_snapshot": "results/long-limits-20261024/accounting-20261027.txt",
          "scheduler_snapshot_sha256": "14ff0177b36e6d885ddf3188cb7cf738cdb0c941dfe70e55759c7cda2334d53c",
          "phase_snapshot": "results/long-limits-20261024/phase-status-20261027.json",
          "complete_timing_tasks": 5757,
          "total_timing_tasks": 6462,
          "running_timing_tasks": 72,
          "pending_timing_tasks": 633,
          "active_timing_arrays": [
            "242905",
            "242906",
            "242907",
            "242908"
          ],
          "by_logic": {
            "QF_LIA": {
              "complete": 2531,
              "total": 2775,
              "running": 16
            },
            "QF_LRA": {
              "complete": 444,
              "total": 444,
              "running": 0
            },
            "QF_UF": {
              "complete": 1340,
              "total": 1565,
              "running": 0
            },
            "QF_UFLIA": {
              "complete": 140,
              "total": 140,
              "running": 0
            },
            "QF_UFLRA": {
              "complete": 270,
              "total": 270,
              "running": 0
            },
            "UF": {
              "complete": 1032,
              "total": 1268,
              "running": 56
            }
          },
          "timing_terminal_failures": [],
          "phase_status": {
            "global_failures": {},
            "task_failures": {},
            "audits": {
              "gate-audit": {
                "status": "complete"
              }
            },
            "plots": []
          },
          "dependent_jobs": {
            "timing_audit": "242911",
            "models": [
              "242912",
              "242913"
            ],
            "final_report": "242914"
          },
          "model_validation": "Not started; timing audit and model arrays pending dependencies.",
          "verification": [
            "Read squeue and sacct for the recorded campaign job IDs",
            "Read global/task failure directories and gate/timing/final audit markers",
            "Cross-checked task-index/offset logic totals against frozen plan; no solver execution or source changes."
          ]
        },
        {
          "checked_at_utc": "2026-10-27T08:37:42.645514+00:00",
          "scope": "Scheduler status only; no new result or correctness audit.",
          "artifact": "results/long-limits-20261024/remaining-20261027.txt",
          "completed_timing_tasks": 5882,
          "running_timing_tasks": 67,
          "total_timing_tasks": 6462,
          "remaining_by_solver_and_theory": {
            "QF_LIA/cvc5": {
              "total": 555,
              "completed": 510,
              "running": 8,
              "queued": 37
            },
            "QF_LIA/opensmt": {
              "total": 555,
              "completed": 517,
              "running": 1,
              "queued": 37
            },
            "QF_LIA/primo": {
              "total": 555,
              "completed": 517,
              "running": 1,
              "queued": 37
            },
            "QF_LIA/yices": {
              "total": 555,
              "completed": 517,
              "running": 1,
              "queued": 37
            },
            "QF_LIA/z3": {
              "total": 555,
              "completed": 518,
              "running": 1,
              "queued": 36
            },
            "QF_UF/cvc5": {
              "total": 313,
              "completed": 276,
              "running": 0,
              "queued": 37
            },
            "QF_UF/opensmt": {
              "total": 313,
              "completed": 276,
              "running": 0,
              "queued": 37
            },
            "QF_UF/primo": {
              "total": 313,
              "completed": 276,
              "running": 0,
              "queued": 37
            },
            "QF_UF/yices": {
              "total": 313,
              "completed": 276,
              "running": 0,
              "queued": 37
            },
            "QF_UF/z3": {
              "total": 313,
              "completed": 276,
              "running": 0,
              "queued": 37
            },
            "UF/cvc5": {
              "total": 317,
              "completed": 268,
              "running": 13,
              "queued": 36
            },
            "UF/primo": {
              "total": 317,
              "completed": 267,
              "running": 14,
              "queued": 36
            },
            "UF/yices": {
              "total": 317,
              "completed": 261,
              "running": 20,
              "queued": 36
            },
            "UF/z3": {
              "total": 317,
              "completed": 273,
              "running": 8,
              "queued": 36
            }
          },
          "validation": "Timing audit242911 and model arrays242912/242913 remain pending dependencies.",
          "verification": "squeue/sacct inspected; array task offsets mapped to the immutable plan. No jobs or solver sources changed."
        }
      ],
      "oom_exception_diagnostic": {
        "date": "2026-10-26",
        "status": "confirmed-allocation-failure-before-cleanup-abort-in-both-replays",
        "job": "256560",
        "script": "scripts/qualification/long_limits/trace_oom.sbatch",
        "script_sha256": "6a0d57fc3e9769a774df44e96c27b369ee64941207b59642d612f1c98dffddc2",
        "cases_artifact": "results/long-limits-20261024/oom-trace-cases-20261026.json",
        "remote_artifact_relative_to_campaign": "diagnostics/oom-exception-20261026/6a0d57fc3e97",
        "native_binary_sha256": "e06bd36239ccc7af9fd29ed55af9f595f2e7cbd52f6ba5961b962c9d8d6fc26d",
        "native_source_git": "4419dc902f03fe12b8933d5dee4378dd11497035",
        "cases": [
          {
            "logic": "QF_LIA",
            "file": "nec-smt/large/getoption_user/prp-23-48.smt2",
            "arguments": [
              "--quiet"
            ],
            "original_exit": "-6",
            "original_seconds": "57.141900"
          },
          {
            "logic": "UF",
            "file": "sledgehammer/FFT/uf.706467.smt2",
            "arguments": [
              "--quiet"
            ],
            "original_exit": "-6",
            "original_seconds": "54.896868"
          }
        ],
        "resources": {
          "partition": "compute",
          "physical_cpus_per_case": 1,
          "debugger_as_bytes": 17179869184,
          "inferior_as_bytes": 8589934592,
          "case_timeout_seconds": 720,
          "slurm_wall_time": "15min",
          "array_concurrency": 2
        },
        "purpose": "Stop at original C++ exception before external-propagator cleanup, record exception and stack plus inferior /proc/status and /proc/limits, then continue to terminal abort. Same preserved executable, arguments, input hashes and8GiB target cap. No speed measurements or native source changes.",
        "attempts": [
          {
            "job": "256544",
            "status": "canceled-debugger-startup-stall-no-native-result",
            "script_sha256": "a39f4d665e3f33e63ed27c3033f603b5c4a2acd8ae36aac8bd7e31af55cc0ffa",
            "evidence": "SLURM process inspection showed only debugger processes; GDB open fd pointed to debuginfod_client temporary debuginfo and a socket, waiting in poll. No inferior exception result. Canceled both diagnostic tasks only; full timing arrays untouched.",
            "artifact_relative_to_campaign": "diagnostics/oom-exception-20261026/a39f4d665e3f"
          }
        ],
        "debugger_startup": "Disable init files (-nx) and debuginfod downloads (DEBUGINFOD_URLS empty); process-group cleanup on720s timeout.",
        "results": {
          "status": "confirmed-allocation-failure-before-cleanup-abort-in-both-replays",
          "cases": [
            {
              "logic": "QF_LIA",
              "file": "nec-smt/large/getoption_user/prp-23-48.smt2",
              "arguments": [
                "--quiet"
              ],
              "input_sha256": "fe0ac9494967e8f59799db3d25e9e3023d895344531f577f9adcd174c8847ec8",
              "native_sha256": "e06bd36239ccc7af9fd29ed55af9f595f2e7cbd52f6ba5961b962c9d8d6fc26d",
              "job": "256561",
              "artifact": "results/long-limits-20261024/oom-exception-20261026/results/256560-0",
              "first_exception": "libstdc++ operator new(unsigned long) allocation-failure path -> __cxa_throw",
              "allocation_context": "CaDiCaL binary-clause vector growth in Closure::extract_binaries / SAT preprocessing",
              "observed_inferior_as_bytes": [
                8589934592,
                8589934592
              ],
              "proc_measurements_kib": {
                "VmPeak": 7947452,
                "VmSize": 7750840,
                "VmRSS": 7047412
              },
              "continued_outcome": "SIGABRT in external-propagator disconnection via AssignmentConnection destruction during exception unwinding",
              "debugger_type_introspection": "p $_exception could not resolve std types without library debug info; allocation origin is established by exception stack, not by RTTI printing.",
              "file_sha256": {
                "metadata.json": "773916c5452ca18617f3db2b868301118b51e3f6dc15960d5fd13bb7b80595a7",
                "inferior.json": "03e1c251a1e5eed1b305011765ea4ca9162ad5fc29e8bcc9a45934322626c84e",
                "stdout": "2b5ab7b1d4951023970e91da7c2e96010073a2693e0a26bf1d4e3d611308654b",
                "stderr": "c2cc0d1bc4a6f57ed8d5ffdc425c563e0a9f9e4043046475092a4e2291e0708d"
              }
            },
            {
              "logic": "UF",
              "file": "sledgehammer/FFT/uf.706467.smt2",
              "arguments": [
                "--quiet"
              ],
              "input_sha256": "ba33f3b7107f9c45fc65ef9574fc0f56bf4ee1ee9b0b3f4d33ae8bce040ad558",
              "native_sha256": "e06bd36239ccc7af9fd29ed55af9f595f2e7cbd52f6ba5961b962c9d8d6fc26d",
              "job": "256560",
              "artifact": "results/long-limits-20261024/oom-exception-20261026/results/256560-1",
              "first_exception": "libstdc++ operator new(unsigned long) allocation-failure path -> __cxa_throw",
              "allocation_context": "TermManager::intern term-vector growth during QuantifierComponent::enumerate / instantiate",
              "observed_inferior_as_bytes": [
                8589934592,
                8589934592
              ],
              "proc_measurements_kib": {
                "VmPeak": 7678520,
                "VmSize": 7678520,
                "VmRSS": 6084608
              },
              "continued_outcome": "SIGABRT in external-propagator disconnection via AssignmentConnection destruction during exception unwinding",
              "debugger_type_introspection": "p $_exception could not resolve std types without library debug info; allocation origin is established by exception stack, not by RTTI printing.",
              "file_sha256": {
                "metadata.json": "68d6adf350fabbb98ea494781143cfaf429c10c31f93cb28a8f616dfc85d58d6",
                "inferior.json": "e3ef269354851bf530bf3f023a505d5b6506abe2bcc0caafef92ae5e395efa49",
                "stdout": "67bd049f503932f4c0e1a57f5defd22d2b3bff6240149c5ed4ef68e113d3096e",
                "stderr": "c2cc0d1bc4a6f57ed8d5ffdc425c563e0a9f9e4043046475092a4e2291e0708d"
              }
            }
          ],
          "native_error_census": {
            "artifact": "results/long-limits-20261024/native-error-census-20261026.json",
            "sha256": "2c5fdf57f3ea7336b26a7df8497e9642acb146dee05e3cef45f06789a89004ef",
            "counts": {
              "cadical-disconnect-invalid-state": 652,
              "explicit-std-bad-alloc": 266
            },
            "scope": "Native error rows in CSVs present during the scan; not a complete campaign audit. Matching cleanup diagnostic alone does not establish cause for each untraced case."
          },
          "interpretation": "Both traced SIGABRT cases are confirmed memory exhaustion followed by a secondary cleanup failure. Count these exact input/profile/binary cases as unsolved resource exhaustion for interpretation. Retain original raw SIGABRT rows. No native source or timing measurements changed; the generic report has not been taught case-specific triage overrides. Remaining matching aborts are strongly consistent with this mechanism but not individually confirmed."
        },
        "verification": [
          "Both256560 array tasks completed0 (debugger controller outcome, not a solved SMT result)",
          "Actual inferior limits recorded8GiB soft/hard; preserved binary and input hashes checked",
          "Caught allocation throw first, continued to SIGABRT with the same cleanup diagnostic",
          "SLURM batch validator, bash-n, embedded Python AST parse, make lint passed",
          "Native C++ unchanged: no solver/ASan/fuzz/tidy rerun required for this diagnostic workflow; original campaign remains intentionally active.",
          "Generated GDB Python parsed; final batch script SHA256 matches executed immutable copy",
          "make docs and assembled-site local/Git link check pass:263pages,32583local links,1068Gitlinks,0failures",
          "Independent read-only review accepted the new evidence section, ledger results, script and artifacts with no required findings; baseline eb8783c."
        ]
      },
      "progress_cactus_snapshot": {
        "date": "2026-10-27",
        "status": "complete-diagnostic-matched-snapshot",
        "job": "257745",
        "script": "scripts/qualification/long_limits/preview.py",
        "script_sha256": "74047974fe723dcf8e59f4f2dd97e18c91465b6da1282f595e2d36e8486c0a3c",
        "remote_artifact_relative_to_campaign": "previews/20261027-1",
        "frozen_workflow_relative_to_run_root": "workflow/preview-74047974fe72",
        "resources": "CPU compute audit allocation, one physicalCPU,8GiB soft/hardRLIMIT_AS,1hour; no solver runs or model-validation work.",
        "selection": "Only shard indices with terminal complete provenance in every planned profile/solver for a division; no selection by answer or speed. Strict timing provenance, matching input hashes, process/answer consistency and cross-solver definite-answer checks before plotting. Native best selected statically on this cohort, most solved then PAR2 then name.",
        "qualification": "Diagnostic timing snapshot only, all SAT-model qualification pending. Partial matched cohorts may change final rankings; full divisions identified separately. Unknown, timeout, explicitmemory-out and process errors remain unsolved; raw error rows not relabeled.",
        "reproduction": "CPU SLURM report.sbatch with PRIMO_LONG_REPORT=<frozen-preview.py>, PRIMO_LONG_STAGE=preview, PRIMO_PREVIEW_OUT=<fresh-output>; optional --selection=<prior-selection.json> via preview CLI reproduces the frozen cohort.",
        "verification": [
          "22 metadata unit tests passed, including completion intersection across native profiles and reference, and static profile selection without per-input oracle",
          "make lint, nested-workflow Ruff and Python compile passed",
          "Reused report.sbatch validated before submission; frozen4419 source/binary/tool preflight passed immediately before sbatch",
          "No native C++ changes: solver tests/ASan/fuzz/tidy are not rerun for this reporting-only addition.",
          "SLURM job257745 completed0; all six SVGs and standalone gallery collected with matched series CSVs and source certificates",
          "Independent method/prose and final exported-data reviews accepted with no required findings (baselinef636e12); all30 series checked for identical unique per-division cohorts, solved counts, PAR2 and full/partial labels",
          "Six-chart PNG overview and1000px desktop/390px mobile gallery screenshots inspected; charts scroll on narrow displays and SVG links retain full resolution",
          "Contrast checks pass: body13.69:1, muted7.05:1, link/highlight6.87:1, categorical curve colours at least3.32:1; sparse neutral styling with coverage expressed in text",
          "make docs and assembled-site local/Git links pass; no native solver or timing data changed."
        ],
        "local_artifact": "results/long-limits-20261024/plots-20261027-1",
        "summary_sha256": "8e7603e54810998633c82b3306c2ba9fa218fbe8cdd7fe199c5edbef5762929e",
        "selection_sha256": "7713e29f0aef3371eeafde610e7675c6979fd88046232a951ea9b237c42cfbf8",
        "snapshot_interval_utc": [
          "2026-10-27T07:48:24.848968+00:00",
          "2026-10-27T07:56:55.823636+00:00"
        ],
        "completed_job_exit": "0:0",
        "divisions": {
          "QF_UF": {
            "matched_inputs": 6543,
            "full_corpus_inputs": 7503,
            "full_timing_coverage": false,
            "best_static_profile": "primo",
            "runs": {
              "primo": {
                "inputs": 6543,
                "solved": 6543,
                "sat": 2726,
                "unsat": 3817,
                "timeouts": 0,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 0,
                "par2_sum": 5054.876720999999,
                "median_solved_seconds": 0.064557,
                "arguments": [
                  "--quiet"
                ]
              },
              "z3": {
                "inputs": 6543,
                "solved": 6541,
                "sat": 2726,
                "unsat": 3815,
                "timeouts": 2,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 0,
                "par2_sum": 8284.893866999999,
                "median_solved_seconds": 0.031557,
                "arguments": []
              },
              "cvc5": {
                "inputs": 6543,
                "solved": 6536,
                "sat": 2726,
                "unsat": 3810,
                "timeouts": 7,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 0,
                "par2_sum": 23538.346772999997,
                "median_solved_seconds": 0.063347,
                "arguments": []
              },
              "yices": {
                "inputs": 6543,
                "solved": 6543,
                "sat": 2726,
                "unsat": 3817,
                "timeouts": 0,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 0,
                "par2_sum": 847.8190889999997,
                "median_solved_seconds": 0.008081,
                "arguments": []
              },
              "opensmt": {
                "inputs": 6543,
                "solved": 6539,
                "sat": 2726,
                "unsat": 3813,
                "timeouts": 4,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 0,
                "par2_sum": 21352.180955,
                "median_solved_seconds": 0.029376,
                "arguments": []
              }
            },
            "svg": "qf_uf-1200.svg",
            "svg_sha256": "8be72c59b97537024aade21671078460a6c268a7944dc360ba4e2dd3ae1cc485"
          },
          "QF_LRA": {
            "matched_inputs": 1753,
            "full_corpus_inputs": 1753,
            "full_timing_coverage": true,
            "best_static_profile": "primo-phase-mono",
            "runs": {
              "primo": {
                "inputs": 1753,
                "solved": 1691,
                "sat": 1008,
                "unsat": 683,
                "timeouts": 58,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 4,
                "par2_sum": 190086.10322600004,
                "median_solved_seconds": 0.12865,
                "arguments": [
                  "--quiet"
                ]
              },
              "primo-phase-mono": {
                "inputs": 1753,
                "solved": 1707,
                "sat": 1015,
                "unsat": 692,
                "timeouts": 44,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 2,
                "par2_sum": 146910.28726100002,
                "median_solved_seconds": 0.141476,
                "arguments": [
                  "--quiet",
                  "--lra-model-phase",
                  "--monotone-elimination"
                ]
              },
              "z3": {
                "inputs": 1753,
                "solved": 1656,
                "sat": 988,
                "unsat": 668,
                "timeouts": 95,
                "unknown": 0,
                "memory_out": 2,
                "unsupported": 0,
                "errors": 0,
                "par2_sum": 301190.80217,
                "median_solved_seconds": 0.08768500000000001,
                "arguments": []
              },
              "cvc5": {
                "inputs": 1753,
                "solved": 1639,
                "sat": 964,
                "unsat": 675,
                "timeouts": 114,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 0,
                "par2_sum": 388715.93919999996,
                "median_solved_seconds": 0.254732,
                "arguments": []
              },
              "yices": {
                "inputs": 1753,
                "solved": 1687,
                "sat": 1008,
                "unsat": 679,
                "timeouts": 66,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 0,
                "par2_sum": 202677.907669,
                "median_solved_seconds": 0.017086,
                "arguments": []
              },
              "opensmt": {
                "inputs": 1753,
                "solved": 1703,
                "sat": 1005,
                "unsat": 698,
                "timeouts": 50,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 0,
                "par2_sum": 159450.202838,
                "median_solved_seconds": 0.100058,
                "arguments": []
              }
            },
            "svg": "qf_lra-1200.svg",
            "svg_sha256": "090c357042a6bc5bd31b86bd8f6ec24e04e52736909078089136b08667063ad3"
          },
          "QF_LIA": {
            "matched_inputs": 12154,
            "full_corpus_inputs": 13306,
            "full_timing_coverage": false,
            "best_static_profile": "primo",
            "runs": {
              "primo": {
                "inputs": 12154,
                "solved": 9908,
                "sat": 6477,
                "unsat": 3431,
                "timeouts": 561,
                "unknown": 1126,
                "memory_out": 331,
                "unsupported": 0,
                "errors": 228,
                "par2_sum": 5584047.080688,
                "median_solved_seconds": 0.042321,
                "arguments": [
                  "--quiet"
                ]
              },
              "z3": {
                "inputs": 12154,
                "solved": 11825,
                "sat": 7534,
                "unsat": 4291,
                "timeouts": 328,
                "unknown": 0,
                "memory_out": 1,
                "unsupported": 0,
                "errors": 0,
                "par2_sum": 1012569.904198,
                "median_solved_seconds": 0.093606,
                "arguments": []
              },
              "cvc5": {
                "inputs": 12154,
                "solved": 9372,
                "sat": 6442,
                "unsat": 2930,
                "timeouts": 2708,
                "unknown": 0,
                "memory_out": 35,
                "unsupported": 0,
                "errors": 39,
                "par2_sum": 7103371.516461,
                "median_solved_seconds": 0.078738,
                "arguments": []
              },
              "yices": {
                "inputs": 12154,
                "solved": 11263,
                "sat": 7078,
                "unsat": 4185,
                "timeouts": 857,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 34,
                "par2_sum": 2243728.858352,
                "median_solved_seconds": 0.010824,
                "arguments": []
              },
              "opensmt": {
                "inputs": 12154,
                "solved": 11572,
                "sat": 7275,
                "unsat": 4297,
                "timeouts": 535,
                "unknown": 0,
                "memory_out": 27,
                "unsupported": 0,
                "errors": 20,
                "par2_sum": 1974322.3904209996,
                "median_solved_seconds": 0.062376,
                "arguments": []
              }
            },
            "svg": "qf_lia-1200.svg",
            "svg_sha256": "60718f39039907c5a8c92883922054347352d3788498fdb00c4593c9569c9a0a"
          },
          "QF_UFLRA": {
            "matched_inputs": 1284,
            "full_corpus_inputs": 1284,
            "full_timing_coverage": true,
            "best_static_profile": "primo",
            "runs": {
              "primo": {
                "inputs": 1284,
                "solved": 1274,
                "sat": 763,
                "unsat": 511,
                "timeouts": 2,
                "unknown": 0,
                "memory_out": 3,
                "unsupported": 0,
                "errors": 5,
                "par2_sum": 26572.915477,
                "median_solved_seconds": 0.05577,
                "arguments": [
                  "--quiet"
                ]
              },
              "z3": {
                "inputs": 1284,
                "solved": 1267,
                "sat": 759,
                "unsat": 508,
                "timeouts": 17,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 0,
                "par2_sum": 46031.065471,
                "median_solved_seconds": 0.03687,
                "arguments": []
              },
              "cvc5": {
                "inputs": 1284,
                "solved": 1276,
                "sat": 765,
                "unsat": 511,
                "timeouts": 6,
                "unknown": 0,
                "memory_out": 1,
                "unsupported": 0,
                "errors": 1,
                "par2_sum": 20735.499896,
                "median_solved_seconds": 0.06492600000000001,
                "arguments": []
              },
              "yices": {
                "inputs": 1284,
                "solved": 1278,
                "sat": 767,
                "unsat": 511,
                "timeouts": 6,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 0,
                "par2_sum": 14972.448671,
                "median_solved_seconds": 0.008716499999999999,
                "arguments": []
              },
              "opensmt": {
                "inputs": 1284,
                "solved": 1271,
                "sat": 760,
                "unsat": 511,
                "timeouts": 12,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 1,
                "par2_sum": 34956.965418,
                "median_solved_seconds": 0.036642,
                "arguments": []
              }
            },
            "svg": "qf_uflra-1200.svg",
            "svg_sha256": "1dea50452b87d02d2586dec177ab60b9dafb9638699b9d5405c5e6ff3b3d776e"
          },
          "QF_UFLIA": {
            "matched_inputs": 659,
            "full_corpus_inputs": 659,
            "full_timing_coverage": true,
            "best_static_profile": "primo",
            "runs": {
              "primo": {
                "inputs": 659,
                "solved": 583,
                "sat": 410,
                "unsat": 173,
                "timeouts": 72,
                "unknown": 0,
                "memory_out": 4,
                "unsupported": 0,
                "errors": 0,
                "par2_sum": 188008.551823,
                "median_solved_seconds": 0.238568,
                "arguments": [
                  "--quiet"
                ]
              },
              "z3": {
                "inputs": 659,
                "solved": 623,
                "sat": 432,
                "unsat": 191,
                "timeouts": 36,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 0,
                "par2_sum": 87955.094095,
                "median_solved_seconds": 0.024409,
                "arguments": []
              },
              "cvc5": {
                "inputs": 659,
                "solved": 617,
                "sat": 427,
                "unsat": 190,
                "timeouts": 42,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 0,
                "par2_sum": 105526.220325,
                "median_solved_seconds": 0.079537,
                "arguments": []
              },
              "yices": {
                "inputs": 659,
                "solved": 627,
                "sat": 434,
                "unsat": 193,
                "timeouts": 29,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 3,
                "par2_sum": 83552.502197,
                "median_solved_seconds": 0.006419,
                "arguments": []
              },
              "opensmt": {
                "inputs": 659,
                "solved": 616,
                "sat": 427,
                "unsat": 189,
                "timeouts": 41,
                "unknown": 0,
                "memory_out": 1,
                "unsupported": 0,
                "errors": 1,
                "par2_sum": 110514.238362,
                "median_solved_seconds": 0.16894350000000002,
                "arguments": []
              }
            },
            "svg": "qf_uflia-1200.svg",
            "svg_sha256": "c9246c44532b56dd4a4612c49830f8fc336db6eacd8656ecc53bd82d21b76b61"
          },
          "UF": {
            "matched_inputs": 6150,
            "full_corpus_inputs": 7590,
            "full_timing_coverage": false,
            "best_static_profile": "primo",
            "runs": {
              "primo": {
                "inputs": 6150,
                "solved": 1722,
                "sat": 1,
                "unsat": 1721,
                "timeouts": 1396,
                "unknown": 2382,
                "memory_out": 5,
                "unsupported": 0,
                "errors": 645,
                "par2_sum": 10670722.553348,
                "median_solved_seconds": 0.049176,
                "arguments": [
                  "--quiet"
                ]
              },
              "z3": {
                "inputs": 6150,
                "solved": 2296,
                "sat": 81,
                "unsat": 2215,
                "timeouts": 883,
                "unknown": 6,
                "memory_out": 2965,
                "unsupported": 0,
                "errors": 0,
                "par2_sum": 9260626.349262,
                "median_solved_seconds": 0.052473,
                "arguments": []
              },
              "cvc5": {
                "inputs": 6150,
                "solved": 2600,
                "sat": 1,
                "unsat": 2599,
                "timeouts": 3012,
                "unknown": 528,
                "memory_out": 9,
                "unsupported": 0,
                "errors": 1,
                "par2_sum": 8530801.315815,
                "median_solved_seconds": 0.11458,
                "arguments": []
              },
              "yices": {
                "inputs": 6150,
                "solved": 1897,
                "sat": 54,
                "unsat": 1843,
                "timeouts": 4183,
                "unknown": 0,
                "memory_out": 0,
                "unsupported": 0,
                "errors": 70,
                "par2_sum": 10243589.266467,
                "median_solved_seconds": 0.022587,
                "arguments": []
              }
            },
            "svg": "uf-1200.svg",
            "svg_sha256": "7a5b7d77bcc33b13e7a3386255645354e0248a888fbd94b9ba423f21c39c5f6e"
          }
        },
        "download_archive": {
          "local": "results/long-limits-20261024/cactus-1200s-20261027.zip",
          "sha256": "1cb7a449e52f21d26937f86d500437a36ae82475293d3036c870f8030ebc5d65"
        }
      },
      "timing_eta_estimates": [
        {
          "checked_at_utc": "2026-10-27T08:58:17+00:00",
          "clock_zone": "UTC accounting, display Europe/Athens",
          "artifacts": [
            "results/long-limits-20261024/eta-utc-20261027.txt"
          ],
          "method": "Rough planning estimate: simulate per-array18-slot queues using observed per-solver/theory completed shard durations and conditional remaining durations for active shards. Arrays do not steal slots. Also report6/12/24-hour completion throughput. Completed samples can underrepresent current long-tail work; these are not calibrated confidence intervals.",
          "running_tasks": 66,
          "queued_tasks": 499,
          "throughput": {
            "242905": {
              "active": 12,
              "queued": 0,
              "6h": {
                "completed": 73,
                "tasks_per_hour": 12.166666666666666,
                "hours_queued_at_rate": 0.0
              },
              "12h": {
                "completed": 167,
                "tasks_per_hour": 13.916666666666666,
                "hours_queued_at_rate": 0.0
              },
              "24h": {
                "completed": 335,
                "tasks_per_hour": 13.958333333333334,
                "hours_queued_at_rate": 0.0
              }
            },
            "242906": {
              "active": 18,
              "queued": 157,
              "6h": {
                "completed": 82,
                "tasks_per_hour": 13.666666666666666,
                "hours_queued_at_rate": 11.487804878048781
              },
              "12h": {
                "completed": 163,
                "tasks_per_hour": 13.583333333333334,
                "hours_queued_at_rate": 11.558282208588956
              },
              "24h": {
                "completed": 322,
                "tasks_per_hour": 13.416666666666666,
                "hours_queued_at_rate": 11.701863354037268
              }
            },
            "242907": {
              "active": 18,
              "queued": 188,
              "6h": {
                "completed": 77,
                "tasks_per_hour": 12.833333333333334,
                "hours_queued_at_rate": 14.649350649350648
              },
              "12h": {
                "completed": 159,
                "tasks_per_hour": 13.25,
                "hours_queued_at_rate": 14.18867924528302
              },
              "24h": {
                "completed": 326,
                "tasks_per_hour": 13.583333333333334,
                "hours_queued_at_rate": 13.840490797546012
              }
            },
            "242908": {
              "active": 18,
              "queued": 154,
              "6h": {
                "completed": 85,
                "tasks_per_hour": 14.166666666666666,
                "hours_queued_at_rate": 10.870588235294118
              },
              "12h": {
                "completed": 165,
                "tasks_per_hour": 13.75,
                "hours_queued_at_rate": 11.2
              },
              "24h": {
                "completed": 335,
                "tasks_per_hour": 13.958333333333334,
                "hours_queued_at_rate": 11.032835820895523
              }
            }
          },
          "conditional_sampling_hours": {
            "all_completed": {
              "0.1": 18.69388888888889,
              "0.5": 19.53361111111111,
              "0.9": 20.50027777777778
            },
            "last24h_completed": {
              "0.1": 18.105555555555554,
              "0.5": 18.969722222222224,
              "0.9": 19.820555555555554
            }
          },
          "includes_model_validation": false,
          "planning_range_hours": [
            18,
            24
          ],
          "planning_finish_range_athens": [
            "2026-10-28T04:58:17+02:00",
            "2026-10-28T10:58:17+02:00"
          ],
          "stage_scope": "Remaining timing work only; model validation and final report follow and are not included. No model-stage throughput data yet."
        },
        {
          "checked_at_utc": "2026-10-27T08:58:17+00:00",
          "clock_zone": "UTC accounting, display Europe/Athens",
          "artifacts": [
            "results/long-limits-20261024/eta-utc-20261027.txt"
          ],
          "method": "Rough planning estimate: simulate per-array36-slot queues after rebalance using observed per-solver/theory completed shard durations and conditional remaining durations for active shards. Arrays do not steal slots. Also report6/12/24-hour completion throughput. Completed samples can underrepresent current long-tail work; these are not calibrated confidence intervals.",
          "running_tasks": 66,
          "queued_tasks": 499,
          "throughput": {
            "242905": {
              "active": 12,
              "queued": 0,
              "6h": {
                "completed": 73,
                "tasks_per_hour": 12.166666666666666,
                "hours_queued_at_rate": 0.0
              },
              "12h": {
                "completed": 167,
                "tasks_per_hour": 13.916666666666666,
                "hours_queued_at_rate": 0.0
              },
              "24h": {
                "completed": 335,
                "tasks_per_hour": 13.958333333333334,
                "hours_queued_at_rate": 0.0
              }
            },
            "242906": {
              "active": 18,
              "queued": 157,
              "6h": {
                "completed": 82,
                "tasks_per_hour": 13.666666666666666,
                "hours_queued_at_rate": 11.487804878048781
              },
              "12h": {
                "completed": 163,
                "tasks_per_hour": 13.583333333333334,
                "hours_queued_at_rate": 11.558282208588956
              },
              "24h": {
                "completed": 322,
                "tasks_per_hour": 13.416666666666666,
                "hours_queued_at_rate": 11.701863354037268
              }
            },
            "242907": {
              "active": 18,
              "queued": 188,
              "6h": {
                "completed": 77,
                "tasks_per_hour": 12.833333333333334,
                "hours_queued_at_rate": 14.649350649350648
              },
              "12h": {
                "completed": 159,
                "tasks_per_hour": 13.25,
                "hours_queued_at_rate": 14.18867924528302
              },
              "24h": {
                "completed": 326,
                "tasks_per_hour": 13.583333333333334,
                "hours_queued_at_rate": 13.840490797546012
              }
            },
            "242908": {
              "active": 18,
              "queued": 154,
              "6h": {
                "completed": 85,
                "tasks_per_hour": 14.166666666666666,
                "hours_queued_at_rate": 10.870588235294118
              },
              "12h": {
                "completed": 165,
                "tasks_per_hour": 13.75,
                "hours_queued_at_rate": 11.2
              },
              "24h": {
                "completed": 335,
                "tasks_per_hour": 13.958333333333334,
                "hours_queued_at_rate": 11.032835820895523
              }
            }
          },
          "conditional_sampling_hours": {
            "all_completed": {
              "0.1": 11.298333333333334,
              "0.5": 11.805555555555555,
              "0.9": 12.546666666666667
            },
            "last24h_completed": {
              "0.1": 10.950277777777778,
              "0.5": 11.519444444444444,
              "0.9": 12.206666666666667
            }
          },
          "includes_model_validation": false,
          "planning_range_hours": [
            10,
            14
          ],
          "simulation_snapshot_utc": "2026-10-27T08:58:17+00:00",
          "rebalanced_at_utc": "2026-10-27T09:09:24.931961+00:00",
          "planning_finish_range_athens": [
            "2026-10-27T21:09:24.931961+02:00",
            "2026-10-28T01:09:24.931961+02:00"
          ],
          "scope": "Timing completion only, conditional on36-task caps and available compute capacity; model validation follows and is not included."
        }
      ],
      "scheduler_adjustments": [
        {
          "date_utc": "2026-10-27T09:08:57.127529+00:00",
          "before_throttles": {
            "242905": 18,
            "242906": 18,
            "242907": 18,
            "242908": 18
          },
          "verified_throttles": {
            "242905": 18,
            "242906": 36,
            "242907": 36,
            "242908": 36
          },
          "worst_case_sum_for_active_arrays": 126,
          "approved_timing_task_ceiling": 128,
          "commands": [
            "scontrol update JobId=242906 ArrayTaskThrottle=36",
            "scontrol update JobId=242907 ArrayTaskThrottle=36",
            "scontrol update JobId=242908 ArrayTaskThrottle=36"
          ],
          "controller_bookkeeping_warning": "The parent242907 update returned exit1 for already-finished task records; effective parent/active-task throttle nevertheless became36, independently verified by scontrol showjob.",
          "remaining_command_results": [
            {
              "command": "scontrol update JobId=242908 ArrayTaskThrottle=36",
              "exit": 0,
              "stdout": "",
              "stderr": ""
            }
          ],
          "scope": "Reallocate existing timing concurrency only; no solver/options/time/memory/corpus/measurement changes, no resubmitted tasks or dependency changes.",
          "post_adjustment_observation": {
            "at_utc": "2026-10-27T09:12:53Z",
            "running_timing_workers": 118,
            "partition": "compute",
            "artifact": "results/long-limits-20261024/after-rebalance-20261027.txt"
          },
          "verification": [
            "scontrol re-read confirms18/36/36/36; worst-case active-array sum126 is below original128 ceiling",
            "New workers observed running on compute; no source, input, limits or dependency changes",
            "Independent read-only source/operational/ETA documentation review accepted; no required findings",
            "make docs and assembled-site local/Git links passed with0failures; cap arithmetic and JSON ledger checked. Native tests/fuzz/ASan/tidy not rerun because no solver code changed."
          ]
        }
      ]
    },
    {
      "id": "2026-10-22-all-theories-long-limits",
      "date": "2026-10-22",
      "kind": "matched-full-corpus-long-limit-comparison",
      "evidence_status": "stopped-native-sigkill-uncapped-historical-not-reused",
      "branch": "docs/public-repository-migration",
      "native_source_git": "4419dc902f03fe12b8933d5dee4378dd11497035",
      "native_binary_sha256": "e06bd36239ccc7af9fd29ed55af9f595f2e7cbd52f6ba5961b962c9d8d6fc26d",
      "scope": "Fresh 1200-second non-incremental comparisons over all six supported divisions (32095 inputs). Primo default plus the known phase/monotone QF_LRA candidate, against Z3/cvc5 and capability-admitted Yices/OpenSMT. No easy-instance filtering or per-input oracle Primo selection.",
      "configuration": {
        "timeout_seconds": 1200,
        "memory_mib": 8192,
        "maximum_inputs_per_shard": 24,
        "maximum_concurrent_tasks": 128,
        "native_source_git": "4419dc902f03fe12b8933d5dee4378dd11497035",
        "native_binary_sha256": "e06bd36239ccc7af9fd29ed55af9f595f2e7cbd52f6ba5961b962c9d8d6fc26d",
        "corpora": {
          "QF_UF": 7503,
          "QF_LRA": 1753,
          "QF_LIA": 13306,
          "QF_UFLRA": 1284,
          "QF_UFLIA": 659,
          "UF": 7590
        },
        "native_profiles": {
          "primo": [
            "--quiet"
          ],
          "primo-phase-mono": [
            "--quiet",
            "--lra-model-phase",
            "--monotone-elimination"
          ]
        },
        "references": [
          "z3",
          "cvc5",
          "yices",
          "opensmt"
        ]
      },
      "execution": {
        "environment": "CPU SLURM compute, Xeon E5-2690 v4, one physical CPU; 8 GiB SLURM reservation was not an effective hard memory cap; no GPU nodes",
        "source_workspace": "/home/janotmik/primo-lra-equality-20261021",
        "corpora_source": "/home/janotmik/primo-evaluation-20261005/corpora",
        "corpus_policy": "Reuse complete existing corpora read-only; fresh per-input hash inventory on compute nodes before comparisons.",
        "maximum_inputs_per_shard": 24,
        "timing_shard_wall_limit": "9 hours",
        "memory_mib": 8192,
        "per_input_seconds": 1200,
        "models": "After all timings and cross-answer audit: every successful ground Primo SAT row, original logic, same arguments plus model production/check-model;1800-second solver/300-second Dolmen limits,5G Dolmen size. Quantified printed models unsupported and not claimed qualified.",
        "scheduler": "MaxArraySize1001,MaxJobCount10000; chunked arrays and total timing concurrency at most128.",
        "gate_audit_submission": "All24 gate shards already terminal in sacct; audit submitted without stale dependency and held until timing arrays were submitted, then released. This avoids scheduler completed-job expiry.",
        "memory_enforcement": "Unverified at launch; probe242893 later established unlimited RLIMIT_AS and memory.max=max at all exposed cgroup ancestors on node04. Historical timings excluded from the October24 enforced-memory comparison."
      },
      "jobs": {
        "initial_capability": "218449",
        "inventory": "218450",
        "partial_uf_probe_retry": "218456",
        "strong_quantified_probe": "218483",
        "fresh_generated_gate": "218459",
        "campaign_out": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1",
        "plan_sha256": "109fa2ec98bc517dddb405f6c47e9a953406e4d59c983e71acebf535f5bd2a37",
        "timing": [
          "218486",
          "218487",
          "218488",
          "218489",
          "218490",
          "218491",
          "218492"
        ],
        "models": [
          "218494",
          "218495"
        ],
        "gate_audit": "218485",
        "chunks": [
          {
            "phase": "timing",
            "job": "218486",
            "offset": 0,
            "tasks": 1000,
            "throttle": 18
          },
          {
            "phase": "timing",
            "job": "218487",
            "offset": 1000,
            "tasks": 1000,
            "throttle": 18
          },
          {
            "phase": "timing",
            "job": "218488",
            "offset": 2000,
            "tasks": 1000,
            "throttle": 18
          },
          {
            "phase": "timing",
            "job": "218489",
            "offset": 3000,
            "tasks": 1000,
            "throttle": 18
          },
          {
            "phase": "timing",
            "job": "218490",
            "offset": 4000,
            "tasks": 1000,
            "throttle": 18
          },
          {
            "phase": "timing",
            "job": "218491",
            "offset": 5000,
            "tasks": 1000,
            "throttle": 18
          },
          {
            "phase": "timing",
            "job": "218492",
            "offset": 6000,
            "tasks": 462,
            "throttle": 18
          },
          {
            "phase": "models",
            "job": "218494",
            "offset": 0,
            "tasks": 1000,
            "throttle": 32
          },
          {
            "phase": "models",
            "job": "218495",
            "offset": 1000,
            "tasks": 98,
            "throttle": 32
          }
        ],
        "timing_audit": "218493",
        "final_report": "218496"
      },
      "attempts": [
        {
          "job": "218449",
          "status": "harness-rejected-documented-incompleteness",
          "result": "Quantified UF SAT capability probe returned unknown with enumerative-instantiation exhaustion; UNSAT probe agreed. This is the documented incomplete SAT boundary, not a wrong answer. Preserve probe-failure.json and source setup-v1; retry classifies native UF as partial SAT completion without accepting an opposite definite answer."
        },
        {
          "job": "218456",
          "status": "completed-provisional-admission",
          "result": "All ground probes passed; admission replaced by stronger instantiation-requiring UF probes in218483. Prior capabilities archived under attempts/."
        },
        {
          "job": "218483",
          "status": "completed",
          "result": "Five ground divisions admit Primo,Z3,cvc5,Yices,OpenSMT. Quantified UF admits Primo(partial SAT completion),Z3,cvc5,Yices; OpenSMT explicitly rejects logicUF."
        },
        {
          "status": "submission-path-rejected-no-jobs",
          "result": "An incorrect workflow hash in the first controller invocation was rejected by sbatch before any timing jobs were submitted. Empty submission state retained; controller now verifies staged driver/configuration hashes before creating state. Retry reads the staged path from its saved record."
        }
      ],
      "artifacts": {
        "local": "results/long-limits-20261022",
        "remote": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1",
        "initial_workflow": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/workflow/setup-v1",
        "admission_workflow": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/workflow/candidate-v3",
        "frozen_workflow": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/workflow/25b0d7d558ec05dbf242a95e7a404adb31a337ed",
        "plan_sha256": "109fa2ec98bc517dddb405f6c47e9a953406e4d59c983e71acebf535f5bd2a37",
        "gate_artifacts": "/home/janotmik/primo-lra-equality-20261021/results/public-launch/218459"
      },
      "correctness": {
        "native_existing": "Reuse exact4419dc9 release/ASan and QF_LRA profile qualification from2026-10-21; no native changes. Fresh six-route generated gate and reference-admission checks before timings.",
        "unknown_policy": "Integer and quantified resource limits unchanged; unknown/timeouts are unsolved, separate from passes.",
        "model_boundary": "Five ground divisions require complete direct Dolmen coverage for all native profiles. Quantified UF uses reference-answer corroboration and explicitly lacks printed-model qualification.",
        "status": "Generated gate remains complete on identical native binary. Full timing attempt stopped on external OpenSMT SIGSEGV; ground corpus models not started; no qualified results or new plots.",
        "fresh_generated_gate": {
          "QF_UF": {
            "cases": 1000,
            "pass": 1000,
            "timeout": 0,
            "sat_models": 599,
            "resource_incomplete": 0
          },
          "QF_LRA": {
            "cases": 1000,
            "pass": 1000,
            "timeout": 0,
            "sat_models": 1000,
            "resource_incomplete": 0
          },
          "QF_LIA": {
            "cases": 1000,
            "pass": 972,
            "timeout": 28,
            "sat_models": 872,
            "resource_incomplete": 0
          },
          "QF_UFLRA": {
            "cases": 1000,
            "pass": 1000,
            "timeout": 0,
            "sat_models": 574,
            "resource_incomplete": 0
          },
          "QF_UFLIA": {
            "cases": 1000,
            "pass": 1000,
            "timeout": 0,
            "sat_models": 506,
            "resource_incomplete": 0
          },
          "UF": {
            "cases": 1000,
            "pass": 1000,
            "timeout": 0,
            "sat_models": 0,
            "resource_incomplete": 0
          }
        }
      },
      "required_outcome": "Complete matching input/binary/resource audits, all-theory cactus plots selecting one measured native profile per theory, family summaries, PAR2/timeouts/unknowns/errors, reference disagreements, separate ground model coverage, committed method and result metadata. Campaign is not complete at submission.",
      "commands": {
        "preflight": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir <frozen4419-source> --remote <private-SSH-alias> --remote-dir <source_workspace> --check-only --no-sync --require-tool contrib/local/bin/z3 --require-tool contrib/local/bin/cvc5 --require-tool contrib/local/bin/dolmen",
        "generated_gate": "PRIMO_EXPECTED_REVISION=4419dc9 PRIMO_SEED_BASE=2026102200 sbatch --partition=compute --hint=nomultithread --array=0-23%16 scripts/qualification/public_launch.sbatch",
        "inventory": "PRIMO_CORPORA_ROOT=<corpora_source> PRIMO_LONG_PHASE=inventory sbatch --array=0-5%6 <workflow>/run.sbatch",
        "probes": "PRIMO_LONG_PHASE=probe sbatch --time=00:30:00 <workflow>/run.sbatch",
        "audit": "PRIMO_LONG_STAGE=gate PRIMO_GATE_JOB=218459 sbatch <workflow>/report.sbatch",
        "launch": "python3 scripts/qualification/long_limits/launch.py --ssh-config <private-config> --remote <private-alias> --workspace <source_workspace> --local-source <frozen4419-source> --remote-out <remote-artifacts> --workflow <frozen_workflow> --plan <local-artifacts>/plan.json --gate-job 218485 --state <local-artifacts>/submission.json"
      },
      "workflow_git": {
        "frozen_workers": "25b0d7d558ec05dbf242a95e7a404adb31a337ed",
        "submission_controller": "02211bcfd977a45054148ea84a5f36632deeff30"
      },
      "tools": {
        "primo": {
          "path": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/bin/primo",
          "sha256": "e06bd36239ccc7af9fd29ed55af9f595f2e7cbd52f6ba5961b962c9d8d6fc26d",
          "version": "primo 0.2.0\ngit: 4419dc9\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07\n"
        },
        "z3": {
          "path": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/bin/z3",
          "sha256": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0",
          "version": "Z3 version 5.1.0 - 64 bit\n"
        },
        "cvc5": {
          "path": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/bin/cvc5",
          "sha256": "4a93548398445cf1a774655583f5465b156c26f63f2cdfb94f4728fdf7adde46",
          "version": "cvc5 1.3.4 [git f3b21c4 on branch HEAD]\ncompiled with GCC version Ubuntu Clang 18.1.3 (1ubuntu1) on May  7 2026 15:33:02\n\nCopyright (c) 2009-2026 by the authors and their institutional\naffiliations listed at https://cvc5.github.io/people.html\n\ncvc5 is open-source and is covered by the BSD license (modified).\n\nTHIS SOFTWARE IS PROVIDED AS-IS, WITHOUT ANY WARRANTIES.\nUSE AT YOUR OWN RISK.\n\nThis version of cvc5 is linked against the following non-(L)GPL'ed\nthird party libraries.\n\n  CaDiCaL - Simplified Satisfiability Solver\n  See https://github.com/arminbiere/cadical for copyright information.\n\n  SymFPU - The Symbolic Floating Point Unit\n  See https://github.com/martin-cs/symfpu/tree/CVC4 for copyright information.\n\nThis version of cvc5 is linked against the following third party\nlibraries covered by the LGPLv3 license.\nSee licenses/lgpl-3.0.txt for more information.\n\n  GMP - Gnu Multi Precision Arithmetic Library\n  See http://gmplib.org for copyright information.\n\n  LibPoly polynomial library\n  See https://github.com/SRI-CSL/libpoly for copyright and\n  licensing information.\n\ncvc5 is statically linked against these libraries. To recompile\nthis version of cvc5 with different versions of these libraries\nfollow the instructions on https://github.com/cvc5/cvc5/blob/main/INSTALL.md\n\nSee the file COPYING (distributed with the source code, and with\nall binaries) for the full cvc5 copyright, licensing, and (lack of)\nwarranty information.\n\n"
        },
        "yices": {
          "path": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/bin/yices-smt2",
          "sha256": "eab7efbff2a6f0cce2fcd2c25cb4a94e0e048c902d8ef9e6fd7d7989aa54c501",
          "version": "Yices 2.7.0\nCopyright SRI International.\nLinked with GMP 6.3.0\nCopyright Free Software Foundation, Inc.\nBuild date: 2025-07-17\nPlatform: x86_64-pc-linux-gnu (release/static)\nRevision: 4f19700f0e272f4a68250080d12a873523bc7ac3\n"
        },
        "opensmt": {
          "path": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/bin/opensmt",
          "sha256": "b7899e9aff299026d3251df7a28f51f56d8bd1e5b0fd7be11bcc72c4f2803a98",
          "version": "v2.9.2\n"
        },
        "dolmen": {
          "path": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/bin/dolmen",
          "sha256": "08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e",
          "version": "0.10\n"
        }
      },
      "submission_summary": {
        "timing_tasks": 6462,
        "native_ground_model_tasks": 1098,
        "runs": 30,
        "maximum_timing_concurrency": 126,
        "maximum_model_concurrency": 64,
        "all_dependencies_submitted": true
      },
      "initial_timing_check": {
        "observed_at_utc": "2026-10-22T08:51:22.782778+00:00",
        "completed_shards": 55,
        "rows": 1869,
        "bad_rows": [],
        "failure_files": [],
        "rows_per_logic": {
          "QF_LRA": 11,
          "UF": 49,
          "QF_UFLIA": 4,
          "QF_LIA": 528,
          "QF_UF": 1177,
          "QF_UFLRA": 100
        },
        "hardware": [
          {
            "identity": [
              "node-02.ciircluster",
              "compute",
              8192,
              [
                "Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz"
              ]
            ],
            "tasks": 48
          },
          {
            "identity": [
              "node-03.ciircluster",
              "compute",
              8192,
              [
                "Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz"
              ]
            ],
            "tasks": 37
          },
          {
            "identity": [
              "node-04.ciircluster",
              "compute",
              8192,
              [
                "Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz"
              ]
            ],
            "tasks": 36
          },
          {
            "identity": [
              "node-05.ciircluster",
              "compute",
              8192,
              [
                "Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz"
              ]
            ],
            "tasks": 42
          },
          {
            "identity": [
              "node-06.ciircluster",
              "compute",
              8192,
              [
                "Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz"
              ]
            ],
            "tasks": 18
          }
        ],
        "status": "Partial launch verification only; not a performance result. All six routes have measured rows, no hard failures observed,matched compute CPU/8GiB allocations."
      },
      "verification": [
        "make lint",
        "python3 -m py_compile scripts/qualification/long_limits/*.py",
        ".venv/bin/python -m ruff check scripts/qualification/long_limits tests/python/test_long_limit_metadata.py",
        "python3 -m unittest discover -s tests/python -p test_long_limit_metadata.py (9 tests)",
        "python3 scripts/slurm_validate_sbatch.py scripts/qualification/long_limits/run.sbatch",
        "python3 scripts/slurm_validate_sbatch.py scripts/qualification/long_limits/report.sbatch",
        "make docs",
        "python3 scripts/check_doc_links.py docs/_build/site",
        "Native release/ASan and option qualification reused on identical4419dc9/e06binary; no native or behavior changes in this task."
      ],
      "failure": {
        "solver": "OpenSMT2.9.2",
        "logic": "QF_LIA",
        "file": "20210219-Dartagnan/ReachSafety-Loops/benchmark51_polynomial-O0.smt2",
        "exit_code": -11,
        "seconds": 1.280211,
        "task_index": 1041,
        "array": "218487_41",
        "cancellation_time_cluster_local": "2026-10-22T11:34:34",
        "cause": "Guard incorrectly treated reference execution errors as global correctness failures and canceled all registered arrays. Native failure not observed. Dependent model jobs canceled; final audit218496 correctly refused missing model data.",
        "failure_artifact": "results/long-limits-20261022/run1/failures/timing-1041.json",
        "policy_repair": "Keep reference execution failures as unsolved/error rows with raw log evidence; native failures, wrong answers and reference disagreements remain blocking.",
        "archived_failure_artifact": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/attempts/initial-canceled/failures/timing-1041.json"
      },
      "stopped_progress": {
        "completed_shards": 158,
        "rows": 4930,
        "bad_rows": [
          {
            "answer": "error",
            "exit_code": -11,
            "expected": "",
            "family": "20210219-Dartagnan",
            "file": "20210219-Dartagnan/ReachSafety-Loops/benchmark51_polynomial-O0.smt2",
            "row": 3,
            "seconds": "1.280211",
            "status": "error",
            "stderr_head": "",
            "stderr_log": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/timing/QF_LIA/opensmt/shard-36/solver-output/0003-99a7296b415e-benchmark51_polynomial-O0.smt2.stderr",
            "stdout_log": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/timing/QF_LIA/opensmt/shard-36/solver-output/0003-99a7296b415e-benchmark51_polynomial-O0.smt2.stdout",
            "timed_out_with_stats": "false",
            "timeout": "false",
            "wrong": "false"
          }
        ],
        "failure_files": [
          "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/failures/timing-1041.json"
        ],
        "rows_per_logic": {
          "QF_LRA": 310,
          "UF": 300,
          "QF_UFLIA": 98,
          "QF_LIA": 2059,
          "QF_UF": 1803,
          "QF_UFLRA": 360
        },
        "hardware": [
          {
            "identity": [
              "node-02.ciircluster",
              "compute",
              8192,
              [
                "Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz"
              ]
            ],
            "tasks": 79
          },
          {
            "identity": [
              "node-03.ciircluster",
              "compute",
              8192,
              [
                "Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz"
              ]
            ],
            "tasks": 53
          },
          {
            "identity": [
              "node-05.ciircluster",
              "compute",
              8192,
              [
                "Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz"
              ]
            ],
            "tasks": 68
          },
          {
            "identity": [
              "node-04.ciircluster",
              "compute",
              8192,
              [
                "Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz"
              ]
            ],
            "tasks": 58
          },
          {
            "identity": [
              "node-06.ciircluster",
              "compute",
              8192,
              [
                "Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz"
              ]
            ],
            "tasks": 25
          },
          {
            "identity": [
              "node-07.ciircluster",
              "compute",
              8192,
              [
                "Intel(R) Xeon(R) CPU E5-2690 v4 @ 2.60GHz"
              ]
            ],
            "tasks": 1
          }
        ]
      },
      "recovery_smoke": {
        "job": "225341",
        "status": "pass",
        "environment": "CPU compute,node-02,1physicalCPU,8GiB",
        "command": "PRIMO_WORKDIR=<source_workspace> PRIMO_LONG_RECOVER=<workflow>/recover.py PRIMO_LONG_OUT=<remote-artifacts> sbatch <workflow>/recover.sbatch",
        "timeout_seconds": 30,
        "artifact": "results/long-limits-20261022/run1/recovery-smoke",
        "result": {
          "status": "pass",
          "rows": [
            {
              "row": "1",
              "file": "20210219-Dartagnan/ReachSafety-Loops/benchmark51_polynomial-O0.smt2",
              "family": "20210219-Dartagnan",
              "status": "error",
              "answer": "error",
              "expected": "",
              "wrong": "false",
              "seconds": "1.096734",
              "timeout": "false",
              "timed_out_with_stats": "false",
              "exit_code": "-11",
              "stderr_head": "",
              "stdout_log": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/recovery-smoke/solver-output/0001-99a7296b415e-benchmark51_polynomial-O0.smt2.stdout",
              "stderr_log": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/recovery-smoke/solver-output/0001-99a7296b415e-benchmark51_polynomial-O0.smt2.stderr"
            },
            {
              "row": "2",
              "file": "20180326-Bromberger/more_slacked/cut_lemmas/10-vars/cut_lemma_02_005.smt2.slack.smt2",
              "family": "20180326-Bromberger",
              "status": "ok",
              "answer": "unsat",
              "expected": "unsat",
              "wrong": "false",
              "seconds": "0.004774",
              "timeout": "false",
              "timed_out_with_stats": "false",
              "exit_code": "0",
              "stderr_head": "",
              "stdout_log": "",
              "stderr_log": ""
            }
          ],
          "tool": {
            "path": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/bin/opensmt",
            "sha256": "b7899e9aff299026d3251df7a28f51f56d8bd1e5b0fd7be11bcc72c4f2803a98",
            "version": "v2.9.2\n"
          },
          "guard_continued_after_sigsegv": true
        },
        "scope": "Actual external reference SIGSEGV followed by successful solve under repaired guard; no native behavior change or speed claim."
      },
      "recovery": {
        "status": "canceled-by-overly-broad-harness-exception-path",
        "workflow_git": "294a15c3791bf5ccbcbefafbd87bd9fa8b304c30",
        "worker_driver_sha256": "e63a8b8e7c751cebaeeb31f3c80161cee9f05e86185e862beec6440506d6aa3c",
        "recovery_sha256": "99c8846a4962305bf5b51306a1890e62e922e2c5bb099328dada2149e2b49cf5",
        "retained_complete_shards": 158,
        "pending_timing_shards": 6304,
        "archived_directories": 126,
        "artifact": "results/long-limits-20261022/run1/recovery.json",
        "archive": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/attempts/initial-canceled",
        "policy": "Reference execution errors remain unsolved/error rows with original logs and PAR2 penalty. Primo hard failures, wrong answers and decisive disagreements remain blocking.",
        "jobs": {
          "campaign_out": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1",
          "plan_sha256": "109fa2ec98bc517dddb405f6c47e9a953406e4d59c983e71acebf535f5bd2a37",
          "timing": [
            "225348",
            "225349",
            "225350",
            "225351",
            "225352",
            "225353",
            "225354"
          ],
          "models": [
            "225356",
            "225357"
          ],
          "gate_audit": "225347",
          "chunks": [
            {
              "phase": "timing",
              "job": "225348",
              "offset": 0,
              "tasks": 1000,
              "throttle": 18
            },
            {
              "phase": "timing",
              "job": "225349",
              "offset": 1000,
              "tasks": 1000,
              "throttle": 18
            },
            {
              "phase": "timing",
              "job": "225350",
              "offset": 2000,
              "tasks": 1000,
              "throttle": 18
            },
            {
              "phase": "timing",
              "job": "225351",
              "offset": 3000,
              "tasks": 1000,
              "throttle": 18
            },
            {
              "phase": "timing",
              "job": "225352",
              "offset": 4000,
              "tasks": 1000,
              "throttle": 18
            },
            {
              "phase": "timing",
              "job": "225353",
              "offset": 5000,
              "tasks": 1000,
              "throttle": 18
            },
            {
              "phase": "timing",
              "job": "225354",
              "offset": 6000,
              "tasks": 304,
              "throttle": 18
            },
            {
              "phase": "models",
              "job": "225356",
              "offset": 0,
              "tasks": 1000,
              "throttle": 32
            },
            {
              "phase": "models",
              "job": "225357",
              "offset": 1000,
              "tasks": 98,
              "throttle": 32
            }
          ],
          "recovery_sha256": "99c8846a4962305bf5b51306a1890e62e922e2c5bb099328dada2149e2b49cf5",
          "timing_audit": "225355",
          "final_report": "225358"
        },
        "frozen_workflow": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/workflow/294a15c3791bf5ccbcbefafbd87bd9fa8b304c30",
        "command": "python3 scripts/qualification/long_limits/launch.py --ssh-config <private-config> --remote <private-alias> --workspace <source_workspace> --local-source <frozen4419-source> --remote-out <remote-artifacts> --workflow <recovery-frozen-workflow> --plan <local-artifacts>/plan.json --gate-job225347 --state <local-artifacts>/submission-recovery-20261023.json --recovery <local-artifacts>/recovery.json",
        "verification": [
          "15 metadata unit tests",
          "make lint",
          "explicit nested-workflow Ruff and py_compile",
          "three SLURM script validators",
          "make docs",
          "local/Git link check:0failures",
          "Actual reference crash-then-success smoke225341 complete0",
          "Certification158complete and6304pending using final audit helper; native implementation and limits unchanged."
        ],
        "failure": {
          "task_index": 2095,
          "logic": "QF_UF",
          "profile": "z3",
          "artifact": "results/long-limits-20261022/run1/failures/timing-2095.json",
          "error": "Expecting value:line1column1(char0)",
          "classification": "Live-journal JSON parsing failure, not a solver answer or exit failure. Later inspected journals were well formed; the failing read bytes were not retained. Global BaseException handler incorrectly canceled all arrays.",
          "archived_artifact": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/attempts/recovery-1-canceled/failures/timing-2095.json"
        }
      },
      "infrastructure_isolation": {
        "status": "stopped-after-native-sigkill",
        "policy": "Only explicit CorrectnessFailure (native hard error/wrong answer/decisive disagreement) invokes scancel. Live snapshot reads are advisory; terminal CSVs strictly checked. Other harness/I/O failures kill only their own process group and persist task-failures. Full timing audit runs afterany; models still require its afterok success.",
        "unit_tests": 18,
        "smoke_job": "225508",
        "smoke_artifact": "results/long-limits-20261022/run1/recovery-smoke/d5c7b247a967",
        "scope": "Same actual reference SIGSEGV followed by successful UNSAT under latest guard; no native source or resource limit changes.",
        "retained_complete_shards": 182,
        "pending_timing_shards": 6280,
        "worker_driver_sha256": "d5c7b247a96789db2f8561d4a9e29bcd6b7f4fad49276e0c3a6dad5d23534f8b",
        "recovery_sha256": "6ddb07376ef8cb20af87f6196bc15124be453c0626fa79f0894c4bdc4711ffbe",
        "archive": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/attempts/recovery-1-canceled",
        "ancestor_recoveries": {
          "e63a8b8e7c751cebaeeb31f3c80161cee9f05e86185e862beec6440506d6aa3c": "99c8846a4962305bf5b51306a1890e62e922e2c5bb099328dada2149e2b49cf5"
        },
        "smoke_result": {
          "status": "pass",
          "rows": [
            {
              "row": "1",
              "file": "20210219-Dartagnan/ReachSafety-Loops/benchmark51_polynomial-O0.smt2",
              "family": "20210219-Dartagnan",
              "status": "error",
              "answer": "error",
              "expected": "",
              "wrong": "false",
              "seconds": "1.092509",
              "timeout": "false",
              "timed_out_with_stats": "false",
              "exit_code": "-11",
              "stderr_head": "",
              "stdout_log": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/recovery-smoke/d5c7b247a967/solver-output/0001-99a7296b415e-benchmark51_polynomial-O0.smt2.stdout",
              "stderr_log": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/recovery-smoke/d5c7b247a967/solver-output/0001-99a7296b415e-benchmark51_polynomial-O0.smt2.stderr"
            },
            {
              "row": "2",
              "file": "20180326-Bromberger/more_slacked/cut_lemmas/10-vars/cut_lemma_02_005.smt2.slack.smt2",
              "family": "20180326-Bromberger",
              "status": "ok",
              "answer": "unsat",
              "expected": "unsat",
              "wrong": "false",
              "seconds": "0.004705",
              "timeout": "false",
              "timed_out_with_stats": "false",
              "exit_code": "0",
              "stderr_head": "",
              "stdout_log": "",
              "stderr_log": ""
            }
          ],
          "tool": {
            "path": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/bin/opensmt",
            "sha256": "b7899e9aff299026d3251df7a28f51f56d8bd1e5b0fd7be11bcc72c4f2803a98",
            "version": "v2.9.2\n"
          },
          "guard_continued_after_sigsegv": true
        },
        "workflow_git": "d0223a8892c61c4c4b85e431135107e1b0223f21",
        "frozen_workflow": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/workflow/d0223a8892c61c4c4b85e431135107e1b0223f21",
        "jobs": {
          "campaign_out": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1",
          "plan_sha256": "109fa2ec98bc517dddb405f6c47e9a953406e4d59c983e71acebf535f5bd2a37",
          "timing": [
            "225512",
            "225513",
            "225514",
            "225516",
            "225517",
            "225518",
            "225519"
          ],
          "models": [
            "225521",
            "225522"
          ],
          "gate_audit": "225511",
          "chunks": [
            {
              "phase": "timing",
              "job": "225512",
              "offset": 0,
              "tasks": 1000,
              "throttle": 18
            },
            {
              "phase": "timing",
              "job": "225513",
              "offset": 1000,
              "tasks": 1000,
              "throttle": 18
            },
            {
              "phase": "timing",
              "job": "225514",
              "offset": 2000,
              "tasks": 1000,
              "throttle": 18
            },
            {
              "phase": "timing",
              "job": "225516",
              "offset": 3000,
              "tasks": 1000,
              "throttle": 18
            },
            {
              "phase": "timing",
              "job": "225517",
              "offset": 4000,
              "tasks": 1000,
              "throttle": 18
            },
            {
              "phase": "timing",
              "job": "225518",
              "offset": 5000,
              "tasks": 1000,
              "throttle": 18
            },
            {
              "phase": "timing",
              "job": "225519",
              "offset": 6000,
              "tasks": 280,
              "throttle": 18
            },
            {
              "phase": "models",
              "job": "225521",
              "offset": 0,
              "tasks": 1000,
              "throttle": 32
            },
            {
              "phase": "models",
              "job": "225522",
              "offset": 1000,
              "tasks": 98,
              "throttle": 32
            }
          ],
          "recovery_sha256": "6ddb07376ef8cb20af87f6196bc15124be453c0626fa79f0894c4bdc4711ffbe",
          "timing_audit": "225520",
          "final_report": "225523"
        },
        "command": "python3 scripts/qualification/long_limits/launch.py --ssh-config <private-config> --remote <private-alias> --workspace <source_workspace> --local-source <frozen4419-source> --remote-out <remote-artifacts> --workflow <isolation-frozen-workflow> --plan <local-artifacts>/plan.json --gate-job 225511 --state <local-artifacts>/submission-isolation-20261023.json --recovery <local-artifacts>/recovery-isolation.json",
        "qualification": "Incomplete historical cohort: no final comparison or full SAT-model qualification. No effective hard memory cap established. All timings excluded from replacement bounded comparison.",
        "gate_audit_result": {
          "job": "225511",
          "status": "COMPLETED",
          "exit_code": "0:0"
        },
        "initial_health": {
          "new_worker_executions": 157,
          "driver_sha256": "d5c7b247a96789db2f8561d4a9e29bcd6b7f4fad49276e0c3a6dad5d23534f8b",
          "partitions": [
            "compute"
          ],
          "memory_mib": [
            8192
          ],
          "global_failure_files": [],
          "local_task_failure_files": [],
          "running_tasks_at_check": 126,
          "scope": "Launch verification only; no performance conclusion. No global or local task failure records at this check."
        },
        "terminal_failure": {
          "task_index": 4141,
          "array_job": "225517_5",
          "actual_job": "225601",
          "host": "node-04",
          "logic": "UF",
          "profile": "primo",
          "input": "sledgehammer/FFT/uf.557340.smt2",
          "exit_code": -9,
          "seconds": 967.252132,
          "status": "error",
          "wrong": false,
          "artifact": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/failures/timing-4141.json",
          "sacct_batch_maxrss": "75096548K",
          "cause": "SIGKILL cause not captured directly. Large batch MaxRSS is consistent with memory pressure but is not proof of process peak or an OOM kill. The guard then canceled the campaign."
        },
        "last_complete_timing_shards": {
          "complete_timing_shards": 429,
          "total_shards": 6462,
          "by_logic": {
            "QF_LRA": 36,
            "QF_UFLIA": 12,
            "QF_LIA": 160,
            "QF_UF": 181,
            "QF_UFLRA": 40
          }
        }
      },
      "memory_audit_20261024": {
        "uncapped": {
          "job": "242893",
          "host": "node-04.ciircluster",
          "requested_memory_mib": 8192,
          "rlimit_as_bytes": [
            -1,
            -1
          ],
          "exposed_cgroup_memory_max": "max at every exposed ancestor",
          "artifact": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/memory-probe-242893.json"
        },
        "first_small_memory_smoke": {
          "job": "242894",
          "status": "FAILED",
          "reason": "Expected allocation diagnostic assertion failed: native instead aborted with CaDiCaL disconnect_external_propagator invalid-state API diagnostic. This was not a memory-out pass.",
          "artifact": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/memory-native-smoke-242894"
        },
        "enforced": {
          "job": "242895",
          "status": "COMPLETED",
          "rlimit_as_bytes": [
            8589934592,
            8589934592
          ],
          "oversized_mapping_bytes": 9663676416,
          "oversized_mapping_result": "ENOMEM",
          "artifact": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/memory-probe-242895.json",
          "native_control": {
            "limit_bytes": 67108864,
            "exit_code": -6,
            "classification": "native-error-under-forced-small-memory",
            "diagnostic": "CaDiCaL disconnect_external_propagator invalid-state API usage",
            "artifact": "/home/janotmik/primo-lra-equality-20261021/results/long-limits-20261022/run1/memory-native-smoke-242895",
            "input": "sledgehammer/FFT/uf.557340.smt2"
          }
        }
      }
    },
    {
      "id": "2026-10-21-pure-lra-equality-portfolio",
      "date": "2026-10-21",
      "kind": "experimental-option-and-portfolio-ablation",
      "evidence_status": "qualified-experimental-option-full-corpus-complete",
      "branch": "docs/public-repository-migration",
      "baseline_git": "964a39a",
      "scope": "Default-off pure-QF_LRA application of the existing Bjørner-Nachmanson Section 3.2 model-unit producer to existing difference-comparison atoms; compare default/equality/both/both-equality on all 1753 inputs. No default changes.",
      "implementation": {
        "flag": "--lra-equality-propagation",
        "scope_deviation": "The paper explicitly disables equality discovery for pure QF_LRA; this is a diversification experiment.",
        "checklist": "docs/implementation/lra.md#experimental-pure-arithmetic-equality-propagation",
        "driver": "scripts/qualification/lra_equalities/campaign.py",
        "wrapper": "scripts/qualification/lra_equalities/run.sbatch",
        "checks": "scripts/qualification/lra_equalities/checks.sbatch"
      },
      "profiles": {
        "default": [
          "--quiet"
        ],
        "equality": [
          "--quiet",
          "--lra-equality-propagation"
        ],
        "both": [
          "--quiet",
          "--lra-model-phase",
          "--monotone-elimination"
        ],
        "both-equality": [
          "--quiet",
          "--lra-model-phase",
          "--monotone-elimination",
          "--lra-equality-propagation"
        ]
      },
      "local_preliminary": {
        "status": "Bounded individual diagnostics only, not correctness qualification or performance evidence",
        "source": "Historical development candidate against964a39a, superseded by exact frozen4419dc9 qualification below.",
        "binary_sha256": "a59a346adf98d040daadc70f758f1e80298cdd0326ffb6edf7aca76b2c4a578d",
        "build": "cmake --build build-rel --target primo -j 4",
        "smoke": "build-rel/primo --quiet --stats --max-theory-conflicts 100 --preprocessing-mode=off --no-solved-constant-substitution --lra-equality-propagation --theory-phase positive --cadical-option=phase=1 benchmarks/seeds/qf_lra/variable_equality_conditional_bounds.smt2",
        "result": "SAT, 2 backtrack repair callbacks, zero SAT conflicts; this fixture does not establish an infeasible-repair backjump",
        "lint": "make lint passed",
        "docs": "make docs passed"
      },
      "required_qualification": {
        "environment": "CPU SLURM compute, 1 physical CPU per measurement, 7 GiB, no GPUs",
        "generated": "Per profile: 3000 FuzzSMT plus 1000 Boolean/arithmetic cases, status-aware reference checks and separate SAT-model checks",
        "mutations": "Fresh seeded OpFuzz on tracked real and regression seeds for enabled profiles; deterministic original seed checks first",
        "tests": "SLURM release CTest/Python/documentation checks and make asan-test",
        "benchmark": "All 1753 QF_LRA inputs, 30 seconds, 32 shards/profile; model replay strictly after all timing tasks",
        "models": "Every successful SAT row, direct Dolmen in original logic, separately timed",
        "acceptance": "No wrong answers, crashes, invalid models or untriaged reference disagreements; report gains/losses and union solves; retain only as experimental portfolio option unless evidence warrants more"
      },
      "artifacts": {
        "local": "results/lra-equality-portfolio-20261021",
        "status": "All timing and separate model tasks completed successfully; full audit passed",
        "remote_final": "/home/janotmik/primo-lra-equality-20261021/results/lra-equality-portfolio-20261021/final",
        "gate_audit": "results/lra-equality-portfolio-20261021/final/gate-audit.json"
      },
      "development_attempt": {
        "source_git": "2fa8c6dba650a2ffd489d9fe90382340259e3e92",
        "release_job": "215616",
        "asan_job": "215617",
        "release": "44/44 C++ tests and deterministic profile seed checks passed; Python and documentation checks completed in release workflow",
        "asan": "Blocked before compiling by missing Make dependency download stamps; attempted CLI11 network download timed out. Workflow now treats preflight-verified dependency files as reusable without modifying shared dependencies.",
        "remaining": "Superseded by frozen 4419dc9; all final correctness gates, corpus timings and model replay are complete."
      },
      "native_source_git": "4419dc902f03fe12b8933d5dee4378dd11497035",
      "binary_sha256": "e06bd36239ccc7af9fd29ed55af9f595f2e7cbd52f6ba5961b962c9d8d6fc26d",
      "execution": {
        "environment": "CPU-only SLURM compute, Xeon E5-2690 v4; no GPU nodes",
        "remote_workspace": "/home/janotmik/primo-lra-equality-20261021",
        "frozen_local_worktree": "/tmp/primo-lra-equality-source",
        "release_build_job": "215620",
        "release_checks_job": "215621",
        "asan_link_failure_job": "215622",
        "asan_runtime_retry_job": "215686",
        "generated_gate_job": "215623",
        "mutation_job": "215624",
        "retained_mutant_replay_job": "215625",
        "timings": "All128 tasks completed, 32 shards per profile, 30 seconds per input; model array started only afterward",
        "preflights": "results/lra-equality-portfolio-20261021/preflight-*.log",
        "timing_job": "215702",
        "model_replay_job": "215703",
        "incremental_job": "215693",
        "model_replay": "All 128 tasks COMPLETED 0:0; started2026-10-21 12:27:34 cluster-local after all timing tasks ended; last ended12:34:29",
        "timing_window": "2026-10-21 11:46:45–12:27:34 cluster-local (Europe/Prague)",
        "accounting": "results/lra-equality-portfolio-20261021/sacct-final.psv;128 timing and128 model tasks, allCOMPLETED0:0, temporal separation checked",
        "resource_limits": {
          "native_build_and_release_asan_checks": "4 CPUs, 8 GiB",
          "timings_generated_mutation_incremental_and_model_tasks": "1 physical CPU, 7 GiB per task",
          "models": "180-second solver cap, 120-second Dolmen cap, 5G Dolmen size; separate from30-second timings"
        }
      },
      "qualification_progress": {
        "release_cpp": "44/44 CTest passed, including deterministic infeasible-rollback test",
        "python": "242 tests passed",
        "documentation_examples": "12/12 passed",
        "original_seeds": "18 inputs under each of 4 profiles passed",
        "generated": {
          "default": {
            "generated": 3000,
            "generated_timeouts": 7,
            "generated_sat_models": 2611,
            "boolean_arithmetic": 1000,
            "boolean_sat_models": 1000
          },
          "equality": {
            "generated": 3000,
            "generated_timeouts": 32,
            "generated_sat_models": 2586,
            "boolean_arithmetic": 1000,
            "boolean_sat_models": 1000
          },
          "both": {
            "generated": 3000,
            "generated_timeouts": 10,
            "generated_sat_models": 2608,
            "boolean_arithmetic": 1000,
            "boolean_sat_models": 1000
          },
          "both-equality": {
            "generated": 3000,
            "generated_timeouts": 34,
            "generated_sat_models": 2584,
            "boolean_arithmetic": 1000,
            "boolean_sat_models": 1000
          }
        },
        "mutations": "All4 OpFuzz tasks completed, 0 bug triggers; all32 independent replay tasks completed",
        "mutation_replay": {
          "default": {
            "files": 3600,
            "unique_content_sha256": 1652,
            "pass": 3600,
            "wrong": 0,
            "crash": 0,
            "timeout": 0,
            "reference_disagreement": 0
          },
          "equality": {
            "files": 3600,
            "unique_content_sha256": 1652,
            "pass": 3600,
            "wrong": 0,
            "crash": 0,
            "timeout": 0,
            "reference_disagreement": 0
          },
          "both": {
            "files": 3600,
            "unique_content_sha256": 1652,
            "pass": 3600,
            "wrong": 0,
            "crash": 0,
            "timeout": 0,
            "reference_disagreement": 0
          },
          "both-equality": {
            "files": 3600,
            "unique_content_sha256": 1652,
            "pass": 3600,
            "wrong": 0,
            "crash": 0,
            "timeout": 0,
            "reference_disagreement": 0
          }
        },
        "asan": "All44 tests passed after providing the previously verified runtime, job215686.",
        "retained_sessions": {
          "equality": {
            "sessions": 1000,
            "pass": 1000,
            "queries": 11000,
            "sat_models": 8000
          },
          "both-equality-assumptions": {
            "status": "unsupported-configuration",
            "rejected_attempts": [
              1,
              3,
              5,
              7
            ],
            "reason": "Existing assumptions-mode guard forbids monotone elimination; one-shot profile remains supported."
          }
        },
        "configuration_triage": "Four initial combined-profile retained-session probes failed at the existing monotone-elimination/assumptions-mode guard. These are unsupported option combinations, not solver/reference disagreements. Equality-only retained mode passed1000 sessions,11000 queries,8000 direct SAT-model checks. All four one-shot profiles remain supported.",
        "complete": true
      },
      "asan_runtime": {
        "rpm": "libasan-11.5.0-14.el9.x86_64.rpm",
        "sha256": "e4670fc0e67a7b8f3553b42816ea94b7027fe69a3eb9eb49775bf69a6794ec23",
        "provenance": "2026-10-02-publication-qualification; exact retained package hash rechecked",
        "checks_wrapper": "scripts/qualification/lra_equalities/checks.sbatch; staged as results/lra-equality-portfolio-20261021/asan-checks.sbatch without modifying frozen native source"
      },
      "static_review": {
        "lint": "make lint passed",
        "clang_tidy": "All128 tracked C++ files scanned, plus final changed solver_engines.cpp rechecked; only external CLI11 leak warning and baseline option-enum negative-test warnings surfaced",
        "include_cleaner": "All128 files scanned; 402 advisory warnings, dominated by existing transitive includes and paired self-includes; inspected changed files, no new unused implementation include",
        "source_review": "Borrow/mutation/use checked; immutable prepared index, fixed-size parent vector, component reasons and queue ownership remain separate",
        "documentation_review": "Independent read-only reviewer ablation_doc_review accepted final implementation/evidence sections and run-log entry against4419dc9 and qualified artifacts. E1 feasible repair, E3 complexity, E4 navigation and optional-backend guards resolved; final counts, all128 model shards/3236 Dolmen passes, cutoff caveats, accounting separation and hashes independently checked. No required findings remain. Workflow link pin and build/link validation checked separately.",
        "final_validation": "make lint; qualification Python syntax; SLURM wrapper validation; actual complete-coverage audit --require-models; make docs; assembled-site local/Git link checker; rendered SVG inspection",
        "workflow_link_pin": "Pinned equalityworkflow to dcb548a457df2a151e8c71de0445c367e9023ced; linked campaign/audit/plan files checked in that commit. Solver sources and tests remain identical to4419dc9."
      },
      "diagnostics": {
        "status": "complete-diagnostic-only-not-headline-timing",
        "source_git": "4419dc902f03fe12b8933d5dee4378dd11497035",
        "binary_sha256": "e06bd36239ccc7af9fd29ed55af9f595f2e7cbd52f6ba5961b962c9d8d6fc26d",
        "input": {
          "file": "2019-ezsmt/travellingSalesperson/rand_70_300_1155482584_11.lp.smt2",
          "sha256": "709e845fc8c211c1738e6ac8ded35586ce4619de47d69915f33b2fd42d05c413",
          "expected": "sat"
        },
        "environment": "CPU SLURM node-09, one physical CPU/7 GiB, separate from headline timing nodes02/03",
        "plan": "scripts/qualification/lra_equalities/diagnostic-plan.json",
        "driver": "scripts/qualification/lra_equalities/diagnostics.py",
        "wrapper": "scripts/qualification/lra_equalities/diagnostics.sbatch",
        "commands": {
          "counters": "PRIMO_DIAG_MODE=counters sbatch --array=0 scripts/qualification/lra_equalities/diagnostics.sbatch",
          "profile": "PRIMO_DIAG_MODE=profile sbatch --array=1,3 scripts/qualification/lra_equalities/diagnostics.sbatch"
        },
        "initial_counter_job": "215758",
        "initial_counter_failure": "Harness plan omitted expected key; stopped after default SAT. Preserved outputs and initial plan; corrected expected=sat before retry.",
        "counter_job": "215777",
        "profile_job": "215759",
        "local_artifacts": "results/lra-equality-portfolio-20261021/final/diagnostics{,-retry}",
        "remote_artifacts": "/home/janotmik/primo-lra-equality-20261021/results/lra-equality-portfolio-20261021/final/diagnostics{,-retry}",
        "counters": {
          "default": {
            "answer": "sat",
            "seconds": 1.3244654461741447,
            "timeout": false,
            "exit_code": 0,
            "statistics": {
              ":lra.pivots": 6430
            }
          },
          "equality": {
            "answer": "unknown",
            "seconds": 5.073286406695843,
            "timeout": true,
            "exit_code": 0,
            "statistics": {
              ":lra.equality-propagation.backtrack-repairs": 559,
              ":lra.equality-propagation.equalities": 4304669,
              ":lra.equality-propagation.nonzeros-inspected": 12034486,
              ":lra.equality-propagation.propagations": 3,
              ":lra.equality-propagation.rows-inspected": 690239,
              ":lra.equality-propagation.scans": 13443,
              ":lra.equality-propagation.targets": 1140,
              ":lra.pivots": 1107,
              ":time.lra-equality-propagation-us": 4564163
            }
          },
          "both": {
            "answer": "sat",
            "seconds": 1.674843242391944,
            "timeout": false,
            "exit_code": 0,
            "statistics": {
              ":lra.pivots": 7152
            }
          },
          "both-equality": {
            "answer": "unknown",
            "seconds": 5.040507411584258,
            "timeout": true,
            "exit_code": 0,
            "statistics": {
              ":lra.equality-propagation.backtrack-repairs": 339,
              ":lra.equality-propagation.equalities": 3742737,
              ":lra.equality-propagation.nonzeros-inspected": 5866575,
              ":lra.equality-propagation.propagations": 56,
              ":lra.equality-propagation.rows-inspected": 689782,
              ":lra.equality-propagation.scans": 15476,
              ":lra.equality-propagation.targets": 1140,
              ":lra.pivots": 943,
              ":time.lra-equality-propagation-us": 4567431
            }
          }
        },
        "stack_samples": {
          "equality": {
            "samples": 155,
            "equality_consumer": 151,
            "model_unit_producer": 132,
            "tableau_check": 1,
            "note": "Overlapping inclusive wall-clock counts; GDB/statistics perturb runtime."
          },
          "both-equality": {
            "samples": 58,
            "equality_consumer": 56,
            "model_unit_producer": 45,
            "tableau_check": 0,
            "note": "Overlapping inclusive wall-clock counts; GDB/statistics perturb runtime."
          }
        },
        "decision": "Keep source frozen for a complete matched portfolio baseline. Repeated producer work dominates this case; fewer pivots do not imply a faster run. Redundant scans/queued candidates are documented limitations. No speculative optimization or default promotion claimed."
      },
      "reproduction": {
        "manifest": "benchmarks/qf-lra-migration-ablation-full.txt (strip comments/empty lines)",
        "manifest_sha256": "60e3d3dcbce921058f848536259d6570f147d6a2443019b88e70a716f401fbab",
        "common_environment": {
          "PRIMO_EXPECTED_GIT": "4419dc9",
          "PRIMO_SEED_BASE": "2026102100",
          "PRIMO_SHARDS": "32",
          "PRIMO_TIMEOUT": "30",
          "PRIMO_MODEL_TIMEOUT": "180",
          "PRIMO_EXPECTED_INPUTS": "1753"
        },
        "paths": "PRIMO_WORKDIR: prepared workspace; PRIMO_CAMPAIGN_OUT: phase output; PRIMO_MANIFEST: normalized manifest; PRIMO_CORPUS_ROOT: full corpus. Checks additionally require CMake directory/header manifest; retained sessions require PRIMO_INCREMENTAL_OUT.",
        "generated": "PRIMO_PHASE=gate sbatch --array=0-31%8 scripts/qualification/lra_equalities/run.sbatch",
        "mutations": "PRIMO_PHASE=mutation sbatch --array=1,3,5,7%4 scripts/qualification/lra_equalities/run.sbatch",
        "mutation_replay": "After mutations: PRIMO_PHASE=mutants PRIMO_MUTANT_ROOT=<mutations> sbatch --array=0-31%8 scripts/qualification/lra_equalities/run.sbatch",
        "retained_sessions": "sbatch scripts/qualification/lra_equalities/incremental.sbatch",
        "timings": "PRIMO_PHASE=benchmark sbatch --array=0-127%32 scripts/qualification/lra_equalities/timing.sbatch",
        "models": "PRIMO_PHASE=replay sbatch --array=0-127%32 --time=04:00:00 --dependency=afterok:<timing-array> scripts/qualification/lra_equalities/run.sbatch",
        "audit": "python3 scripts/qualification/lra_equalities/audit.py <campaign-final-root> --require-models --binary-sha256 e06bd36239ccc7af9fd29ed55af9f595f2e7cbd52f6ba5961b962c9d8d6fc26d"
      },
      "workflow_git": "dcb548a457df2a151e8c71de0445c367e9023ced",
      "toolchain": {
        "compiler": "GCC11.4.1",
        "build": "Release, no sanitizers in timings",
        "cadical": "cadical-3.0.0-7b99c07",
        "reference": {
          "version": "Z3 5.1.0, 64-bit",
          "sha256": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0"
        },
        "validator": {
          "version": "Dolmen0.10",
          "sha256": "08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e"
        }
      },
      "full_corpus": {
        "inputs": 1753,
        "timeout_seconds": 30,
        "shards_per_profile": 32,
        "input_manifest_sha256": "5aeb59d2a4d34ecf28143d5b004a7046a26c0edbc7210e9975f86112168deffe",
        "profiles": {
          "default": {
            "inputs": 1753,
            "solved": 1466,
            "sat": 892,
            "timeouts": 287,
            "unknown": 0,
            "errors": 0,
            "wrong": 0,
            "par2_sum": 21262.250912,
            "direct_dolmen_models": 892
          },
          "equality": {
            "inputs": 1753,
            "solved": 1169,
            "sat": 701,
            "timeouts": 584,
            "unknown": 0,
            "errors": 0,
            "wrong": 0,
            "par2_sum": 37381.945809000004,
            "direct_dolmen_models": 701
          },
          "both": {
            "inputs": 1753,
            "solved": 1533,
            "sat": 942,
            "timeouts": 220,
            "unknown": 0,
            "errors": 0,
            "wrong": 0,
            "par2_sum": 17184.989107,
            "direct_dolmen_models": 942
          },
          "both-equality": {
            "inputs": 1753,
            "solved": 1175,
            "sat": 701,
            "timeouts": 578,
            "unknown": 0,
            "errors": 0,
            "wrong": 0,
            "par2_sum": 37515.819358,
            "direct_dolmen_models": 701
          }
        },
        "decisive_disagreements": 0,
        "model_status": "Every successful SAT row passed direct Dolmen in original logic;3236 checks total; no fallback qualification",
        "portfolio": {
          "all_arms_union": 1556,
          "default_both_union": 1556,
          "new_beyond_default_both": 0,
          "equality_gains_over_default": 3,
          "equality_losses_against_default": 300,
          "both_equality_gains_over_both": 0,
          "both_equality_losses_against_both": 358
        },
        "equality_gains_files": [
          "LassoRanker/CooperatingT2/polyrank4.t2.c_Iteration10_Loop_7-phaseTemplate.smt2",
          "LassoRanker/SV-COMP/BradleyMannaSipma-2005ICALP-Fig1_true-termination.c_Iteration1_Lasso_7-phaseTemplate.smt2",
          "LassoRanker/Ultimate/GulwaniResetBranchOnly.bpl_Iteration1_Lasso_7-phaseTemplate.smt2"
        ],
        "paired_summary": {
          "equality_vs_default": {
            "gains": 3,
            "losses": 300,
            "par2_ratio": 1.7581368014005687,
            "median_common_runtime_ratio": 1.0411026155996383
          },
          "both_equality_vs_both": {
            "gains": 0,
            "losses": 358,
            "par2_ratio": 2.183057500031734
          }
        },
        "family_solved": {
          "2017-Heizmann-UltimateInvariantSynthesis": {
            "inputs": 58,
            "default": 18,
            "equality": 14,
            "both": 23,
            "both-equality": 16
          },
          "2019-ezsmt": {
            "inputs": 105,
            "default": 90,
            "equality": 61,
            "both": 94,
            "both-equality": 67
          },
          "DTP-Scheduling": {
            "inputs": 91,
            "default": 91,
            "equality": 86,
            "both": 91,
            "both-equality": 91
          },
          "LassoRanker": {
            "inputs": 419,
            "default": 236,
            "equality": 63,
            "both": 296,
            "both-equality": 71
          },
          "TM": {
            "inputs": 25,
            "default": 24,
            "equality": 18,
            "both": 25,
            "both-equality": 15
          },
          "check": {
            "inputs": 2,
            "default": 2,
            "equality": 2,
            "both": 2,
            "both-equality": 2
          },
          "clock_synchro": {
            "inputs": 36,
            "default": 33,
            "equality": 33,
            "both": 35,
            "both-equality": 34
          },
          "keymaera": {
            "inputs": 21,
            "default": 21,
            "equality": 21,
            "both": 21,
            "both-equality": 21
          },
          "latendresse": {
            "inputs": 18,
            "default": 15,
            "equality": 15,
            "both": 11,
            "both-equality": 11
          },
          "meti-tarski": {
            "inputs": 488,
            "default": 488,
            "equality": 488,
            "both": 488,
            "both-equality": 488
          },
          "miplib": {
            "inputs": 42,
            "default": 17,
            "equality": 15,
            "both": 20,
            "both-equality": 17
          },
          "sal": {
            "inputs": 107,
            "default": 107,
            "equality": 107,
            "both": 107,
            "both-equality": 107
          },
          "sc": {
            "inputs": 144,
            "default": 144,
            "equality": 116,
            "both": 144,
            "both-equality": 107
          },
          "spider_benchmarks": {
            "inputs": 42,
            "default": 42,
            "equality": 42,
            "both": 42,
            "both-equality": 42
          },
          "tropical-matrix": {
            "inputs": 10,
            "default": 0,
            "equality": 0,
            "both": 0,
            "both-equality": 0
          },
          "tta_startup": {
            "inputs": 72,
            "default": 68,
            "equality": 56,
            "both": 68,
            "both-equality": 55
          },
          "uart": {
            "inputs": 73,
            "default": 70,
            "equality": 32,
            "both": 66,
            "both-equality": 31
          }
        },
        "artifacts": {
          "timing_audit": "results/lra-equality-portfolio-20261021/final/timing-audit.json",
          "qualified_audit": "results/lra-equality-portfolio-20261021/final/qualified-audit.json",
          "csvs": "results/lra-equality-portfolio-20261021/final/full30/plot-data/*.csv",
          "raw": "CPU SLURM workspace, results/lra-equality-portfolio-20261021/final/full30/{profile}/shard-*; original models and generated inputs retained remotely",
          "local_timing_archive": "results/lra-equality-portfolio-20261021/timing-full30.tar.gz",
          "local_qualified_archive": "results/lra-equality-portfolio-20261021/qualified-full30.tar.gz"
        },
        "models_complete": true,
        "derived_cutoffs": [
          {
            "cutoff_seconds_per_configuration": 0.1,
            "default_both_union": 830,
            "all_arms_union": 830,
            "additional_files": []
          },
          {
            "cutoff_seconds_per_configuration": 1,
            "default_both_union": 1101,
            "all_arms_union": 1101,
            "additional_files": []
          },
          {
            "cutoff_seconds_per_configuration": 3,
            "default_both_union": 1238,
            "all_arms_union": 1238,
            "additional_files": []
          },
          {
            "cutoff_seconds_per_configuration": 5,
            "default_both_union": 1301,
            "all_arms_union": 1302,
            "additional_files": [
              "2017-Heizmann-UltimateInvariantSynthesis/_gr2006.c.i_4_4_3.bpl_7.smt2"
            ]
          },
          {
            "cutoff_seconds_per_configuration": 10,
            "default_both_union": 1396,
            "all_arms_union": 1398,
            "additional_files": [
              "2019-ezsmt/routingMax/SCC_strong/p50.56.smt2",
              "LassoRanker/SV-COMP/BradleyMannaSipma-2005ICALP-Fig1_true-termination.c_Iteration1_Lasso_7-phaseTemplate.smt2"
            ]
          },
          {
            "cutoff_seconds_per_configuration": 20,
            "default_both_union": 1501,
            "all_arms_union": 1501,
            "additional_files": []
          },
          {
            "cutoff_seconds_per_configuration": 30,
            "default_both_union": 1556,
            "all_arms_union": 1556,
            "additional_files": []
          }
        ],
        "derived_cutoff_limitations": "Exploratory censoring of the same30-second measurements, not new benchmark runs. No paired-repeat confirmation and no shared-budget portfolio schedule measured.",
        "artifact_sha256": {
          "final/qualified-audit.json": "ad64b452e836c3c45613111002096668194195865c1d5d89eba93f0288065405",
          "qualified-full30.tar.gz": "9fa2980c9c0362188e455220c2758f2b266449552237a23e322c2b1522540a6a",
          "sacct-final.psv": "06a2666bc6f00941999054bf1a6dbb6b62747ab94f3772c996dfb5cf50096091",
          "final/full30/plot-data/both-equality.csv": "ee99e25cda101dd93e36294ef2386eea74ebe95af87839806fef613153c6c834",
          "final/full30/plot-data/both.csv": "6ee06cc8ab76dba749e8fcbfacc05cfff5fd74e4c12c5bf75386d5c773c4d3a9",
          "final/full30/plot-data/default.csv": "146f42702da73a9ef3c09c0711ec960ec8c26570232d23ed7b70595df9dc0f4d",
          "final/full30/plot-data/equality.csv": "682df0b79436324e45510618757a4b80a5c9add453fbd5b85a8e6b474835316e"
        }
      },
      "decision": {
        "implementation": "Accepted as the user-requested, correctness-qualified default-off experimental control.",
        "performance": "Negative aggregate result at30 seconds: no added union coverage over default+both; substantial losses. Exploratory5/10-second censoring adds1/2 cases, unconfirmed by repeat pairs.",
        "portfolio_union_caveat": "Per-configuration time budgets, not a shared-budget scheduled portfolio.",
        "defaults": "Unchanged; no promotion."
      },
      "plot": {
        "path": "docs/_static/qf-lra-equality-portfolio-full30.svg",
        "inputs": 1753,
        "filtering": "None; times below0.01s drawn at left edge. All successful SAT rows model-qualified.",
        "command": "python3 scripts/plot_cactus.py --series default=results/lra-equality-portfolio-20261021/final/full30/plot-data --series equality=results/lra-equality-portfolio-20261021/final/full30/plot-data --series both=results/lra-equality-portfolio-20261021/final/full30/plot-data --series both-equality=results/lra-equality-portfolio-20261021/final/full30/plot-data --timeout 30 --title 'QF_LRA: pure-arithmetic equality propagation' --sort-by-solved --highlight-series both --note 'Primo 4419dc9; CPU SLURM compute; one physical CPU and 7 GiB per run.' --note 'both = model phase + monotone elimination; equality = variable-equality propagation.' --note 'All 3,236 successful SAT rows separately validated by Dolmen; no default changes.' --note 'Times below 0.01s share the left edge; no easy-instance filtering.' --out docs/_static/qf-lra-equality-portfolio-full30.svg",
        "summary": "results/lra-equality-portfolio-20261021/plot-summary.txt"
      },
      "source_equivalence": "Later changes affect documentation/evaluation scripts only; git diff 4419dc9 -- src tests CMakeLists.txt Makefile is empty."
    },
    {
      "id": "2026-10-11-qf-lra-historical-reference-recovery",
      "date": "2026-10-11",
      "kind": "historical-reference-recovery-and-censored-comparison",
      "evidence_status": "historical-reference-reuse",
      "branch": "docs/public-repository-migration",
      "native_source_git": "42005258b21263500e24faf9f0865bb213663935",
      "scope": "Recover all 1753-input reference timings and overlay current native default/both at 30 seconds. No new solver executions, default changes, or reference model checks.",
      "benchmark": {
        "manifest": "benchmarks/qf-lra-full-division.txt",
        "inputs": 1753,
        "families": 17,
        "plot_cutoff_seconds": 30,
        "historical_reference_timeout_seconds": 300
      },
      "original_reference_runs": {
        "2026-08-01-qf-lra-full-division-300s": {
          "jobs": "sbatch --array=0-119 --time=08:00:00 scripts/slurm_qf_lra_scrambled_compare.sbatch with PRIMO_COMPARE_ROOT=tmp/QF_LRA, PRIMO_COMPARE_MANIFEST=benchmarks/qf-lra-full-division.txt, PRIMO_COMPARE_TIMEOUT=300, PRIMO_COMPARE_SHARDS=40",
          "commit": "aa44320"
        },
        "2026-08-03-qf-lra-division-four-solver": {
          "jobs": "sbatch --array=0-79 --time=10:00:00 scripts/slurm_qf_lra_scrambled_compare.sbatch with PRIMO_COMPARE_ROOT=tmp/QF_LRA, PRIMO_COMPARE_MANIFEST=benchmarks/qf-lra-full-division.txt, PRIMO_COMPARE_TIMEOUT=300, PRIMO_COMPARE_SHARDS=40, PRIMO_COMPARE_SOLVERS='primo=build-slurm-rel/primo --quiet;yices=contrib/local/bin/yices-smt2'",
          "commit": "b6b8d55"
        },
        "2026-08-03-qf-lra-division-opensmt": {
          "jobs": "sbatch --array=0-39 --time=10:00:00 scripts/slurm_qf_lra_scrambled_compare.sbatch with PRIMO_COMPARE_ROOT=tmp/QF_LRA, PRIMO_COMPARE_MANIFEST=benchmarks/qf-lra-full-division.txt, PRIMO_COMPARE_TIMEOUT=300, PRIMO_COMPARE_SHARDS=40, PRIMO_COMPARE_SOLVERS='opensmt=contrib/local/bin/opensmt'",
          "commit": "f04fd42"
        }
      },
      "reference_versions": {
        "opensmt": "2.9.2",
        "yices": "2.7.0",
        "z3": "5.0.0",
        "cvc5": "1.3.4"
      },
      "reference_jobs": {
        "opensmt": "119045",
        "yices": "118904",
        "z3": "118382",
        "cvc5": "118382"
      },
      "execution": {
        "native": "October 2026, compute Xeon E5-2690 v4, one physical CPU, 7 GiB, source 4200525; original ablation artifacts unchanged",
        "historical": "August 2026, compute node-01 through node-06, AllocCPUS=2, ReqMem=12G; original wrapper requests cpus-per-task=1",
        "recovery": "Read-only SSH archive and accounting; local metadata analysis and plotting only; no GPU jobs"
      },
      "commands": {
        "audit": "python3 scripts/qualification/lra_ablation/reuse_references.py --historical results/qf-lra-historical-references-20261011 --native results/lra-migration-ablation-20261010/full30/plot-data --out results/qf-lra-historical-references-20261011/derived30",
        "plot": "python3 scripts/plot_cactus.py --series 'Primo default=results/qf-lra-historical-references-20261011/derived30/primo-default' --series 'Primo both=results/qf-lra-historical-references-20261011/derived30/primo-both' --series 'OpenSMT 2.9.2=results/qf-lra-historical-references-20261011/derived30/opensmt' --series 'Yices 2.7.0=results/qf-lra-historical-references-20261011/derived30/yices' --series 'Z3 5.0.0=results/qf-lra-historical-references-20261011/derived30/z3' --series 'cvc5 1.3.4=results/qf-lra-historical-references-20261011/derived30/cvc5' --timeout 30 --out docs/_static/qf-lra-current-vs-historical-references-full30.svg --title 'Full QF_LRA: current Primo and historical references' --highlight-series 'Primo both' --sort-by-solved --note 'All 1,753 inputs; no easy-input filtering. Primo 4200525, October 2026: 30 s, 7 GiB, compute CPUs.' --note 'Historical references, August 2026: 300 s, 12 GiB, compute CPUs; stored timings censored at 30 s.' --note 'Reference jobs: OpenSMT 119045; Yices 118904; Z3/cvc5 118382. Mixed dates and memory limits.' --note 'Same normalized filenames; historical input hashes absent. This is not a fresh matched evaluation.'",
        "accounting": "sacct -j 118382,118904,119045 --format=JobID,State,NodeList,Partition,AllocCPUS,ReqMem -n -X -P",
        "remote_archive": "cd /home/janotmik/primo-qflra && tar -czf /tmp/primo-qflra-historical-references-20261011.tar.gz results/qf-lra-scrambled-118382/z3*.csv results/qf-lra-scrambled-118382/cvc5*.csv results/qf-lra-scrambled-118904/yices*.csv results/qf-lra-scrambled-119045/opensmt*.csv"
      },
      "coverage": {
        "reference_csvs": 160,
        "shards_per_reference": 40,
        "normalized_filename_sets_identical": true,
        "answer_pairs_checked": 28,
        "decisive_disagreements": 0,
        "historical_input_sha256_available": false
      },
      "summary": {
        "primo-default": {
          "inputs": 1753,
          "solved": 1466,
          "unsolved": 287,
          "errors": 0,
          "wrong": 0,
          "original_solved": 1466,
          "censored_solves": 0,
          "par2_sum_seconds": 21265.297327,
          "derived_csv_sha256": "e2f21baa547cd0bcc009f0e0caf16ccaa5f5d57509912213c63193093cecb23a"
        },
        "primo-phase": {
          "inputs": 1753,
          "solved": 1511,
          "unsolved": 242,
          "errors": 0,
          "wrong": 0,
          "original_solved": 1511,
          "censored_solves": 0,
          "par2_sum_seconds": 18357.774028,
          "derived_csv_sha256": "90433d8c057530b3601b7ef36c116265bc437e90f04ddac125e4dba738205c6f"
        },
        "primo-monotone": {
          "inputs": 1753,
          "solved": 1487,
          "unsolved": 266,
          "errors": 0,
          "wrong": 0,
          "original_solved": 1487,
          "censored_solves": 0,
          "par2_sum_seconds": 20169.971929,
          "derived_csv_sha256": "11662e25b408671c9629ebc08e1ca2a1d052e7f59498d96f7e5ff0be868910dc"
        },
        "primo-both": {
          "inputs": 1753,
          "solved": 1531,
          "unsolved": 222,
          "errors": 0,
          "wrong": 0,
          "original_solved": 1531,
          "censored_solves": 0,
          "par2_sum_seconds": 17288.825195,
          "derived_csv_sha256": "899fc31369ac9566a9cb25f214fb567fd1206fafe4295a2c449bffc8ed805469"
        },
        "opensmt": {
          "inputs": 1753,
          "solved": 1527,
          "unsolved": 226,
          "errors": 0,
          "wrong": 0,
          "original_solved": 1670,
          "censored_solves": 143,
          "par2_sum_seconds": 17470.07615,
          "derived_csv_sha256": "dd20dbd6d63c583db3cfba9df8d4ad29ba9948eb674dd070461275f98677abee"
        },
        "yices": {
          "inputs": 1753,
          "solved": 1525,
          "unsolved": 228,
          "errors": 0,
          "wrong": 0,
          "original_solved": 1645,
          "censored_solves": 120,
          "par2_sum_seconds": 16525.064283,
          "derived_csv_sha256": "bd305538364e4aa8880733948692b07eed8990e21ed8a6a015d99b5ecc4aed6b"
        },
        "z3": {
          "inputs": 1753,
          "solved": 1346,
          "unsolved": 407,
          "errors": 0,
          "wrong": 0,
          "original_solved": 1584,
          "censored_solves": 238,
          "par2_sum_seconds": 27536.086688,
          "derived_csv_sha256": "bf0b1f509c38c4d12525d1c157bfc65f4e9045466f16c38978a122469afa5d85"
        },
        "cvc5": {
          "inputs": 1753,
          "solved": 1209,
          "unsolved": 544,
          "errors": 0,
          "wrong": 0,
          "original_solved": 1511,
          "censored_solves": 302,
          "par2_sum_seconds": 35124.02919,
          "derived_csv_sha256": "5d43acc0c602fda303a7fea4f57d7cb95b07c1f59074b78c284b36b1592b9e31"
        }
      },
      "limitations": [
        "Historical input identity checked by filename only; original input hashes absent.",
        "Historical references: August 2026 compute, 12 GiB; native: October 2026 compute, 7 GiB.",
        "Derived cutoff is censoring stored timings, not a fresh 30-second reference run.",
        "Native models separately validated; no new historical-reference model validation.",
        "Small count differences are not evidence of superiority under matched execution conditions."
      ],
      "artifacts": {
        "local_root": "results/qf-lra-historical-references-20261011",
        "local_audit": "results/qf-lra-historical-references-20261011/derived30/audit.json",
        "remote_original_root": "/home/janotmik/primo-qflra/results",
        "remote_archive": "/tmp/primo-qflra-historical-references-20261011.tar.gz",
        "plot": "docs/_static/qf-lra-current-vs-historical-references-full30.svg",
        "family_counts": "results/qf-lra-historical-references-20261011/derived30/audit.json: summary.<solver>.families",
        "status": "Raw archive and audit downloaded locally; original raw CSVs persist on cluster; plot and workflow tracked"
      },
      "artifact_sha256": {
        "results/qf-lra-historical-references-20261011/primo-qflra-historical-references-20261011.tar.gz": "51d9ff3e39cfb2401421030e8fce3541cf8d66f416cf76dbc9400860f36e374a",
        "results/qf-lra-historical-references-20261011/derived30/audit.json": "244933fe04ec9972c34ca526598e27a17fa4d3dc66943a2bfc43f00a9f13c598",
        "results/qf-lra-historical-references-20261011/slurm-accounting.txt": "0ee50e873b5bd25c0fb0325486cc3d167d20ce7f97c2e73e68da8be40488182f"
      }
    },
    {
      "id": "2026-10-11-migration-lra-regression-diagnosis",
      "date": "2026-10-11",
      "kind": "bounded-counters-and-stack-profiling",
      "evidence_status": "diagnosis-complete-default-promotion-deferred",
      "branch": "docs/public-repository-migration",
      "native_source_git": "42005258b21263500e24faf9f0865bb213663935",
      "binary_sha256": "4ff4f6c58c7ee93f75898639df8e49a6dcbd53d40a6d8565d12ef08ab5e1a90b",
      "scope": "Investigate all 33 distinct lost solves from the full 1753-input ablation. No native source or default changes.",
      "manifest": "scripts/qualification/lra_ablation/diagnostic-plan.json",
      "profiles": {
        "default": [
          "--quiet"
        ],
        "phase": [
          "--quiet",
          "--lra-model-phase"
        ],
        "monotone": [
          "--quiet",
          "--monotone-elimination"
        ],
        "both": [
          "--quiet",
          "--lra-model-phase",
          "--monotone-elimination"
        ]
      },
      "execution": {
        "environment": "SLURM compute; Xeon E5-2690 v4; one physical CPU; 7 GiB; no GPU",
        "counter_job": "188174",
        "profile_job": "188199",
        "counter_tasks": 33,
        "profile_tasks": 16,
        "counter_seconds": 45,
        "cancellation_grace_seconds": 8,
        "hard_kill_after_term_seconds": 10,
        "profile_seconds": 60,
        "profile_interval_seconds": 0.2,
        "profile_seed": 1,
        "artifacts": "results/lra-migration-ablation-20261010/diagnostics-20261011",
        "remote_artifacts": "/home/janotmik/primo-lra-migration-ablation-20261010/results/lra-migration-ablation-20261010/diagnostics-20261011",
        "driver": "scripts/qualification/lra_ablation/diagnose.sbatch",
        "preflights": [
          "results/lra-migration-ablation-20261010/diagnostic-preflight-counters.log",
          "results/lra-migration-ablation-20261010/diagnostic-preflight-profile.log",
          "results/lra-migration-ablation-20261010/diagnostic-preflight-sensitivity.log",
          "results/lra-migration-ablation-20261010/diagnostic-preflight-followup.log"
        ],
        "sensitivity_job": "188225",
        "followup_profile_job": "188238",
        "sensitivity_tasks": 12,
        "followup_profile_tasks": 16,
        "total_array_tasks": 77,
        "final_jobs_status": "All 77 tasks COMPLETED 0:0; no campaign jobs remain",
        "profiler": "GDB/MI on unchanged, unstripped release binary; perf unavailable, perf_event_paranoid=2",
        "profile_inputs": 8,
        "command_template": "<frozen-build>/primo <profile flags> --stats --cancel-grace-seconds 8 tmp/QF_LRA/<input>; counter cap45 + SIGTERM grace8; profile_gdb_samples.py --timeout 60 --interval 0.2 --seed 1; sensitivity adds --lra-pivoting-rule=<bland|dantzig|soi>"
      },
      "correctness": {
        "status": "Previously qualified frozen binary; diagnostic answers checked against original default decisive answer; no new behavior implementation.",
        "models": "Original full ablation and paired-run models remain separate evidence; new counter/profile runs are not model-qualified speed measurements."
      },
      "qualification": "Stats/cancellation and GDB perturb timing. A profile reaching the deadline has partial stack evidence, not a successful solve. No headline or default promotion claims from these runs.",
      "workflow_sha256": {
        "diagnose.py": "8984b93ea53710f897559d8452435b5f9042715dc33a6bd7e80c39d42ca860dc",
        "diagnose.sbatch": "f862f4040bc8b2f968fa8dab206c911f43695de112ee1f1a8c12ffe425c88419",
        "diagnostic-plan.json": "bd60f663bd2e27fe3e024c630372644375ee386bca7f52cb93fbd636e95bf2e9",
        "run.py": "7edd5ca61e4be0879dc0c4ca283ff0d87e86683793db595e0c78baf18770486c",
        "profile_gdb_samples.py": "11e12eb28df2bc297decdbd7ecbd73f813dd0513e8040f22c9d25414e42ef4b1"
      },
      "results": {
        "counter_runs": 132,
        "counter_timeouts": 24,
        "counter_missing_statistics": 9,
        "counter_exit_errors": 0,
        "counter_decisive_disagreements": 0,
        "profile_runs": 32,
        "profile_normal_exits": 26,
        "profile_deadline_partial": 6,
        "stack_samples": 4501,
        "sensitivity_runs": 12,
        "sensitivity_timeouts": 12,
        "sensitivity_missing_statistics": 6
      },
      "findings": {
        "latendresse5000": {
          "monotone_variables": 0,
          "monotone_folded_atoms": 0,
          "default_monotone_identical_counters": {
            "sat_decisions": 968,
            "pivots": 3704,
            "pivot_term_ops": 71898345,
            "rational_big_operations": 5188060
          },
          "phase_pivot_samples": "287/290",
          "both_pivot_samples": "283/290",
          "gmp_samples_each": "182/290",
          "phase_refresh_samples_each": 0,
          "limitations": "No final counters for phase/both; samples do not prove cycling or measure coefficient sizes"
        },
        "elmhes": {
          "monotone_variables": 39,
          "monotone_folded_atoms": 2968,
          "default_pivot_term_ops": 8134978,
          "monotone_pivot_term_ops": 429490347,
          "monotone_pass_seconds": 0.200336,
          "default_rows": 15796,
          "monotone_rows": 14328,
          "both_mitigates_loss": true
        },
        "aviad_loop3": {
          "default_pivot_term_ops": 12049293,
          "monotone_pivot_term_ops": 1771528,
          "default_theory_conflicts": 2369,
          "monotone_theory_conflicts": 3858,
          "monotone_tableau_vars": 168683,
          "default_pop_samples": "68/146",
          "monotone_pop_samples": "78/137",
          "mechanism": "LraTableau::pop rebuilds violated_vars by scanning all variables after nonempty undo, including bounds-only backtracking"
        },
        "alternative_pivot_rules": "All12 bounded probes timeout, including default; not accepted as a general remedy",
        "phase_interface": "Cached, quiescence-refreshed CaDiCaL forced default phases; no adapter unphase; differs from immediate SPASS-SATT GetPhase timing. Stale preference causation not isolated."
      },
      "assessment": "Investigation complete; no native/default changes. First implementation target is violation-set repair for bounds-only backtracking; separate uniform phase policy experiment needs unfinished-check observability and full-corpus qualification. Do not promote either option from this diagnostic evidence.",
      "paper_read": {
        "title": "SPASS-SATT: A CDCL(LA) Solver",
        "sections": "Section3, Figure2, footnote3",
        "cached_pdf": "docs/papers/SPASS-SATT.pdf",
        "pdf_sha256": "f0858007426c8f54ba3d6cec5bd31b770855e22a98f9f521553a52c7b30a13e9",
        "implementation": "Existing model-satisfaction polarity inspected; no new algorithm implemented."
      },
      "artifacts": {
        "results/lra-migration-ablation-20261010/diagnostic-audit.json": "1734a728110da824d83d2f30d225b5058790f43a062e160aacae75e6440e098d",
        "results/lra-migration-ablation-20261010/completed-diagnostics.tar.gz": "951d897ba180e8925242bdbe5cdf822263dde5ef29ff30d9a8d1fb5121b401fc",
        "results/lra-migration-ablation-20261010/diagnostic-jobs-status.txt": "886b0821d839cb653c7cf78b9c6fd0d62e6aff27a3d0569cc8f839108dfcba26",
        "docs/evidence/data/lra-regressions-20261011/profiles.csv": "1462b5defaf818b989b930aab91910f92656be600e34c8a4a14ede2d41df7f70",
        "docs/evidence/data/lra-regressions-20261011/sensitivity.csv": "ab529b0183776032dccf7656b266b8729a10ff8a63fb21ba3590a1a700e02d07",
        "docs/evidence/data/lra-regressions-20261011/counters.csv": "d72f7a4543f663455f5fd1995680a32f7ede865e621807b611954ab84ede56c9"
      },
      "final_workflow_sha256": {
        "scripts/qualification/lra_ablation/followup-plan.json": "f573593b494212485dfca9e1b8eb7deb239a51b9c75b6d852550c83b661feca0",
        "scripts/qualification/lra_ablation/sensitivity-plan.json": "d19421aa4fd2ca699289aa83dfcb79bb21cf5ea3b27abd6f9ebc4015a590e79a",
        "scripts/qualification/lra_ablation/diagnostic-plan.json": "bd60f663bd2e27fe3e024c630372644375ee386bca7f52cb93fbd636e95bf2e9",
        "scripts/qualification/lra_ablation/diagnose.py": "73a21898c213ea3f49b1ff111a4c830797f6f0e3385b4fedc850df1799bd34a8",
        "scripts/qualification/lra_ablation/diagnose.sbatch": "f862f4040bc8b2f968fa8dab206c911f43695de112ee1f1a8c12ffe425c88419",
        "scripts/qualification/lra_ablation/summarize_diagnostics.py": "200d2d9091b781dae838eba607738b11b8bc8c8b325a82f6d19f55e91f1f12ee"
      },
      "workflow_note": "Initial counters/profiles used the original workflow_sha256 diagnose.py; final driver adds only the sensitivity mode. Sensitivity/followup staged separately under workflow-sensitivity, preserving frozen native workspace and initial workflow artifacts.",
      "documentation": "docs/evidence/lra-regressions.md; docs/evidence/arithmetic.md; docs/implementation/lra.md; compact CSV tables",
      "workflow_commit": "e3a2a6e08dd8afbc2e100b17c4d70c7e1ec1a92f",
      "verification": {
        "lint": "make lint; nested ruff and py_compile; slurm_validate_sbatch; git diff --check",
        "audit": "summarize_diagnostics.py: 132 counter runs, all 32 profiles and all 12 sensitivity probes verified",
        "native_checks": "No native/build/test changes; qualified frozen binary retained. No new native tests, ASan, fuzz or clang-tidy run for this metadata/documentation-only investigation.",
        "documentation": "make docs; assembled local/Git link audit; independent read-only documentation review accepted R1/R2 repairs, no required findings remain. No external link sweep.",
        "review": "Assigned unit: regression note, arithmetic/implementation paragraphs, newest ledger entry. Baseline abf9d9f; workflow e3a2a6e; R1 removed unmeasured alternative-rule stalled-location claim; R2 added committed source links. Script self-review: no blocking issues found."
      },
      "interpretation": "Repeatable heuristic regressions and dominant costs, not established pathological simplex behavior or implementation defects. More pivoting depends on search, bounds and basis. Full-tableau backtracking repair is an optimization candidate; its causal effect on flag losses is untested. Promotion assessment must weigh full-corpus aggregate gains and tail losses, without requiring zero regressions."
    },
    {
      "id": "2026-10-10-lra-new-default-five-reference-selection",
      "date": "2026-10-10",
      "commit": "f0fbe67",
      "kind": "default-profile-reference-comparison",
      "evidence_status": "current",
      "scope": "One new-default Primo curve with OpenSMT, Yices, Z3 and cvc5 on the official 519-instance QF_LRA selection at1200s; fresh matching compute CPUs for all five arms; no solver changes.",
      "environment": {
        "type": "slurm",
        "partition": "compute",
        "cpu": "Intel Xeon E5-2690 v4 only; nomultithread",
        "remote_workspace": "/home/janotmik/primo-lra-default-candidate-20261009",
        "shards_per_solver": 64,
        "timing_workers": 48,
        "memory_gib_per_timing_task": 7,
        "model_workers": 16,
        "memory_gib_per_model_task": 6,
        "timing_job": 184352,
        "model_job": 185269,
        "timing_array": "0-319%48; task=shard*5+solver_index",
        "model_array": "0,5,...,315%16; submitted after timing184352 and model canary185268 completed",
        "job_accounting": "results/lra-default-references-20261010/job-accounting.txt"
      },
      "benchmark": {
        "manifest": "benchmarks/qf-lra-smtcomp2026-selection.txt",
        "manifest_sha256": "0ae74669e5ee69c8894cee44e415ce644047be41942ec23d1de8eef4afecb18c",
        "instances": 519,
        "timeout_seconds": 1200,
        "input_kind": "original/unscrambled",
        "root": "/home/janotmik/primo-cadical-profile/tmp/QF_LRA"
      },
      "profiles": {
        "primo": {
          "solver": "results/lra-default-candidate-20261009/bin/primo-f0fbe67",
          "args": [
            "--quiet"
          ],
          "binary_sha256": "b5913892253c12981870b92f558b7ae6ec79ddec12c25ce5296ef5eed60686ed"
        },
        "opensmt": {
          "solver": "results/lra-default-references-20261010/bin/opensmt",
          "args": [],
          "version": "2.9.2",
          "binary_sha256": "b7899e9aff299026d3251df7a28f51f56d8bd1e5b0fd7be11bcc72c4f2803a98"
        },
        "yices": {
          "solver": "results/lra-default-references-20261010/bin/yices-smt2",
          "args": [],
          "version": "2.7.0 revision4f19700f0e272f4a68250080d12a873523bc7ac3",
          "binary_sha256": "eab7efbff2a6f0cce2fcd2c25cb4a94e0e048c902d8ef9e6fd7d7989aa54c501"
        },
        "z3": {
          "solver": "results/lra-default-references-20261010/bin/z3",
          "args": [],
          "version": "5.1.0",
          "binary_sha256": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0"
        },
        "cvc5": {
          "solver": "results/lra-default-references-20261010/bin/cvc5",
          "args": [],
          "version": "1.3.4 gitf3b21c4",
          "binary_sha256": "4a93548398445cf1a774655583f5465b156c26f63f2cdfb94f4728fdf7adde46"
        }
      },
      "qualification_basis": {
        "source_commit": "f0fbe67",
        "prior_ledger_entry": "2026-10-09-lra-automatic-default-committed-qualification",
        "source_relation": "Current HEAD has identical src,CMake,unit tests and CLI fixture to qualified f0fbe67; only new benchmark workflow and documentation.",
        "new_model_stage": "Every successful native SAT row; direct Dolmen0.10; solver3600s,Dolmen120s/5G; separate from all timing tasks."
      },
      "artifacts": {
        "root": "results/lra-default-references-20261010",
        "campaign": "selection1200-compute-attempt2",
        "workflow": "scripts/slurm_lra_default_reference_comparison.sbatch",
        "workflow_sha256": "34899bbfdf3a983e732e2938dfe424d43d523fd2e0bb1c422af96c5c628bf875",
        "summary": "benchmarks/qf-lra-default-references-20261010-selection1200.json",
        "plot": "docs/_static/qf-lra-default-references-20261010-selection1200.svg",
        "driver_checks": "results/lra-default-references-20261010/driver-check.json",
        "submission": "results/lra-default-references-20261010/submission-attempt2.json",
        "collector": "scripts/summarize_lra_reference_comparison.py",
        "collector_sha256": "7051becb549ad2c067e29e4a5d713360f4c254d337273892caa6b0f72c3e3b08",
        "collector_checks": "results/lra-default-references-20261010/collector-check.json",
        "timing_workflow_sha256": "454e3f14b330ea3a6bbd2b5d5f1883a6baa10797dd3fd2630143ec1de34f2a80",
        "replay_workflow": "results/lra-default-references-20261010/workflow-dolmen-path.sbatch",
        "replay_submission": "results/lra-default-references-20261010/submission-model-retry.json",
        "failed_model_startup": "results/lra-default-references-20261010/failed-model-startup.json",
        "raw_summary_archive": "results/lra-default-references-20261010/completed-summary-artifacts.tar.gz",
        "raw_summary_archive_sha256": "a536e2a2daea2ed264151ae8ced2ffb1ef4db21f379cc1c8e95c29e16d3e237d",
        "collection_hashes": "results/lra-default-references-20261010/collection-sha256.json",
        "strict_model_audit": "results/lra-default-references-20261010/complete-model-coverage-check.json",
        "plot_sha256": "1c894be0658ae02a29d6616533f2b28cf42e8ac791c7e8e6b384e03bd14df4ec",
        "verification_logs": [
          "results/lra-default-references-20261010/final-lint.log",
          "results/lra-default-references-20261010/final-docs.log"
        ]
      },
      "verification": {
        "batch_validator": "pass",
        "bash_n": "pass",
        "mock_dispatch_checks": 33,
        "checks": "Actual harness argv including manifest, independent native/references, frozen binary overrides, replay filters, CPU/hash/count/duplicate guards.",
        "canary": {
          "job": 184343,
          "status": "complete",
          "solvers": 5,
          "rows_per_solver": 1,
          "shards": 519,
          "selected_shard": 36,
          "file": "2019-ezsmt/blending/15.smt2",
          "outcome": "All five exactly one input and successful SAT; full519 manifest/hash forwarded then correctly sharded.",
          "artifact": "results/lra-default-references-20261010/canary-selection-manifest"
        },
        "collector_adversarial_checks": 14,
        "empty_sat_coverage": "Valid zero-SAT shard accepted without a model CSV; fabricated artifact hash and missing required SAT output rejected.",
        "model_canary": {
          "job": 185268,
          "status": "complete",
          "native_sat_models": 1,
          "direct_dolmen_pass": 1,
          "solver_exit": 0,
          "dolmen_exit": 0,
          "attempt": "model-validation-dolmen-path"
        },
        "mock_checks_note": "Replay argv also requires an explicit Dolmen executable path; real model canary tests its override.",
        "final": {
          "make_lint": "pass",
          "make_docs": "pass",
          "archive_file_hashes_verified": 3279,
          "strict_sat_coverage_audit": "280 direct Dolmen passes across64 shards; exact selected SAT sets, all zero solver/validator exits and unchanged parent/model hashes",
          "rendered_svg": "pass; five curves, one highlighted Primo default, no legend or caption clipping",
          "solver_source_relation": "git diff f0fbe67 HEAD -- src CMakeLists.txt tests/unit tests/cmake/check_lra_heuristic_cli.cmake benchmarks/smoke/qf_lra/default_heuristics.smt2 is empty; prior source qualification reused without new C++ changes"
        }
      },
      "outcome": "All five arms complete with identical 519 input hashes and matching E5 CPUs/resources; zero wrong answers, errors and pairwise decisive-answer disagreements. All 280 successful native SAT rows pass separate direct Dolmen validation. One new-default Primo curve plus OpenSMT, Yices, Z3 and cvc5; initial cancelled full-corpus attempt excluded.",
      "cancelled_attempts": [
        {
          "timing_job": 184279,
          "model_job": 184328,
          "status": "cancelled",
          "reason": "Archived f0fbe67 generic SLURM wrapper lacked PRIMO_MANIFEST forwarding and selected the full1753 corpus. Detected from live row counts before completion; both jobs cancelled. No rows contribute to requested519-instance plot.",
          "artifact_root": "results/lra-default-references-20261010/selection1200-compute",
          "submission": "results/lra-default-references-20261010/submission-aborted.json"
        }
      ],
      "reproduction": {
        "summary_command": [
          "python3",
          "scripts/summarize_lra_reference_comparison.py",
          "results/lra-default-references-20261010/selection1200-compute-attempt2",
          "--expected",
          "519",
          "--shards",
          "64",
          "--timeout",
          "1200",
          "--out",
          "results/lra-default-references-20261010/comparison-summary.json",
          "--plot-data",
          "results/lra-default-references-20261010/plot-data"
        ],
        "notes": "For live progress add --allow-incomplete. The cluster stages the collector as an ignored workflow artifact and supplies PYTHONPATH=scripts; archived f0fbe67 solver/tools remain unchanged.",
        "model_retry_submission": {
          "job": 185269,
          "phase": "replay",
          "remote_command": "sbatch --parsable --chdir=/home/janotmik/primo-lra-default-candidate-20261009 --partition=compute --hint=nomultithread --time=04:00:00 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-lra-default-candidate-20261009,PRIMO_CORPUS_ROOT=/home/janotmik/primo-cadical-profile/tmp/QF_LRA,PRIMO_MANIFEST=benchmarks/qf-lra-smtcomp2026-selection.txt,PRIMO_CAMPAIGN_ID=lra-default-references-20261010-selection1200-compute,PRIMO_CAMPAIGN_OUT=results/lra-default-references-20261010/selection1200-compute-attempt2,PRIMO_SOLVER_DEFAULT=results/lra-default-candidate-20261009/bin/primo-f0fbe67,PRIMO_REFERENCE_BIN_DIR=results/lra-default-references-20261010/bin,PRIMO_EXPECTED_GIT=f0fbe67,PRIMO_SHARDS=64,PRIMO_TIMEOUT=1200,PRIMO_MODEL_TIMEOUT=3600,PRIMO_DOLMEN_TIMEOUT=120,PRIMO_DOLMEN_SIZE=5G,PRIMO_MANIFEST_SHA256=0ae74669e5ee69c8894cee44e415ce644047be41942ec23d1de8eef4afecb18c,PRIMO_PHASE=replay,PRIMO_DOLMEN=/home/janotmik/primo-lra-default-candidate-20261009/contrib/local/bin/dolmen,PRIMO_REPLAY_ATTEMPT=model-validation-dolmen-path --array=0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250,255,260,265,270,275,280,285,290,295,300,305,310,315%16 --mem=6G --job-name=primo-lra-default-model-retry results/lra-default-references-20261010/workflow-dolmen-path.sbatch",
          "attempt": "model-validation-dolmen-path",
          "canary": false
        },
        "plot_command": [
          "python3",
          "scripts/plot_cactus.py",
          "--timeout",
          "1200",
          "--out",
          "docs/_static/qf-lra-default-references-20261010-selection1200.svg",
          "--title",
          "QF_LRA: SMT-COMP 2026 selection, default and references",
          "--sort-by-solved",
          "--highlight-series",
          "Primo (new default)",
          "--series",
          "Primo (new default)=results/lra-default-references-20261010/plot-data/primo",
          "--series",
          "OpenSMT 2.9.2=results/lra-default-references-20261010/plot-data/opensmt",
          "--series",
          "Yices 2.7.0=results/lra-default-references-20261010/plot-data/yices",
          "--series",
          "Z3 5.1.0=results/lra-default-references-20261010/plot-data/z3",
          "--series",
          "cvc5 1.3.4=results/lra-default-references-20261010/plot-data/cvc5",
          "--note",
          "Primo f0fbe67; Xeon E5-2690 v4 compute CPUs; 7 GiB/task; up to 48 physical CPU workers.",
          "--note",
          "All 280 successful Primo SAT rows pass separate direct Dolmen replay; validation excluded from timings.",
          "--note",
          "Original 519 selected inputs. Times below 0.01s are drawn at the 0.01s boundary."
        ],
        "submission_commands": [
          {
            "phase": "benchmark",
            "remote_command": "sbatch --parsable --chdir=/home/janotmik/primo-lra-default-candidate-20261009 --partition=compute --hint=nomultithread --time=04:00:00 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-lra-default-candidate-20261009,PRIMO_CORPUS_ROOT=/home/janotmik/primo-cadical-profile/tmp/QF_LRA,PRIMO_MANIFEST=benchmarks/qf-lra-smtcomp2026-selection.txt,PRIMO_CAMPAIGN_ID=lra-default-references-20261010-selection1200-compute,PRIMO_CAMPAIGN_OUT=results/lra-default-references-20261010/selection1200-compute-attempt2,PRIMO_SOLVER_DEFAULT=results/lra-default-candidate-20261009/bin/primo-f0fbe67,PRIMO_REFERENCE_BIN_DIR=results/lra-default-references-20261010/bin,PRIMO_EXPECTED_GIT=f0fbe67,PRIMO_SHARDS=64,PRIMO_TIMEOUT=1200,PRIMO_MODEL_TIMEOUT=3600,PRIMO_DOLMEN_TIMEOUT=120,PRIMO_DOLMEN_SIZE=5G,PRIMO_MANIFEST_SHA256=0ae74669e5ee69c8894cee44e415ce644047be41942ec23d1de8eef4afecb18c,PRIMO_PHASE=benchmark --array=0-319%48 --mem=7G --job-name=primo-lra-default-refs results/lra-default-references-20261010/workflow.sbatch",
            "job": 184352
          },
          {
            "phase": "replay",
            "remote_command": "sbatch --parsable --chdir=/home/janotmik/primo-lra-default-candidate-20261009 --partition=compute --hint=nomultithread --time=04:00:00 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-lra-default-candidate-20261009,PRIMO_CORPUS_ROOT=/home/janotmik/primo-cadical-profile/tmp/QF_LRA,PRIMO_MANIFEST=benchmarks/qf-lra-smtcomp2026-selection.txt,PRIMO_CAMPAIGN_ID=lra-default-references-20261010-selection1200-compute,PRIMO_CAMPAIGN_OUT=results/lra-default-references-20261010/selection1200-compute-attempt2,PRIMO_SOLVER_DEFAULT=results/lra-default-candidate-20261009/bin/primo-f0fbe67,PRIMO_REFERENCE_BIN_DIR=results/lra-default-references-20261010/bin,PRIMO_EXPECTED_GIT=f0fbe67,PRIMO_SHARDS=64,PRIMO_TIMEOUT=1200,PRIMO_MODEL_TIMEOUT=3600,PRIMO_DOLMEN_TIMEOUT=120,PRIMO_DOLMEN_SIZE=5G,PRIMO_MANIFEST_SHA256=0ae74669e5ee69c8894cee44e415ce644047be41942ec23d1de8eef4afecb18c,PRIMO_PHASE=replay --array=0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250,255,260,265,270,275,280,285,290,295,300,305,310,315%16 --mem=6G --job-name=primo-lra-default-ref-models --dependency=afterok:184352 results/lra-default-references-20261010/workflow.sbatch",
            "job": 184401
          }
        ]
      },
      "model_attempt": "model-validation-dolmen-path; model-validation is a collection alias to this separate attempt",
      "model_startup_failures": [
        {
          "job": 184401,
          "shards": 64,
          "model_rows": 0,
          "status": "failed-startup",
          "reason": "Installed Dolmen was not on the batch PATH and the direct wrapper omitted --dolmen. Explicit tool path added; empty original attempts and execution records preserved under failed184401 names; no model passes reused."
        }
      ],
      "result": {
        "expected_instances": 519,
        "shards_per_solver": 64,
        "timeout_seconds": 1200.0,
        "timing_complete": true,
        "fully_qualified": true,
        "identity_issues": [],
        "profiles": {
          "primo": {
            "rows": 519,
            "solved": 499,
            "sat": 280,
            "unsat": 219,
            "statuses": {
              "ok": 499,
              "timeout": 20
            },
            "unknown": 0,
            "wrong": 0,
            "par2": 63324.003153,
            "expected": 519,
            "complete_shards": 64,
            "coverage_issues": [],
            "timing_complete": true,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 27,
                "solved": 23,
                "sat": 1,
                "unsat": 22,
                "statuses": {
                  "ok": 23,
                  "timeout": 4
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 12445.993988,
                "models": {
                  "pass": 1
                }
              },
              "2019-ezsmt": {
                "rows": 37,
                "solved": 36,
                "sat": 30,
                "unsat": 6,
                "statuses": {
                  "ok": 36,
                  "timeout": 1
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 2928.535789,
                "models": {
                  "pass": 30
                }
              },
              "DTP-Scheduling": {
                "rows": 34,
                "solved": 34,
                "sat": 34,
                "unsat": 0,
                "statuses": {
                  "ok": 34
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 2.298912,
                "models": {
                  "pass": 34
                }
              },
              "LassoRanker": {
                "rows": 191,
                "solved": 186,
                "sat": 121,
                "unsat": 65,
                "statuses": {
                  "ok": 186,
                  "timeout": 5
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 21849.524447,
                "models": {
                  "pass": 121
                }
              },
              "TM": {
                "rows": 11,
                "solved": 11,
                "sat": 11,
                "unsat": 0,
                "statuses": {
                  "ok": 11
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 11.289298,
                "models": {
                  "pass": 11
                }
              },
              "clock_synchro": {
                "rows": 11,
                "solved": 11,
                "sat": 0,
                "unsat": 11,
                "statuses": {
                  "ok": 11
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 58.811022,
                "models": {}
              },
              "keymaera": {
                "rows": 4,
                "solved": 4,
                "sat": 0,
                "unsat": 4,
                "statuses": {
                  "ok": 4
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 0.034413,
                "models": {}
              },
              "latendresse": {
                "rows": 5,
                "solved": 3,
                "sat": 3,
                "unsat": 0,
                "statuses": {
                  "ok": 3,
                  "timeout": 2
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 4828.878511,
                "models": {
                  "pass": 3
                }
              },
              "miplib": {
                "rows": 13,
                "solved": 9,
                "sat": 7,
                "unsat": 2,
                "statuses": {
                  "ok": 9,
                  "timeout": 4
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 10247.766838,
                "models": {
                  "pass": 7
                }
              },
              "sal": {
                "rows": 42,
                "solved": 42,
                "sat": 3,
                "unsat": 39,
                "statuses": {
                  "ok": 42
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 3.52949,
                "models": {
                  "pass": 3
                }
              },
              "sc": {
                "rows": 62,
                "solved": 62,
                "sat": 43,
                "unsat": 19,
                "statuses": {
                  "ok": 62
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 163.077067,
                "models": {
                  "pass": 43
                }
              },
              "spider_benchmarks": {
                "rows": 9,
                "solved": 9,
                "sat": 0,
                "unsat": 9,
                "statuses": {
                  "ok": 9
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 0.40086,
                "models": {}
              },
              "tropical-matrix": {
                "rows": 5,
                "solved": 1,
                "sat": 1,
                "unsat": 0,
                "statuses": {
                  "timeout": 4,
                  "ok": 1
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 10510.083647,
                "models": {
                  "pass": 1
                }
              },
              "tta_startup": {
                "rows": 31,
                "solved": 31,
                "sat": 9,
                "unsat": 22,
                "statuses": {
                  "ok": 31
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 44.057691,
                "models": {
                  "pass": 9
                }
              },
              "uart": {
                "rows": 37,
                "solved": 37,
                "sat": 17,
                "unsat": 20,
                "statuses": {
                  "ok": 37
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 229.72118,
                "models": {
                  "pass": 17
                }
              }
            },
            "models": {
              "expected_sat": 280,
              "completed": 280,
              "missing": 0,
              "outcomes": {
                "pass": 280
              },
              "shard_states": {
                "complete": 64
              },
              "coverage_issues": [],
              "fully_validated": true
            },
            "exception_rows": []
          },
          "opensmt": {
            "rows": 519,
            "solved": 497,
            "sat": 276,
            "unsat": 221,
            "statuses": {
              "timeout": 22,
              "ok": 497
            },
            "unknown": 0,
            "wrong": 0,
            "par2": 69871.693112,
            "expected": 519,
            "complete_shards": 64,
            "coverage_issues": [],
            "timing_complete": true,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 27,
                "solved": 23,
                "sat": 1,
                "unsat": 22,
                "statuses": {
                  "timeout": 4,
                  "ok": 23
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 11293.993109000001,
                "models": {}
              },
              "2019-ezsmt": {
                "rows": 37,
                "solved": 35,
                "sat": 29,
                "unsat": 6,
                "statuses": {
                  "ok": 35,
                  "timeout": 2
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 6847.742599,
                "models": {}
              },
              "DTP-Scheduling": {
                "rows": 34,
                "solved": 34,
                "sat": 34,
                "unsat": 0,
                "statuses": {
                  "ok": 34
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 1.057316,
                "models": {}
              },
              "LassoRanker": {
                "rows": 191,
                "solved": 184,
                "sat": 117,
                "unsat": 67,
                "statuses": {
                  "ok": 184,
                  "timeout": 7
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 28345.174145,
                "models": {}
              },
              "TM": {
                "rows": 11,
                "solved": 11,
                "sat": 11,
                "unsat": 0,
                "statuses": {
                  "ok": 11
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 3.634821,
                "models": {}
              },
              "clock_synchro": {
                "rows": 11,
                "solved": 11,
                "sat": 0,
                "unsat": 11,
                "statuses": {
                  "ok": 11
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 76.005028,
                "models": {}
              },
              "keymaera": {
                "rows": 4,
                "solved": 4,
                "sat": 0,
                "unsat": 4,
                "statuses": {
                  "ok": 4
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 0.018947,
                "models": {}
              },
              "latendresse": {
                "rows": 5,
                "solved": 2,
                "sat": 2,
                "unsat": 0,
                "statuses": {
                  "ok": 2,
                  "timeout": 3
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 7200.607428,
                "models": {}
              },
              "miplib": {
                "rows": 13,
                "solved": 9,
                "sat": 7,
                "unsat": 2,
                "statuses": {
                  "ok": 9,
                  "timeout": 4
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 10225.433586,
                "models": {}
              },
              "sal": {
                "rows": 42,
                "solved": 42,
                "sat": 3,
                "unsat": 39,
                "statuses": {
                  "ok": 42
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 1.79909,
                "models": {}
              },
              "sc": {
                "rows": 62,
                "solved": 62,
                "sat": 43,
                "unsat": 19,
                "statuses": {
                  "ok": 62
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 64.317318,
                "models": {}
              },
              "spider_benchmarks": {
                "rows": 9,
                "solved": 9,
                "sat": 0,
                "unsat": 9,
                "statuses": {
                  "ok": 9
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 0.165711,
                "models": {}
              },
              "tropical-matrix": {
                "rows": 5,
                "solved": 3,
                "sat": 3,
                "unsat": 0,
                "statuses": {
                  "timeout": 2,
                  "ok": 3
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 5596.195793,
                "models": {}
              },
              "tta_startup": {
                "rows": 31,
                "solved": 31,
                "sat": 9,
                "unsat": 22,
                "statuses": {
                  "ok": 31
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 76.411846,
                "models": {}
              },
              "uart": {
                "rows": 37,
                "solved": 37,
                "sat": 17,
                "unsat": 20,
                "statuses": {
                  "ok": 37
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 139.136375,
                "models": {}
              }
            },
            "models": {
              "expected_sat": 276,
              "completed": 0,
              "missing": 276,
              "outcomes": {},
              "shard_states": {},
              "coverage_issues": [],
              "fully_validated": false
            },
            "exception_rows": []
          },
          "yices": {
            "rows": 519,
            "solved": 489,
            "sat": 276,
            "unsat": 213,
            "statuses": {
              "timeout": 30,
              "ok": 489
            },
            "unknown": 0,
            "wrong": 0,
            "par2": 91148.693979,
            "expected": 519,
            "complete_shards": 64,
            "coverage_issues": [],
            "timing_complete": true,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 27,
                "solved": 20,
                "sat": 1,
                "unsat": 19,
                "statuses": {
                  "timeout": 7,
                  "ok": 20
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 23022.73472,
                "models": {}
              },
              "2019-ezsmt": {
                "rows": 37,
                "solved": 34,
                "sat": 28,
                "unsat": 6,
                "statuses": {
                  "ok": 34,
                  "timeout": 3
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 7377.822617,
                "models": {}
              },
              "DTP-Scheduling": {
                "rows": 34,
                "solved": 34,
                "sat": 34,
                "unsat": 0,
                "statuses": {
                  "ok": 34
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 0.378787,
                "models": {}
              },
              "LassoRanker": {
                "rows": 191,
                "solved": 179,
                "sat": 118,
                "unsat": 61,
                "statuses": {
                  "ok": 179,
                  "timeout": 12
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 38203.005389,
                "models": {}
              },
              "TM": {
                "rows": 11,
                "solved": 11,
                "sat": 11,
                "unsat": 0,
                "statuses": {
                  "ok": 11
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 1.947074,
                "models": {}
              },
              "clock_synchro": {
                "rows": 11,
                "solved": 11,
                "sat": 0,
                "unsat": 11,
                "statuses": {
                  "ok": 11
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 186.604547,
                "models": {}
              },
              "keymaera": {
                "rows": 4,
                "solved": 4,
                "sat": 0,
                "unsat": 4,
                "statuses": {
                  "ok": 4
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 0.013978,
                "models": {}
              },
              "latendresse": {
                "rows": 5,
                "solved": 3,
                "sat": 3,
                "unsat": 0,
                "statuses": {
                  "ok": 3,
                  "timeout": 2
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 4800.699916,
                "models": {}
              },
              "miplib": {
                "rows": 13,
                "solved": 10,
                "sat": 7,
                "unsat": 3,
                "statuses": {
                  "ok": 10,
                  "timeout": 3
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 9001.43086,
                "models": {}
              },
              "sal": {
                "rows": 42,
                "solved": 42,
                "sat": 3,
                "unsat": 39,
                "statuses": {
                  "ok": 42
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 0.5534020000000001,
                "models": {}
              },
              "sc": {
                "rows": 62,
                "solved": 62,
                "sat": 43,
                "unsat": 19,
                "statuses": {
                  "ok": 62
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 188.41012,
                "models": {}
              },
              "spider_benchmarks": {
                "rows": 9,
                "solved": 9,
                "sat": 0,
                "unsat": 9,
                "statuses": {
                  "ok": 9
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 0.053471,
                "models": {}
              },
              "tropical-matrix": {
                "rows": 5,
                "solved": 2,
                "sat": 2,
                "unsat": 0,
                "statuses": {
                  "timeout": 3,
                  "ok": 2
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 8133.805614,
                "models": {}
              },
              "tta_startup": {
                "rows": 31,
                "solved": 31,
                "sat": 9,
                "unsat": 22,
                "statuses": {
                  "ok": 31
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 92.40139500000001,
                "models": {}
              },
              "uart": {
                "rows": 37,
                "solved": 37,
                "sat": 17,
                "unsat": 20,
                "statuses": {
                  "ok": 37
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 138.832089,
                "models": {}
              }
            },
            "models": {
              "expected_sat": 276,
              "completed": 0,
              "missing": 276,
              "outcomes": {},
              "shard_states": {},
              "coverage_issues": [],
              "fully_validated": false
            },
            "exception_rows": []
          },
          "z3": {
            "rows": 519,
            "solved": 476,
            "sat": 266,
            "unsat": 210,
            "statuses": {
              "timeout": 43,
              "ok": 476
            },
            "unknown": 0,
            "wrong": 0,
            "par2": 133299.519463,
            "expected": 519,
            "complete_shards": 64,
            "coverage_issues": [],
            "timing_complete": true,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 27,
                "solved": 17,
                "sat": 1,
                "unsat": 16,
                "statuses": {
                  "timeout": 10,
                  "ok": 17
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 29836.420918,
                "models": {}
              },
              "2019-ezsmt": {
                "rows": 37,
                "solved": 35,
                "sat": 29,
                "unsat": 6,
                "statuses": {
                  "ok": 35,
                  "timeout": 2
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 5374.283284,
                "models": {}
              },
              "DTP-Scheduling": {
                "rows": 34,
                "solved": 34,
                "sat": 34,
                "unsat": 0,
                "statuses": {
                  "ok": 34
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 5.297567,
                "models": {}
              },
              "LassoRanker": {
                "rows": 191,
                "solved": 172,
                "sat": 110,
                "unsat": 62,
                "statuses": {
                  "ok": 172,
                  "timeout": 19
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 66280.311646,
                "models": {}
              },
              "TM": {
                "rows": 11,
                "solved": 11,
                "sat": 11,
                "unsat": 0,
                "statuses": {
                  "ok": 11
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 12.606352,
                "models": {}
              },
              "clock_synchro": {
                "rows": 11,
                "solved": 11,
                "sat": 0,
                "unsat": 11,
                "statuses": {
                  "ok": 11
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 314.866139,
                "models": {}
              },
              "keymaera": {
                "rows": 4,
                "solved": 4,
                "sat": 0,
                "unsat": 4,
                "statuses": {
                  "ok": 4
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 0.058478,
                "models": {}
              },
              "latendresse": {
                "rows": 5,
                "solved": 2,
                "sat": 2,
                "unsat": 0,
                "statuses": {
                  "ok": 2,
                  "timeout": 3
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 7201.102071,
                "models": {}
              },
              "miplib": {
                "rows": 13,
                "solved": 9,
                "sat": 7,
                "unsat": 2,
                "statuses": {
                  "ok": 9,
                  "timeout": 4
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 10867.524359000001,
                "models": {}
              },
              "sal": {
                "rows": 42,
                "solved": 42,
                "sat": 3,
                "unsat": 39,
                "statuses": {
                  "ok": 42
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 1.772071,
                "models": {}
              },
              "sc": {
                "rows": 62,
                "solved": 62,
                "sat": 43,
                "unsat": 19,
                "statuses": {
                  "ok": 62
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 562.391078,
                "models": {}
              },
              "spider_benchmarks": {
                "rows": 9,
                "solved": 9,
                "sat": 0,
                "unsat": 9,
                "statuses": {
                  "ok": 9
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 0.255131,
                "models": {}
              },
              "tropical-matrix": {
                "rows": 5,
                "solved": 0,
                "sat": 0,
                "unsat": 0,
                "statuses": {
                  "timeout": 5
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 12000.0,
                "models": {}
              },
              "tta_startup": {
                "rows": 31,
                "solved": 31,
                "sat": 9,
                "unsat": 22,
                "statuses": {
                  "ok": 31
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 164.157548,
                "models": {}
              },
              "uart": {
                "rows": 37,
                "solved": 37,
                "sat": 17,
                "unsat": 20,
                "statuses": {
                  "ok": 37
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 678.472821,
                "models": {}
              }
            },
            "models": {
              "expected_sat": 266,
              "completed": 0,
              "missing": 266,
              "outcomes": {},
              "shard_states": {},
              "coverage_issues": [],
              "fully_validated": false
            },
            "exception_rows": []
          },
          "cvc5": {
            "rows": 519,
            "solved": 471,
            "sat": 258,
            "unsat": 213,
            "statuses": {
              "timeout": 48,
              "ok": 471
            },
            "unknown": 0,
            "wrong": 0,
            "par2": 168491.139298,
            "expected": 519,
            "complete_shards": 64,
            "coverage_issues": [],
            "timing_complete": true,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 27,
                "solved": 23,
                "sat": 1,
                "unsat": 22,
                "statuses": {
                  "timeout": 4,
                  "ok": 23
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 17854.890919,
                "models": {}
              },
              "2019-ezsmt": {
                "rows": 37,
                "solved": 35,
                "sat": 29,
                "unsat": 6,
                "statuses": {
                  "ok": 35,
                  "timeout": 2
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 5896.291003,
                "models": {}
              },
              "DTP-Scheduling": {
                "rows": 34,
                "solved": 34,
                "sat": 34,
                "unsat": 0,
                "statuses": {
                  "ok": 34
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 33.707544999999996,
                "models": {}
              },
              "LassoRanker": {
                "rows": 191,
                "solved": 162,
                "sat": 103,
                "unsat": 59,
                "statuses": {
                  "ok": 162,
                  "timeout": 29
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 106914.511298,
                "models": {}
              },
              "TM": {
                "rows": 11,
                "solved": 11,
                "sat": 11,
                "unsat": 0,
                "statuses": {
                  "ok": 11
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 21.80337,
                "models": {}
              },
              "clock_synchro": {
                "rows": 11,
                "solved": 11,
                "sat": 0,
                "unsat": 11,
                "statuses": {
                  "ok": 11
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 396.69206,
                "models": {}
              },
              "keymaera": {
                "rows": 4,
                "solved": 4,
                "sat": 0,
                "unsat": 4,
                "statuses": {
                  "ok": 4
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 0.038026000000000004,
                "models": {}
              },
              "latendresse": {
                "rows": 5,
                "solved": 2,
                "sat": 2,
                "unsat": 0,
                "statuses": {
                  "ok": 2,
                  "timeout": 3
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 8285.508168,
                "models": {}
              },
              "miplib": {
                "rows": 13,
                "solved": 8,
                "sat": 6,
                "unsat": 2,
                "statuses": {
                  "timeout": 5,
                  "ok": 8
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 14567.620457,
                "models": {}
              },
              "sal": {
                "rows": 42,
                "solved": 42,
                "sat": 3,
                "unsat": 39,
                "statuses": {
                  "ok": 42
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 6.64998,
                "models": {}
              },
              "sc": {
                "rows": 62,
                "solved": 62,
                "sat": 43,
                "unsat": 19,
                "statuses": {
                  "ok": 62
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 1377.165003,
                "models": {}
              },
              "spider_benchmarks": {
                "rows": 9,
                "solved": 9,
                "sat": 0,
                "unsat": 9,
                "statuses": {
                  "ok": 9
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 0.602869,
                "models": {}
              },
              "tropical-matrix": {
                "rows": 5,
                "solved": 0,
                "sat": 0,
                "unsat": 0,
                "statuses": {
                  "timeout": 5
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 12000.0,
                "models": {}
              },
              "tta_startup": {
                "rows": 31,
                "solved": 31,
                "sat": 9,
                "unsat": 22,
                "statuses": {
                  "ok": 31
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 203.790314,
                "models": {}
              },
              "uart": {
                "rows": 37,
                "solved": 37,
                "sat": 17,
                "unsat": 20,
                "statuses": {
                  "ok": 37
                },
                "unknown": 0,
                "wrong": 0,
                "par2": 931.868286,
                "models": {}
              }
            },
            "models": {
              "expected_sat": 258,
              "completed": 0,
              "missing": 258,
              "outcomes": {},
              "shard_states": {},
              "coverage_issues": [],
              "fully_validated": false
            },
            "exception_rows": []
          }
        },
        "comparisons": {
          "primo/opensmt": {
            "common_rows": 519,
            "jointly_decisive": 490,
            "disagreements": []
          },
          "primo/yices": {
            "common_rows": 519,
            "jointly_decisive": 484,
            "disagreements": []
          },
          "primo/z3": {
            "common_rows": 519,
            "jointly_decisive": 476,
            "disagreements": []
          },
          "primo/cvc5": {
            "common_rows": 519,
            "jointly_decisive": 469,
            "disagreements": []
          },
          "opensmt/yices": {
            "common_rows": 519,
            "jointly_decisive": 485,
            "disagreements": []
          },
          "opensmt/z3": {
            "common_rows": 519,
            "jointly_decisive": 475,
            "disagreements": []
          },
          "opensmt/cvc5": {
            "common_rows": 519,
            "jointly_decisive": 470,
            "disagreements": []
          },
          "yices/z3": {
            "common_rows": 519,
            "jointly_decisive": 471,
            "disagreements": []
          },
          "yices/cvc5": {
            "common_rows": 519,
            "jointly_decisive": 463,
            "disagreements": []
          },
          "z3/cvc5": {
            "common_rows": 519,
            "jointly_decisive": 464,
            "disagreements": []
          }
        },
        "identities": {
          "primo": {
            "solver": {
              "path": "/home/janotmik/primo-lra-default-candidate-20261009/results/lra-default-candidate-20261009/bin/primo-f0fbe67",
              "sha256": "b5913892253c12981870b92f558b7ae6ec79ddec12c25ce5296ef5eed60686ed",
              "version": "primo 0.2.0\ngit: f0fbe67\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07"
            },
            "args": [
              "--quiet"
            ]
          },
          "opensmt": {
            "solver": {
              "path": "/home/janotmik/primo-lra-default-candidate-20261009/results/lra-default-references-20261010/bin/opensmt",
              "sha256": "b7899e9aff299026d3251df7a28f51f56d8bd1e5b0fd7be11bcc72c4f2803a98",
              "version": ""
            },
            "args": []
          },
          "yices": {
            "solver": {
              "path": "/home/janotmik/primo-lra-default-candidate-20261009/results/lra-default-references-20261010/bin/yices-smt2",
              "sha256": "eab7efbff2a6f0cce2fcd2c25cb4a94e0e048c902d8ef9e6fd7d7989aa54c501",
              "version": "Yices 2.7.0\nCopyright SRI International.\nLinked with GMP 6.3.0\nCopyright Free Software Foundation, Inc.\nBuild date: 2025-07-17\nPlatform: x86_64-pc-linux-gnu (release/static)\nRevision: 4f19700f0e272f4a68250080d12a873523bc7ac3"
            },
            "args": []
          },
          "z3": {
            "solver": {
              "path": "/home/janotmik/primo-lra-default-candidate-20261009/results/lra-default-references-20261010/bin/z3",
              "sha256": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0",
              "version": "Z3 version 5.1.0 - 64 bit"
            },
            "args": []
          },
          "cvc5": {
            "solver": {
              "path": "/home/janotmik/primo-lra-default-candidate-20261009/results/lra-default-references-20261010/bin/cvc5",
              "sha256": "4a93548398445cf1a774655583f5465b156c26f63f2cdfb94f4728fdf7adde46",
              "version": "cvc5 1.3.4 [git f3b21c4 on branch HEAD]\ncompiled with GCC version Ubuntu Clang 18.1.3 (1ubuntu1) on May  7 2026 15:33:02\n\nCopyright (c) 2009-2026 by the authors and their institutional\naffiliations listed at https://cvc5.github.io/people.html\n\ncvc5 is open-source and is covered by the BSD license (modified).\n\nTHIS SOFTWARE IS PROVIDED AS-IS, WITHOUT ANY WARRANTIES.\nUSE AT YOUR OWN RISK.\n\nThis version of cvc5 is linked against the following non-(L)GPL'ed\nthird party libraries.\n\n  CaDiCaL - Simplified Satisfiability Solver\n  See https://github.com/arminbiere/cadical for copyright information.\n\n  SymFPU - The Symbolic Floating Point Unit\n  See https://github.com/martin-cs/symfpu/tree/CVC4 for copyright information.\n\nThis version of cvc5 is linked against the following third party\nlibraries covered by the LGPLv3 license.\nSee licenses/lgpl-3.0.txt for more information.\n\n  GMP - Gnu Multi Precision Arithmetic Library\n  See http://gmplib.org for copyright information.\n\n  LibPoly polynomial library\n  See https://github.com/SRI-CSL/libpoly for copyright and\n  licensing information.\n\ncvc5 is statically linked against these libraries. To recompile\nthis version of cvc5 with different versions of these libraries\nfollow the instructions on https://github.com/cvc5/cvc5/blob/main/INSTALL.md\n\nSee the file COPYING (distributed with the source code, and with\nall binaries) for the full cvc5 copyright, licensing, and (lack of)\nwarranty information."
            },
            "args": []
          }
        }
      },
      "recorded_at": "2026-10-10T10:53:49.892558+00:00",
      "started_at": "2026-10-10T09:51:50+02:00",
      "new_default_startup_counts": {
        "0.01": 4,
        "0.1": 114,
        "1": 225,
        "10": 356,
        "1200": 499
      }
    },
    {
      "id": "2026-10-10-migration-lra-option-ablation",
      "date": "2026-10-10",
      "kind": "four-profile-ablation",
      "evidence_status": "evaluation-complete-default-promotion-deferred",
      "branch": "docs/public-repository-migration",
      "native_source_equivalent_to": "df42f03646590d541130ff7821ca726bb114b037",
      "scope": "Reverify default, model-phase, monotone-elimination and both on the migration implementation before considering QF_LRA-only promotion. No solver/default changes in this campaign.",
      "profiles": {
        "default": [
          "--quiet"
        ],
        "phase": [
          "--quiet",
          "--lra-model-phase"
        ],
        "monotone": [
          "--quiet",
          "--monotone-elimination"
        ],
        "both": [
          "--quiet",
          "--lra-model-phase",
          "--monotone-elimination"
        ]
      },
      "datasets": {
        "full30": {
          "inputs": 1753,
          "timeout_seconds": 30
        },
        "selection1200": {
          "inputs": 519,
          "timeout_seconds": 1200,
          "manifest": "benchmarks/qf-lra-smtcomp2026-selection.txt",
          "manifest_sha256": "0ae74669e5ee69c8894cee44e415ce644047be41942ec23d1de8eef4afecb18c"
        }
      },
      "execution": {
        "environment": "SLURM compute; Xeon E5-2690 v4; one physical CPU and 7 GiB per timing/model task",
        "artifacts": "results/lra-migration-ablation-20261010",
        "driver": "scripts/qualification/lra_ablation/run.sbatch",
        "source_sync": "slurm_prepare_benchmark_workspace.py --build-via-slurm from a clean tracked snapshot",
        "queued_commands": "results/lra-migration-ablation-20261010/pipeline-jobs.json"
      },
      "correctness": {
        "status": "Fresh gates and complete original-corpus SAT-model coverage qualified; selected reference answers agree",
        "gate": "3000 FuzzSMT plus 1000 Boolean/arithmetic cases per profile, tracked regression seeds, real-seed mutations and independent retained-mutant replay",
        "fuzz_model_logic": "QF_NRA semantic superset only for constant-denominator syntax; candidate assertions unchanged",
        "post_timing_models": "Every successful SAT row in all four profiles; separate direct Dolmen replay; original input logic; model times excluded from speed metrics",
        "generated_counts": {
          "both": {
            "boolean_arithmetic": 1000,
            "boolean_sat_models": 1000,
            "generated": 3000,
            "generated_sat_models": 2608,
            "generated_timeouts": 17,
            "invalid_mutations_excluded": 399,
            "mutant_pass": 3495,
            "mutant_replays": 3922,
            "mutant_timeouts": 28
          },
          "default": {
            "boolean_arithmetic": 1000,
            "boolean_sat_models": 1000,
            "generated": 3000,
            "generated_sat_models": 2604,
            "generated_timeouts": 21,
            "invalid_mutations_excluded": 399,
            "mutant_pass": 3490,
            "mutant_replays": 3922,
            "mutant_timeouts": 33
          },
          "monotone": {
            "boolean_arithmetic": 1000,
            "boolean_sat_models": 1000,
            "generated": 3000,
            "generated_sat_models": 2604,
            "generated_timeouts": 21,
            "invalid_mutations_excluded": 399,
            "mutant_pass": 3490,
            "mutant_replays": 3922,
            "mutant_timeouts": 33
          },
          "phase": {
            "boolean_arithmetic": 1000,
            "boolean_sat_models": 1000,
            "generated": 3000,
            "generated_sat_models": 2607,
            "generated_timeouts": 18,
            "invalid_mutations_excluded": 399,
            "mutant_pass": 3495,
            "mutant_replays": 3922,
            "mutant_timeouts": 28
          }
        },
        "generated_sat_models_passed": 14423,
        "mutation_triage": {
          "inputs": 3922,
          "excluded_invalid": 399,
          "unbound_identifiers": 314,
          "outside_QF_LRA": 85,
          "diagnostics": "Every exclusion bound to input SHA256 and original-logic Dolmen exit 4 plus Z3 exit 1. No trailing answer from a failed process accepted. Raw replay jobs failed on these rejected inputs and timeout-only rows; retained unchanged.",
          "artifact": "results/lra-migration-ablation-20261010/gate-audit.json"
        },
        "gate_audit_sha256": "c6e6088aceee653e4e75b157daa0e01ce6b133b2175340a6abd78253b5bf776f",
        "generator_details": {
          "generated": "FuzzSMT: 6 x 500 per profile; seeds 2026101600..2026101605; 5-second candidate and Z3 timeout. Boolean/arithmetic: 2 x 500 per profile, seeds 2026101606..2026101607; direct Dolmen.",
          "mutations": "YinYang seeded OpFuzz and two TypeFuzz campaigns; seeds 2026101600..2026101602; 600 seconds each, 100 iterations, 5-second candidate/Z3 timeout, 34 real seeds spanning 17 families; retained replay ignores mutated :status; all four profiles."
        },
        "generated_answer_timeouts": 77,
        "triage_artifact": "results/lra-migration-ablation-20261010/mutation-triage-and-replay-clean.tar.gz",
        "triage_artifact_sha256": "6c24fe38effdbccc0730b5faa8f058d29999d53ac996b1d6e612546c28397654",
        "post_timing_sat_rows_passed": 4779,
        "selection_reference_join": {
          "inputs": 519,
          "reference_profiles": [
            "opensmt",
            "yices",
            "z3",
            "cvc5"
          ],
          "exact_input_hashes_matched": true,
          "all_28_pairs_disagreements": 0,
          "artifact": "results/lra-migration-ablation-20261010/reference-join.json",
          "sha256": "d9c1cf0cbc78f613fa2e9cd046aa32c9efd242460f34f6aa297a5e8141434bca"
        }
      },
      "promotion": "Deferred, options remain opt-in: both has best aggregate full30 (+65 solves, PAR2 -18.7%), but 19 of 23 lost solves repeat in all 3 pairs. Diagnose these performance regressions before changing defaults. Competition ranking remains supplementary.",
      "solver_revision": "4200525",
      "binary_sha256": "4ff4f6c58c7ee93f75898639df8e49a6dcbd53d40a6d8565d12ef08ab5e1a90b",
      "jobs": {
        "build": "186384",
        "precheck": "186452",
        "timing_canary": "186448",
        "empty_sat_model_canary": "186500",
        "generated_gates": "186504",
        "seed_mutation": "186521",
        "sat_timing_canary": "186558",
        "sat_model_canary": "186562",
        "retained_mutant_replay": "186689",
        "mutant_triage": "186807",
        "full30": "186811",
        "full30-audit": "186860",
        "selection1200": "186861",
        "selection1200-audit": "186862",
        "full30-models": "186863",
        "selection1200-models": "186864",
        "full30-qualified": "186865",
        "selection1200-qualified": "186866",
        "plots": "186910"
      },
      "verification": {
        "lint": "passed",
        "docs": "make docs-full passed; assembled links: 261 pages, 32081 local links, 1046 Git links, 0 failures",
        "independent_doc_review": "ablation_doc_review accepted final paired-loss counts, exact model coverage, severe full-corpus case, deferred promotion and pinned auditor links with no findings.",
        "precheck": "44/44 C++ tests and both tracked QF_LRA seed groups under all four profiles passed",
        "collector": "Real timeout/zero-SAT canary accepted; seven adversarial provenance/coverage fixtures correctly rejected",
        "plots": "Final captions updated to deferred promotion; SVGs rendered with ImageMagick; full-corpus rendering visually inspected.",
        "priority_review": "Independent ablation_doc_review accepted full-corpus priority and model dependency changes with no findings.",
        "paired_collector": "Complete 378 parents and 127 SAT models audited, plus four adversarial provenance/model-coverage fixtures rejected."
      },
      "timing_status": "All original and all twelve paired timing/model arrays COMPLETED 0:0. No campaign jobs remain active.",
      "results": {
        "full30": {
          "profiles": {
            "both": {
              "direct_dolmen_models": 939,
              "errors": 0,
              "inputs": 1753,
              "par2_sum": 17288.82519499999,
              "sat": 939,
              "solved": 1531,
              "timeouts": 222,
              "unknown": 0,
              "wrong": 0
            },
            "default": {
              "direct_dolmen_models": 893,
              "errors": 0,
              "inputs": 1753,
              "par2_sum": 21265.297326999953,
              "sat": 893,
              "solved": 1466,
              "timeouts": 287,
              "unknown": 0,
              "wrong": 0
            },
            "monotone": {
              "direct_dolmen_models": 904,
              "errors": 0,
              "inputs": 1753,
              "par2_sum": 20169.971929000032,
              "sat": 904,
              "solved": 1487,
              "timeouts": 266,
              "unknown": 0,
              "wrong": 0
            },
            "phase": {
              "direct_dolmen_models": 930,
              "errors": 0,
              "inputs": 1753,
              "par2_sum": 18357.774028000003,
              "sat": 930,
              "solved": 1511,
              "timeouts": 242,
              "unknown": 0,
              "wrong": 0
            }
          },
          "comparisons": {
            "both": {
              "gains": 88,
              "losses": 23,
              "median_common_runtime_ratio": 1.0053956834532376,
              "par2_ratio": 0.8130065114607569
            },
            "monotone": {
              "gains": 30,
              "losses": 9,
              "median_common_runtime_ratio": 1.00872767905574,
              "par2_ratio": 0.948492354414005
            },
            "phase": {
              "gains": 73,
              "losses": 28,
              "median_common_runtime_ratio": 1.0018540151685462,
              "par2_ratio": 0.8632737998302827
            }
          },
          "decisive_disagreements": 0,
          "audit_sha256": "9c3c8c96478319c5a399e3c9617c2978f074034e6cd635a92d0762d32c8504fc"
        },
        "selection1200": {
          "profiles": {
            "both": {
              "direct_dolmen_models": 280,
              "errors": 0,
              "inputs": 519,
              "par2_sum": 63960.828525999976,
              "sat": 280,
              "solved": 499,
              "timeouts": 20,
              "unknown": 0,
              "wrong": 0
            },
            "default": {
              "direct_dolmen_models": 275,
              "errors": 0,
              "inputs": 519,
              "par2_sum": 89428.70360000005,
              "sat": 275,
              "solved": 489,
              "timeouts": 30,
              "unknown": 0,
              "wrong": 0
            },
            "monotone": {
              "direct_dolmen_models": 278,
              "errors": 0,
              "inputs": 519,
              "par2_sum": 72377.88194299999,
              "sat": 278,
              "solved": 496,
              "timeouts": 23,
              "unknown": 0,
              "wrong": 0
            },
            "phase": {
              "direct_dolmen_models": 280,
              "errors": 0,
              "inputs": 519,
              "par2_sum": 63200.61547500004,
              "sat": 280,
              "solved": 501,
              "timeouts": 18,
              "unknown": 0,
              "wrong": 0
            }
          },
          "comparisons": {
            "both": {
              "gains": 11,
              "losses": 1,
              "median_common_runtime_ratio": 0.9313209544767223,
              "par2_ratio": 0.715215875342287
            },
            "monotone": {
              "gains": 8,
              "losses": 1,
              "median_common_runtime_ratio": 1.001704940234534,
              "par2_ratio": 0.8093361418581488
            },
            "phase": {
              "gains": 13,
              "losses": 1,
              "median_common_runtime_ratio": 0.9576328046506677,
              "par2_ratio": 0.7067151029907137
            }
          },
          "decisive_disagreements": 0,
          "audit_sha256": "256b6494fe2b98870f0b055df022c5dc25f18cd0522d39489ac67bd7ce253a5c"
        }
      },
      "loss_repetitions": {
        "repeats": 3,
        "method": "Each original lost solve, default versus that profile on one physical compute CPU, 7 GiB. Alternate arm order. Original exact options and timeout. Same binary/input hashes. Full-corpus model stages wait only for all three full-corpus timing arrays; supplementary selection reruns do not delay them.",
        "jobs": {
          "status": "complete",
          "timing_jobs": {
            "full30-both": "187863",
            "full30-monotone": "187872",
            "full30-phase": "187881",
            "selection1200-both": "187890",
            "selection1200-monotone": "187891",
            "selection1200-phase": "187892"
          },
          "model_jobs": {
            "full30-both": "187893",
            "full30-monotone": "187894",
            "full30-phase": "187895",
            "selection1200-both": "187896",
            "selection1200-monotone": "187897",
            "selection1200-phase": "187898"
          }
        },
        "plans": "results/lra-migration-ablation-20261010/loss-plans",
        "artifacts": "results/lra-migration-ablation-20261010/loss-repeats",
        "plan_sha256": {
          "selection1200-monotone.json": "ca96936bf22d44f9f6bab4aa2a18ae57e3bf59b9370c4247a16f9013a26acdd4",
          "selection1200-both.json": "a2c8482b03187b2877acebd9d92822c598a8e0855bb87a931c9078f5a2a224a6",
          "full30-both.json": "6b258a26c8347e54c26c60e89715cf51665f0f28b84332912b49ab8c48428f82",
          "full30-monotone.json": "9c37b4617ebd04357984aaf5568fa4efa5b6fffcc73f1a6b1ca8eb930a7da40a",
          "full30-phase.json": "16ba623875c914fe70b87fb10bcf51c0a966a7ef6a5659e73880a20442a401dc",
          "selection1200-phase.json": "e798e5ca9ab3af2dc6f9db7a6e91b608f60bc0c15b82d01ba470d3e1aec4c891"
        },
        "dependency_updates": [
          {
            "job": "187893",
            "dependency": "afterok:187863:187872:187881",
            "command": [
              "scontrol",
              "update",
              "JobId=187893",
              "Dependency=afterok:187863:187872:187881"
            ]
          },
          {
            "job": "187894",
            "dependency": "afterok:187863:187872:187881",
            "command": [
              "scontrol",
              "update",
              "JobId=187894",
              "Dependency=afterok:187863:187872:187881"
            ]
          },
          {
            "job": "187895",
            "dependency": "afterok:187863:187872:187881",
            "command": [
              "scontrol",
              "update",
              "JobId=187895",
              "Dependency=afterok:187863:187872:187881"
            ]
          }
        ],
        "preliminary_artifact": {
          "path": "results/lra-migration-ablation-20261010/full-loss-completed-snapshot.tar.gz",
          "sha256": "2d6504a02ae5ab04b3e43e7601cb64a9c1465db2fc437e6a6d907b48011d5a39",
          "scope": "Snapshot of completed full-corpus paired cases; incomplete campaign, not final qualification"
        },
        "status": "complete",
        "final_counts": {
          "full30-both": {
            "direct_dolmen_models": 39,
            "inputs": 23,
            "losses_in_all_three_pairs": 19,
            "nonrepeated_original_losses": 4,
            "repeated_losses_at_least_two_pairs": 19
          },
          "full30-monotone": {
            "direct_dolmen_models": 19,
            "inputs": 9,
            "losses_in_all_three_pairs": 6,
            "nonrepeated_original_losses": 3,
            "repeated_losses_at_least_two_pairs": 6
          },
          "full30-phase": {
            "direct_dolmen_models": 57,
            "inputs": 28,
            "losses_in_all_three_pairs": 24,
            "nonrepeated_original_losses": 4,
            "repeated_losses_at_least_two_pairs": 24
          },
          "selection1200-both": {
            "direct_dolmen_models": 3,
            "inputs": 1,
            "losses_in_all_three_pairs": 1,
            "nonrepeated_original_losses": 0,
            "repeated_losses_at_least_two_pairs": 1
          },
          "selection1200-monotone": {
            "direct_dolmen_models": 6,
            "inputs": 1,
            "losses_in_all_three_pairs": 0,
            "nonrepeated_original_losses": 1,
            "repeated_losses_at_least_two_pairs": 0
          },
          "selection1200-phase": {
            "direct_dolmen_models": 3,
            "inputs": 1,
            "losses_in_all_three_pairs": 1,
            "nonrepeated_original_losses": 0,
            "repeated_losses_at_least_two_pairs": 1
          }
        },
        "audited_timing_and_model_parents": 378,
        "direct_dolmen_sat_rows_passed": 127,
        "audit": {
          "path": "results/lra-migration-ablation-20261010/paired-audit.json",
          "sha256": "527739eb222c157277175ce6e9d8f950c0c56358be6b27fb7f0fbc37d1fc7b80",
          "metadata_archive": "results/lra-migration-ablation-20261010/completed-loss-metadata.tar.gz",
          "metadata_archive_sha256": "bda01ac1ce5b942860a8b6c34bf610c4f2946f33ed10bc10a815350f8eb6210a"
        }
      },
      "plots": [
        "docs/_static/qf-lra-migration-ablation-full30.svg",
        "docs/_static/qf-lra-migration-ablation-selection1200.svg"
      ],
      "evaluation_priority": {
        "primary": "Full 1753-input corpus; solved count, PAR2, family effects and repeated regressions determine option/default readiness.",
        "supplementary": "519-input competition selection. Competition portfolio targeting is outside this task.",
        "user_direction": "Prioritize the full corpus; competition selection does not select the default."
      },
      "completion_date": "2026-10-11",
      "assessment": {
        "accepted": "Fresh full-corpus ablation evidence for four opt-in profiles, all SAT-model coverage and exact selected reference joins. Both is the aggregate full-corpus winner.",
        "deferred": "Default promotion; repeatable performance losses need diagnosis. No solver/default changes in this campaign.",
        "severe_full_corpus_case": "latendresse/ecoliMILPglycerolYices3-5000.smt2: default about 8.5 s versus both timeout at 30 s in all 3 full-corpus pairs. Same input at 1200 s: default 8.7–9.3 s versus both timeout at 1200 s in all 3 pairs.",
        "next_work": "Diagnose phase-related search regressions on repeated full-corpus losses; remeasure fixes before promotion."
      }
    },
    {
      "id": "2026-10-09-lra-automatic-default-committed-qualification",
      "date": "2026-10-09",
      "commit": "f0fbe67",
      "branch": "lra-default-candidate-20261009",
      "kind": "qualified-default-profile-promotion",
      "scope": "Promote both existing heuristics automatically for declared QF_LRA/rebuild/auto preprocessing; independent opt-outs and explicit enabling preserved. Exact qualified C++ sourcef0fbe67; later commits update metadata/workflows/docs only. Full1753/30s paired compute timings/models qualify automatic-vs-opt-out policy. Gold23f945d four-arm plus reference comparisons confirm explicit-flag gains at30s and1200s with unchanged algorithms.",
      "environment": {
        "type": "slurm",
        "partition": "compute",
        "remote_workspace": "/home/janotmik/primo-lra-default-candidate-20261009",
        "build_job": 182650,
        "precheck_job": 182686,
        "generated_campaign_job": 182687,
        "seed_mutation_job": 182696,
        "retained_mutant_replay_job": 182699,
        "cpu_comparison_rule": "new timing configurations all Xeon E5-2690 v4; never mix Gold/E5 timings",
        "mutant_qualification_job": 182726,
        "candidate_full30_job": 182730,
        "candidate_full30_model_job": 182731,
        "candidate_timing_workers": 8,
        "candidate_memory_gib_per_worker": 7,
        "candidate_timing_dependency": "afterok:182687:182726; every mutation non-resource outcome blocks timing",
        "original_selected_models_wait_for_candidate_timing": 182730
      },
      "binary": {
        "git": "f0fbe67",
        "build": "Release; GCC11.4.1 system-header shim; static GMP/CaDiCaL unchanged",
        "cadical": "cadical-3.0.0-7b99c07",
        "sha256": "b5913892253c12981870b92f558b7ae6ec79ddec12c25ce5296ef5eed60686ed",
        "solver_args": [
          "--quiet"
        ],
        "z3": "5.1.0",
        "dolmen": "0.10",
        "yices": "2.7.0,4f19700f0e272f4a68250080d12a873523bc7ac3",
        "preserved_binary": "remote results/lra-default-candidate-20261009/bin/primo-f0fbe67"
      },
      "precheck": {
        "status": "pass",
        "tests": [
          "primo_lra_heuristic_cli",
          "primo_boolean_solver_tests",
          "primo_qf_lra_solver_tests"
        ],
        "tests_pass": 3,
        "seconds": 3.91
      },
      "generated_campaign": {
        "status": "Qualified: generated checks and semantic SAT replay complete; retained mutation separately qualified.",
        "count": 3000,
        "shards": 6,
        "generator": "FuzzSMT",
        "seeds": [
          2026101200,
          2026101201,
          2026101202,
          2026101203,
          2026101204,
          2026101205
        ],
        "timeout_seconds": 5,
        "reference": "z3",
        "arguments": "-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2",
        "exit_status_replay": "check_solver_seed_corpus.py for every generated input",
        "successful_sat_model_replay": "direct Dolmen with QF_NRA validator semantic superset; does not certify strict QF_LRA syntax",
        "boolean_arithmetic_count": 1000,
        "boolean_arithmetic_seeds": [
          2026101206,
          2026101207,
          2026101208,
          2026101209
        ],
        "script": "scripts/slurm_lra_default_qualification.sbatch",
        "artifact": "results/lra-default-candidate-20261009/committed-gate",
        "answer_summary": {
          "rows": 3000,
          "outcomes": {
            "PASS": 2976,
            "TIMEOUT": 24
          }
        },
        "status_aware_summary": {
          "rows": 3000,
          "outcomes": {
            "PASS": 2976,
            "INCOMPLETE": 24
          },
          "answers": {
            "sat/sat": 2563,
            "unsat/unsat": 413,
            "timeout/sat": 18,
            "timeout/timeout": 4,
            "timeout/unsat": 2
          }
        },
        "model_summary": {
          "rows": 2563,
          "outcomes": {
            "pass": 2563
          },
          "validators": {
            "dolmen": 2563
          },
          "nonpass": []
        },
        "boolean_arithmetic_summary": {
          "rows": 1000,
          "outcomes": {
            "PASS": 1000
          }
        }
      },
      "real_seed_mutation": {
        "status": "qualified",
        "generator": "patched YinYang fork,seeded_opfuzz.py",
        "seed": 2026101300,
        "seed_selection": "two seeds/family,17families,max200000bytes",
        "iterations_per_seed": 200,
        "wall_seconds": 1500,
        "timeout_seconds": 5,
        "reference": "scripts/yices_smt2_ref.sh",
        "retained_input_status_replay": "16shards; every non-pass row blocks until classification",
        "scripts": [
          "scripts/slurm_lra_default_seed_mutation.sbatch",
          "scripts/slurm_lra_default_mutant_replay.sbatch"
        ],
        "artifact": "results/lra-default-candidate-20261009/seed-mutation",
        "qualification_script": "scripts/slurm_lra_default_mutant_qualification.sbatch",
        "retained_inputs": 6785,
        "family_coverage": [
          "2017-Heizmann-UltimateInvariantSynthesis",
          "2019-ezsmt",
          "DTP-Scheduling",
          "LassoRanker",
          "TM",
          "check",
          "clock_synchro",
          "keymaera",
          "latendresse",
          "meti-tarski",
          "miplib",
          "sal",
          "sc",
          "spider_benchmarks",
          "tropical-matrix",
          "tta_startup",
          "uart"
        ],
        "summary": {
          "pass": 6749,
          "timeout": 36,
          "wrong_answer": 0,
          "crash": 0,
          "parser_type_errors": 0,
          "unsupported": 0,
          "reference_disagreement": 0
        },
        "generator_commit": "04c8618a134e7a6c8b6d54fcd5ee9fd2ec64a2bb; clean patched fork",
        "qualification_artifact": "results/lra-default-candidate-20261009/mutation-qualification.json"
      },
      "commands": {
        "build": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/primo-opensmt-ssh.config --remote primo-cluster --remote-dir /home/janotmik/primo-lra-default-candidate-20261009 --local-dir /tmp/primo-lra-default-candidate --reuse-dependencies --build-via-slurm --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --cxx-header-manifest /home/janotmik/primo-symmetry-headers.txt --jobs 4 --extra-target primo_qf_lra_solver_tests --extra-target primo_boolean_solver_tests",
        "precheck": "PRIMO_WORKDIR=$PWD PRIMO_EXPECTED_GIT=f0fbe67 sbatch --nodes=1 --ntasks=1 --hint=nomultithread scripts/slurm_lra_default_precheck.sbatch",
        "gate": "PRIMO_WORKDIR=$PWD PRIMO_EXPECTED_GIT=f0fbe67 PRIMO_CAMPAIGN_OUT=$PWD/results/lra-default-candidate-20261009/committed-gate sbatch --nodes=1 --ntasks=1 --hint=nomultithread --dependency=afterok:182686 scripts/slurm_lra_default_qualification.sbatch"
      },
      "evidence_status": "complete-qualified-promotion",
      "outcome": "Accepted both as scoped automatic defaults. FullGold:1485->1553solves (+68;88wins20losses),PAR2 -20.81%. Fullcompute:1461->1525 (+64;89wins25losses),PAR2 -18.68%. SelectedGold:491->500 (+9;11wins2losses),PAR2 -28.75%. Phasealone501at1200s remains an alternative via--no-monotone-elimination. All6652successful nativeSATruns independently pass directDolmen;0wrong/invalidmodels/crashes/reference disagreements. Freshf0fbe67 generated and real-seed gates qualify, resource-only cases recorded separately.",
      "verification": {
        "qualification_aggregator": "9 adversarial checks pass; nonzero exits after SAT, changed/missing data and raw bugs block; resource-only timeouts counted separately",
        "artifact": "results/lra-default-candidate-20261009/qualification-aggregator-checks.json",
        "model_coverage_audit": "64 coverage records: exact successful SAT sets, solver/Dolmen zero exit, direct Dolmen pass, unchanged identities, parent and model-summary SHA256 hashes;1826/1826pass",
        "model_coverage_artifact": "results/lra-default-candidate-20261009/complete-model-coverage-check.json"
      },
      "full30_compute": {
        "complete": true,
        "expected_rows_per_profile": 1753,
        "timeout": 30,
        "profiles": {
          "legacy-default": {
            "rows": 1753,
            "solved": 1461,
            "sat": 891,
            "unsat": 570,
            "statuses": {
              "timeout": 292,
              "ok": 1461
            },
            "wrong": 0,
            "par2_sum": 21513.641828,
            "par2_mean": 12.272471094124358,
            "complete_shards": 32,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 58,
                "solved": 18,
                "sat": 3,
                "unsat": 15,
                "statuses": {
                  "timeout": 40,
                  "ok": 18
                },
                "wrong": 0,
                "par2_sum": 2544.784995,
                "par2_mean": 43.875603362068965
              },
              "2019-ezsmt": {
                "rows": 105,
                "solved": 90,
                "sat": 69,
                "unsat": 21,
                "statuses": {
                  "timeout": 15,
                  "ok": 90
                },
                "wrong": 0,
                "par2_sum": 1181.846383,
                "par2_mean": 11.255679838095238
              },
              "DTP-Scheduling": {
                "rows": 91,
                "solved": 91,
                "sat": 91,
                "unsat": 0,
                "statuses": {
                  "ok": 91
                },
                "wrong": 0,
                "par2_sum": 28.392572000000005,
                "par2_mean": 0.3120062857142858
              },
              "LassoRanker": {
                "rows": 419,
                "solved": 234,
                "sat": 164,
                "unsat": 70,
                "statuses": {
                  "ok": 234,
                  "timeout": 185
                },
                "wrong": 0,
                "par2_sum": 13570.523857,
                "par2_mean": 32.38788510023866
              },
              "TM": {
                "rows": 25,
                "solved": 24,
                "sat": 23,
                "unsat": 1,
                "statuses": {
                  "ok": 24,
                  "timeout": 1
                },
                "wrong": 0,
                "par2_sum": 85.36348699999999,
                "par2_mean": 3.4145394799999997
              },
              "check": {
                "rows": 2,
                "solved": 2,
                "sat": 1,
                "unsat": 1,
                "statuses": {
                  "ok": 2
                },
                "wrong": 0,
                "par2_sum": 0.020085,
                "par2_mean": 0.0100425
              },
              "clock_synchro": {
                "rows": 36,
                "solved": 33,
                "sat": 0,
                "unsat": 33,
                "statuses": {
                  "ok": 33,
                  "timeout": 3
                },
                "wrong": 0,
                "par2_sum": 251.718944,
                "par2_mean": 6.992192888888889
              },
              "keymaera": {
                "rows": 21,
                "solved": 21,
                "sat": 0,
                "unsat": 21,
                "statuses": {
                  "ok": 21
                },
                "wrong": 0,
                "par2_sum": 0.16773100000000005,
                "par2_mean": 0.007987190476190478
              },
              "latendresse": {
                "rows": 18,
                "solved": 15,
                "sat": 14,
                "unsat": 1,
                "statuses": {
                  "ok": 15,
                  "timeout": 3
                },
                "wrong": 0,
                "par2_sum": 287.979522,
                "par2_mean": 15.998862333333332
              },
              "meti-tarski": {
                "rows": 488,
                "solved": 488,
                "sat": 338,
                "unsat": 150,
                "statuses": {
                  "ok": 488
                },
                "wrong": 0,
                "par2_sum": 3.981818999999999,
                "par2_mean": 0.008159465163934424
              },
              "miplib": {
                "rows": 42,
                "solved": 17,
                "sat": 9,
                "unsat": 8,
                "statuses": {
                  "timeout": 25,
                  "ok": 17
                },
                "wrong": 0,
                "par2_sum": 1573.428234,
                "par2_mean": 37.462576999999996
              },
              "sal": {
                "rows": 107,
                "solved": 107,
                "sat": 11,
                "unsat": 96,
                "statuses": {
                  "ok": 107
                },
                "wrong": 0,
                "par2_sum": 7.7181830000000025,
                "par2_mean": 0.07213255140186918
              },
              "sc": {
                "rows": 144,
                "solved": 144,
                "sat": 108,
                "unsat": 36,
                "statuses": {
                  "ok": 144
                },
                "wrong": 0,
                "par2_sum": 343.8771990000001,
                "par2_mean": 2.3880361041666673
              },
              "spider_benchmarks": {
                "rows": 42,
                "solved": 42,
                "sat": 0,
                "unsat": 42,
                "statuses": {
                  "ok": 42
                },
                "wrong": 0,
                "par2_sum": 1.668458,
                "par2_mean": 0.039725190476190476
              },
              "tropical-matrix": {
                "rows": 10,
                "solved": 0,
                "sat": 0,
                "unsat": 0,
                "statuses": {
                  "timeout": 10
                },
                "wrong": 0,
                "par2_sum": 600,
                "par2_mean": 60.0
              },
              "tta_startup": {
                "rows": 72,
                "solved": 67,
                "sat": 24,
                "unsat": 43,
                "statuses": {
                  "ok": 67,
                  "timeout": 5
                },
                "wrong": 0,
                "par2_sum": 454.022969,
                "par2_mean": 6.305874569444445
              },
              "uart": {
                "rows": 73,
                "solved": 68,
                "sat": 36,
                "unsat": 32,
                "statuses": {
                  "ok": 68,
                  "timeout": 5
                },
                "wrong": 0,
                "par2_sum": 578.1473899999999,
                "par2_mean": 7.919827260273971
              }
            },
            "model_validation": {
              "completed_shards": 32,
              "statuses": {
                "complete": 32
              },
              "expected_sat": 891,
              "dolmen_pass": 891,
              "outcomes": {
                "pass": 891
              }
            }
          },
          "default": {
            "rows": 1753,
            "solved": 1525,
            "sat": 935,
            "unsat": 590,
            "statuses": {
              "timeout": 228,
              "ok": 1525
            },
            "wrong": 0,
            "par2_sum": 17495.135497000003,
            "par2_mean": 9.980111521391901,
            "complete_shards": 32,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 58,
                "solved": 22,
                "sat": 2,
                "unsat": 20,
                "statuses": {
                  "timeout": 36,
                  "ok": 22
                },
                "wrong": 0,
                "par2_sum": 2367.084317,
                "par2_mean": 40.811798568965514
              },
              "2019-ezsmt": {
                "rows": 105,
                "solved": 92,
                "sat": 71,
                "unsat": 21,
                "statuses": {
                  "ok": 92,
                  "timeout": 13
                },
                "wrong": 0,
                "par2_sum": 1015.765263,
                "par2_mean": 9.673954885714286
              },
              "DTP-Scheduling": {
                "rows": 91,
                "solved": 91,
                "sat": 91,
                "unsat": 0,
                "statuses": {
                  "ok": 91
                },
                "wrong": 0,
                "par2_sum": 8.906114999999998,
                "par2_mean": 0.09786939560439559
              },
              "LassoRanker": {
                "rows": 419,
                "solved": 291,
                "sat": 208,
                "unsat": 83,
                "statuses": {
                  "ok": 291,
                  "timeout": 128
                },
                "wrong": 0,
                "par2_sum": 10091.144271,
                "par2_mean": 24.08387654176611
              },
              "TM": {
                "rows": 25,
                "solved": 25,
                "sat": 24,
                "unsat": 1,
                "statuses": {
                  "ok": 25
                },
                "wrong": 0,
                "par2_sum": 31.736729999999994,
                "par2_mean": 1.2694691999999999
              },
              "check": {
                "rows": 2,
                "solved": 2,
                "sat": 1,
                "unsat": 1,
                "statuses": {
                  "ok": 2
                },
                "wrong": 0,
                "par2_sum": 0.020356,
                "par2_mean": 0.010178
              },
              "clock_synchro": {
                "rows": 36,
                "solved": 35,
                "sat": 0,
                "unsat": 35,
                "statuses": {
                  "ok": 35,
                  "timeout": 1
                },
                "wrong": 0,
                "par2_sum": 114.17237699999998,
                "par2_mean": 3.1714549166666663
              },
              "keymaera": {
                "rows": 21,
                "solved": 21,
                "sat": 0,
                "unsat": 21,
                "statuses": {
                  "ok": 21
                },
                "wrong": 0,
                "par2_sum": 0.16603300000000001,
                "par2_mean": 0.007906333333333335
              },
              "latendresse": {
                "rows": 18,
                "solved": 11,
                "sat": 10,
                "unsat": 1,
                "statuses": {
                  "timeout": 7,
                  "ok": 11
                },
                "wrong": 0,
                "par2_sum": 467.700154,
                "par2_mean": 25.983341888888887
              },
              "meti-tarski": {
                "rows": 488,
                "solved": 488,
                "sat": 338,
                "unsat": 150,
                "statuses": {
                  "ok": 488
                },
                "wrong": 0,
                "par2_sum": 3.9453249999999986,
                "par2_mean": 0.008084682377049178
              },
              "miplib": {
                "rows": 42,
                "solved": 20,
                "sat": 11,
                "unsat": 9,
                "statuses": {
                  "timeout": 22,
                  "ok": 20
                },
                "wrong": 0,
                "par2_sum": 1436.4334939999999,
                "par2_mean": 34.20079747619047
              },
              "sal": {
                "rows": 107,
                "solved": 107,
                "sat": 11,
                "unsat": 96,
                "statuses": {
                  "ok": 107
                },
                "wrong": 0,
                "par2_sum": 7.679745000000003,
                "par2_mean": 0.07177331775700937
              },
              "sc": {
                "rows": 144,
                "solved": 144,
                "sat": 108,
                "unsat": 36,
                "statuses": {
                  "ok": 144
                },
                "wrong": 0,
                "par2_sum": 289.49990900000006,
                "par2_mean": 2.0104160347222226
              },
              "spider_benchmarks": {
                "rows": 42,
                "solved": 42,
                "sat": 0,
                "unsat": 42,
                "statuses": {
                  "ok": 42
                },
                "wrong": 0,
                "par2_sum": 1.7333589999999997,
                "par2_mean": 0.04127045238095237
              },
              "tropical-matrix": {
                "rows": 10,
                "solved": 0,
                "sat": 0,
                "unsat": 0,
                "statuses": {
                  "timeout": 10
                },
                "wrong": 0,
                "par2_sum": 600,
                "par2_mean": 60.0
              },
              "tta_startup": {
                "rows": 72,
                "solved": 68,
                "sat": 24,
                "unsat": 44,
                "statuses": {
                  "ok": 68,
                  "timeout": 4
                },
                "wrong": 0,
                "par2_sum": 391.59268999999995,
                "par2_mean": 5.43878736111111
              },
              "uart": {
                "rows": 73,
                "solved": 66,
                "sat": 36,
                "unsat": 30,
                "statuses": {
                  "ok": 66,
                  "timeout": 7
                },
                "wrong": 0,
                "par2_sum": 667.555359,
                "par2_mean": 9.144593958904109
              }
            },
            "model_validation": {
              "completed_shards": 32,
              "statuses": {
                "complete": 32
              },
              "expected_sat": 935,
              "dolmen_pass": 935,
              "outcomes": {
                "pass": 935
              }
            }
          }
        },
        "identities": {
          "legacy-default": {
            "solver": {
              "path": "/home/janotmik/primo-lra-default-candidate-20261009/build-slurm-rel/primo",
              "sha256": "b5913892253c12981870b92f558b7ae6ec79ddec12c25ce5296ef5eed60686ed",
              "version": "primo 0.2.0\ngit: f0fbe67\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07"
            },
            "solver_args": [
              "--quiet",
              "--no-lra-model-phase",
              "--no-monotone-elimination"
            ]
          },
          "default": {
            "solver": {
              "path": "/home/janotmik/primo-lra-default-candidate-20261009/build-slurm-rel/primo",
              "sha256": "b5913892253c12981870b92f558b7ae6ec79ddec12c25ce5296ef5eed60686ed",
              "version": "primo 0.2.0\ngit: f0fbe67\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07"
            },
            "solver_args": [
              "--quiet"
            ]
          }
        },
        "comparisons": {
          "default": {
            "gains": 89,
            "losses": 25,
            "paired_solved": 1436,
            "paired_baseline_at_least_1s": 381,
            "median_candidate_over_baseline": 0.7600596743513766,
            "geometric_mean_candidate_over_baseline": 0.6579413126540715,
            "par2_change_percent": -18.67887530678284
          }
        },
        "reference_disagreements": [],
        "qualification": "Complete timings and all 1826 successful SAT rows independently pass direct Dolmen; all64 replay shards complete, parent data/binary identities unchanged, exact SAT sets and artifact/parent hashes audited."
      },
      "source_relation": {
        "qualified_source_commit": "f0fbe67",
        "cpp_tree": "0fbd83f4d49f1d9a40329b86d20317f1f1bce449",
        "later_commits": "Documentation, benchmark metadata and workflows only; git diff f0fbe67 HEAD -- src CMakeLists.txt tests/unit tests/cmake/check_lra_heuristic_cli.cmake benchmarks/smoke/qf_lra/default_heuristics.smt2 is empty."
      },
      "accepted_on": "2026-10-10",
      "default_controls": {
        "source_commit": "f0fbe67",
        "automatic_scope": "declaredQF_LRA;IncrementalMode::Rebuild;PreprocessingMode::Auto",
        "former_default_args": [
          "--no-lra-model-phase",
          "--no-monotone-elimination"
        ],
        "individual_overrides": "Each negative flag is independent;explicit positive/false-valued flags retain documented behavior.",
        "performance_scope": "Measured auto-preprocess-selector=legacy. No new performance qualification of the opt-in structural selector or other logics."
      },
      "all_claimed_native_sat_models": {
        "full30_gold": 3711,
        "selection1200_gold": 1115,
        "full30_compute": 1826,
        "total": 6652,
        "outcome": "all directDolmenpass; exact parentSATsets, zero solver/validator exits, unchanged input/binary identities and parent/artifact hashes independently audited",
        "resource_retries": "Two original selected solver-timeouts at1260s;five-SAT-row extended3600s attempts both complete;originalfailuresretained and no double counting.",
        "audit_artifacts": [
          "results/lra-reverification-20261009/full30-complete-model-check.json",
          "results/lra-reverification-20261009/selected-complete-model-check.json",
          "results/lra-default-candidate-20261009/complete-model-coverage-check.json"
        ]
      }
    },
    {
      "id": "2026-10-09-lra-automatic-default-candidate-precommit",
      "date": "2026-10-09",
      "commit": "87aa4cc-dirty",
      "branch": "lra-default-candidate-20261009",
      "kind": "isolated-default-policy-qualification",
      "scope": "Candidate automatic phase and monotone for declared QF_LRA/rebuild/auto preprocessing only; independent negative overrides; main unchanged pending fresh committed campaign, timings and complete SAT models. Existing algorithm implementations unchanged.",
      "environment": {
        "type": "local correctness only",
        "artifact_root": "results/lra-default-candidate-20261009",
        "benchmark_partition_policy": "compute for subsequent work; CPU models must match within any new comparison"
      },
      "binary": {
        "git": "87aa4cc-dirty",
        "sha256": "bd34169face91990fe4b61f189628fc809f76554b98c459c228515505131552e",
        "source_patch_sha256": "35c1ccb5aff3fa144dfbb3371ba54c54f368f1a15e5d65c9f82eda9b337ad1f1",
        "provenance": "results/lra-default-candidate-20261009/local-merge/precommit-provenance.json",
        "version": "primo 0.2.0\ngit: 87aa4cc-dirty\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07\n"
      },
      "fuzz": {
        "command": "python3 scripts/qf_lra_boolean_arithmetic_fuzz.py --solver build/primo --solver-arg=--quiet --z3 contrib/local/bin/z3 --dolmen contrib/local/bin/dolmen --count 1000 --seed 2026101100 --timeout 5 --dolmen-timeout 10 --out /workspace/results/lra-default-candidate-20261009/local-merge",
        "generator": "owned Boolean/arithmetic generator",
        "seed": 2026101100,
        "count": 1000,
        "timeout_seconds": 5,
        "reference": "contrib/local/bin/z3",
        "validator": "contrib/local/bin/dolmen",
        "summary": {
          "pass": 1000,
          "sat": 1000,
          "direct_dolmen_pass": 1000,
          "wrong_answer": 0,
          "crash": 0,
          "parser_type_errors": 0,
          "timeout": 0,
          "unsupported": 0,
          "reference_disagreement": 0
        },
        "artifact": "results/lra-default-candidate-20261009/local-merge",
        "qualification": "precommit smoke/merge evidence; a fresh committed campaign remains required for promotion"
      },
      "verification": {
        "make_check": "42 C++ and188 Python pass",
        "make_asan_test": "42/42 pass",
        "make_docs": "strict build passes",
        "make_lint": "passes",
        "driver_mock_checks": "28 combinations pass, results/lra-default-candidate-20261009/driver-check.json",
        "whole_tree_clang_tidy": "124 tracked CPP scanned; external CLI11 potential leak and pre-existing constexpr enum-range test analyzer false positives; no added owned-code warning",
        "include_cleaner": "124 tracked CPP advisory scan; added test Statistics direct include; retained self-includes and actively used variant. Existing missing direct includes remain advisory.",
        "efficiency_review": "No added hot-path patterns; constant-time option resolution; no term allocation or algorithm changes."
      },
      "evidence_status": "historical-precommit-evidence-superseded-by-qualified-f0fbe67",
      "outcome": "Isolated source candidate passes local merge gate and normal/sanitizer tests. It is not promoted and has no qualified current-commit performance result yet.",
      "superseded_by": "2026-10-09-lra-automatic-default-committed-qualification"
    },
    {
      "id": "2026-10-09-lra-paper-profile-reverification",
      "date": "2026-10-09",
      "commit": "23f945d",
      "branch": "main",
      "kind": "paper-profile-reverification-and-conditional-promotion",
      "scope": "Reverify QF_LRA --lra-model-phase --monotone-elimination against current default and individual flags, full 1753 at 30s and official 519 at 1200s, independent SAT validation before any promotion. Restrict any accepted default to the measured logic.",
      "environment": {
        "type": "slurm",
        "build_jobs": {
          "initial_invalid_test_target": 182007,
          "successful_corrected_build": 182024
        },
        "precheck_job": 182033,
        "fuzz_answer_and_legacy_model_job": 182034,
        "legacy_mutation_tasks_cancelled": [
          6,
          7,
          8
        ],
        "rejected_mutation_seed_precheck_jobs": [
          182048,
          182058
        ],
        "rejected_fuzz_replay_selector_job": 182057,
        "fuzz_sat_replay_job": 182070,
        "seeded_mutation_job": 182071,
        "full30_job": 182100,
        "selection1200_job": 182101,
        "superseded_partial_full30_job": 182080,
        "superseded_dependent_selection1200_job": 182081,
        "full30_model_replay_job": 182359,
        "selection1200_model_replay_job": 182360,
        "seeded_opfuzz_retry_job": 182092,
        "host_checks": {
          "amd_launch_failed": 182094,
          "gold_successful": 182095
        },
        "cpu_model": "Intel Xeon Gold 6140 @ 2.30 GHz; two sockets, 18 physical cores/socket",
        "timing_concurrency": 32,
        "memory_gib_per_task": 7,
        "cpu_policy": "One worker per physical core, --ntasks=1 --cpus-per-task=1 --hint=nomultithread; SLURM reserves both sibling logical CPUs. No GPU requested.",
        "mutant_status_replay_job": 182205,
        "mutant_nonlinear_triage_job": 182268,
        "fuzz_semantic_model_replay_job": 182279,
        "superseded_unstarted_model_replay_jobs": [
          182135,
          182136
        ],
        "model_partition": "compute; queued selection job moved from gpu on user scheduling concern",
        "model_dependencies": {
          "182359": "afterok:182100",
          "182360": "Released after auditing all 256 native selection timing shards complete and all candidate compute timing tasks (182730) complete; remaining 182101 reference timings use a different CPU host. scontrol update JobId=182360 Dependency=\"\". Completed 182730 had left active scheduler state, so afterok:182730 update was rejected.",
          "183270": "No dependency: all256 native timing parents complete and candidate compute timing complete; pending original tasks held/cancelled, running original tasks retained. Remaining Gold reference timings use separate hardware."
        },
        "timing_node": "gpu-1; CPU-only; no new GPU-node work after user concern",
        "selection1200_model_replay_compact_job": 183270,
        "selection1200_model_replay_reassignment": {
          "previous_job": 182360,
          "retained_running_tasks": [
            10,
            17,
            21,
            24
          ],
          "already_complete_tasks": [
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            11,
            12,
            13,
            14,
            15,
            16,
            18,
            19,
            20,
            22,
            23
          ],
          "new_tasks": [
            25,
            26,
            27,
            28,
            29,
            30,
            31,
            32,
            33,
            34,
            35,
            36,
            37,
            38,
            39,
            40,
            41,
            42,
            43,
            44,
            45,
            46,
            47,
            48,
            49,
            50,
            51,
            52,
            53,
            54,
            55,
            56,
            57,
            58,
            59,
            60,
            61,
            62,
            63,
            64,
            65,
            66,
            67,
            68,
            69,
            70,
            71,
            72,
            73,
            74,
            75,
            76,
            77,
            78,
            79,
            80,
            81,
            82,
            83,
            84,
            85,
            86,
            87,
            88,
            89,
            90,
            91,
            92,
            93,
            94,
            95,
            96,
            97,
            98,
            99,
            100,
            101,
            102,
            103,
            104,
            105,
            106,
            107,
            108,
            109,
            110,
            111,
            112,
            113,
            114,
            115,
            116,
            117,
            118,
            119,
            120,
            121,
            122,
            123,
            124,
            125,
            126,
            127,
            128,
            129,
            130,
            131,
            132,
            133,
            134,
            135,
            136,
            137,
            138,
            139,
            140,
            141,
            142,
            143,
            144,
            145,
            146,
            147,
            148,
            149,
            150,
            151,
            152,
            153,
            154,
            155,
            156,
            157,
            158,
            159,
            160,
            161,
            162,
            163,
            164,
            165,
            166,
            167,
            168,
            169,
            170,
            171,
            172,
            173,
            174,
            175,
            176,
            177,
            178,
            179,
            180,
            181,
            182,
            183,
            184,
            185,
            186,
            187,
            188,
            189,
            190,
            191,
            192,
            193,
            194,
            195,
            196,
            197,
            198,
            199,
            200,
            201,
            202,
            203,
            204,
            205,
            206,
            207,
            208,
            209,
            210,
            211,
            212,
            213,
            214,
            215,
            216,
            217,
            218,
            219,
            220,
            221,
            222,
            223,
            224,
            225,
            226,
            227,
            228,
            229,
            230,
            231,
            232,
            233,
            234,
            235,
            236,
            237,
            238,
            239,
            240,
            241,
            242,
            243,
            244,
            245,
            246,
            247,
            248,
            249,
            250,
            251,
            252,
            253,
            254,
            255
          ],
          "reason": "Compute nodes have idle physical CPU cores but insufficient remaining reserved memory for a second7GiB worker; completed models below1.4GiB. Move only unstarted tasks to6GiB allocation,5GiB Dolmen cap. Timing resources unchanged; all1115SATmodels remain required.",
          "model_limits": {
            "allocation_gib": 6,
            "dolmen_cap": "5G",
            "solver_timeout_seconds": 1260,
            "dolmen_timeout_seconds": 120,
            "concurrency_cap": 16
          },
          "artifact": "results/lra-reverification-20261009/compact-model-scheduling.json"
        },
        "selection1200_extended_model_job": 183447,
        "selection1200_extended_monotone_model_job": 183565
      },
      "binary": {
        "git": "23f945d",
        "version": "primo 0.2.0\ngit: 23f945d\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07\n",
        "binary_sha256": "063012214f1835c52507c5f48c9266ba787c9ea95ed2bbe6679e79b55a8f343f",
        "instances": 1753,
        "selected_instances": 519,
        "corpus_sha256": "26a52bd1e10115473cbefc1d8bfe6ff6bfe542602f239f0cbaee07439ba5af90"
      },
      "populations": {
        "full_qf_lra": 1753,
        "official_selection": 519,
        "selection_manifest": "benchmarks/qf-lra-smtcomp2026-selection.txt",
        "selection_sha256": "0ae74669e5ee69c8894cee44e415ce644047be41942ec23d1de8eef4afecb18c",
        "original_unscrambled_inputs": true,
        "paper_train_test_assignment_unavailable": true
      },
      "profiles": {
        "default": [
          "--quiet"
        ],
        "model-phase": [
          "--quiet",
          "--lra-model-phase"
        ],
        "monotone": [
          "--quiet",
          "--monotone-elimination"
        ],
        "both": [
          "--quiet",
          "--lra-model-phase",
          "--monotone-elimination"
        ]
      },
      "precheck": {
        "0": {},
        "1": {
          "boolean-domain.csv": {
            "rows": 2,
            "outcomes": {
              "PASS": 2
            },
            "sat": 0,
            "dolmen_pass": 0
          },
          "qf_lra_real.csv": {
            "rows": 14,
            "outcomes": {
              "PASS": 14
            },
            "sat": 0,
            "dolmen_pass": 0
          },
          "qf_lra.csv": {
            "rows": 3,
            "outcomes": {
              "PASS": 3
            },
            "sat": 0,
            "dolmen_pass": 0
          }
        },
        "2": {
          "boolean-domain.csv": {
            "rows": 2,
            "outcomes": {
              "PASS": 2
            },
            "sat": 0,
            "dolmen_pass": 0
          },
          "qf_lra_real.csv": {
            "rows": 14,
            "outcomes": {
              "PASS": 14
            },
            "sat": 0,
            "dolmen_pass": 0
          },
          "qf_lra.csv": {
            "rows": 3,
            "outcomes": {
              "PASS": 3
            },
            "sat": 0,
            "dolmen_pass": 0
          }
        },
        "3": {
          "boolean-domain.csv": {
            "rows": 2,
            "outcomes": {
              "PASS": 2
            },
            "sat": 0,
            "dolmen_pass": 0
          },
          "qf_lra_real.csv": {
            "rows": 14,
            "outcomes": {
              "PASS": 14
            },
            "sat": 0,
            "dolmen_pass": 0
          },
          "qf_lra.csv": {
            "rows": 3,
            "outcomes": {
              "PASS": 3
            },
            "sat": 0,
            "dolmen_pass": 0
          }
        },
        "4": {
          "boolean-domain.csv": {
            "rows": 2,
            "outcomes": {
              "PASS": 2
            },
            "sat": 0,
            "dolmen_pass": 0
          },
          "qf_lra_real.csv": {
            "rows": 14,
            "outcomes": {
              "PASS": 14
            },
            "sat": 0,
            "dolmen_pass": 0
          },
          "qf_lra.csv": {
            "rows": 3,
            "outcomes": {
              "PASS": 3
            },
            "sat": 0,
            "dolmen_pass": 0
          }
        },
        "5": {
          "boolean-arithmetic/summary.csv": {
            "rows": 250,
            "outcomes": {
              "PASS": 250
            },
            "sat": 250,
            "dolmen_pass": 250
          }
        },
        "6": {
          "boolean-arithmetic/summary.csv": {
            "rows": 250,
            "outcomes": {
              "PASS": 250
            },
            "sat": 250,
            "dolmen_pass": 250
          }
        },
        "7": {
          "boolean-arithmetic/summary.csv": {
            "rows": 250,
            "outcomes": {
              "PASS": 250
            },
            "sat": 250,
            "dolmen_pass": 250
          }
        },
        "8": {
          "boolean-arithmetic/summary.csv": {
            "rows": 250,
            "outcomes": {
              "PASS": 250
            },
            "sat": 250,
            "dolmen_pass": 250
          }
        }
      },
      "fuzz_answers": {
        "0": {
          "rows": 500,
          "outcomes": {
            "PASS": 497,
            "TIMEOUT": 3
          },
          "sat": 437
        },
        "1": {
          "rows": 500,
          "outcomes": {
            "PASS": 498,
            "TIMEOUT": 2
          },
          "sat": 423
        },
        "2": {
          "rows": 500,
          "outcomes": {
            "PASS": 496,
            "TIMEOUT": 4
          },
          "sat": 441
        },
        "3": {
          "rows": 500,
          "outcomes": {
            "PASS": 497,
            "TIMEOUT": 3
          },
          "sat": 422
        },
        "4": {
          "rows": 500,
          "outcomes": {
            "PASS": 499,
            "TIMEOUT": 1
          },
          "sat": 435
        },
        "5": {
          "rows": 500,
          "outcomes": {
            "PASS": 499,
            "TIMEOUT": 1
          },
          "sat": 445
        }
      },
      "gate_status": "Complete:all timings and every successful nativeSATrow independently qualified;two resource-only initial model timeouts resolved with complete extended attempts.",
      "triage": {
        "legacy_model_driver": "The old gate validates every generated input, appending get-model even after UNSAT. Current interpreter correctly exits nonzero for that invalid model query. Strict Dolmen also rejects constant multiplication of a complex linear expression. Corrective stage selects only successful SAT rows, adds --check-model, --expect-sat and --require-dolmen-pass, and uses --dolmen-arg=--strict=false without changing the logic or assertions.",
        "initial_sat_selector": "Initially required every fuzz answer row to PASS. Corrected to preserve and report timeout-only rows separately, selecting successful SAT passes. Timeouts are not wrong answers.",
        "family_seed_reference_limits": "Diagnostic checks of the generated 34-seed family corpus found Z3 and Yices reference timeouts on hard LassoRanker/latendresse seeds at 30s. The 17 tracked QF_LRA regression seeds plus two Boolean-domain witnesses passed Z3 for every measured profile. Mutating the broader family bundle does not substitute it for those tracked regression checks.",
        "generated_input_syntax": "With --strict=false, multiplication warnings can be accepted directly, but some FuzzSMT inputs divide by a negative constant denominator, which Dolmen rejects as forbidden in the declared QF_LRA syntax. Preserve these as input-nonconforming, not model passes or incorrect Primo answers. Separate real-corpus SAT validation is still required. The explicitly separate semantic replay forces only Dolmen to QF_NRA, retaining every assertion and the candidate QF_LRA logic. All 2603 selected SAT models pass under this semantic superset; this does not turn the 1466 input-grammar rejections into strict QF_LRA passes.",
        "mutation_process_status": "Installed YinYang Fuzzer.py only handles selected nonzero exits before answer parsing. Its raw campaign is not accepted correctness evidence. Retained inputs require independent replay through check_solver_seed_corpus.py, whose post-answer-crash regression passed.",
        "opfuzz_seed_interface": "The raw opfuzz launcher rejects --seed. Its initial task is setup non-evidence; rerun through scripts/seeded_opfuzz.py, which seeds Python RNG before calling the installed launcher.",
        "scheduler": "The compute partition had free CPUs but memory reservations limited the 7GiB jobs to about seven concurrent workers. Cancelled the partial run and its dependent selected run, preserving their artifacts as superseded. A homogeneous idle Gold CPU host in the GPU partition supports 32 workers at the unchanged 7GiB allocation. AMD host probe failed with Job credential expired; Gold probe ran the candidate successfully."
      },
      "artifacts": {
        "local": "results/lra-reverification-20261009",
        "gate_summary": "results/lra-reverification-20261009/collected-gates/gate-summary.json",
        "full30": "results/lra-reverification-20261009/full30-gold",
        "selection1200": "results/lra-reverification-20261009/selection1200-gold",
        "superseded_partial": "results/lra-reverification-20261009/full30",
        "comparison_summary": "results/lra-reverification-20261009/collected-comparison/comparison-summary.json",
        "mutation_triage": "results/lra-reverification-20261009/mutant-triage",
        "semantic_model_summary": "results/lra-reverification-20261009/semantic-model-summary.json",
        "qualified_cactus": "docs/_static/qf-lra-reverification-20261009-full30.svg",
        "committed_summary": "benchmarks/qf-lra-reverification-20261009-full30.json",
        "compact_model_driver_check": "results/lra-reverification-20261009/compact-model-driver-check.json;8nativeprofile/sharddispatch checks and rejection of reference-profile index passed",
        "compact_model_timeout_check": "results/lra-reverification-20261009/compact-model-timeout-check.json; future defaults2400/120seconds and explicit3600/180 overrides passed; job183270 used explicit1260/120seconds.",
        "selected_qualified_plot": "docs/_static/qf-lra-reverification-20261009-selection1200.svg",
        "selected_qualified_summary": "benchmarks/qf-lra-reverification-20261009-selection1200.json"
      },
      "commands": {
        "precheck": "ctest --test-dir build-slurm-rel --timeout 120 -R primo_(qf_lra_solver|boolean_solver)_tests; check_solver_seed_corpus.py for qf_lra (3), qf_lra_real (14), and two Boolean-domain witnesses, each of four profiles vs Z3 at 30s; qf_lra_boolean_arithmetic_fuzz.py --count 250 --seed 2026100905..2026100908 --timeout 5 --dolmen-timeout 10 with both flags (4 tasks).",
        "generated": "slurm_qf_lra_model_fuzz_gate.sbatch tasks 0..5, 500/shard, FuzzSMT seeds 2026100910..2026100915, 5s solver, exact both flags; separate successful-SAT replay at 10s solver/Dolmen, --check-model --expect-sat --require-dolmen-pass --dolmen-arg=--strict=false.",
        "timing": "slurm_lra_profile_comparison.sbatch benchmark phase: full30-gold, 6 profiles x 32 shards, 30s, 7GiB per allocation, array concurrency32, 45min task limit; selection1200-gold afterok full30-gold, 6 profiles x64 shards, 1200s, 7GiB, concurrency32, 3h task limit. All arms on one homogeneous Gold CPU host, physical-core allocation. Immutable timing rows and input/binary hashes.",
        "real_models": "The same driver replay phase: four native profiles, full30 32 shards/profile, 90s solver and 60s Dolmen, 6G Dolmen cap; selection1200 64 shards/profile, 1260s solver and120s Dolmen. Direct --require-dolmen-pass --expect-sat --check-model, --dolmen-arg=--strict=false. Full30 model job starts after all selected timing tasks; selected models start after full30 model job, preventing overlap with timing.",
        "seed_mutation": "build_fuzz_seed_corpus.py --root corpora/QF_LRA --out benchmarks/seeds/qf_lra_division --per-family 2 --max-bytes 200000; slurm_lra_paper_seeded_mutation.sbatch tasks 0..2: exact both flags, reference scripts/yices_smt2_ref.sh, timeout 5s, wall1500s, deterministic seeds2026101000..1002, OpFuzz200 iterations/seed through seeded_opfuzz.py, TypeFuzz100 iterations/seed with hoist-declarations; keep-logic and keep-mutants.",
        "mutant_replay": "slurm_lra_paper_mutant_replay.sbatch array0..47, three roots x16 shards, check_solver_seed_corpus.py --ignore-declared-status, exact both flags, Yices wrapper,5s; slurm_lra_paper_mutant_triage.sbatch after replay collects both/default/Z3/OpenSMT/Dolmen diagnostics for all candidate rejections with concrete Yices answers.",
        "semantic_models": "slurm_lra_paper_fuzz_semantic_replay.sbatch array0..5: successful-SAT selection only, exact both flags and --check-model, solver/Dolmen10s, --require-dolmen-pass --expect-sat --dolmen-arg=--strict=false --dolmen-arg=--force-smtlib2-logic=QF_NRA. Separate semantic evidence, not strict input-conformance coverage.",
        "selected_model_compact": [
          "sbatch",
          "--parsable",
          "--array=25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255%16",
          "scripts/slurm_lra_selected_model_replay.sbatch"
        ]
      },
      "evidence_status": "complete-qualified",
      "outcome": "Both flags retain aggregate gains in current algorithms:full30Gold+68solves/PAR2-20.81%,selected1200Gold+9/PAR2-28.75%. All3711+1115nativeSATmodels pass directDolmen;no wrong answers,invalidmodels,crashes or reference disagreements. DistinctE5/f0fbe67 automatic-policy comparison separately qualified. Paperhardware differs,OpenSMTrevision differs,Yicesrevision matches;exactinputarchive and473instance tuningmanifest unavailable,soaggregate comparison only.",
      "fuzz_models": {
        "strict_qf_lra": {
          "expected_sat": 2603,
          "direct_dolmen_pass": 1137,
          "input_nonconforming": 1466,
          "invalid_models": 0
        },
        "semantic_superset": {
          "expected_sat": 2603,
          "direct_dolmen_pass": 2603,
          "invalid_models": 0,
          "changed_answers": 0,
          "solver_errors": 0,
          "validator_logic": "QF_NRA",
          "input_assertions_changed": false,
          "candidate_logic_unchanged": true,
          "strict_qf_lra_conformance_certified": false
        }
      },
      "retained_mutation": {
        "seeded-mutation/task-1": {
          "retained_inputs": 900,
          "families": {
            "2019-ezsmt": 200,
            "check": 100,
            "clock_synchro": 100,
            "keymaera": 100,
            "meti-tarski": 100,
            "sal": 100,
            "tta_startup": 200
          },
          "saved_failures": 0
        },
        "seeded-mutation/task-2": {
          "retained_inputs": 700,
          "families": {
            "2017-Heizmann-UltimateInvariantSynthesis": 100,
            "DTP-Scheduling": 100,
            "clock_synchro": 100,
            "keymaera": 100,
            "meti-tarski": 100,
            "sal": 100,
            "tta_startup": 100
          },
          "saved_failures": 0
        },
        "seeded-opfuzz/task-0": {
          "retained_inputs": 6780,
          "families": {
            "2017-Heizmann-UltimateInvariantSynthesis": 400,
            "2019-ezsmt": 400,
            "DTP-Scheduling": 400,
            "LassoRanker": 400,
            "TM": 400,
            "check": 400,
            "clock_synchro": 400,
            "keymaera": 385,
            "latendresse": 400,
            "meti-tarski": 395,
            "miplib": 400,
            "sal": 400,
            "sc": 400,
            "spider_benchmarks": 400,
            "tropical-matrix": 400,
            "tta_startup": 400,
            "uart": 400
          },
          "saved_failures": 0
        },
        "independent-root-1": {
          "rows": 700,
          "outcomes": {
            "INCOMPLETE": 348,
            "PASS": 352
          }
        },
        "independent-root-0": {
          "rows": 900,
          "outcomes": {
            "PASS": 701,
            "INCOMPLETE": 199
          }
        },
        "independent-root-2": {
          "rows": 6780,
          "outcomes": {
            "PASS": 6752,
            "INCOMPLETE": 28
          }
        }
      },
      "retained_mutation_classification": {
        "total": 8380,
        "reference_agreement": 7805,
        "resource_only_incomplete": 28,
        "invalid_generated_input": 547,
        "nonlinear_in_declared_qf_lra": 190,
        "undeclared_terms": 357,
        "untriaged_failures": 0,
        "concrete_yices_answers_on_nonlinear_inputs": 27,
        "triage": "All 27 candidate rejections with concrete Yices answers are nonlinear products. Both candidate and default exit 2 with a coefficient diagnostic. Z3 exits 1 with nonlinear-arithmetic errors; OpenSMT rejects the nonlinear terms; Dolmen exits 4 for forbidden linear-arithmetic expressions. Remaining 520 invalid mutants have explicit Yices nonlinear or undeclared-name errors and candidate rejection. The OpFuzz run covers all 17 families; the two time-boxed TypeFuzz runs cover only their recorded 7 families each."
      },
      "full30": {
        "complete": true,
        "expected_rows_per_profile": 1753,
        "timeout": 30,
        "profiles": {
          "default": {
            "rows": 1753,
            "solved": 1485,
            "sat": 905,
            "unsat": 580,
            "statuses": {
              "timeout": 268,
              "ok": 1485
            },
            "wrong": 0,
            "par2_sum": 20108.494525000002,
            "par2_mean": 11.470903893325728,
            "complete_shards": 32,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 58,
                "solved": 20,
                "sat": 3,
                "unsat": 17,
                "statuses": {
                  "timeout": 38,
                  "ok": 20
                },
                "wrong": 0,
                "par2_sum": 2447.913872,
                "par2_mean": 42.2054115862069
              },
              "2019-ezsmt": {
                "rows": 105,
                "solved": 90,
                "sat": 69,
                "unsat": 21,
                "statuses": {
                  "timeout": 15,
                  "ok": 90
                },
                "wrong": 0,
                "par2_sum": 1137.621213,
                "par2_mean": 10.834487742857142
              },
              "DTP-Scheduling": {
                "rows": 91,
                "solved": 91,
                "sat": 91,
                "unsat": 0,
                "statuses": {
                  "ok": 91
                },
                "wrong": 0,
                "par2_sum": 23.061511999999997,
                "par2_mean": 0.2534232087912088
              },
              "LassoRanker": {
                "rows": 419,
                "solved": 250,
                "sat": 176,
                "unsat": 74,
                "statuses": {
                  "ok": 250,
                  "timeout": 169
                },
                "wrong": 0,
                "par2_sum": 12739.56265,
                "par2_mean": 30.40468412887828
              },
              "TM": {
                "rows": 25,
                "solved": 25,
                "sat": 24,
                "unsat": 1,
                "statuses": {
                  "ok": 25
                },
                "wrong": 0,
                "par2_sum": 46.024766,
                "par2_mean": 1.84099064
              },
              "check": {
                "rows": 2,
                "solved": 2,
                "sat": 1,
                "unsat": 1,
                "statuses": {
                  "ok": 2
                },
                "wrong": 0,
                "par2_sum": 0.017213,
                "par2_mean": 0.0086065
              },
              "clock_synchro": {
                "rows": 36,
                "solved": 34,
                "sat": 0,
                "unsat": 34,
                "statuses": {
                  "ok": 34,
                  "timeout": 2
                },
                "wrong": 0,
                "par2_sum": 202.88998099999998,
                "par2_mean": 5.635832805555555
              },
              "keymaera": {
                "rows": 21,
                "solved": 21,
                "sat": 0,
                "unsat": 21,
                "statuses": {
                  "ok": 21
                },
                "wrong": 0,
                "par2_sum": 0.145641,
                "par2_mean": 0.006935285714285714
              },
              "latendresse": {
                "rows": 18,
                "solved": 15,
                "sat": 14,
                "unsat": 1,
                "statuses": {
                  "ok": 15,
                  "timeout": 3
                },
                "wrong": 0,
                "par2_sum": 267.710568,
                "par2_mean": 14.872809333333334
              },
              "meti-tarski": {
                "rows": 488,
                "solved": 488,
                "sat": 338,
                "unsat": 150,
                "statuses": {
                  "ok": 488
                },
                "wrong": 0,
                "par2_sum": 3.2903479999999976,
                "par2_mean": 0.006742516393442618
              },
              "miplib": {
                "rows": 42,
                "solved": 18,
                "sat": 10,
                "unsat": 8,
                "statuses": {
                  "timeout": 24,
                  "ok": 18
                },
                "wrong": 0,
                "par2_sum": 1529.038144,
                "par2_mean": 36.4056700952381
              },
              "sal": {
                "rows": 107,
                "solved": 107,
                "sat": 11,
                "unsat": 96,
                "statuses": {
                  "ok": 107
                },
                "wrong": 0,
                "par2_sum": 6.022655999999999,
                "par2_mean": 0.056286504672897184
              },
              "sc": {
                "rows": 144,
                "solved": 144,
                "sat": 108,
                "unsat": 36,
                "statuses": {
                  "ok": 144
                },
                "wrong": 0,
                "par2_sum": 265.696556,
                "par2_mean": 1.8451149722222222
              },
              "spider_benchmarks": {
                "rows": 42,
                "solved": 42,
                "sat": 0,
                "unsat": 42,
                "statuses": {
                  "ok": 42
                },
                "wrong": 0,
                "par2_sum": 1.3372450000000002,
                "par2_mean": 0.031839166666666675
              },
              "tropical-matrix": {
                "rows": 10,
                "solved": 0,
                "sat": 0,
                "unsat": 0,
                "statuses": {
                  "timeout": 10
                },
                "wrong": 0,
                "par2_sum": 600,
                "par2_mean": 60.0
              },
              "tta_startup": {
                "rows": 72,
                "solved": 68,
                "sat": 24,
                "unsat": 44,
                "statuses": {
                  "ok": 68,
                  "timeout": 4
                },
                "wrong": 0,
                "par2_sum": 387.899221,
                "par2_mean": 5.387489180555556
              },
              "uart": {
                "rows": 73,
                "solved": 70,
                "sat": 36,
                "unsat": 34,
                "statuses": {
                  "ok": 70,
                  "timeout": 3
                },
                "wrong": 0,
                "par2_sum": 450.26293899999996,
                "par2_mean": 6.167985465753424
              }
            },
            "model_validation": {
              "completed_shards": 32,
              "statuses": {
                "complete": 32
              },
              "expected_sat": 905,
              "dolmen_pass": 905,
              "outcomes": {
                "pass": 905
              }
            }
          },
          "model-phase": {
            "rows": 1753,
            "solved": 1534,
            "sat": 941,
            "unsat": 593,
            "statuses": {
              "timeout": 219,
              "ok": 1534
            },
            "wrong": 0,
            "par2_sum": 16931.037278999996,
            "par2_mean": 9.65832132287507,
            "complete_shards": 32,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 58,
                "solved": 23,
                "sat": 3,
                "unsat": 20,
                "statuses": {
                  "timeout": 35,
                  "ok": 23
                },
                "wrong": 0,
                "par2_sum": 2280.299678,
                "par2_mean": 39.31551168965517
              },
              "2019-ezsmt": {
                "rows": 105,
                "solved": 94,
                "sat": 73,
                "unsat": 21,
                "statuses": {
                  "ok": 94,
                  "timeout": 11
                },
                "wrong": 0,
                "par2_sum": 904.5507930000001,
                "par2_mean": 8.614769457142858
              },
              "DTP-Scheduling": {
                "rows": 91,
                "solved": 91,
                "sat": 91,
                "unsat": 0,
                "statuses": {
                  "ok": 91
                },
                "wrong": 0,
                "par2_sum": 7.648580000000001,
                "par2_mean": 0.08405032967032967
              },
              "LassoRanker": {
                "rows": 419,
                "solved": 294,
                "sat": 211,
                "unsat": 83,
                "statuses": {
                  "ok": 294,
                  "timeout": 125
                },
                "wrong": 0,
                "par2_sum": 10024.10439,
                "par2_mean": 23.923876825775658
              },
              "TM": {
                "rows": 25,
                "solved": 25,
                "sat": 24,
                "unsat": 1,
                "statuses": {
                  "ok": 25
                },
                "wrong": 0,
                "par2_sum": 24.398009,
                "par2_mean": 0.9759203599999999
              },
              "check": {
                "rows": 2,
                "solved": 2,
                "sat": 1,
                "unsat": 1,
                "statuses": {
                  "ok": 2
                },
                "wrong": 0,
                "par2_sum": 0.018092999999999998,
                "par2_mean": 0.009046499999999999
              },
              "clock_synchro": {
                "rows": 36,
                "solved": 36,
                "sat": 0,
                "unsat": 36,
                "statuses": {
                  "ok": 36
                },
                "wrong": 0,
                "par2_sum": 69.03431799999998,
                "par2_mean": 1.917619944444444
              },
              "keymaera": {
                "rows": 21,
                "solved": 21,
                "sat": 0,
                "unsat": 21,
                "statuses": {
                  "ok": 21
                },
                "wrong": 0,
                "par2_sum": 0.150017,
                "par2_mean": 0.007143666666666667
              },
              "latendresse": {
                "rows": 18,
                "solved": 11,
                "sat": 10,
                "unsat": 1,
                "statuses": {
                  "timeout": 7,
                  "ok": 11
                },
                "wrong": 0,
                "par2_sum": 458.196812,
                "par2_mean": 25.455378444444445
              },
              "meti-tarski": {
                "rows": 488,
                "solved": 488,
                "sat": 338,
                "unsat": 150,
                "statuses": {
                  "ok": 488
                },
                "wrong": 0,
                "par2_sum": 3.473390999999997,
                "par2_mean": 0.007117604508196714
              },
              "miplib": {
                "rows": 42,
                "solved": 20,
                "sat": 11,
                "unsat": 9,
                "statuses": {
                  "timeout": 22,
                  "ok": 20
                },
                "wrong": 0,
                "par2_sum": 1412.482066,
                "par2_mean": 33.630525380952385
              },
              "sal": {
                "rows": 107,
                "solved": 107,
                "sat": 11,
                "unsat": 96,
                "statuses": {
                  "ok": 107
                },
                "wrong": 0,
                "par2_sum": 5.956092,
                "par2_mean": 0.05566441121495327
              },
              "sc": {
                "rows": 144,
                "solved": 144,
                "sat": 108,
                "unsat": 36,
                "statuses": {
                  "ok": 144
                },
                "wrong": 0,
                "par2_sum": 224.59740499999998,
                "par2_mean": 1.5597042013888887
              },
              "spider_benchmarks": {
                "rows": 42,
                "solved": 42,
                "sat": 0,
                "unsat": 42,
                "statuses": {
                  "ok": 42
                },
                "wrong": 0,
                "par2_sum": 1.3787539999999998,
                "par2_mean": 0.032827476190476185
              },
              "tropical-matrix": {
                "rows": 10,
                "solved": 0,
                "sat": 0,
                "unsat": 0,
                "statuses": {
                  "timeout": 10
                },
                "wrong": 0,
                "par2_sum": 600,
                "par2_mean": 60.0
              },
              "tta_startup": {
                "rows": 72,
                "solved": 68,
                "sat": 24,
                "unsat": 44,
                "statuses": {
                  "ok": 68,
                  "timeout": 4
                },
                "wrong": 0,
                "par2_sum": 360.933183,
                "par2_mean": 5.012960875
              },
              "uart": {
                "rows": 73,
                "solved": 68,
                "sat": 36,
                "unsat": 32,
                "statuses": {
                  "ok": 68,
                  "timeout": 5
                },
                "wrong": 0,
                "par2_sum": 553.815698,
                "par2_mean": 7.586516410958904
              }
            },
            "model_validation": {
              "completed_shards": 32,
              "statuses": {
                "complete": 32
              },
              "expected_sat": 941,
              "dolmen_pass": 941,
              "outcomes": {
                "pass": 941
              }
            }
          },
          "monotone": {
            "rows": 1753,
            "solved": 1508,
            "sat": 917,
            "unsat": 591,
            "statuses": {
              "timeout": 245,
              "ok": 1508
            },
            "wrong": 0,
            "par2_sum": 18864.798751,
            "par2_mean": 10.761436823160295,
            "complete_shards": 32,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 58,
                "solved": 20,
                "sat": 3,
                "unsat": 17,
                "statuses": {
                  "timeout": 38,
                  "ok": 20
                },
                "wrong": 0,
                "par2_sum": 2435.628304,
                "par2_mean": 41.99359144827586
              },
              "2019-ezsmt": {
                "rows": 105,
                "solved": 91,
                "sat": 70,
                "unsat": 21,
                "statuses": {
                  "ok": 91,
                  "timeout": 14
                },
                "wrong": 0,
                "par2_sum": 1113.328078,
                "par2_mean": 10.603124552380953
              },
              "DTP-Scheduling": {
                "rows": 91,
                "solved": 91,
                "sat": 91,
                "unsat": 0,
                "statuses": {
                  "ok": 91
                },
                "wrong": 0,
                "par2_sum": 24.278033,
                "par2_mean": 0.26679157142857146
              },
              "LassoRanker": {
                "rows": 419,
                "solved": 273,
                "sat": 188,
                "unsat": 85,
                "statuses": {
                  "ok": 273,
                  "timeout": 146
                },
                "wrong": 0,
                "par2_sum": 11509.822902999998,
                "par2_mean": 27.469744398568015
              },
              "TM": {
                "rows": 25,
                "solved": 25,
                "sat": 24,
                "unsat": 1,
                "statuses": {
                  "ok": 25
                },
                "wrong": 0,
                "par2_sum": 28.823397,
                "par2_mean": 1.15293588
              },
              "check": {
                "rows": 2,
                "solved": 2,
                "sat": 1,
                "unsat": 1,
                "statuses": {
                  "ok": 2
                },
                "wrong": 0,
                "par2_sum": 0.018033,
                "par2_mean": 0.0090165
              },
              "clock_synchro": {
                "rows": 36,
                "solved": 34,
                "sat": 0,
                "unsat": 34,
                "statuses": {
                  "ok": 34,
                  "timeout": 2
                },
                "wrong": 0,
                "par2_sum": 205.027053,
                "par2_mean": 5.695195916666666
              },
              "keymaera": {
                "rows": 21,
                "solved": 21,
                "sat": 0,
                "unsat": 21,
                "statuses": {
                  "ok": 21
                },
                "wrong": 0,
                "par2_sum": 0.14636500000000002,
                "par2_mean": 0.006969761904761906
              },
              "latendresse": {
                "rows": 18,
                "solved": 15,
                "sat": 14,
                "unsat": 1,
                "statuses": {
                  "ok": 15,
                  "timeout": 3
                },
                "wrong": 0,
                "par2_sum": 266.939126,
                "par2_mean": 14.829951444444443
              },
              "meti-tarski": {
                "rows": 488,
                "solved": 488,
                "sat": 338,
                "unsat": 150,
                "statuses": {
                  "ok": 488
                },
                "wrong": 0,
                "par2_sum": 3.425996999999999,
                "par2_mean": 0.007020485655737703
              },
              "miplib": {
                "rows": 42,
                "solved": 17,
                "sat": 9,
                "unsat": 8,
                "statuses": {
                  "timeout": 25,
                  "ok": 17
                },
                "wrong": 0,
                "par2_sum": 1558.744355,
                "par2_mean": 37.11296083333333
              },
              "sal": {
                "rows": 107,
                "solved": 107,
                "sat": 11,
                "unsat": 96,
                "statuses": {
                  "ok": 107
                },
                "wrong": 0,
                "par2_sum": 6.235748999999998,
                "par2_mean": 0.05827802803738316
              },
              "sc": {
                "rows": 144,
                "solved": 144,
                "sat": 108,
                "unsat": 36,
                "statuses": {
                  "ok": 144
                },
                "wrong": 0,
                "par2_sum": 269.87779299999994,
                "par2_mean": 1.8741513402777774
              },
              "spider_benchmarks": {
                "rows": 42,
                "solved": 42,
                "sat": 0,
                "unsat": 42,
                "statuses": {
                  "ok": 42
                },
                "wrong": 0,
                "par2_sum": 1.3826309999999997,
                "par2_mean": 0.03291978571428571
              },
              "tropical-matrix": {
                "rows": 10,
                "solved": 0,
                "sat": 0,
                "unsat": 0,
                "statuses": {
                  "timeout": 10
                },
                "wrong": 0,
                "par2_sum": 600,
                "par2_mean": 60.0
              },
              "tta_startup": {
                "rows": 72,
                "solved": 68,
                "sat": 24,
                "unsat": 44,
                "statuses": {
                  "ok": 68,
                  "timeout": 4
                },
                "wrong": 0,
                "par2_sum": 391.197525,
                "par2_mean": 5.433298958333333
              },
              "uart": {
                "rows": 73,
                "solved": 70,
                "sat": 36,
                "unsat": 34,
                "statuses": {
                  "ok": 70,
                  "timeout": 3
                },
                "wrong": 0,
                "par2_sum": 449.92340899999994,
                "par2_mean": 6.163334369863013
              }
            },
            "model_validation": {
              "completed_shards": 32,
              "statuses": {
                "complete": 32
              },
              "expected_sat": 917,
              "dolmen_pass": 917,
              "outcomes": {
                "pass": 917
              }
            }
          },
          "both": {
            "rows": 1753,
            "solved": 1553,
            "sat": 948,
            "unsat": 605,
            "statuses": {
              "timeout": 200,
              "ok": 1553
            },
            "wrong": 0,
            "par2_sum": 15923.760169999994,
            "par2_mean": 9.083719435253848,
            "complete_shards": 32,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 58,
                "solved": 24,
                "sat": 3,
                "unsat": 21,
                "statuses": {
                  "timeout": 34,
                  "ok": 24
                },
                "wrong": 0,
                "par2_sum": 2257.122549,
                "par2_mean": 38.91590601724138
              },
              "2019-ezsmt": {
                "rows": 105,
                "solved": 95,
                "sat": 74,
                "unsat": 21,
                "statuses": {
                  "ok": 95,
                  "timeout": 10
                },
                "wrong": 0,
                "par2_sum": 880.473265,
                "par2_mean": 8.385459666666666
              },
              "DTP-Scheduling": {
                "rows": 91,
                "solved": 91,
                "sat": 91,
                "unsat": 0,
                "statuses": {
                  "ok": 91
                },
                "wrong": 0,
                "par2_sum": 6.996486999999999,
                "par2_mean": 0.07688447252747252
              },
              "LassoRanker": {
                "rows": 419,
                "solved": 311,
                "sat": 217,
                "unsat": 94,
                "statuses": {
                  "ok": 311,
                  "timeout": 108
                },
                "wrong": 0,
                "par2_sum": 9071.049212999998,
                "par2_mean": 21.64928213126491
              },
              "TM": {
                "rows": 25,
                "solved": 25,
                "sat": 24,
                "unsat": 1,
                "statuses": {
                  "ok": 25
                },
                "wrong": 0,
                "par2_sum": 25.219884,
                "par2_mean": 1.00879536
              },
              "check": {
                "rows": 2,
                "solved": 2,
                "sat": 1,
                "unsat": 1,
                "statuses": {
                  "ok": 2
                },
                "wrong": 0,
                "par2_sum": 0.018258,
                "par2_mean": 0.009129
              },
              "clock_synchro": {
                "rows": 36,
                "solved": 36,
                "sat": 0,
                "unsat": 36,
                "statuses": {
                  "ok": 36
                },
                "wrong": 0,
                "par2_sum": 68.92055199999999,
                "par2_mean": 1.9144597777777774
              },
              "keymaera": {
                "rows": 21,
                "solved": 21,
                "sat": 0,
                "unsat": 21,
                "statuses": {
                  "ok": 21
                },
                "wrong": 0,
                "par2_sum": 0.146739,
                "par2_mean": 0.006987571428571429
              },
              "latendresse": {
                "rows": 18,
                "solved": 11,
                "sat": 10,
                "unsat": 1,
                "statuses": {
                  "timeout": 7,
                  "ok": 11
                },
                "wrong": 0,
                "par2_sum": 457.933127,
                "par2_mean": 25.440729277777777
              },
              "meti-tarski": {
                "rows": 488,
                "solved": 488,
                "sat": 338,
                "unsat": 150,
                "statuses": {
                  "ok": 488
                },
                "wrong": 0,
                "par2_sum": 3.3717370000000035,
                "par2_mean": 0.0069092971311475486
              },
              "miplib": {
                "rows": 42,
                "solved": 20,
                "sat": 11,
                "unsat": 9,
                "statuses": {
                  "timeout": 22,
                  "ok": 20
                },
                "wrong": 0,
                "par2_sum": 1411.045533,
                "par2_mean": 33.59632221428571
              },
              "sal": {
                "rows": 107,
                "solved": 107,
                "sat": 11,
                "unsat": 96,
                "statuses": {
                  "ok": 107
                },
                "wrong": 0,
                "par2_sum": 6.011726999999999,
                "par2_mean": 0.0561843644859813
              },
              "sc": {
                "rows": 144,
                "solved": 144,
                "sat": 108,
                "unsat": 36,
                "statuses": {
                  "ok": 144
                },
                "wrong": 0,
                "par2_sum": 224.51333799999995,
                "par2_mean": 1.5591204027777774
              },
              "spider_benchmarks": {
                "rows": 42,
                "solved": 42,
                "sat": 0,
                "unsat": 42,
                "statuses": {
                  "ok": 42
                },
                "wrong": 0,
                "par2_sum": 1.3925170000000007,
                "par2_mean": 0.03315516666666668
              },
              "tropical-matrix": {
                "rows": 10,
                "solved": 0,
                "sat": 0,
                "unsat": 0,
                "statuses": {
                  "timeout": 10
                },
                "wrong": 0,
                "par2_sum": 600,
                "par2_mean": 60.0
              },
              "tta_startup": {
                "rows": 72,
                "solved": 68,
                "sat": 24,
                "unsat": 44,
                "statuses": {
                  "ok": 68,
                  "timeout": 4
                },
                "wrong": 0,
                "par2_sum": 357.715362,
                "par2_mean": 4.968268916666667
              },
              "uart": {
                "rows": 73,
                "solved": 68,
                "sat": 36,
                "unsat": 32,
                "statuses": {
                  "ok": 68,
                  "timeout": 5
                },
                "wrong": 0,
                "par2_sum": 551.8298820000001,
                "par2_mean": 7.559313452054796
              }
            },
            "model_validation": {
              "completed_shards": 32,
              "statuses": {
                "complete": 32
              },
              "expected_sat": 948,
              "dolmen_pass": 948,
              "outcomes": {
                "pass": 948
              }
            }
          },
          "opensmt": {
            "rows": 1753,
            "solved": 1539,
            "sat": 899,
            "unsat": 640,
            "statuses": {
              "timeout": 214,
              "ok": 1539
            },
            "wrong": 0,
            "par2_sum": 16800.822217000004,
            "par2_mean": 9.584040055333716,
            "complete_shards": 32,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 58,
                "solved": 24,
                "sat": 3,
                "unsat": 21,
                "statuses": {
                  "timeout": 34,
                  "ok": 24
                },
                "wrong": 0,
                "par2_sum": 2229.905516,
                "par2_mean": 38.44664682758621
              },
              "2019-ezsmt": {
                "rows": 105,
                "solved": 81,
                "sat": 60,
                "unsat": 21,
                "statuses": {
                  "timeout": 24,
                  "ok": 81
                },
                "wrong": 0,
                "par2_sum": 1914.58836,
                "par2_mean": 18.234174857142857
              },
              "DTP-Scheduling": {
                "rows": 91,
                "solved": 91,
                "sat": 91,
                "unsat": 0,
                "statuses": {
                  "ok": 91
                },
                "wrong": 0,
                "par2_sum": 3.62126,
                "par2_mean": 0.03979406593406593
              },
              "LassoRanker": {
                "rows": 419,
                "solved": 306,
                "sat": 182,
                "unsat": 124,
                "statuses": {
                  "ok": 306,
                  "timeout": 113
                },
                "wrong": 0,
                "par2_sum": 9344.109359999999,
                "par2_mean": 22.30097699284009
              },
              "TM": {
                "rows": 25,
                "solved": 25,
                "sat": 24,
                "unsat": 1,
                "statuses": {
                  "ok": 25
                },
                "wrong": 0,
                "par2_sum": 17.188481,
                "par2_mean": 0.68753924
              },
              "check": {
                "rows": 2,
                "solved": 2,
                "sat": 1,
                "unsat": 1,
                "statuses": {
                  "ok": 2
                },
                "wrong": 0,
                "par2_sum": 0.008664000000000002,
                "par2_mean": 0.004332000000000001
              },
              "clock_synchro": {
                "rows": 36,
                "solved": 36,
                "sat": 0,
                "unsat": 36,
                "statuses": {
                  "ok": 36
                },
                "wrong": 0,
                "par2_sum": 90.82375300000001,
                "par2_mean": 2.522882027777778
              },
              "keymaera": {
                "rows": 21,
                "solved": 21,
                "sat": 0,
                "unsat": 21,
                "statuses": {
                  "ok": 21
                },
                "wrong": 0,
                "par2_sum": 0.07966000000000001,
                "par2_mean": 0.003793333333333334
              },
              "latendresse": {
                "rows": 18,
                "solved": 10,
                "sat": 9,
                "unsat": 1,
                "statuses": {
                  "timeout": 8,
                  "ok": 10
                },
                "wrong": 0,
                "par2_sum": 485.783111,
                "par2_mean": 26.987950611111113
              },
              "meti-tarski": {
                "rows": 488,
                "solved": 488,
                "sat": 338,
                "unsat": 150,
                "statuses": {
                  "ok": 488
                },
                "wrong": 0,
                "par2_sum": 1.7025209999999975,
                "par2_mean": 0.0034887725409836015
              },
              "miplib": {
                "rows": 42,
                "solved": 21,
                "sat": 12,
                "unsat": 9,
                "statuses": {
                  "timeout": 21,
                  "ok": 21
                },
                "wrong": 0,
                "par2_sum": 1343.403707,
                "par2_mean": 31.985802547619045
              },
              "sal": {
                "rows": 107,
                "solved": 107,
                "sat": 11,
                "unsat": 96,
                "statuses": {
                  "ok": 107
                },
                "wrong": 0,
                "par2_sum": 2.9020180000000004,
                "par2_mean": 0.027121663551401873
              },
              "sc": {
                "rows": 144,
                "solved": 144,
                "sat": 108,
                "unsat": 36,
                "statuses": {
                  "ok": 144
                },
                "wrong": 0,
                "par2_sum": 95.163386,
                "par2_mean": 0.6608568472222223
              },
              "spider_benchmarks": {
                "rows": 42,
                "solved": 42,
                "sat": 0,
                "unsat": 42,
                "statuses": {
                  "ok": 42
                },
                "wrong": 0,
                "par2_sum": 0.5967979999999997,
                "par2_mean": 0.014209476190476184
              },
              "tropical-matrix": {
                "rows": 10,
                "solved": 1,
                "sat": 1,
                "unsat": 0,
                "statuses": {
                  "ok": 1,
                  "timeout": 9
                },
                "wrong": 0,
                "par2_sum": 547.995228,
                "par2_mean": 54.7995228
              },
              "tta_startup": {
                "rows": 72,
                "solved": 67,
                "sat": 23,
                "unsat": 44,
                "statuses": {
                  "ok": 67,
                  "timeout": 5
                },
                "wrong": 0,
                "par2_sum": 451.624364,
                "par2_mean": 6.272560611111111
              },
              "uart": {
                "rows": 73,
                "solved": 73,
                "sat": 36,
                "unsat": 37,
                "statuses": {
                  "ok": 73
                },
                "wrong": 0,
                "par2_sum": 271.32602999999983,
                "par2_mean": 3.716794931506847
              }
            },
            "model_validation": {
              "completed_shards": 0,
              "statuses": {},
              "expected_sat": 0,
              "dolmen_pass": 0,
              "outcomes": {}
            }
          },
          "yices": {
            "rows": 1753,
            "solved": 1539,
            "sat": 944,
            "unsat": 595,
            "statuses": {
              "timeout": 214,
              "ok": 1539
            },
            "wrong": 0,
            "par2_sum": 15408.136708000002,
            "par2_mean": 8.789581693097547,
            "complete_shards": 32,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 58,
                "solved": 12,
                "sat": 3,
                "unsat": 9,
                "statuses": {
                  "timeout": 46,
                  "ok": 12
                },
                "wrong": 0,
                "par2_sum": 2821.988861,
                "par2_mean": 48.65498036206896
              },
              "2019-ezsmt": {
                "rows": 105,
                "solved": 93,
                "sat": 72,
                "unsat": 21,
                "statuses": {
                  "ok": 93,
                  "timeout": 12
                },
                "wrong": 0,
                "par2_sum": 879.0673350000001,
                "par2_mean": 8.372069857142858
              },
              "DTP-Scheduling": {
                "rows": 91,
                "solved": 91,
                "sat": 91,
                "unsat": 0,
                "statuses": {
                  "ok": 91
                },
                "wrong": 0,
                "par2_sum": 0.923295,
                "par2_mean": 0.010146098901098901
              },
              "LassoRanker": {
                "rows": 419,
                "solved": 309,
                "sat": 216,
                "unsat": 93,
                "statuses": {
                  "ok": 309,
                  "timeout": 110
                },
                "wrong": 0,
                "par2_sum": 8190.524365000001,
                "par2_mean": 19.547790847255374
              },
              "TM": {
                "rows": 25,
                "solved": 25,
                "sat": 24,
                "unsat": 1,
                "statuses": {
                  "ok": 25
                },
                "wrong": 0,
                "par2_sum": 4.027041,
                "par2_mean": 0.16108164
              },
              "check": {
                "rows": 2,
                "solved": 2,
                "sat": 1,
                "unsat": 1,
                "statuses": {
                  "ok": 2
                },
                "wrong": 0,
                "par2_sum": 0.007322,
                "par2_mean": 0.003661
              },
              "clock_synchro": {
                "rows": 36,
                "solved": 33,
                "sat": 0,
                "unsat": 33,
                "statuses": {
                  "ok": 33,
                  "timeout": 3
                },
                "wrong": 0,
                "par2_sum": 256.082348,
                "par2_mean": 7.113398555555556
              },
              "keymaera": {
                "rows": 21,
                "solved": 21,
                "sat": 0,
                "unsat": 21,
                "statuses": {
                  "ok": 21
                },
                "wrong": 0,
                "par2_sum": 0.06840500000000001,
                "par2_mean": 0.0032573809523809526
              },
              "latendresse": {
                "rows": 18,
                "solved": 11,
                "sat": 10,
                "unsat": 1,
                "statuses": {
                  "timeout": 7,
                  "ok": 11
                },
                "wrong": 0,
                "par2_sum": 473.44186,
                "par2_mean": 26.302325555555555
              },
              "meti-tarski": {
                "rows": 488,
                "solved": 488,
                "sat": 338,
                "unsat": 150,
                "statuses": {
                  "ok": 488
                },
                "wrong": 0,
                "par2_sum": 1.3565910000000003,
                "par2_mean": 0.0027798995901639353
              },
              "miplib": {
                "rows": 42,
                "solved": 22,
                "sat": 10,
                "unsat": 12,
                "statuses": {
                  "ok": 22,
                  "timeout": 20
                },
                "wrong": 0,
                "par2_sum": 1263.492227,
                "par2_mean": 30.08314826190476
              },
              "sal": {
                "rows": 107,
                "solved": 107,
                "sat": 11,
                "unsat": 96,
                "statuses": {
                  "ok": 107
                },
                "wrong": 0,
                "par2_sum": 0.933133,
                "par2_mean": 0.008720869158878505
              },
              "sc": {
                "rows": 144,
                "solved": 144,
                "sat": 108,
                "unsat": 36,
                "statuses": {
                  "ok": 144
                },
                "wrong": 0,
                "par2_sum": 234.5514970000001,
                "par2_mean": 1.6288298402777786
              },
              "spider_benchmarks": {
                "rows": 42,
                "solved": 42,
                "sat": 0,
                "unsat": 42,
                "statuses": {
                  "ok": 42
                },
                "wrong": 0,
                "par2_sum": 0.20598499999999995,
                "par2_mean": 0.004904404761904761
              },
              "tropical-matrix": {
                "rows": 10,
                "solved": 0,
                "sat": 0,
                "unsat": 0,
                "statuses": {
                  "timeout": 10
                },
                "wrong": 0,
                "par2_sum": 600,
                "par2_mean": 60.0
              },
              "tta_startup": {
                "rows": 72,
                "solved": 66,
                "sat": 24,
                "unsat": 42,
                "statuses": {
                  "ok": 66,
                  "timeout": 6
                },
                "wrong": 0,
                "par2_sum": 446.483444,
                "par2_mean": 6.201158944444445
              },
              "uart": {
                "rows": 73,
                "solved": 73,
                "sat": 36,
                "unsat": 37,
                "statuses": {
                  "ok": 73
                },
                "wrong": 0,
                "par2_sum": 234.982999,
                "par2_mean": 3.218945191780822
              }
            },
            "model_validation": {
              "completed_shards": 0,
              "statuses": {},
              "expected_sat": 0,
              "dolmen_pass": 0,
              "outcomes": {}
            }
          }
        },
        "comparisons": {
          "model-phase": {
            "paired_solved": 1461,
            "paired_baseline_at_least_1s": 381,
            "median_candidate_over_baseline": 0.7939243609910135,
            "geometric_mean_candidate_over_baseline": 0.6899848598717726,
            "par2_change_percent": -15.801567054408839,
            "gains": 73,
            "losses": 24
          },
          "monotone": {
            "paired_solved": 1472,
            "paired_baseline_at_least_1s": 392,
            "median_candidate_over_baseline": 0.9989767567533262,
            "geometric_mean_candidate_over_baseline": 0.9230778958782013,
            "par2_change_percent": -6.184927332345902,
            "gains": 36,
            "losses": 13
          },
          "both": {
            "paired_solved": 1465,
            "paired_baseline_at_least_1s": 385,
            "median_candidate_over_baseline": 0.7455302031091486,
            "geometric_mean_candidate_over_baseline": 0.6406232004341792,
            "par2_change_percent": -20.810778995898037,
            "gains": 88,
            "losses": 20
          },
          "opensmt": {
            "paired_solved": 1439,
            "paired_baseline_at_least_1s": 360,
            "median_candidate_over_baseline": 0.5943662884371173,
            "geometric_mean_candidate_over_baseline": 0.6176351209434676,
            "par2_change_percent": -16.44912951532853,
            "gains": 100,
            "losses": 46
          },
          "yices": {
            "paired_solved": 1440,
            "paired_baseline_at_least_1s": 361,
            "median_candidate_over_baseline": 0.359033348543867,
            "geometric_mean_candidate_over_baseline": 0.27671839181711894,
            "par2_change_percent": -23.37498618385505,
            "gains": 99,
            "losses": 45
          }
        },
        "reference_disagreements": [],
        "qualification": "Complete timing and independent direct Dolmen replay of every native successful SAT row; all128 replay shards complete,3711/3711 pass."
      },
      "selection1200": {
        "complete": true,
        "expected_rows_per_profile": 519,
        "timeout": 1200,
        "profiles": {
          "default": {
            "rows": 519,
            "solved": 491,
            "sat": 276,
            "unsat": 215,
            "statuses": {
              "ok": 491,
              "timeout": 28
            },
            "wrong": 0,
            "par2_sum": 84024.42727,
            "par2_mean": 161.89677701348748,
            "complete_shards": 64,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 27,
                "solved": 23,
                "sat": 1,
                "unsat": 22,
                "statuses": {
                  "ok": 23,
                  "timeout": 4
                },
                "wrong": 0,
                "par2_sum": 12883.512181,
                "par2_mean": 477.16711781481484
              },
              "2019-ezsmt": {
                "rows": 37,
                "solved": 36,
                "sat": 30,
                "unsat": 6,
                "statuses": {
                  "ok": 36,
                  "timeout": 1
                },
                "wrong": 0,
                "par2_sum": 3299.397883,
                "par2_mean": 89.17291575675677
              },
              "DTP-Scheduling": {
                "rows": 34,
                "solved": 34,
                "sat": 34,
                "unsat": 0,
                "statuses": {
                  "ok": 34
                },
                "wrong": 0,
                "par2_sum": 4.4719430000000004,
                "par2_mean": 0.13152773529411765
              },
              "LassoRanker": {
                "rows": 191,
                "solved": 179,
                "sat": 117,
                "unsat": 62,
                "statuses": {
                  "ok": 179,
                  "timeout": 12
                },
                "wrong": 0,
                "par2_sum": 40359.137016,
                "par2_mean": 211.30438228272251
              },
              "TM": {
                "rows": 11,
                "solved": 11,
                "sat": 11,
                "unsat": 0,
                "statuses": {
                  "ok": 11
                },
                "wrong": 0,
                "par2_sum": 29.224413000000002,
                "par2_mean": 2.656764818181818
              },
              "clock_synchro": {
                "rows": 11,
                "solved": 11,
                "sat": 0,
                "unsat": 11,
                "statuses": {
                  "ok": 11
                },
                "wrong": 0,
                "par2_sum": 196.404046,
                "par2_mean": 17.854913272727273
              },
              "keymaera": {
                "rows": 4,
                "solved": 4,
                "sat": 0,
                "unsat": 4,
                "statuses": {
                  "ok": 4
                },
                "wrong": 0,
                "par2_sum": 0.030310999999999998,
                "par2_mean": 0.007577749999999999
              },
              "latendresse": {
                "rows": 5,
                "solved": 4,
                "sat": 4,
                "unsat": 0,
                "statuses": {
                  "ok": 4,
                  "timeout": 1
                },
                "wrong": 0,
                "par2_sum": 2419.36452,
                "par2_mean": 483.872904
              },
              "miplib": {
                "rows": 13,
                "solved": 8,
                "sat": 7,
                "unsat": 1,
                "statuses": {
                  "ok": 8,
                  "timeout": 5
                },
                "wrong": 0,
                "par2_sum": 12455.814379,
                "par2_mean": 958.1395676153845
              },
              "sal": {
                "rows": 42,
                "solved": 42,
                "sat": 3,
                "unsat": 39,
                "statuses": {
                  "ok": 42
                },
                "wrong": 0,
                "par2_sum": 2.7097960000000003,
                "par2_mean": 0.06451895238095239
              },
              "sc": {
                "rows": 62,
                "solved": 62,
                "sat": 43,
                "unsat": 19,
                "statuses": {
                  "ok": 62
                },
                "wrong": 0,
                "par2_sum": 157.63799200000005,
                "par2_mean": 2.542548258064517
              },
              "spider_benchmarks": {
                "rows": 9,
                "solved": 9,
                "sat": 0,
                "unsat": 9,
                "statuses": {
                  "ok": 9
                },
                "wrong": 0,
                "par2_sum": 0.31219300000000005,
                "par2_mean": 0.034688111111111114
              },
              "tropical-matrix": {
                "rows": 5,
                "solved": 0,
                "sat": 0,
                "unsat": 0,
                "statuses": {
                  "timeout": 5
                },
                "wrong": 0,
                "par2_sum": 12000,
                "par2_mean": 2400.0
              },
              "tta_startup": {
                "rows": 31,
                "solved": 31,
                "sat": 9,
                "unsat": 22,
                "statuses": {
                  "ok": 31
                },
                "wrong": 0,
                "par2_sum": 51.26209,
                "par2_mean": 1.6536158064516129
              },
              "uart": {
                "rows": 37,
                "solved": 37,
                "sat": 17,
                "unsat": 20,
                "statuses": {
                  "ok": 37
                },
                "wrong": 0,
                "par2_sum": 165.148507,
                "par2_mean": 4.463473162162162
              }
            },
            "model_validation": {
              "completed_shards": 64,
              "statuses": {
                "complete": 64
              },
              "expected_sat": 276,
              "dolmen_pass": 276,
              "outcomes": {
                "pass": 276
              },
              "selected_attempts": {
                "model-validation": 63,
                "model-validation-extended3600": 1
              }
            }
          },
          "model-phase": {
            "rows": 519,
            "solved": 501,
            "sat": 280,
            "unsat": 221,
            "statuses": {
              "ok": 501,
              "timeout": 18
            },
            "wrong": 0,
            "par2_sum": 59825.18903,
            "par2_mean": 115.27011373795762,
            "complete_shards": 64,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 27,
                "solved": 24,
                "sat": 1,
                "unsat": 23,
                "statuses": {
                  "ok": 24,
                  "timeout": 3
                },
                "wrong": 0,
                "par2_sum": 10580.258805,
                "par2_mean": 391.8614372222222
              },
              "2019-ezsmt": {
                "rows": 37,
                "solved": 36,
                "sat": 30,
                "unsat": 6,
                "statuses": {
                  "ok": 36,
                  "timeout": 1
                },
                "wrong": 0,
                "par2_sum": 2929.858132,
                "par2_mean": 79.18535491891892
              },
              "DTP-Scheduling": {
                "rows": 34,
                "solved": 34,
                "sat": 34,
                "unsat": 0,
                "statuses": {
                  "ok": 34
                },
                "wrong": 0,
                "par2_sum": 2.101262,
                "par2_mean": 0.06180182352941177
              },
              "LassoRanker": {
                "rows": 191,
                "solved": 187,
                "sat": 121,
                "unsat": 66,
                "statuses": {
                  "ok": 187,
                  "timeout": 4
                },
                "wrong": 0,
                "par2_sum": 20557.867755999992,
                "par2_mean": 107.63281547643975
              },
              "TM": {
                "rows": 11,
                "solved": 11,
                "sat": 11,
                "unsat": 0,
                "statuses": {
                  "ok": 11
                },
                "wrong": 0,
                "par2_sum": 9.146971,
                "par2_mean": 0.8315428181818182
              },
              "clock_synchro": {
                "rows": 11,
                "solved": 11,
                "sat": 0,
                "unsat": 11,
                "statuses": {
                  "ok": 11
                },
                "wrong": 0,
                "par2_sum": 49.299972,
                "par2_mean": 4.481815636363636
              },
              "keymaera": {
                "rows": 4,
                "solved": 4,
                "sat": 0,
                "unsat": 4,
                "statuses": {
                  "ok": 4
                },
                "wrong": 0,
                "par2_sum": 0.029726000000000002,
                "par2_mean": 0.007431500000000001
              },
              "latendresse": {
                "rows": 5,
                "solved": 3,
                "sat": 3,
                "unsat": 0,
                "statuses": {
                  "ok": 3,
                  "timeout": 2
                },
                "wrong": 0,
                "par2_sum": 4823.227193,
                "par2_mean": 964.6454385999999
              },
              "miplib": {
                "rows": 13,
                "solved": 9,
                "sat": 7,
                "unsat": 2,
                "statuses": {
                  "ok": 9,
                  "timeout": 4
                },
                "wrong": 0,
                "par2_sum": 10125.790022,
                "par2_mean": 778.9069247692307
              },
              "sal": {
                "rows": 42,
                "solved": 42,
                "sat": 3,
                "unsat": 39,
                "statuses": {
                  "ok": 42
                },
                "wrong": 0,
                "par2_sum": 2.7438949999999998,
                "par2_mean": 0.06533083333333332
              },
              "sc": {
                "rows": 62,
                "solved": 62,
                "sat": 43,
                "unsat": 19,
                "statuses": {
                  "ok": 62
                },
                "wrong": 0,
                "par2_sum": 129.21762499999997,
                "par2_mean": 2.084155241935483
              },
              "spider_benchmarks": {
                "rows": 9,
                "solved": 9,
                "sat": 0,
                "unsat": 9,
                "statuses": {
                  "ok": 9
                },
                "wrong": 0,
                "par2_sum": 0.32623100000000005,
                "par2_mean": 0.03624788888888889
              },
              "tropical-matrix": {
                "rows": 5,
                "solved": 1,
                "sat": 1,
                "unsat": 0,
                "statuses": {
                  "timeout": 4,
                  "ok": 1
                },
                "wrong": 0,
                "par2_sum": 10383.133604,
                "par2_mean": 2076.6267208
              },
              "tta_startup": {
                "rows": 31,
                "solved": 31,
                "sat": 9,
                "unsat": 22,
                "statuses": {
                  "ok": 31
                },
                "wrong": 0,
                "par2_sum": 35.190626,
                "par2_mean": 1.1351814838709677
              },
              "uart": {
                "rows": 37,
                "solved": 37,
                "sat": 17,
                "unsat": 20,
                "statuses": {
                  "ok": 37
                },
                "wrong": 0,
                "par2_sum": 196.99721,
                "par2_mean": 5.324248918918919
              }
            },
            "model_validation": {
              "completed_shards": 64,
              "statuses": {
                "complete": 64
              },
              "expected_sat": 280,
              "dolmen_pass": 280,
              "outcomes": {
                "pass": 280
              },
              "selected_attempts": {
                "model-validation": 64
              }
            }
          },
          "monotone": {
            "rows": 519,
            "solved": 498,
            "sat": 279,
            "unsat": 219,
            "statuses": {
              "ok": 498,
              "timeout": 21
            },
            "wrong": 0,
            "par2_sum": 67121.12675899999,
            "par2_mean": 129.32779722350674,
            "complete_shards": 64,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 27,
                "solved": 23,
                "sat": 1,
                "unsat": 22,
                "statuses": {
                  "ok": 23,
                  "timeout": 4
                },
                "wrong": 0,
                "par2_sum": 12429.357319,
                "par2_mean": 460.3465673703704
              },
              "2019-ezsmt": {
                "rows": 37,
                "solved": 36,
                "sat": 30,
                "unsat": 6,
                "statuses": {
                  "ok": 36,
                  "timeout": 1
                },
                "wrong": 0,
                "par2_sum": 3333.53046,
                "par2_mean": 90.09541783783784
              },
              "DTP-Scheduling": {
                "rows": 34,
                "solved": 34,
                "sat": 34,
                "unsat": 0,
                "statuses": {
                  "ok": 34
                },
                "wrong": 0,
                "par2_sum": 4.304827,
                "par2_mean": 0.12661255882352943
              },
              "LassoRanker": {
                "rows": 191,
                "solved": 186,
                "sat": 120,
                "unsat": 66,
                "statuses": {
                  "ok": 186,
                  "timeout": 5
                },
                "wrong": 0,
                "par2_sum": 23904.217509000002,
                "par2_mean": 125.15297125130891
              },
              "TM": {
                "rows": 11,
                "solved": 11,
                "sat": 11,
                "unsat": 0,
                "statuses": {
                  "ok": 11
                },
                "wrong": 0,
                "par2_sum": 13.204937,
                "par2_mean": 1.200448818181818
              },
              "clock_synchro": {
                "rows": 11,
                "solved": 11,
                "sat": 0,
                "unsat": 11,
                "statuses": {
                  "ok": 11
                },
                "wrong": 0,
                "par2_sum": 193.577179,
                "par2_mean": 17.597925363636364
              },
              "keymaera": {
                "rows": 4,
                "solved": 4,
                "sat": 0,
                "unsat": 4,
                "statuses": {
                  "ok": 4
                },
                "wrong": 0,
                "par2_sum": 0.030303,
                "par2_mean": 0.00757575
              },
              "latendresse": {
                "rows": 5,
                "solved": 4,
                "sat": 4,
                "unsat": 0,
                "statuses": {
                  "ok": 4,
                  "timeout": 1
                },
                "wrong": 0,
                "par2_sum": 2419.274532,
                "par2_mean": 483.8549064
              },
              "miplib": {
                "rows": 13,
                "solved": 8,
                "sat": 7,
                "unsat": 1,
                "statuses": {
                  "ok": 8,
                  "timeout": 5
                },
                "wrong": 0,
                "par2_sum": 12448.025329,
                "par2_mean": 957.5404099230769
              },
              "sal": {
                "rows": 42,
                "solved": 42,
                "sat": 3,
                "unsat": 39,
                "statuses": {
                  "ok": 42
                },
                "wrong": 0,
                "par2_sum": 2.8133869999999996,
                "par2_mean": 0.06698540476190476
              },
              "sc": {
                "rows": 62,
                "solved": 62,
                "sat": 43,
                "unsat": 19,
                "statuses": {
                  "ok": 62
                },
                "wrong": 0,
                "par2_sum": 157.86781499999998,
                "par2_mean": 2.546255080645161
              },
              "spider_benchmarks": {
                "rows": 9,
                "solved": 9,
                "sat": 0,
                "unsat": 9,
                "statuses": {
                  "ok": 9
                },
                "wrong": 0,
                "par2_sum": 0.321835,
                "par2_mean": 0.03575944444444444
              },
              "tropical-matrix": {
                "rows": 5,
                "solved": 0,
                "sat": 0,
                "unsat": 0,
                "statuses": {
                  "timeout": 5
                },
                "wrong": 0,
                "par2_sum": 12000,
                "par2_mean": 2400.0
              },
              "tta_startup": {
                "rows": 31,
                "solved": 31,
                "sat": 9,
                "unsat": 22,
                "statuses": {
                  "ok": 31
                },
                "wrong": 0,
                "par2_sum": 49.846449,
                "par2_mean": 1.6079499677419355
              },
              "uart": {
                "rows": 37,
                "solved": 37,
                "sat": 17,
                "unsat": 20,
                "statuses": {
                  "ok": 37
                },
                "wrong": 0,
                "par2_sum": 164.75487800000002,
                "par2_mean": 4.452834540540541
              }
            },
            "model_validation": {
              "completed_shards": 64,
              "statuses": {
                "complete": 64
              },
              "expected_sat": 279,
              "dolmen_pass": 279,
              "outcomes": {
                "pass": 279
              },
              "selected_attempts": {
                "model-validation": 63,
                "model-validation-extended3600": 1
              }
            }
          },
          "both": {
            "rows": 519,
            "solved": 500,
            "sat": 280,
            "unsat": 220,
            "statuses": {
              "ok": 500,
              "timeout": 19
            },
            "wrong": 0,
            "par2_sum": 59868.270403,
            "par2_mean": 115.3531221637765,
            "complete_shards": 64,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 27,
                "solved": 24,
                "sat": 1,
                "unsat": 23,
                "statuses": {
                  "ok": 24,
                  "timeout": 3
                },
                "wrong": 0,
                "par2_sum": 10658.873442,
                "par2_mean": 394.77309044444445
              },
              "2019-ezsmt": {
                "rows": 37,
                "solved": 36,
                "sat": 30,
                "unsat": 6,
                "statuses": {
                  "ok": 36,
                  "timeout": 1
                },
                "wrong": 0,
                "par2_sum": 2924.139806,
                "par2_mean": 79.03080556756757
              },
              "DTP-Scheduling": {
                "rows": 34,
                "solved": 34,
                "sat": 34,
                "unsat": 0,
                "statuses": {
                  "ok": 34
                },
                "wrong": 0,
                "par2_sum": 1.863086,
                "par2_mean": 0.05479664705882353
              },
              "LassoRanker": {
                "rows": 191,
                "solved": 186,
                "sat": 121,
                "unsat": 65,
                "statuses": {
                  "ok": 186,
                  "timeout": 5
                },
                "wrong": 0,
                "par2_sum": 20541.639453000003,
                "par2_mean": 107.54785053926703
              },
              "TM": {
                "rows": 11,
                "solved": 11,
                "sat": 11,
                "unsat": 0,
                "statuses": {
                  "ok": 11
                },
                "wrong": 0,
                "par2_sum": 8.889080000000002,
                "par2_mean": 0.8080981818181819
              },
              "clock_synchro": {
                "rows": 11,
                "solved": 11,
                "sat": 0,
                "unsat": 11,
                "statuses": {
                  "ok": 11
                },
                "wrong": 0,
                "par2_sum": 48.80892399999999,
                "par2_mean": 4.437174909090908
              },
              "keymaera": {
                "rows": 4,
                "solved": 4,
                "sat": 0,
                "unsat": 4,
                "statuses": {
                  "ok": 4
                },
                "wrong": 0,
                "par2_sum": 0.030668,
                "par2_mean": 0.007667
              },
              "latendresse": {
                "rows": 5,
                "solved": 3,
                "sat": 3,
                "unsat": 0,
                "statuses": {
                  "ok": 3,
                  "timeout": 2
                },
                "wrong": 0,
                "par2_sum": 4824.378306,
                "par2_mean": 964.8756612
              },
              "miplib": {
                "rows": 13,
                "solved": 9,
                "sat": 7,
                "unsat": 2,
                "statuses": {
                  "ok": 9,
                  "timeout": 4
                },
                "wrong": 0,
                "par2_sum": 10134.633698,
                "par2_mean": 779.5872075384615
              },
              "sal": {
                "rows": 42,
                "solved": 42,
                "sat": 3,
                "unsat": 39,
                "statuses": {
                  "ok": 42
                },
                "wrong": 0,
                "par2_sum": 2.7835530000000004,
                "par2_mean": 0.06627507142857143
              },
              "sc": {
                "rows": 62,
                "solved": 62,
                "sat": 43,
                "unsat": 19,
                "statuses": {
                  "ok": 62
                },
                "wrong": 0,
                "par2_sum": 129.130889,
                "par2_mean": 2.082756274193548
              },
              "spider_benchmarks": {
                "rows": 9,
                "solved": 9,
                "sat": 0,
                "unsat": 9,
                "statuses": {
                  "ok": 9
                },
                "wrong": 0,
                "par2_sum": 0.331876,
                "par2_mean": 0.03687511111111111
              },
              "tropical-matrix": {
                "rows": 5,
                "solved": 1,
                "sat": 1,
                "unsat": 0,
                "statuses": {
                  "timeout": 4,
                  "ok": 1
                },
                "wrong": 0,
                "par2_sum": 10361.114007,
                "par2_mean": 2072.2228014
              },
              "tta_startup": {
                "rows": 31,
                "solved": 31,
                "sat": 9,
                "unsat": 22,
                "statuses": {
                  "ok": 31
                },
                "wrong": 0,
                "par2_sum": 35.25878,
                "par2_mean": 1.13738
              },
              "uart": {
                "rows": 37,
                "solved": 37,
                "sat": 17,
                "unsat": 20,
                "statuses": {
                  "ok": 37
                },
                "wrong": 0,
                "par2_sum": 196.394835,
                "par2_mean": 5.307968513513513
              }
            },
            "model_validation": {
              "completed_shards": 64,
              "statuses": {
                "complete": 64
              },
              "expected_sat": 280,
              "dolmen_pass": 280,
              "outcomes": {
                "pass": 280
              },
              "selected_attempts": {
                "model-validation": 64
              }
            }
          },
          "opensmt": {
            "rows": 519,
            "solved": 498,
            "sat": 276,
            "unsat": 222,
            "statuses": {
              "timeout": 21,
              "ok": 498
            },
            "wrong": 0,
            "par2_sum": 66453.004376,
            "par2_mean": 128.04047085934488,
            "complete_shards": 64,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 27,
                "solved": 24,
                "sat": 1,
                "unsat": 23,
                "statuses": {
                  "timeout": 3,
                  "ok": 24
                },
                "wrong": 0,
                "par2_sum": 9628.136728000001,
                "par2_mean": 356.5976565925926
              },
              "2019-ezsmt": {
                "rows": 37,
                "solved": 35,
                "sat": 29,
                "unsat": 6,
                "statuses": {
                  "ok": 35,
                  "timeout": 2
                },
                "wrong": 0,
                "par2_sum": 6668.297683000001,
                "par2_mean": 180.22426170270273
              },
              "DTP-Scheduling": {
                "rows": 34,
                "solved": 34,
                "sat": 34,
                "unsat": 0,
                "statuses": {
                  "ok": 34
                },
                "wrong": 0,
                "par2_sum": 0.8974090000000002,
                "par2_mean": 0.026394382352941184
              },
              "LassoRanker": {
                "rows": 191,
                "solved": 184,
                "sat": 117,
                "unsat": 67,
                "statuses": {
                  "ok": 184,
                  "timeout": 7
                },
                "wrong": 0,
                "par2_sum": 27076.455499999996,
                "par2_mean": 141.76154712041884
              },
              "TM": {
                "rows": 11,
                "solved": 11,
                "sat": 11,
                "unsat": 0,
                "statuses": {
                  "ok": 11
                },
                "wrong": 0,
                "par2_sum": 2.754899,
                "par2_mean": 0.25044536363636366
              },
              "clock_synchro": {
                "rows": 11,
                "solved": 11,
                "sat": 0,
                "unsat": 11,
                "statuses": {
                  "ok": 11
                },
                "wrong": 0,
                "par2_sum": 61.97525999999999,
                "par2_mean": 5.634114545454545
              },
              "keymaera": {
                "rows": 4,
                "solved": 4,
                "sat": 0,
                "unsat": 4,
                "statuses": {
                  "ok": 4
                },
                "wrong": 0,
                "par2_sum": 0.017817,
                "par2_mean": 0.00445425
              },
              "latendresse": {
                "rows": 5,
                "solved": 2,
                "sat": 2,
                "unsat": 0,
                "statuses": {
                  "ok": 2,
                  "timeout": 3
                },
                "wrong": 0,
                "par2_sum": 7200.502877,
                "par2_mean": 1440.1005754
              },
              "miplib": {
                "rows": 13,
                "solved": 9,
                "sat": 7,
                "unsat": 2,
                "statuses": {
                  "ok": 9,
                  "timeout": 4
                },
                "wrong": 0,
                "par2_sum": 10109.116635,
                "par2_mean": 777.6243565384616
              },
              "sal": {
                "rows": 42,
                "solved": 42,
                "sat": 3,
                "unsat": 39,
                "statuses": {
                  "ok": 42
                },
                "wrong": 0,
                "par2_sum": 1.438032,
                "par2_mean": 0.03423885714285714
              },
              "sc": {
                "rows": 62,
                "solved": 62,
                "sat": 43,
                "unsat": 19,
                "statuses": {
                  "ok": 62
                },
                "wrong": 0,
                "par2_sum": 51.334247,
                "par2_mean": 0.8279717258064516
              },
              "spider_benchmarks": {
                "rows": 9,
                "solved": 9,
                "sat": 0,
                "unsat": 9,
                "statuses": {
                  "ok": 9
                },
                "wrong": 0,
                "par2_sum": 0.139195,
                "par2_mean": 0.015466111111111113
              },
              "tropical-matrix": {
                "rows": 5,
                "solved": 3,
                "sat": 3,
                "unsat": 0,
                "statuses": {
                  "timeout": 2,
                  "ok": 3
                },
                "wrong": 0,
                "par2_sum": 5465.514868,
                "par2_mean": 1093.1029736
              },
              "tta_startup": {
                "rows": 31,
                "solved": 31,
                "sat": 9,
                "unsat": 22,
                "statuses": {
                  "ok": 31
                },
                "wrong": 0,
                "par2_sum": 66.03373699999999,
                "par2_mean": 2.1301205483870964
              },
              "uart": {
                "rows": 37,
                "solved": 37,
                "sat": 17,
                "unsat": 20,
                "statuses": {
                  "ok": 37
                },
                "wrong": 0,
                "par2_sum": 120.38948899999998,
                "par2_mean": 3.2537699729729725
              }
            },
            "model_validation": {
              "completed_shards": 0,
              "statuses": {},
              "expected_sat": 0,
              "dolmen_pass": 0,
              "outcomes": {},
              "selected_attempts": {}
            }
          },
          "yices": {
            "rows": 519,
            "solved": 491,
            "sat": 277,
            "unsat": 214,
            "statuses": {
              "timeout": 28,
              "ok": 491
            },
            "wrong": 0,
            "par2_sum": 83999.462763,
            "par2_mean": 161.84867584393064,
            "complete_shards": 64,
            "families": {
              "2017-Heizmann-UltimateInvariantSynthesis": {
                "rows": 27,
                "solved": 20,
                "sat": 1,
                "unsat": 19,
                "statuses": {
                  "timeout": 7,
                  "ok": 20
                },
                "wrong": 0,
                "par2_sum": 22011.721701000002,
                "par2_mean": 815.248951888889
              },
              "2019-ezsmt": {
                "rows": 37,
                "solved": 34,
                "sat": 28,
                "unsat": 6,
                "statuses": {
                  "ok": 34,
                  "timeout": 3
                },
                "wrong": 0,
                "par2_sum": 7346.944867,
                "par2_mean": 198.56607748648648
              },
              "DTP-Scheduling": {
                "rows": 34,
                "solved": 34,
                "sat": 34,
                "unsat": 0,
                "statuses": {
                  "ok": 34
                },
                "wrong": 0,
                "par2_sum": 0.32273399999999997,
                "par2_mean": 0.009492176470588235
              },
              "LassoRanker": {
                "rows": 191,
                "solved": 181,
                "sat": 119,
                "unsat": 62,
                "statuses": {
                  "ok": 181,
                  "timeout": 10
                },
                "wrong": 0,
                "par2_sum": 33005.579679999995,
                "par2_mean": 172.8040820942408
              },
              "TM": {
                "rows": 11,
                "solved": 11,
                "sat": 11,
                "unsat": 0,
                "statuses": {
                  "ok": 11
                },
                "wrong": 0,
                "par2_sum": 1.4400769999999998,
                "par2_mean": 0.1309160909090909
              },
              "clock_synchro": {
                "rows": 11,
                "solved": 11,
                "sat": 0,
                "unsat": 11,
                "statuses": {
                  "ok": 11
                },
                "wrong": 0,
                "par2_sum": 135.109022,
                "par2_mean": 12.282638363636364
              },
              "keymaera": {
                "rows": 4,
                "solved": 4,
                "sat": 0,
                "unsat": 4,
                "statuses": {
                  "ok": 4
                },
                "wrong": 0,
                "par2_sum": 0.013045999999999999,
                "par2_mean": 0.0032614999999999996
              },
              "latendresse": {
                "rows": 5,
                "solved": 3,
                "sat": 3,
                "unsat": 0,
                "statuses": {
                  "ok": 3,
                  "timeout": 2
                },
                "wrong": 0,
                "par2_sum": 4800.491597,
                "par2_mean": 960.0983194
              },
              "miplib": {
                "rows": 13,
                "solved": 10,
                "sat": 7,
                "unsat": 3,
                "statuses": {
                  "ok": 10,
                  "timeout": 3
                },
                "wrong": 0,
                "par2_sum": 8584.368931,
                "par2_mean": 660.3360716153846
              },
              "sal": {
                "rows": 42,
                "solved": 42,
                "sat": 3,
                "unsat": 39,
                "statuses": {
                  "ok": 42
                },
                "wrong": 0,
                "par2_sum": 0.47174600000000005,
                "par2_mean": 0.01123204761904762
              },
              "sc": {
                "rows": 62,
                "solved": 62,
                "sat": 43,
                "unsat": 19,
                "statuses": {
                  "ok": 62
                },
                "wrong": 0,
                "par2_sum": 148.6037859999999,
                "par2_mean": 2.3968352580645145
              },
              "spider_benchmarks": {
                "rows": 9,
                "solved": 9,
                "sat": 0,
                "unsat": 9,
                "statuses": {
                  "ok": 9
                },
                "wrong": 0,
                "par2_sum": 0.046261000000000004,
                "par2_mean": 0.005140111111111112
              },
              "tropical-matrix": {
                "rows": 5,
                "solved": 2,
                "sat": 2,
                "unsat": 0,
                "statuses": {
                  "timeout": 3,
                  "ok": 2
                },
                "wrong": 0,
                "par2_sum": 7794.9613,
                "par2_mean": 1558.99226
              },
              "tta_startup": {
                "rows": 31,
                "solved": 31,
                "sat": 9,
                "unsat": 22,
                "statuses": {
                  "ok": 31
                },
                "wrong": 0,
                "par2_sum": 72.10433599999999,
                "par2_mean": 2.325946322580645
              },
              "uart": {
                "rows": 37,
                "solved": 37,
                "sat": 17,
                "unsat": 20,
                "statuses": {
                  "ok": 37
                },
                "wrong": 0,
                "par2_sum": 97.28367900000002,
                "par2_mean": 2.629288621621622
              }
            },
            "model_validation": {
              "completed_shards": 0,
              "statuses": {},
              "expected_sat": 0,
              "dolmen_pass": 0,
              "outcomes": {},
              "selected_attempts": {}
            }
          }
        },
        "identities": {
          "default": {
            "solver": {
              "path": "/home/janotmik/primo-lra-reverification-20261009/build-slurm-rel/primo",
              "sha256": "063012214f1835c52507c5f48c9266ba787c9ea95ed2bbe6679e79b55a8f343f",
              "version": "primo 0.2.0\ngit: 23f945d\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07"
            },
            "solver_args": [
              "--quiet"
            ]
          },
          "model-phase": {
            "solver": {
              "path": "/home/janotmik/primo-lra-reverification-20261009/build-slurm-rel/primo",
              "sha256": "063012214f1835c52507c5f48c9266ba787c9ea95ed2bbe6679e79b55a8f343f",
              "version": "primo 0.2.0\ngit: 23f945d\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07"
            },
            "solver_args": [
              "--quiet",
              "--lra-model-phase"
            ]
          },
          "monotone": {
            "solver": {
              "path": "/home/janotmik/primo-lra-reverification-20261009/build-slurm-rel/primo",
              "sha256": "063012214f1835c52507c5f48c9266ba787c9ea95ed2bbe6679e79b55a8f343f",
              "version": "primo 0.2.0\ngit: 23f945d\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07"
            },
            "solver_args": [
              "--quiet",
              "--monotone-elimination"
            ]
          },
          "both": {
            "solver": {
              "path": "/home/janotmik/primo-lra-reverification-20261009/build-slurm-rel/primo",
              "sha256": "063012214f1835c52507c5f48c9266ba787c9ea95ed2bbe6679e79b55a8f343f",
              "version": "primo 0.2.0\ngit: 23f945d\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07"
            },
            "solver_args": [
              "--quiet",
              "--lra-model-phase",
              "--monotone-elimination"
            ]
          },
          "opensmt": {
            "solver": {
              "path": "/home/janotmik/primo-cadical-profile/contrib/local/bin/opensmt",
              "sha256": "b7899e9aff299026d3251df7a28f51f56d8bd1e5b0fd7be11bcc72c4f2803a98",
              "version": ""
            },
            "solver_args": []
          },
          "yices": {
            "solver": {
              "path": "/home/janotmik/primo-cadical-profile/contrib/local/bin/yices-smt2",
              "sha256": "eab7efbff2a6f0cce2fcd2c25cb4a94e0e048c902d8ef9e6fd7d7989aa54c501",
              "version": "Yices 2.7.0\nCopyright SRI International.\nLinked with GMP 6.3.0\nCopyright Free Software Foundation, Inc.\nBuild date: 2025-07-17\nPlatform: x86_64-pc-linux-gnu (release/static)\nRevision: 4f19700f0e272f4a68250080d12a873523bc7ac3"
            },
            "solver_args": []
          }
        },
        "comparisons": {
          "model-phase": {
            "gains": 12,
            "losses": 2,
            "paired_solved": 489,
            "paired_baseline_at_least_1s": 261,
            "median_candidate_over_baseline": 0.7490463734754639,
            "geometric_mean_candidate_over_baseline": 0.6379413194890313,
            "par2_change_percent": -28.80024181806006
          },
          "monotone": {
            "gains": 7,
            "losses": 0,
            "paired_solved": 491,
            "paired_baseline_at_least_1s": 263,
            "median_candidate_over_baseline": 1.0015175177014288,
            "geometric_mean_candidate_over_baseline": 0.8864059209587418,
            "par2_change_percent": -20.117126721594623
          },
          "both": {
            "gains": 11,
            "losses": 2,
            "paired_solved": 489,
            "paired_baseline_at_least_1s": 261,
            "median_candidate_over_baseline": 0.6873561296368588,
            "geometric_mean_candidate_over_baseline": 0.5602422899938628,
            "par2_change_percent": -28.748969379318446
          },
          "opensmt": {
            "gains": 16,
            "losses": 9,
            "paired_solved": 482,
            "paired_baseline_at_least_1s": 254,
            "median_candidate_over_baseline": 0.5593193317479261,
            "geometric_mean_candidate_over_baseline": 0.5814895361391031,
            "par2_change_percent": -20.912279279853763
          },
          "yices": {
            "gains": 11,
            "losses": 11,
            "paired_solved": 480,
            "paired_baseline_at_least_1s": 253,
            "median_candidate_over_baseline": 0.44359579958619577,
            "geometric_mean_candidate_over_baseline": 0.35512371520353625,
            "par2_change_percent": -0.029711011203659154
          }
        },
        "reference_disagreements": [],
        "qualification": "Complete timings for519inputs in6arms and complete1115directDolmenSATmodels across4nativearms/256shards. Original1260s timeout artifacts retained;completed3600s retries selected for baseline63 andmonotone43. All parent and model-summary hashes, exactSATsets and zero exits audited."
      },
      "selection1200_model_retry": {
        "job": 183447,
        "parent_timing_job": 182101,
        "original_model_job": 183270,
        "profile": "default",
        "shard": 63,
        "initial_failure": [
          {
            "file": "/home/janotmik/primo-cadical-profile/tmp/QF_LRA/LassoRanker/CooperatingT2/fir.t2.c_Iteration4_Loop_7-phaseTemplate.smt2",
            "answer": "",
            "outcome": "solver-timeout",
            "validator": "",
            "solver_exit": "",
            "dolmen_exit": "",
            "z3_exit": "",
            "seconds": "1260.120",
            "solver_seconds": "1260.120",
            "validation_seconds": "0.000",
            "message": "solver timeout"
          }
        ],
        "attempt": "model-validation-extended3600",
        "solver_timeout_seconds": 3600,
        "dolmen_timeout_seconds": 120,
        "memory_gib": 6,
        "dolmen_size": "5G",
        "held_only_pending_for_launch": 183270,
        "command": [
          "sbatch",
          "--parsable",
          "--array=63%1",
          "--time=06:00:00",
          "scripts/slurm_lra_selected_model_replay.sbatch"
        ],
        "environment": {
          "PRIMO_WORKDIR": "/home/janotmik/primo-lra-reverification-20261009",
          "PRIMO_SHARDS": "64",
          "PRIMO_CAMPAIGN_OUT": "/home/janotmik/primo-lra-reverification-20261009/results/lra-reverification-20261009/selection1200-gold",
          "PRIMO_MODEL_TIMEOUT": "3600",
          "PRIMO_DOLMEN_TIMEOUT": "120",
          "PRIMO_DOLMEN_SIZE": "5G",
          "PRIMO_REPLAY_ATTEMPT": "model-validation-extended3600"
        },
        "wrapper_sha256": "94814b02f90747993c6f7f128ad42ef898d17d73b4c26e6c7274207e534356ac",
        "original_pending_released_after_retry_running": true,
        "retry_host": "node-05",
        "qualification": "Complete:all5SATmodels directly pass Dolmen,unchanged input/binary. Job183447 completed25m50s. Original1260s timeout retained."
      },
      "paper_protocol": {
        "hardware": "two AMD EPYC7513 32core,512GB RAM,64concurrent workers",
        "selection_memory_limit_gb_all_solvers": 7,
        "actual_competition_memory_limit_gb": 30,
        "yices_revision_matches": "4f19700f",
        "opensmt": "paper v2.9.2-35-g15b42c6f; measured release2.9.2 differs",
        "input_archive": "Current original/unscrambled inputs; exact paper input archive unavailable",
        "training_manifest": "473instance tuning population;194selected overlap/325test; original tuning manifest unavailable,473 is a population size rather than a random seed."
      },
      "selection1200_model_retries": [
        {
          "job": 183447,
          "parent_timing_job": 182101,
          "original_model_job": 183270,
          "profile": "default",
          "shard": 63,
          "initial_failure": [
            {
              "file": "/home/janotmik/primo-cadical-profile/tmp/QF_LRA/LassoRanker/CooperatingT2/fir.t2.c_Iteration4_Loop_7-phaseTemplate.smt2",
              "answer": "",
              "outcome": "solver-timeout",
              "validator": "",
              "solver_exit": "",
              "dolmen_exit": "",
              "z3_exit": "",
              "seconds": "1260.120",
              "solver_seconds": "1260.120",
              "validation_seconds": "0.000",
              "message": "solver timeout"
            }
          ],
          "attempt": "model-validation-extended3600",
          "solver_timeout_seconds": 3600,
          "dolmen_timeout_seconds": 120,
          "memory_gib": 6,
          "dolmen_size": "5G",
          "held_only_pending_for_launch": 183270,
          "command": [
            "sbatch",
            "--parsable",
            "--array=63%1",
            "--time=06:00:00",
            "scripts/slurm_lra_selected_model_replay.sbatch"
          ],
          "environment": {
            "PRIMO_WORKDIR": "/home/janotmik/primo-lra-reverification-20261009",
            "PRIMO_SHARDS": "64",
            "PRIMO_CAMPAIGN_OUT": "/home/janotmik/primo-lra-reverification-20261009/results/lra-reverification-20261009/selection1200-gold",
            "PRIMO_MODEL_TIMEOUT": "3600",
            "PRIMO_DOLMEN_TIMEOUT": "120",
            "PRIMO_DOLMEN_SIZE": "5G",
            "PRIMO_REPLAY_ATTEMPT": "model-validation-extended3600"
          },
          "wrapper_sha256": "94814b02f90747993c6f7f128ad42ef898d17d73b4c26e6c7274207e534356ac",
          "original_pending_released_after_retry_running": true,
          "retry_host": "node-05",
          "qualification": "Complete:all5SATmodels directly pass Dolmen,unchanged parent input/binary identities;original1260s timeout retained.",
          "elapsed": "00:25:50"
        },
        {
          "job": 183565,
          "parent_timing_job": 182101,
          "original_model_job": 183270,
          "profile": "monotone",
          "shard": 43,
          "initial_failure": [
            {
              "file": "/home/janotmik/primo-cadical-profile/tmp/QF_LRA/LassoRanker/CooperatingT2/brp_withassume.t2.c_Iteration8_Loop_6-phaseTemplate.smt2",
              "answer": "",
              "outcome": "solver-timeout",
              "validator": "",
              "solver_exit": "",
              "dolmen_exit": "",
              "z3_exit": "",
              "seconds": "1260.188",
              "solver_seconds": "1260.188",
              "validation_seconds": "0.000",
              "message": "solver timeout"
            }
          ],
          "attempt": "model-validation-extended3600",
          "solver_timeout_seconds": 3600,
          "dolmen_timeout_seconds": 120,
          "memory_gib": 6,
          "dolmen_size": "5G",
          "command": [
            "sbatch",
            "--parsable",
            "--array=171%1",
            "--time=06:00:00",
            "scripts/slurm_lra_selected_model_replay.sbatch"
          ],
          "environment": {
            "PRIMO_WORKDIR": "/home/janotmik/primo-lra-reverification-20261009",
            "PRIMO_SHARDS": "64",
            "PRIMO_CAMPAIGN_OUT": "/home/janotmik/primo-lra-reverification-20261009/results/lra-reverification-20261009/selection1200-gold",
            "PRIMO_MODEL_TIMEOUT": "3600",
            "PRIMO_DOLMEN_TIMEOUT": "120",
            "PRIMO_DOLMEN_SIZE": "5G",
            "PRIMO_REPLAY_ATTEMPT": "model-validation-extended3600"
          },
          "wrapper_sha256": "94814b02f90747993c6f7f128ad42ef898d17d73b4c26e6c7274207e534356ac",
          "qualification": "Complete:all5SATmodels directly pass Dolmen,unchanged parent input/binary identities;original1260s timeout retained.",
          "elapsed": "00:22:00"
        }
      ],
      "selection1200_three_profile_coverage": "836/836directDolmenpass across baseline276,phase280,both280; all192shards,exactSATsets,zeroexits,unchanged identities, parent/artifact SHA256 audited;results/lra-reverification-20261009/selected-three-profile-model-check.json"
    },
    {
      "id": "2026-10-09-qf-lia-opensmt-full-division",
      "date": "2026-10-09",
      "commit": "ac0daf4",
      "branch": "main",
      "kind": "reference-only-full-division-comparison",
      "scope": "Add OpenSMT 2.9.2 to the complete 13,306-file non-incremental QF_LIA comparison at a 60-second per-instance wall limit. Primo is not rebuilt or rerun; retain separately identified historical comparison arms.",
      "environment": {
        "host": "remote SLURM cluster; Intel Xeon E5-2690 v4 nodes in the compute partition",
        "solver": "OpenSMT 2.9.2, default arguments, one CPU and 3 GiB per task",
        "binary_sha256": "b7899e9aff299026d3251df7a28f51f56d8bd1e5b0fd7be11bcc72c4f2803a98",
        "corpus": "13,306 files, 8,192,190,039 bytes; reusable cluster corpus hard-linked into the benchmark workspace",
        "path_size_manifest_sha256": "5bf3bebecf3a2720033029495a7e9ba6b0aefeb38f7b3041b6d2aafeffb6b22b",
        "driver_sha256": "440325679f12e5da5d891fbf6d0cd5c2147db3a0231cab87019483035a81b4ce",
        "batch_script_sha256": "c4c61820ae6283fbb03b707af7c5f0d8d07df33a4b08fd60605bbfa931f155f2"
      },
      "jobs": {
        "opensmt": "181259; all 320 tasks COMPLETED 0:0, concurrency ceiling 128, 50-minute task wall limit; 2026-10-09 14:29:14 to 16:28:37 UTC",
        "representative_output_triage": "181454; one CPU, 3 GiB, five-minute wall limit; COMPLETED 0:0 in eight seconds, batch MaxRSS 262000K",
        "first_error_replay": "181529; four one-CPU, 3 GiB tasks, seven-minute task wall limit; all COMPLETED 0:0 in seven to nine seconds",
        "debugger_setup_failures": "181607 and 181613; FAILED 124:0 at the 60-second debug-symbol lookup bound; no target backtrace obtained",
        "representative_crash_debugger": "181648; one CPU, 3 GiB, five-minute task wall limit; COMPLETED 0:0 in three seconds",
        "complete_failure_and_corpus_check": "181727; four one-CPU, 3 GiB tasks, 15-minute task wall limit; all COMPLETED 0:0, 13 to 97 seconds; original 60-second per-input replay cutoff"
      },
      "commands": {
        "preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync against a clean local worktree at 45a16ad, matching the existing workspace's Primo version stamp; OpenSMT --version and SHA-256 checked separately. No source synchronization or rebuild is performed for this reference-only run.",
        "batch_validation": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_lia_full_solver_compare.sbatch; bash -n scripts/slurm_qf_lia_full_solver_compare.sbatch",
        "submit": "PRIMO_COMPARE_SOLVERS='opensmt=<preserved-binary>' PRIMO_COMPARE_SHARDS=320 PRIMO_COMPARE_TIMEOUT=60 PRIMO_COMPARE_OUT_ROOT=<artifact-root> sbatch --job-name=opensmt-qflia-full --array=0-319%128 --time=00:50:00 scripts/slurm_qf_lia_full_solver_compare.sbatch"
      },
      "artifacts": {
        "remote": "primo-cadical-profile/results/qf-lia-opensmt-20261009/{opensmt,provenance}; matching logs/opensmt-qflia-full-181259-*",
        "local": "results/qf-lia-opensmt-20261009/{opensmt,provenance,triage-final,historical,*-raw.tar.gz}",
        "metadata": "benchmarks/qf-lia-opensmt-20261009.json; benchmarks/qf-lia-opensmt-errors-20261009.{txt,json}",
        "plot": "docs/_static/qf-lia-cactus.svg"
      },
      "results": {
        "opensmt": "10,654 solved (6,692 SAT, 3,962 UNSAT), 2,631 timeouts, 21 errors, zero clean unknown/unsupported/wrong rows; PAR2 total 361026.801334 seconds",
        "comparison": "Archived Primo 5efbd02: 9,705 solved, PAR2 470785.158311; retained Z3 5.1.0: 12,144, PAR2 174585.785332; retained cvc5 1.3.4: 9,239, PAR2 507295.331516. OpenSMT solves 949 more than Primo (231 SAT, 718 UNSAT), with 1,566 OpenSMT-only and 617 Primo-only decisions. Different dates/nodes and memory allocations; contextual comparison, not a paired causal experiment.",
        "coverage": "Every arm covers exactly the same 13,306 unique relative paths, with no missing/duplicate/unexpected rows. The post-run OpenSMT corpus content hash is a7423b6c1f643568d4151e3afa822639ef1f577251ced0a3f63b3c98d7ab811b, matching every archived Primo and Z3 input hash; 8,192,190,039 bytes. Retained cvc5 has no archived per-input content hashes.",
        "answers": "Zero declared-status contradictions and zero disagreements across all six jointly solved pairs. OpenSMT agrees with Z3 on 10,450 shared decisions, Primo on 9,088, and cvc5 on 8,822.",
        "models": "Retain the independently qualified archived Primo arm: all 6,461 successful SAT rows pass Dolmen 0.10 in 128 complete coverage records linked to the original timing/provenance hashes. No new Primo run, current-main qualification, or independent reference-model-validation claim.",
        "families_and_distributions": "All 32 families, per-arm SAT/UNSAT/timeout/unknown/error/unsupported/PAR2 counts, successful-runtime minimum/median/p95/maximum, normalized timing hashes, and raw archive hashes are committed in benchmarks/qf-lia-opensmt-20261009.json."
      },
      "correctness_scope": "Check successful SAT/UNSAT rows against declared status and retained reference answers. This run makes no independent OpenSMT SAT-model-validation claim and changes no Primo behavior or defaults.",
      "output_triage": {
        "manifest": "benchmarks/qf-lia-opensmt-resource-triage.txt",
        "command": "python3 scripts/bench_qf_uf_full.py --repo <workspace> --root sandbox/non-incremental/QF_LIA --manifest <four-case-manifest> --solver <preserved-OpenSMT-binary> --timeout 60 --out <triage>/answers.csv --summary <triage>/summary.csv --log-dir <triage>/solver-output",
        "observed": "All four representative Dartagnan cases reproduce a single stdout diagnostic, 'At line <number>: memory exhausted', exit 0, and no SAT/UNSAT answer. These are non-answer input-processing resource failures and stay classified as errors, excluded from the curve and charged 120 seconds in PAR2. The diagnostic job's peak RSS is about 256 MiB, below its 3 GiB allocation; no assertion about the internal cause or parser stack limit is made.",
        "artifacts": "results/qf-lia-opensmt-20261009/triage/ locally and under the remote artifact root",
        "first_complete_replay": "The first 17 captured errors were replayed individually with stdout/stderr capture in array 181529 at the original 60-second cutoff and resource profile. All reproduced: seven exit-0 non-answers print 'At line <number>: memory exhausted'; ten terminate with SIGSEGV (exit -11) and empty stdout/stderr. All belong to 20210219-Dartagnan. Internal crash causes are not established. No failed process is counted as a solve.",
        "classification": "benchmarks/qf-lia-opensmt-errors-20261009.{txt,json}; complete 21-case manifest, input hashes, original/replay times, native exit codes, stdout diagnostics, and per-SIGSEGV debugger evidence",
        "representative_crash_debugger": "With DEBUGINFOD_URLS empty, gdb 10.2 reproduced SIGSEGV on 38_rand_cas_vs_concur-O0.smt2 and benchmark09_conjunctive-O0.smt2. Both fault at 0x7fffff7feff8, eight bytes below the stack mapping [0x7fffff7ff000,0x7ffffffff000), size 8 MiB; repeated stack frames support stack exhaustion. The binary is stripped, so no function-specific or parser-specific cause is claimed. The first two debugger jobs timed out on automatic symbol lookup; 181613 also used an unsupported gdb setting. No solver timings are taken from these probes.",
        "debugger_command": "DEBUGINFOD_URLS= timeout 60s gdb -batch -nx -ex 'set pagination off' -ex run -ex 'p $_siginfo' -ex 'info registers rsp rip' -ex 'info proc mappings' -ex 'bt 30' --args <preserved-OpenSMT-binary> <input>; artifacts results/qf-lia-opensmt-20261009/crash-debug-off/",
        "complete_replay": "Job 181727 reproduces all 21 original errors with the original binary, arguments, one-CPU/3-GiB allocation and 60-second cutoff: seven exit-0 memory-exhausted non-answers and fourteen SIGSEGV cases. Every SIGSEGV was also debugged with symbol downloads disabled; each faults just below an 8 MiB stack mapping with its stack pointer at the lower boundary, supporting stack exhaustion. No function-specific or parser-specific cause is claimed for the stripped binary. All errors remain in the denominator, contribute no cactus point, and cost 120 seconds each in PAR2; original timing rows are unchanged.",
        "reproduction": "python3 scripts/bench_qf_uf_full.py --repo <workspace> --root sandbox/non-incremental/QF_LIA --manifest benchmarks/qf-lia-opensmt-errors-20261009.txt --shards 4 --shard-index <index> --solver <preserved-OpenSMT-binary> --timeout 60 --out <triage>/answers-<index>.csv --summary <triage>/summary-<index>.csv --log-dir <triage>/solver-output-<index>; debugger command as above for each exit -11 row. Exact scheduler wrapper and corpus checker are preserved with hashes in the raw triage archive.",
        "completion": "All full-run errors are reproduced and classified; all 13,306 corpus content hashes match the archived Primo/Z3 records; preserved solver and driver/batch hashes are unchanged."
      },
      "evidence_status": "slurm-complete; full coverage and all reference failures classified; retained Primo evidence remains explicitly historical",
      "verification": {
        "reports": "make docs passes in strict mode; python3 -m unittest discover -s tests/python -p test_plot_cactus.py passes all 11 tests; JSON parsing and git diff --check pass",
        "data": "Exact unique input sets, per-arm/family count arithmetic, all six answer comparisons, original/normalized archive hashes, all 21 failure input hashes, all 14 debugger stack-boundary records, post-run corpus hashes and unchanged binary/driver/batch hashes checked",
        "figure": "SVG XML and all four legend counts checked; rendered PNG inspected for readable curves, labels and full provenance/error captions"
      },
      "outcome": "OpenSMT is included in the refreshed complete-division cactus plot with the latest recovered archived Primo arm and retained Z3/cvc5 references. Errors, unknowns, resource differences, dates, model-validation scope and provenance limits are visible. No Primo source or default changes."
    },
    {
      "id": "2026-10-09-recovered-qf-lia-comparison-5efbd02",
      "date": "2026-10-09",
      "measurement_date": "2026-10-05 for Primo; 2026-09-07 for Z3; 2026-08-21, original job 127709 for cvc5",
      "commit": "5efbd02293e15a53fbaad748ceda78bc7d27bbac",
      "kind": "historical-evidence-recovery",
      "scope": "Recover the latest complete archived QF_LIA Primo timing and independent model-validation records, plus complete retained Z3 and cvc5 arms, for the OpenSMT comparison. The archived Primo object is not present in this local checkout; this is not a current-main evaluation.",
      "environment": {
        "host": "remote SLURM cluster; Intel Xeon E5-2690 v4 compute nodes",
        "corpus": "The same 13,306 relative input paths in every arm, 60-second per-instance timeout",
        "resources": "Primo: one CPU and 8 GiB; retained Z3: one CPU and 4 GiB; original cvc5: one CPU and 3 GiB. Different days and nodes, so performance comparisons are contextual rather than paired hardware experiments.",
        "primo": "Primo 0.2.0 at 5efbd02; Release, no sanitizers; CaDiCaL cadical-3.0.0-7b99c07; --quiet",
        "primo_binary_sha256": "d0f69f50540efa7561e7895d2f24acff26787756a85b9bdb9f67e7eaaed496e0",
        "z3": "Z3 5.1.0, default arguments",
        "z3_binary_sha256": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0",
        "cvc5": "cvc5 1.3.4 at f3b21c4, default arguments",
        "content_manifest_sha256": "a7423b6c1f643568d4151e3afa822639ef1f577251ced0a3f63b3c98d7ab811b",
        "manifest_format": "Sorted relative path, tab, input SHA-256, newline; merged from all 128 complete Primo shard provenance files"
      },
      "results": {
        "primo": "9,705 solved (6,461 SAT, 3,244 UNSAT), 2,850 timeouts, 751 clean unknowns, zero wrong/error/unsupported rows, PAR2 470785.158311 seconds",
        "z3": "12,144 solved (7,826 SAT, 4,318 UNSAT), 1,162 timeouts, zero wrong/error/unsupported rows, PAR2 174585.785332 seconds",
        "cvc5": "9,239 solved (6,527 SAT, 2,712 UNSAT), 4,067 timeouts, zero wrong/error/unsupported rows, PAR2 507295.331516 seconds",
        "coverage": "Each arm covers exactly the local corpus's 13,306 unique relative paths; no duplicate, missing, or unexpected rows",
        "answers": "No disagreement in 9,515 jointly solved Primo/Z3 rows, 8,476 Primo/cvc5 rows, or 9,124 Z3/cvc5 rows",
        "models": "All 6,461 successful Primo SAT rows passed independent Dolmen 0.10 validation in 128 complete shards. Coverage files require unchanged inputs/binary, no missing/malformed rows, zero validator exit status, --expect-sat, --require-dolmen-pass, and --check-model. Parent timing CSV and provenance SHA-256 values were checked against the archived originals for every shard. No independent reference-solver model validation is claimed."
      },
      "commands": {
        "primo_timing": "python3 scripts/bench_qf_uf_full.py --repo <corpus-root> --root . --solver <5efbd02-binary> --solver-arg=--quiet --manifest <shard-inputs> --shards 1 --shard-index 0 --timeout 60 --out <shard>/answers.csv --summary <shard>/answer-summary.csv --log-dir <shard>/solver-output; 128 manifests",
        "z3_timing": "python3 scripts/bench_qf_uf_full.py --repo <corpus-root> --root . --solver <Z3-5.1.0-binary> --shards 32 --shard-index <index> --timeout 60 --out <shard>/answers.csv --summary <shard>/answer-summary.csv --log-dir <shard>/solver-output",
        "cvc5_timing": "scripts/slurm_qf_lia_full_solver_compare.sbatch with cvc5=contrib/local/bin/cvc5, 80 shards, and a 60-second cutoff; original job 127709",
        "primo_models": "python3 scripts/validate_model.py --solver <5efbd02-binary> --solver-arg=--quiet --solver-arg=--check-model --expect-sat --require-dolmen-pass --dolmen dolmen --dolmen-size 8G --dolmen-arg=--strict=false --timeout 90 --dolmen-timeout 30 --manifest <successful-SAT-manifest> --out <models>; 128 independent coverage records"
      },
      "artifacts": {
        "primo_remote": "primo-evaluation-20261005/results/refresh-timing/QF_LIA/primo/shard-*/{answers.csv,provenance.json,model-validation/coverage.json}",
        "z3_remote": "primo-model-fix/results/full-revalidation-287b743/real/QF_LIA/z3/shard-*/{answers.csv,provenance.json}",
        "cvc5_remote": "primo-cadical-profile/results/qf-lia-full-compare-127709/cvc5/shard-*.csv",
        "local": "results/qf-lia-opensmt-20261009/{historical,reference-metadata,*-raw.tar.gz}"
      },
      "evidence_status": "historical; complete timing and independent Primo SAT-model coverage recovered; current checkout not revalidated",
      "outcome": "These explicitly identified archived arms are included in the October 9 cactus comparison with fresh OpenSMT. The August 26 Primo curve is replaced; each measurement's date/resource/model-validation provenance remains visible."
    },
    {
      "id": "2026-10-07-integer-model-coverage-audit",
      "date": "2026-10-07",
      "kind": "post-benchmark-model-evidence-audit",
      "parent_run": "2026-10-06-integer-completion-unification",
      "scope": "Close current 25b44cc full-corpus and preservation/probe model-coverage reconciliation; keep old candidate attempts historical and performance acceptance separate.",
      "candidate_commit": "25b44cc2204169ff0cc45a771b5ec56895a0511e",
      "baseline_commit": "8ca8ebe8db75966fc8aefdd928a0878e648e7f10",
      "audit_base_commit": "df42f03",
      "candidate_binary_sha256": "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8",
      "validator": {
        "name": "Dolmen",
        "version": "0.10",
        "sha256": "08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e"
      },
      "status": "Model-coverage audit closed with 20 explicit declared-logic syntax exceptions, all rechecked with wider QF_NRA. No missing SAT records, invalid models or changed answers. Performance acceptance remains unfinished.",
      "method": [
        "Enumerate exact expected 616 parent shards and timing input manifests; select only status=ok, answer=sat, exit=0, timeout=false.",
        "Join replay to parent provenance/answer digests; compare actual validator metadata, ordered solver options and frozen binary/validator identities; check completed row and outcome counts.",
        "Rehash original input, saved adapted assertions and model; preserve per-measurement evidence in partition rows.json files.",
        "Keep direct Dolmen acceptance distinct from constant-denominator LRA syntax rejection. Recheck all 20 same saved assertion/model pairs with --force-smtlib2-logic=QF_NRA and explicit executable identity.",
        "Join immutable full-corpus timing answers to hash-matched recorded Z3/cvc5 rows. Completed JSONL rows of partial cvc5 campaigns are answer evidence only; unavailable references stay explicit."
      ],
      "results": {
        "status": "audited-with-explicit-validator-syntax-exceptions",
        "groups": {
          "integer-paired/QF_LIA": {
            "shards": 512,
            "timing_rows": 26612,
            "expected_sat": 13187,
            "direct_dolmen_pass": 13187
          },
          "integer-paired/QF_UFLIA": {
            "shards": 32,
            "timing_rows": 1318,
            "expected_sat": 814,
            "direct_dolmen_pass": 814
          },
          "integer-preservation-paired/QF_UF": {
            "shards": 2,
            "timing_rows": 40,
            "expected_sat": 8,
            "direct_dolmen_pass": 8
          },
          "integer-preservation-paired/QF_UFLRA": {
            "shards": 2,
            "timing_rows": 40,
            "expected_sat": 24,
            "direct_dolmen_pass": 24
          },
          "integer-shared-paired/default": {
            "shards": 8,
            "timing_rows": 240,
            "expected_sat": 104,
            "direct_dolmen_pass": 94,
            "wider_logic_pass": 10
          },
          "integer-shared-paired/lazy-uf": {
            "shards": 8,
            "timing_rows": 62,
            "expected_sat": 20,
            "direct_dolmen_pass": 20
          },
          "observation-probe": {
            "shards": 9,
            "timing_rows": 9,
            "expected_sat": 9,
            "direct_dolmen_pass": 9
          },
          "integer-preservation-reruns/QF_UFLRA": {
            "shards": 3,
            "timing_rows": 60,
            "expected_sat": 36,
            "direct_dolmen_pass": 36
          },
          "integer-shared-paired/online": {
            "shards": 8,
            "timing_rows": 240,
            "expected_sat": 104,
            "direct_dolmen_pass": 94,
            "wider_logic_pass": 10
          },
          "integer-shared-paired/offline-uflia": {
            "shards": 8,
            "timing_rows": 32,
            "expected_sat": 12,
            "direct_dolmen_pass": 12
          },
          "integer-preservation-reruns/QF_UF": {
            "shards": 3,
            "timing_rows": 60,
            "expected_sat": 12,
            "direct_dolmen_pass": 12
          },
          "integer-shared-lazy-reruns": {
            "shards": 3,
            "timing_rows": 93,
            "expected_sat": 30,
            "direct_dolmen_pass": 30
          },
          "integer-preservation-paired/QF_UFLIA": {
            "shards": 2,
            "timing_rows": 40,
            "expected_sat": 34,
            "direct_dolmen_pass": 34
          },
          "integer-preservation-paired/QF_LIA": {
            "shards": 2,
            "timing_rows": 40,
            "expected_sat": 28,
            "direct_dolmen_pass": 28
          },
          "integer-shared-online-loss": {
            "shards": 3,
            "timing_rows": 3,
            "expected_sat": 0
          },
          "integer-preservation-reruns/QF_UFLIA": {
            "shards": 3,
            "timing_rows": 60,
            "expected_sat": 51,
            "direct_dolmen_pass": 51
          },
          "integer-preservation-reruns/QF_LIA": {
            "shards": 3,
            "timing_rows": 60,
            "expected_sat": 42,
            "direct_dolmen_pass": 42
          },
          "integer-preservation-paired/QF_LRA": {
            "shards": 2,
            "timing_rows": 40,
            "expected_sat": 28,
            "direct_dolmen_pass": 28
          },
          "integer-preservation-reruns/QF_LRA": {
            "shards": 3,
            "timing_rows": 60,
            "expected_sat": 42,
            "direct_dolmen_pass": 42
          }
        },
        "totals": {
          "shards": 616,
          "timing_rows": 29109,
          "expected_sat": 14585,
          "direct_dolmen_pass": 14565,
          "wider_logic_pass": 20
        },
        "candidate_sha256": "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8",
        "dolmen_sha256": "08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e",
        "invalid_models": 0,
        "changed_answers": 0,
        "missing_rows": 0,
        "parts": {
          "0": "f97359022fd650377b85aca78e875fadcc1d2e89bf14ee85a374c664a942c43f",
          "1": "ed12e175f1077c02be8b572e8e609254355969514d0d80c1df74815ceca44b4b",
          "2": "e84bad7752ae7c844d02973f309ac3a2c8fdafe33b9c7cf4ce1875280a6322e6",
          "3": "a8f7cea7e7f4744e9afe6a98cc80f1e6b1bc20b2f0db1f77e8e2a3cd7fc20194",
          "4": "bc84ea7640dc90f48430194284be269e9b6321cefc7dc5aeabb234fcd933f0a8",
          "5": "6842ed14608c0a4bdc35f857eb7f1c4c8f2a5bc2e680bfc2d2de566cef6bc8a0",
          "6": "079095c691afd1f234b199d478993bba4ba2a4737c6bca51a8c52d86f881ff82",
          "7": "d0cfb9751943b0128812ae5562c1ce7832f26315393836686528a93cb7f5ffc0",
          "8": "05a8334023e054fc58d8824b6ef10babe353e2d7af6754f7060af3b11d3e2755",
          "9": "f4f2ceab686e54ffed19e3de7122c1ce7b56155eb7ab729247963a584cb12e91",
          "10": "7714022076f825cdd6891e4f319ba5f6c2cb11400c22c084798d3c228cb2e0f4",
          "11": "810ac48eacfdd14da16c9b41d20f8c6c896d32bf07204456f146ed2d2189de2c",
          "12": "762e8aaf5309a151f165f48511830b14fa349c284fc33ae0ba425ee919beacbc",
          "13": "ef4b2fe902fd538e2992da34725dd7e6994e8705a104353ef7bc0d75009fd3d4",
          "14": "ff854d06006b71d468f1eb35afadc41a1bc6ce493ca89c81fa32762775534424",
          "15": "2bced107121ebbcba5e51508387c0a790bedfab3bc68eced9d832f9338258fe6"
        },
        "note": "Saved evidence audit; no solver execution. Wider-logic checks remain distinct from direct acceptance under the declared logic. Lost-case reruns and generated/session gates have separate audits."
      },
      "previously_audited_lost_cases": {
        "parent_field": "driver_migration.observation_followup.timing.lost_case_recovery",
        "shards": 138,
        "expected_sat": 50,
        "direct_dolmen_pass": 50,
        "job": "175199",
        "note": "Separate prior audit; not included in the 616-shard totals above."
      },
      "repair": {
        "failed_original_job": "173414",
        "reason": "Original preservation replay setup could not resolve Dolmen; no coverage files were produced.",
        "new_job": "175600",
        "tasks": 21,
        "states": "all COMPLETED 0:0",
        "sat_measurements": 213,
        "attempt": "model-validation-audit",
        "solver_timeout_seconds": 180,
        "dolmen_timeout_seconds": 60,
        "dolmen_size": "8G",
        "slurm_memory": "12G",
        "cpus": 1,
        "job_time_limit": "00:20:00",
        "solver_options": "Replay exact timing options, adding --check-model and model requests; explicit contrib/local/bin/dolmen; --strict=false.",
        "task_manifest_sha256": "e970bc2e58a24063cbb67dd77f44f0dcaa1b61019e56784828b1495da561cdf5",
        "relative_parent_shards": [
          "integer-preservation-reruns/QF_LIA/round-0/candidate/shard-0",
          "integer-preservation-reruns/QF_LIA/round-1/candidate/shard-0",
          "integer-preservation-reruns/QF_LIA/round-2/candidate/shard-0",
          "integer-preservation-reruns/QF_LRA/round-0/candidate/shard-0",
          "integer-preservation-reruns/QF_LRA/round-1/candidate/shard-0",
          "integer-preservation-reruns/QF_LRA/round-2/candidate/shard-0",
          "integer-preservation-reruns/QF_UF/round-0/candidate/shard-0",
          "integer-preservation-reruns/QF_UF/round-1/candidate/shard-0",
          "integer-preservation-reruns/QF_UF/round-2/candidate/shard-0",
          "integer-preservation-reruns/QF_UFLIA/round-0/candidate/shard-0",
          "integer-preservation-reruns/QF_UFLIA/round-1/candidate/shard-0",
          "integer-preservation-reruns/QF_UFLIA/round-2/candidate/shard-0",
          "integer-preservation-reruns/QF_UFLRA/round-0/candidate/shard-0",
          "integer-preservation-reruns/QF_UFLRA/round-1/candidate/shard-0",
          "integer-preservation-reruns/QF_UFLRA/round-2/candidate/shard-0",
          "integer-shared-lazy-reruns/round-0/candidate/shard-0",
          "integer-shared-lazy-reruns/round-1/candidate/shard-0",
          "integer-shared-lazy-reruns/round-2/candidate/shard-0",
          "integer-shared-online-loss/round-0/candidate/shard-0",
          "integer-shared-online-loss/round-1/candidate/shard-0",
          "integer-shared-online-loss/round-2/candidate/shard-0"
        ],
        "task_manifest_recipe": "Prefix each ordered relative_parent_shards entry with <observation-workspace>/results/ and write one per line, including a final newline."
      },
      "audit_jobs": {
        "175621": "Serial hashing attempt cancelled to shard storage reads; no acceptance based on partial output.",
        "175622": "All 16 initial audit partitions completed 0:0.",
        "175638": "All 16 final strengthened audit partitions completed 0:0.",
        "175654": "20 saved wider-logic models rechecked; COMPLETED 0:0."
      },
      "audit_resources": {
        "partition": "compute,gpu",
        "cpus_per_task": 1,
        "memory": "4G",
        "time_limit": "00:20:00",
        "partitions": 16,
        "note": "Audit reads/hashes artifacts; solver replay only in repair job. Wider-logic recheck uses 4G/1CPU/5-minute SLURM limit, Dolmen size2G and30-second per-model limit."
      },
      "reference_join": {
        "status": "joined",
        "counts": {
          "QF_LIA/round-0": {
            "agree": 9800,
            "candidate-unsolved": 3383,
            "no-decisive-reference": 123
          },
          "QF_LIA/round-1": {
            "agree": 9842,
            "candidate-unsolved": 3326,
            "no-decisive-reference": 138
          },
          "QF_UFLIA/round-0": {
            "candidate-unsolved": 82,
            "agree": 577
          },
          "QF_UFLIA/round-1": {
            "candidate-unsolved": 82,
            "agree": 577
          }
        },
        "totals": {
          "agree": 20796,
          "candidate-unsolved": 6873,
          "no-decisive-reference": 261
        },
        "no_decisive_reference_unique_inputs": 138,
        "unique_without_reference_by_candidate_answer": {
          "sat": 49,
          "unsat": 89
        },
        "note": "Hash-matched recorded answer comparison, including completed rows from partial reference campaigns. Unavailable reference answers remain explicit; no UNSAT proof certification or new timing claim.",
        "artifact": "tmp/integer-model-audit/reference-final.json",
        "sha256": "87524bd13d93a079610f1adca1fd3f2ef1927ed03320a5e4cd5153d573e56840"
      },
      "artifacts": {
        "remote_workspace_role": "frozen integer-unification observation workspace",
        "remote": "results/integer-model-audit-reviewed",
        "local": "tmp/integer-model-audit",
        "summary_sha256": "555e2fc051d795f43eeee8d8ad1f06974e2775b4307f3a8456d1d44c6e9abeb4",
        "triage_recheck_sha256": "b105ad3c838506a0a272353286468c18104c406c54f1821ebca948ed55422c0e",
        "metadata_archive_sha256": "95ca57dd819a873fd867398a704f4ec22a4451c7c02a14e483f7b5a5f947121a",
        "reviewed_archive_sha256": "b018f57fd602712c3b484c4c00d082a72817f4bf7452535acd80695571141266",
        "availability": "SLURM-backed original models and timing rows; collected audit/metadata local. Large generated artifacts not tracked.",
        "final_job_states_sha256": "1d326f6732e832a108a4d237c5fbff38046b28f9e5f20230722a2dc545538596"
      },
      "commands": [
        "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync --local-dir <frozen-25b44cc-checkout> --remote-dir <observation-workspace> --require-tool contrib/local/bin/dolmen",
        "scp -F <ssh-config> scripts/qualification/integer_unification/audit_models.py scripts/qualification/integer_unification/audit_models.sbatch scripts/qualification/integer_unification/loss_models.sbatch scripts/qualification/integer_unification/recheck_triage.sbatch tmp/integer-model-audit/replay-tasks.txt <remote>:<observation-workspace>/results/",
        "PRIMO_WORKDIR=<observation-workspace> PRIMO_REPLAY_TASKS=<observation-workspace>/results/replay-tasks.txt PRIMO_MODEL_ATTEMPT=model-validation-audit sbatch --partition=compute,gpu --array=0-20%8 --hint=nomultithread results/loss_models.sbatch",
        "PRIMO_WORKDIR=<observation-workspace> sbatch --partition=compute,gpu --array=0-15%16 results/audit_models.sbatch",
        "python3 scripts/qualification/integer_unification/audit_models.py --results <collected-results> --out <collected-results>/integer-model-audit-reviewed --parts 16 --collect",
        "PRIMO_WORKDIR=<observation-workspace> sbatch --partition=compute,gpu results/recheck_triage.sbatch",
        "python3 scripts/qualification/integer_unification/audit_references.py --candidate tmp/integer-model-audit/results/integer-paired --reference results/evaluation-refresh-20261005/historical-reference-metadata --out tmp/integer-model-audit/reference-final.json"
      ],
      "script_sha256": {
        "scripts/qualification/integer_unification/audit_models.py": "8ccfae9294edc29f4467a4f4f0a44e0ce09ff7660df05e746fc4753212fa96e1",
        "scripts/qualification/integer_unification/audit_models.sbatch": "72182f3206fe793d42560b02c595d7eef7ade9422a9eb5094adf1fe4f10979de",
        "scripts/qualification/integer_unification/audit_references.py": "e5b7023b095e76509b600ac9b15c439fc434794d63902516e19fd58a622046ce",
        "scripts/qualification/integer_unification/recheck_triage.sbatch": "1cc009e1fa1ddbff8db0f1b89493aa300110a627443a5d4463163f38aa1bf05e",
        "scripts/qualification/integer_unification/loss_models.sbatch": "e184b5ed144501dbc2456e617088fd9540a6aca2f09090b565df7cd341137584"
      },
      "limitations": [
        "No new timing measurement or solver build; this audits frozen25b44cc, not later source changes.",
        "20 syntax exceptions are not direct acceptance under the declared logic.",
        "261 timing rows on138uniqueinputs lack a decisive recorded reference; no UNSAT proof certification is claimed.",
        "Generated and retained-session gates keep their earlier independent audits.",
        "Repeated prp-67-50 loss and small-suite runtime flags are unaffected; no migration/default-promotion acceptance."
      ],
      "review": {
        "reviewer": "model_audit_review",
        "baseline": "df42f03",
        "files": [
          "docs/evidence/arithmetic.md",
          "docs/run-log.json",
          "scripts/qualification/integer_unification/audit_models.py"
        ],
        "findings": "R1 actual validator metadata checks added; R2 exact model-validation invocation enforced; R3 historical wider-logic executable identity supplemented by fresh recheck175654. Independent re-review verifies16partition hashes,14585unique measurement rows,20fresh triage records and1248referenceartifact hashes. R4 staging command and staged digest added. Final independent verdict: ready; R1-R4 resolved, no required findings remain.",
        "accepted_scope": "Changed arithmetic evidence section, audit entry and status updates, and reviewed audit scripts against df42f03; final rendered section readable without clipping.",
        "unchecked": "Reviewer did not independently witness remote execution or rerun historical lost-case audit; external URLs unchecked."
      },
      "local_checks": {
        "lint": "passed",
        "syntax": "both Python scripts py_compile; both sbatch scripts slurm_validate_sbatch passed",
        "docs": "make docs passed",
        "links": "make docs-check-links passed;261HTMLpages,32631local links,1039Git targets,zero failures;385 external URLs deferred",
        "render": "/tmp/primo-model-audit.png; inspected the rendered arithmetic evidence section and table; no clipping or overlap."
      },
      "staging": "Audit/replay tools copied as result artifacts into the frozen workspace results/ directory; solver source and binaries were not synchronized or rebuilt. Staged bytes match script_sha256; audit_models.py SHA2568ccfae9294edc29f4467a4f4f0a44e0ce09ff7660df05e746fc4753212fa96e1."
    },
    {
      "id": "2026-10-06-gmp-download-fallback",
      "date": "2026-10-06",
      "kind": "dependency-bootstrap-reliability",
      "baseline_commit": "83c3821cdfe49a2af5cf8d301efb992e8c5f8751",
      "scope": "Recover GMP archive downloads when the primary server is unreachable; keep GMP 6.3.0 and compilation settings unchanged.",
      "source_sha256": {
        "contrib/install_gmp.py": "6989e7a5be9593b047344a704ed5cf1018b4424e770a282f6f9c4caec4112fde",
        "tests/python/test_install_gmp.py": "f65c5f7bc838eea15e241e05dfa8541355590103b654db8e5212921c02e9d307"
      },
      "network_probe": {
        "primary": "https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz: URLError, No route to host",
        "mirror": "https://mirrors.kernel.org/gnu/gmp/gmp-6.3.0.tar.xz: success, 2094196 bytes",
        "archive_sha256": "a3c2b80201b89e68616f4ad30bc66aee4927c3ce50e33929ca819d5c43538898",
        "checksum_cross_check": "https://gitlab.com/buildroot.org/buildroot/-/raw/master/package/gmp/gmp.hash",
        "live_check": "Bounded local download through download_archive with an explicit mirror URL; verified pinned digest and tar member gmp-6.3.0/configure. This was a network/archive smoke check, not a solver batch or build."
      },
      "slurm": {
        "job_id": "175433",
        "state": "COMPLETED",
        "exit_code": "0:0",
        "cpus": 1,
        "memory": "1 GiB",
        "time_limit": "2 minutes",
        "command": "python3 -m unittest discover -s tests/python -p test_install_gmp.py -v",
        "tests_passed": 6,
        "coverage": [
          "unreachable primary",
          "bad checksum",
          "interrupted response",
          "all sources fail",
          "explicit URL disables fallback",
          "primary succeeds"
        ],
        "provenance": "Standalone Python tests staged with the exact source hashes above; remote and local hashes matched. No solver binary built or exercised.",
        "artifact": "tmp/gmp-download-check/tests-175433.log"
      },
      "checks": {
        "lint": "make lint passed",
        "docs": "make docs passed",
        "review": "Pre-commit download, extraction handoff, Makefile and CI call-site review found no blocking issues. No C++ or solver behavior changed; no fresh C++ tests, ASan, clang-tidy or fuzz gate run.",
        "independent_documentation_review": "gmp_docs_review accepted the GMP paragraph in docs/guide/getting-started.md with no required findings; rendered page inspected at /tmp/primo-gmp-doc.png.",
        "links": "make docs-check-links passed: 260 pages, 32230 local links, 1036 unique Git links, zero failures; external URL checking deferred as reported by the checker."
      },
      "limitations": [
        "GitHub CLI is not authenticated; the failed hosted run was not inspected or rerun.",
        "Only GMP 6.3.0 has a pinned archive digest; existing extracted source directories are not revalidated.",
        "The socket timeout is not a total download deadline. Both remote endpoints still require network access.",
        "No fresh GMP compilation was run; the verified archive and compilation procedure are unchanged."
      ]
    },
    {
      "id": "2026-10-06-integer-completion-unification",
      "date": "2026-10-06",
      "kind": "shared-integer-completion-and-driver-migration",
      "baseline_commit": "8ca8ebe8db75966fc8aefdd928a0878e648e7f10",
      "evidence_status": "in-progress-not-qualified",
      "scope": "Extract shared integer completion, decouple adapters, and migrate standalone QF_LIA to the shared driver without changing arithmetic algorithms or retained sessions.",
      "extraction_snapshot": "8e5e5010441a7f9949bbdf1a81f851bb1ff2f3fd",
      "snapshot_note": "Extraction and generic-adapter milestones adopted after their recorded verification. Driver migration snapshot is under qualification; no final correctness or performance acceptance is claimed.",
      "jobs": {
        "baseline_setup_cancelled": "172175",
        "baseline_build": "172177",
        "first_extraction_build_failed": "172182",
        "baseline_inventory": "172183",
        "corrected_extraction_build": "172184",
        "extraction_checks": "172185",
        "extraction_fuzz": "172186",
        "extraction_static": "172187",
        "resource_replay": "172197",
        "include_cleanup_build": "172198",
        "final_extraction_checks": "172200",
        "final_extraction_fuzz": "172201"
      },
      "commands": {
        "baseline_build": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir <baseline-worktree> --build-via-slurm --remote-dir <baseline-workspace> --reuse-dependencies --cmake <existing-cmake> --cxx-header-manifest <matching-header-manifest> --jobs 4",
        "extraction_build": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir <extraction-worktree> --build-via-slurm --remote-dir <extraction-workspace> --reuse-dependencies --cmake <existing-cmake> --cxx-header-manifest <matching-header-manifest> --extra-target all --jobs 4",
        "preflight": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir <extraction-worktree> --check-only --remote-dir <extraction-workspace> --require-tool contrib/local/bin/z3 --require-tool contrib/local/bin/dolmen",
        "checks": "PRIMO_EXPECTED_REVISION=8e5e501 sbatch scripts/qualification/integer_unification/extraction_checks.sbatch; executes make check and make asan-test in a 4-CPU 8-GiB 40-minute allocation",
        "fuzz": "PRIMO_EXPECTED_REVISION=8e5e501 PRIMO_SEED_BASE=203610060 PRIMO_BUDGET_REPLAY=1 sbatch --ntasks=1 --array=8-11,16-19%4 scripts/qualification/public_launch.sbatch",
        "static": "sbatch --ntasks=1 scripts/qualification/public_static.sbatch",
        "local": "make lint; c++ -std=c++20 -fsyntax-only -Isrc -isystem contrib/local/include tests/unit/lia_completion_tests.cpp src/theory/arithmetic/lia_completion.cpp; make docs; make docs-check-links"
      },
      "resources": {
        "build": {
          "cpus": 4,
          "memory_gib": 8,
          "wall_minutes": 30
        },
        "planned_timing": {
          "cpus": 1,
          "memory_gib": 8,
          "timeout_seconds": 60,
          "paired_rounds": 2
        },
        "fuzz": {
          "cpus_per_task": 1,
          "memory_gib": 4,
          "wall_minutes": 120,
          "cases_per_task": 250,
          "seed_base": 203610060,
          "answer_timeout_seconds": 5,
          "model_timeout_seconds": 10,
          "dolmen_timeout_seconds": 10
        }
      },
      "preliminary_results": {
        "release_ctest": "44/44 pass",
        "python_tests": "233 pass",
        "lint": "pass",
        "docs_build": "pass",
        "docs_links": "pass: 260 pages, 32219 local links, 1012 unique Git source links; zero failures",
        "asan": "44/44 pass on 8e5e501",
        "fuzz": {
          "revision": "8e5e501",
          "total": 2000,
          "pass": 1972,
          "timeout": 26,
          "unknown": 2,
          "wrong_answer": 0,
          "crash": 0,
          "invalid_model": 0,
          "reference_disagreement": 0,
          "direct_dolmen_sat_pass": 1354,
          "replay": "Both unknown inputs also return unknown with zero exit on baseline; both report integer branch-node limits. SLURM 172197.",
          "artifact": "results/public-launch/172201",
          "parser_type_error": 0,
          "unsupported": 0
        },
        "static": "Revision b86126f2d916ab2c638aad26412758bbfa5dbed4, job172187: Both configured clang-tidy and advisory include scan completed on all 128 tracked C++ translation units; no compiler errors. Existing shared_ptr analyzer advisory, external CLI11 advisory, and deliberate invalid-enum test warnings remain. Removed three real unused includes and added direct providers in touched code. Paired self-includes retained.",
        "docs_review": {
          "reviewer": "lia_doc_review",
          "scope": "changed extraction portions of docs/implementation/lia.md",
          "findings": "LIA-DOC-01/02 source links repaired; LIA-DOC-03 terminology suggestion applied",
          "verdict": "accepted after source-pin recheck",
          "reviewed_blobs": {
            "lia.md": "95da805943b556a56bf19dd7b290ebbbabb8552c",
            "_config.yml": "1408866076ce5fde040f47c94bbf2cbb3023fc87"
          }
        },
        "final_static": "Job172200 passed configured clang-tidy and advisory include-cleaner on four changed translation units. No owned-code configured warnings; pre-existing missing direct core ID providers in instance_simplifier_tests remain advisory.",
        "review": "Extraction self-review: no blocking soundness, lifetime or extra-tableau-copy issues found. Shared explanation retains cut antecedents; patch success uses existing scoring count without a new full scan. Whole-tree configured static scans passed as summarized; this is not independent whole-manual acceptance."
      },
      "setup_notes": [
        "Compute nodes cannot reach PyPI; cancelled setup job and reused remote CMake and dependencies with matching installer hashes.",
        "First extraction test build failed because sat::Lit has no equality operator; changed test to compare literal values. Solver target compiled.",
        "Clean cluster builds emitted shared-filesystem clock-skew warnings."
      ],
      "artifacts": {
        "baseline_remote": "primo-integer-unification-baseline-8ca8ebe/results/integer-baseline",
        "extraction_remote": "primo-integer-unification-extraction/results",
        "build_logs_local": [
          "/tmp/primo-integer-extraction-build.log",
          "/tmp/primo-integer-extraction-build-v2.log"
        ],
        "qualification_scripts_local": "scripts/qualification/integer_unification",
        "collected_evidence_local": "tmp/integer-unification/evidence (including extraction-fuzz-final-summary.json and integer-extraction-checks-172200/)"
      },
      "remaining": "Model coverage and recorded-reference reconciliation closed by2026-10-07-integer-model-coverage-audit. All14001full-corpusSAT measurements pass Dolmen directly; preservation/probes564direct+20explicit wider-logic checks; lost-case50direct. Recorded references agree on20796measurements;261rows/138inputs lack decisive references. Migration remains unfinished due repeatedprp-67-50loss and retained small-suite performance flags; final migration acceptance is not granted by this audit.",
      "preceding_extraction_snapshot": "b86126f2d916ab2c638aad26412758bbfa5dbed4",
      "baseline_binary_sha256": "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4",
      "baseline_corpora": {
        "QF_LIA": {
          "count": 13306,
          "bytes": 8192190039,
          "ordered_paths_sha256": "2c34c3a9c0076f3c093bca8138133a82258ac435d56a89d2dd40ca0e5af7844c",
          "content_manifest_sha256": "c05c79405fb62a77379e747e7e7b8cfeaf710970e8def4d929aa80f5f2132d67"
        },
        "QF_UFLIA": {
          "count": 659,
          "bytes": 118566018,
          "ordered_paths_sha256": "a650271d413483b210889ed2389e766b93d045cb99352aacb8a0af8200a803f7",
          "content_manifest_sha256": "6a63fb5c6652187a52cd28ccf6f6197a55a04c77c57e1d20d3d0d5739cb06fc5"
        }
      },
      "extraction_binary_sha256": "a2771ceb25833e65106cfd65008722b2f5237e5799475a0450f8180885b50a23",
      "adapter_cleanup": {
        "snapshot": "a8ec696ec8a20e3df8350084ee34f8e9b977d20d",
        "status": "accepted-adapter-cleanup-only",
        "jobs": {
          "build": "172215",
          "checks": "172216",
          "fuzz": "172217"
        },
        "command": "PRIMO_EXPECTED_REVISION=a8ec696 PRIMO_SEED_BASE=203610260 PRIMO_BUDGET_REPLAY=1 sbatch --ntasks=1 --array=16-23%4 scripts/qualification/public_launch.sbatch; checks use scripts/qualification/integer_unification/extraction_checks.sbatch",
        "fuzz": {
          "cases": 2000,
          "qf_uflia": 1000,
          "quantified_uf": 1000,
          "pass": 2000,
          "timeout": 0,
          "unknown": 0,
          "wrong_answer": 0,
          "crash": 0,
          "parser_type_error": 0,
          "unsupported": 0,
          "reference_disagreement": 0,
          "ground_sat_models_dolmen_pass": 512,
          "quantified_model_validation": "Not claimed; six enumeration profiles agree with Z3, plus expected preprocess-only unknown outcomes."
        },
        "binary_hashes": {
          "build-slurm-rel/primo": "451ec43d91ca2742fe91c45af177564b36e528b4c1a708f771c9bd7edd3e0c54",
          "contrib/local/bin/z3": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0",
          "contrib/local/bin/dolmen": "08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e"
        },
        "budget_replay": {
          "cases": 200,
          "pass": 106,
          "resource_exhausted": 94,
          "timeout": 0
        },
        "artifacts": "results/public-launch/172217 and results/adapter-fuzz-qualified.json",
        "docs_review": "lia_doc_review accepted changed lia/combination/quantifiers pages and config against a8ec696; LIA-ADAPTER-01..03 resolved; docs-check-links zero failures; rendered LIA section inspected.",
        "checks": {
          "release": "44/44",
          "python": "233 pass",
          "asan": "44/44",
          "lint": "pass",
          "configured_tidy": "pass on changed translation units; no owned-code diagnostics",
          "advisory_include_cleaner": "pre-existing core ID provider advisories in instance_simplifier_tests only",
          "review": "No blocking source/lifetime/extra-copy issue found in adapter diff. Projection/timer policy passed by recipes; result translation shared without changing scheduling."
        },
        "scaffold_pending": "Local -DPRIMO_HAVE_IPASIR=0 syntax check fails on both baseline8ca8ebe and adapter snapshot with unguarded existing online-helper references. Repair and full SLURM scaffold build remain required for final migration."
      },
      "driver_migration": {
        "snapshot": "cfc4136dd92f7db7928d7d76b10f5d1050bc9b96",
        "status": "implementation-committed-correctness-gates-audited-performance-pending",
        "superseded_snapshot": "35f865347f5b0652004479e40b8237d08753afbe",
        "superseded_build_job": "172228",
        "superseded_note": "Built successfully; source review caught missing component token in proposed driver fact fragment before tests. Replaced it with an explicit propositional_facts assembler input and added a regression. No correctness claim from superseded snapshot.",
        "implementation": "One-LIA online recipe; standalone loop and model builder removed; no guided combination or shared scopes. Driver owns otherwise unowned Boolean constants. Shared assembler accepts separately validated propositional facts. Existing backend-disabled guard errors repaired; full scaffold qualification passed in172378.",
        "local_checks": "make lint passed after import/executable-mode cleanup; make docs-check-links passed: 260 pages, 32224 local links, 1027 Git links, zero failures. Rendered LIA scheduling chapter and shared model section inspected. Ownership/efficiency review fixed initial assembler-token mismatch; no added integer-stage scans or tableau copies. Whole-tree architectural include scan found no reverse SMT/parser dependencies in SAT/theory.",
        "docs_review": {
          "reviewer": "lia_doc_review",
          "scope": "lia/models/theory-interface/statistics/getting-started and source-role config changes sinceef1b34b",
          "resolved": [
            "LIA-MIG-01",
            "LIA-MIG-02",
            "stale standalone model-builder paragraph at LIA models/evidence section"
          ],
          "verdict": "accepted source docs against cfc4136 including final LIA model paragraph; expanded runtime evidence independently reviewed separately",
          "evidence_verdict": "accepted first-entry evidence by lia_doc_review against blob8a670b1590d9ee0f90c58042b1742fb288e77d45; current scaffold/model statuses, explicit error categories and separated validator limitation verified. Later metadata addition records successful identical audit172612. Raw individual model/UF triage files not independently rerun by reviewer."
        },
        "previous_checks": {
          "snapshot": "478b18b5f9a7b5642292446a5f8ac0b56643075f",
          "build_job": "172291",
          "checks_job": "172294",
          "release": "44/44 passed",
          "python": "233 passed",
          "asan": "44/44 passed",
          "scaffold": "failed: assigned_atoms shadow and two backend-only unused functions under warnings-as-errors",
          "repair": "Guard bound_entails and is_euf_component_atom for IPASIR; use existing assignment vector in backend-disabled QF_LRA model assembly. Subsequently verified by build172362 and checks172378.",
          "artifacts": "tmp/integer-unification/evidence/integer-migration-checks-172294"
        },
        "build_job": "172362",
        "build_status": "passed",
        "checks_job": "172378",
        "static_job": "172379",
        "eight_route_job": "172380",
        "integer_mutations_job": "172381",
        "shared_preservation_gate_job": "172382",
        "checks_status": "passed: release44, Python233, ASan44, backend-disabled full build and three backend-independent tests",
        "seed_base": 203610460,
        "binary_sha256": "231217363ee13a31976f8aa4c5e4fce982538c2737775c69810d2b72ced9299c",
        "checks_artifact": "results/integer-migration-checks-172378",
        "static": {
          "job": "172379",
          "translation_units": 128,
          "configured_tidy": "completed; existing tactic.cpp shared_ptr and external CLI11 leak advisories; deliberate out-of-range enum test diagnostics",
          "include_cleaner": "advisory completed; remaining unused-header suggestions are paired self-includes, retained. Direct-provider advisories remain across the tree; no new unused includes in migration.",
          "artifact": "tmp/integer-unification/evidence/integer-migration-static-172379"
        },
        "eight_route": {
          "job": "172380",
          "routes": {
            "QF_UF": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 601,
              "queries": 0,
              "resource_incomplete": 0,
              "reference_timeout": 0,
              "distinct_inputs": 998
            },
            "QF_LRA": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 1000,
              "queries": 0,
              "resource_incomplete": 0,
              "reference_timeout": 0,
              "distinct_inputs": 261
            },
            "QF_LIA": {
              "cases": 1000,
              "pass": 977,
              "timeout": 22,
              "sat_models": 865,
              "queries": 0,
              "resource_incomplete": 1,
              "reference_timeout": 3,
              "distinct_inputs": 1000
            },
            "QF_UFLRA": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 589,
              "queries": 0,
              "resource_incomplete": 0,
              "reference_timeout": 0,
              "distinct_inputs": 997
            },
            "QF_UFLIA": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 501,
              "queries": 0,
              "resource_incomplete": 0,
              "reference_timeout": 0,
              "distinct_inputs": 672
            },
            "UF": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 0,
              "queries": 0,
              "resource_incomplete": 0,
              "reference_timeout": 0,
              "distinct_inputs": 567
            },
            "incremental_QF_UF": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 6214,
              "queries": 9000,
              "resource_incomplete": 0,
              "reference_timeout": 0,
              "distinct_inputs": 768
            },
            "incremental_QF_LRA": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 8000,
              "queries": 11000,
              "resource_incomplete": 0,
              "reference_timeout": 0,
              "distinct_inputs": 1000
            }
          },
          "total": 8000,
          "pass": 7977,
          "timeout": 22,
          "resource_incomplete": 1,
          "sat_models": 17770,
          "wrong_answer": 0,
          "crash": 0,
          "invalid_model": 0,
          "untriaged_reference_disagreement": 0,
          "seed_base": 203610460,
          "resource_replay_job": "172586",
          "summary": "results/integer-migration-qualified.json",
          "artifact": "results/public-launch/172380",
          "budget_replay": {
            "inputs_or_sessions": 800,
            "queries": 2600,
            "outcomes": {
              "resource-exhausted": 455,
              "pass": 345
            }
          },
          "parser_type_error": 0,
          "unsupported": 0
        },
        "mutations": {
          "job": "172381",
          "summary": [
            {
              "seed": {
                "count": 5,
                "outcomes": {
                  "PASS": 5
                },
                "answers": {
                  "unsat": 3,
                  "sat": 2
                },
                "sat_models": 2,
                "distinct_inputs": 5,
                "resource_triage": [],
                "input_manifest_sha256": "1723ca9131b41d2e2f4f6fe874be9eaf05bda253197ea63c0ebde43212f89592"
              },
              "mutant": {
                "count": 100,
                "outcomes": {
                  "PASS": 89,
                  "INCOMPLETE": 11
                },
                "answers": {
                  "sat": 70,
                  "unknown": 5,
                  "timeout": 5,
                  "unsat": 20
                },
                "sat_models": 70,
                "distinct_inputs": 100,
                "resource_triage": [
                  "84b47d85f5e5d6d583ce18c25e0c82828031c2b79914622633372efaf1a19479",
                  "779897f08d02c7d6f987e5f5905a07606e425a8ac264576841ce8bc65d96f850",
                  "2887d405a9246d926e91360d36c4f1070db0eb095338cd9fd65886dfebbb470b",
                  "338e0c9b37d8cff3ccdff2cf3364a8987387a5f85b3352b1ebdc1cf41ba39509",
                  "ede795510836a112ee4722b60f480b88fe204523dd8c6f6ca3174276a4dc2b1e"
                ],
                "input_manifest_sha256": "27bbef546aef5fecd1a271683f5c7eca785b374a0922bf84eb685e163085887d"
              }
            },
            {
              "seed": {
                "count": 5,
                "outcomes": {
                  "PASS": 5
                },
                "answers": {
                  "unsat": 2,
                  "sat": 3
                },
                "sat_models": 3,
                "distinct_inputs": 5,
                "resource_triage": [],
                "input_manifest_sha256": "ed07e2f277c70b6df75a682e14fe09bb0d73f5e9b96dc80b3576e1bd1a2ce4c4"
              },
              "mutant": {
                "count": 100,
                "outcomes": {
                  "PASS": 100
                },
                "answers": {
                  "sat": 88,
                  "unsat": 12
                },
                "sat_models": 88,
                "distinct_inputs": 99,
                "resource_triage": [],
                "input_manifest_sha256": "2190b5e59ac467a4a714b495f9a9c555c305c612c09820dcf1fe29c81785f295"
              }
            }
          ],
          "unknown_replay_job": "172598",
          "extra_sat_model_job": "172599",
          "extra_sat_note": "One successful candidate SAT with reference timeout was omitted by PASS-only selector; separately replayed and accepted by Dolmen. All 158 mutant SAT models plus five seed SAT models validated.",
          "resource_note": "Five candidate timeouts, one reference timeout, five candidate branch-limit unknowns. All unknowns replayed with zero exit and branch-limit diagnostics on frozen baseline and candidate. Incomplete cases remain separate from passes.",
          "artifact": "results/integer-mutations/172381"
        },
        "shared_preservation": {
          "job": "172382",
          "status": "answer gate complete with resource outcomes; raw UF TypeFuzz failures independently triaged",
          "uf_triage_job": "172584",
          "uf_triage_counts": {
            "input_rejected_by_dolmen": 1615,
            "solver_unknown": 175,
            "solver_timeout": 27,
            "answer_pass": 82,
            "answer_confirmed_cvc5": 1,
            "unresolved": 0
          },
          "invalid_input_note": "All rejected inputs exited Dolmen with code4 and unbound/type diagnostics; they are generator-invalid coverage, never solver passes.",
          "extra_ground_models_job": "172600",
          "lra_validator_triage_job": "172606",
          "model_status": "complete with validator limitation: 4049 direct Dolmen passes, 518 same-input/same-model passes with validator forced to QF_NRA for constant-denominator syntax. Raw task172600_2 failed direct input-logic validation; triage172606 resolves model correctness without relabeling those as direct QF_LRA passes.",
          "artifact": "results/integer-shared-gate-cfc4136",
          "model_summary": {
            "task-0": {
              "count": 920,
              "outcomes": {
                "pass": 920
              }
            },
            "task-1": {
              "count": 917,
              "outcomes": {
                "pass": 917
              }
            },
            "task-2": {
              "count": 864,
              "outcomes": {
                "pass": 346,
                "input-nonconforming": 518
              }
            },
            "task-3": {
              "count": 862,
              "outcomes": {
                "pass": 862
              }
            },
            "task-6": {
              "count": 509,
              "outcomes": {
                "pass": 509
              }
            },
            "task-7": {
              "count": 495,
              "outcomes": {
                "pass": 495
              }
            },
            "lra_triage": {
              "counts": {
                "model-pass-with-wider-logic": 518
              },
              "note": "Same saved assertions and model; validator forced to QF_NRA for constant-denominator syntax. These are not direct passes under the input logic."
            }
          }
        },
        "audit": {
          "script": "scripts/qualification/integer_unification/summarize.py",
          "command": [
            "scripts/qualification/integer_unification/summarize.py",
            "--gate",
            "results/public-launch/172380",
            "--mutations",
            "results/integer-mutations/172381",
            "--candidate",
            "cfc4136dd92f7db7928d7d76b10f5d1050bc9b96",
            "--baseline",
            "8ca8ebe8db75966fc8aefdd928a0878e648e7f10",
            "--resource-triage",
            "results/integer-resource-replay-172586/summary.json",
            "--resource-triage",
            "results/integer-mutation-resource-replay-172598/summary.json",
            "--extra-models",
            "results/integer-extra-sat-models/summary.csv",
            "--out",
            "results/integer-migration-qualified.json"
          ],
          "original_script_sha256": "fdf6f88693c7ede472575608d7cf9a401d45699a79e5e37038ece4be5ef13ed7",
          "summary_schema_fix": "External FuzzSMT omits exit-code columns but only classifies unknown after zero exit. Permit missing column for this QF_LIA route only, retaining mandatory hash-bound replay triage. Explicit nonzero and other missing-code routes remain rejected.",
          "regression_job": "172588",
          "regression_result": "2 tests passed, including new legacy-schema cases",
          "final_script_sha256": "c1349d33558004a89212ee58ca5223219c36c03a7177b25c89682fd597e75398",
          "final_summary": "results/integer-migration-qualified-final.json",
          "final_command": [
            "scripts/qualification/integer_unification/summarize.py",
            "--gate",
            "results/public-launch/172380",
            "--mutations",
            "results/integer-mutations/172381",
            "--candidate",
            "cfc4136dd92f7db7928d7d76b10f5d1050bc9b96",
            "--baseline",
            "8ca8ebe8db75966fc8aefdd928a0878e648e7f10",
            "--resource-triage",
            "results/integer-resource-replay-172586/summary.json",
            "--resource-triage",
            "results/integer-mutation-resource-replay-172598/summary.json",
            "--extra-models",
            "results/integer-extra-sat-models/summary.csv",
            "--out",
            "results/integer-migration-qualified-final.json"
          ],
          "slurm_job": "172612",
          "slurm_summary": "results/integer-migration-qualified-slurm.json",
          "slurm_status": "completed0:0; same audited coverage"
        },
        "remaining": "Model coverage and recorded-reference reconciliation closed by2026-10-07-integer-model-coverage-audit. All14001full-corpusSAT measurements pass Dolmen directly; preservation/probes564direct+20explicit wider-logic checks; lost-case50direct. Recorded references agree on20796measurements;261rows/138inputs lack decisive references. Migration remains unfinished due repeatedprp-67-50loss and retained small-suite performance flags; final migration acceptance is not granted by this audit.",
        "commands": {
          "build": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir /tmp/primo-integer-extraction --build-via-slurm --remote-dir primo-integer-unification-extraction --reuse-dependencies --cmake <existing-cmake> --cxx-header-manifest <matching-header-manifest> --extra-target all --jobs 4",
          "checks": "PRIMO_EXPECTED_REVISION=cfc4136 sbatch scripts/qualification/integer_unification/migration_checks.sbatch",
          "static": "sbatch scripts/qualification/public_static.sbatch",
          "eight_route": "PRIMO_EXPECTED_REVISION=cfc4136 PRIMO_SEED_BASE=203610460 PRIMO_BUDGET_REPLAY=1 sbatch --dependency=afterok:172378 --array=0-31%16 scripts/qualification/public_launch.sbatch",
          "mutations": "PRIMO_EXPECTED_REVISION=cfc4136 PRIMO_SEED_BASE=203610460 sbatch --dependency=afterok:172378 scripts/qualification/integer_unification/mutations.sbatch",
          "shared": "PRIMO_EXPECTED_GIT=cfc4136 sbatch --dependency=afterok:172378 --array=0-17%8 scripts/slurm_shared_assignment_gate.sbatch",
          "shared_models": "PRIMO_EXPECTED_REVISION=cfc4136 sbatch scripts/qualification/integer_unification/shared_models.sbatch",
          "uf_triage": "sbatch --dependency=afterany:172382 --array=10-16%7 scripts/qualification/shared_assignment/uf-triage.sbatch",
          "lra_validator_triage": "sbatch --dependency=afterany:172600 results/primo-integer-shared-lra-triage.sbatch",
          "resource_replays": [
            "sbatch results/primo-integer-resource-replay.sbatch",
            "sbatch results/primo-integer-mutation-resource-replay.sbatch"
          ]
        },
        "timing": {
          "status": "rejected-cfc4136-repeated-lost-solves; remaining measurements running",
          "candidate_commit": "cfc4136dd92f7db7928d7d76b10f5d1050bc9b96",
          "baseline_commit": "8ca8ebe8db75966fc8aefdd928a0878e648e7f10",
          "frozen_binaries": {
            "baseline": "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4",
            "candidate": "231217363ee13a31976f8aa4c5e4fce982538c2737775c69810d2b72ced9299c"
          },
          "jobs": {
            "QF_LIA": "172616",
            "QF_UFLIA": "172617",
            "five_logic_preservation": "172618",
            "shared_default": "172780",
            "shared_online": "172781",
            "shared_lazy_uf": "172782",
            "shared_offline_uflia": "172783"
          },
          "replay_jobs": {
            "QF_LIA_round0": "172666",
            "QF_LIA_round1": "172667",
            "QF_UFLIA_round0": "172668",
            "QF_UFLIA_round1": "172669",
            "five_logic_preservation": "172670",
            "shared_profiles": "172798",
            "shared_lra_validator_triage": "172799"
          },
          "full_resources": {
            "timeout_seconds": 60,
            "memory_gib": 8,
            "cpus": 1,
            "rounds": 2,
            "solver_args": [
              "--quiet",
              "--stats"
            ],
            "hint": "nomultithread",
            "initial_partition": "compute",
            "pending_jobs_partition_update": "compute,gpu; CPU-only allocation, no GPU requested; already running compute shards unchanged",
            "pairing": "Both binaries and reversed second-round order within each allocation; node recorded per shard"
          },
          "shards": {
            "QF_LIA": 256,
            "QF_UFLIA": 16
          },
          "replay_resources": {
            "model_timeout_seconds": 180,
            "dolmen_timeout_seconds": 60,
            "dolmen_size": "8G",
            "memory_gib": 12,
            "cpus": 1,
            "timing_dependency": "afterany of all full and preservation timing arrays"
          },
          "artifacts": [
            "results/integer-paired",
            "results/integer-preservation-paired",
            "results/integer-shared-paired"
          ],
          "submission_artifacts": [
            "results/primo-integer-timing-submit.sh",
            "results/primo-integer-replay-submit.sh",
            "results/primo-integer-shared-submit.sh"
          ],
          "acceptance": "No loss reproduced in at least two of three further paired runs; aggregate PAR2 ratio <=1.02 in each full affected division; all candidate ground SAT timing rows independently validated.",
          "five_logic_preservation": {
            "QF_LIA": {
              "timing_status": "needs-triage",
              "aggregate": {
                "baseline": {
                  "rows": 40,
                  "solved": 40,
                  "sat": 28,
                  "unsat": 12,
                  "timeout": 0,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 0,
                  "wrong_answer": 0,
                  "par2": 22.887871
                },
                "candidate": {
                  "rows": 40,
                  "solved": 40,
                  "sat": 28,
                  "unsat": 12,
                  "timeout": 0,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 0,
                  "wrong_answer": 0,
                  "par2": 25.999667
                },
                "par2_ratio": 1.1359582986115222,
                "common_runtime_ratio": 1.1359582986115222,
                "lost": [],
                "gained": [],
                "disagreements": []
              }
            },
            "QF_LRA": {
              "timing_status": "needs-triage",
              "aggregate": {
                "baseline": {
                  "rows": 40,
                  "solved": 40,
                  "sat": 28,
                  "unsat": 12,
                  "timeout": 0,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 0,
                  "wrong_answer": 0,
                  "par2": 23.931459
                },
                "candidate": {
                  "rows": 40,
                  "solved": 40,
                  "sat": 28,
                  "unsat": 12,
                  "timeout": 0,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 0,
                  "wrong_answer": 0,
                  "par2": 26.047765000000002
                },
                "par2_ratio": 1.0884319673113119,
                "common_runtime_ratio": 1.0884319673113119,
                "lost": [],
                "gained": [],
                "disagreements": []
              }
            },
            "QF_UF": {
              "timing_status": "needs-triage",
              "aggregate": {
                "baseline": {
                  "rows": 40,
                  "solved": 40,
                  "sat": 8,
                  "unsat": 32,
                  "timeout": 0,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 0,
                  "wrong_answer": 0,
                  "par2": 26.72856
                },
                "candidate": {
                  "rows": 40,
                  "solved": 40,
                  "sat": 8,
                  "unsat": 32,
                  "timeout": 0,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 0,
                  "wrong_answer": 0,
                  "par2": 29.214668
                },
                "par2_ratio": 1.093013166440691,
                "common_runtime_ratio": 1.093013166440691,
                "lost": [],
                "gained": [],
                "disagreements": []
              }
            },
            "QF_UFLIA": {
              "timing_status": "pass",
              "aggregate": {
                "baseline": {
                  "rows": 40,
                  "solved": 40,
                  "sat": 34,
                  "unsat": 6,
                  "timeout": 0,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 0,
                  "wrong_answer": 0,
                  "par2": 19.941238
                },
                "candidate": {
                  "rows": 40,
                  "solved": 40,
                  "sat": 34,
                  "unsat": 6,
                  "timeout": 0,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 0,
                  "wrong_answer": 0,
                  "par2": 19.27625
                },
                "par2_ratio": 0.9666526220689008,
                "common_runtime_ratio": 0.9666526220689008,
                "lost": [],
                "gained": [],
                "disagreements": []
              }
            },
            "QF_UFLRA": {
              "timing_status": "pass",
              "aggregate": {
                "baseline": {
                  "rows": 40,
                  "solved": 40,
                  "sat": 24,
                  "unsat": 16,
                  "timeout": 0,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 0,
                  "wrong_answer": 0,
                  "par2": 18.803288
                },
                "candidate": {
                  "rows": 40,
                  "solved": 40,
                  "sat": 24,
                  "unsat": 16,
                  "timeout": 0,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 0,
                  "wrong_answer": 0,
                  "par2": 17.974622
                },
                "par2_ratio": 0.9559297288857141,
                "common_runtime_ratio": 0.9559297288857141,
                "lost": [],
                "gained": [],
                "disagreements": []
              }
            }
          },
          "shared_profiles": {
            "default": {
              "timing_status": "pass",
              "aggregate": {
                "baseline": {
                  "rows": 240,
                  "solved": 212,
                  "sat": 104,
                  "unsat": 108,
                  "timeout": 12,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 16,
                  "wrong_answer": 0,
                  "par2": 292.091614
                },
                "candidate": {
                  "rows": 240,
                  "solved": 212,
                  "sat": 104,
                  "unsat": 108,
                  "timeout": 12,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 16,
                  "wrong_answer": 0,
                  "par2": 292.145708
                },
                "par2_ratio": 1.00018519532026,
                "common_runtime_ratio": 1.004473679030773,
                "lost": [],
                "gained": [],
                "disagreements": []
              }
            },
            "online": {
              "timing_status": "needs-triage",
              "aggregate": {
                "baseline": {
                  "rows": 240,
                  "solved": 204,
                  "sat": 104,
                  "unsat": 100,
                  "timeout": 20,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 16,
                  "wrong_answer": 0,
                  "par2": 373.414409
                },
                "candidate": {
                  "rows": 240,
                  "solved": 204,
                  "sat": 104,
                  "unsat": 100,
                  "timeout": 20,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 16,
                  "wrong_answer": 0,
                  "par2": 373.580847
                },
                "par2_ratio": 1.0004457192759266,
                "common_runtime_ratio": 1.0124074046050033,
                "lost": [],
                "gained": [],
                "disagreements": []
              }
            },
            "lazy-uf": {
              "timing_status": "pass",
              "aggregate": {
                "baseline": {
                  "rows": 62,
                  "solved": 46,
                  "sat": 20,
                  "unsat": 26,
                  "timeout": 16,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 0,
                  "wrong_answer": 0,
                  "par2": 160.376394
                },
                "candidate": {
                  "rows": 62,
                  "solved": 46,
                  "sat": 20,
                  "unsat": 26,
                  "timeout": 16,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 0,
                  "wrong_answer": 0,
                  "par2": 160.379643
                },
                "par2_ratio": 1.000020258592421,
                "common_runtime_ratio": 1.0086319123046594,
                "lost": [],
                "gained": [],
                "disagreements": []
              }
            },
            "offline-uflia": {
              "timing_status": "pass",
              "aggregate": {
                "baseline": {
                  "rows": 32,
                  "solved": 26,
                  "sat": 12,
                  "unsat": 14,
                  "timeout": 6,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 0,
                  "wrong_answer": 0,
                  "par2": 70.418998
                },
                "candidate": {
                  "rows": 32,
                  "solved": 26,
                  "sat": 12,
                  "unsat": 14,
                  "timeout": 6,
                  "error": 0,
                  "unsupported": 0,
                  "unknown": 0,
                  "wrong_answer": 0,
                  "par2": 70.368346
                },
                "par2_ratio": 0.9992807054709867,
                "common_runtime_ratio": 0.9951384960434776,
                "lost": [],
                "gained": [],
                "disagreements": []
              }
            }
          },
          "preservation_note": "All small preservation solved counts stable; no disagreements/lost solves. Five-logic QF_LIA/LRA/UF runtime regressions retained; four-profile online common runtime+1.24% exceeds its strict1% sample flag. Full-division PAR2 and lost-solve gates remain pending; no timing acceptance claimed.",
          "historical_references": {
            "QF_LIA/z3": {
              "coverage": 13306,
              "metrics": {
                "rows": 13306,
                "solved": 12144,
                "sat": 7826,
                "unsat": 4318,
                "timeout": 1162,
                "error": 0,
                "unsupported": 0,
                "unknown": 0,
                "wrong_answer": 0,
                "par2": 174585.785332
              },
              "solver": {
                "path": "/home/janotmik/primo-cadical-profile/contrib/local/bin/z3",
                "sha256": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0",
                "version": "Z3 version 5.1.0 - 64 bit"
              },
              "root": "results/evaluation-refresh-20261005/historical-reference-metadata/QF_LIA/z3",
              "measurement_note": "Historical 1CPU/4GiB/60s reference run; current paired Primo runs use1CPU/8GiB/60s. Exact input path/hash matches frozen current corpus. Context only, not same-node controlled speed comparison."
            },
            "QF_UFLIA/z3": {
              "coverage": 659,
              "metrics": {
                "rows": 659,
                "solved": 619,
                "sat": 429,
                "unsat": 190,
                "timeout": 40,
                "error": 0,
                "unsupported": 0,
                "unknown": 0,
                "wrong_answer": 0,
                "par2": 5390.248302
              },
              "solver": {
                "path": "/home/janotmik/primo-cadical-profile/contrib/local/bin/z3",
                "sha256": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0",
                "version": "Z3 version 5.1.0 - 64 bit"
              },
              "root": "results/evaluation-refresh-20261005/historical-reference-metadata/QF_UFLIA/z3",
              "measurement_note": "Historical 1CPU/4GiB/60s reference run; current paired Primo runs use1CPU/8GiB/60s. Exact input path/hash matches frozen current corpus. Context only, not same-node controlled speed comparison."
            },
            "QF_UFLIA/cvc5": {
              "coverage": 659,
              "metrics": {
                "rows": 659,
                "solved": 604,
                "sat": 421,
                "unsat": 183,
                "timeout": 55,
                "error": 0,
                "unsupported": 0,
                "unknown": 0,
                "wrong_answer": 0,
                "par2": 7433.8374650000005
              },
              "solver": {
                "path": "/home/janotmik/primo-cadical-profile/contrib/local/bin/cvc5",
                "sha256": "4a93548398445cf1a774655583f5465b156c26f63f2cdfb94f4728fdf7adde46",
                "version": "cvc5 1.3.4 [git f3b21c4 on branch HEAD]\ncompiled with GCC version Ubuntu Clang 18.1.3 (1ubuntu1) on May  7 2026 15:33:02\n\nCopyright (c) 2009-2026 by the authors and their institutional\naffiliations listed at https://cvc5.github.io/people.html\n\ncvc5 is open-source and is covered by the BSD license (modified).\n\nTHIS SOFTWARE IS PROVIDED AS-IS, WITHOUT ANY WARRANTIES.\nUSE AT YOUR OWN RISK.\n\nThis version of cvc5 is linked against the following non-(L)GPL'ed\nthird party libraries.\n\n  CaDiCaL - Simplified Satisfiability Solver\n  See https://github.com/arminbiere/cadical for copyright information.\n\n  SymFPU - The Symbolic Floating Point Unit\n  See https://github.com/martin-cs/symfpu/tree/CVC4 for copyright information.\n\nThis version of cvc5 is linked against the following third party\nlibraries covered by the LGPLv3 license.\nSee licenses/lgpl-3.0.txt for more information.\n\n  GMP - Gnu Multi Precision Arithmetic Library\n  See http://gmplib.org for copyright information.\n\n  LibPoly polynomial library\n  See https://github.com/SRI-CSL/libpoly for copyright and\n  licensing information.\n\ncvc5 is statically linked against these libraries. To recompile\nthis version of cvc5 with different versions of these libraries\nfollow the instructions on https://github.com/cvc5/cvc5/blob/main/INSTALL.md\n\nSee the file COPYING (distributed with the source code, and with\nall binaries) for the full cvc5 copyright, licensing, and (lack of)\nwarranty information."
              },
              "root": "results/evaluation-refresh-20261005/historical-reference-metadata/QF_UFLIA/cvc5",
              "measurement_note": "Historical 1CPU/4GiB/60s reference run; current paired Primo runs use1CPU/8GiB/60s. Exact input path/hash matches frozen current corpus. Context only, not same-node controlled speed comparison."
            },
            "unavailable": "Historical cvc5 QF_LIA has12445/13306 rows and is not used as a full-division timing baseline."
          },
          "loss_reruns": {
            "job": "172809",
            "manifest": "results/integer-first-losses.txt",
            "artifact": "results/integer-losses-batch1",
            "resources": "3 paired repetitions; 60 seconds, 8 GiB, 1 CPU, nomultithread; amd-2 matches original losses",
            "confirmed_losses": {
              "2019-cmodelsdiff/labyrinth/0143-labyrinth-14-0.smt2": {
                "baseline_seconds": [
                  11.254658,
                  10.443865,
                  10.699052
                ],
                "candidate": "3/3 timeouts"
              },
              "2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2": {
                "baseline_seconds": [
                  35.76087,
                  37.326277,
                  35.729046
                ],
                "candidate": "3/3 timeouts"
              }
            },
            "model_replay_jobs": [
              "172812",
              "172813",
              "172814"
            ],
            "status": "completed; six of initial eleven losses repeated in at least two pairs",
            "summary": {
              "aggregate": {
                "baseline": {
                  "error": 0,
                  "par2": 1877.537695,
                  "rows": 33,
                  "sat": 20,
                  "solved": 29,
                  "timeout": 4,
                  "unknown": 0,
                  "unsat": 9,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 597.412725,
                "candidate": {
                  "error": 0,
                  "par2": 3257.438076,
                  "rows": 33,
                  "sat": 8,
                  "solved": 11,
                  "timeout": 22,
                  "unknown": 0,
                  "unsat": 3,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 617.438076,
                "common_runtime_ratio": 1.0335201279818738,
                "common_solved": 11,
                "disagreements": [],
                "gained": [],
                "lost": [
                  "round-0:2019-cmodelsdiff/labyrinth/0143-labyrinth-14-0.smt2",
                  "round-0:2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2",
                  "round-0:nec-smt/large/checkpass_pwd/prp-33-48.smt2",
                  "round-0:nec-smt/large/checkpass_pwd/prp-34-47.smt2",
                  "round-0:nec-smt/large/checkpass_pwd/prp-53-50.smt2",
                  "round-1:2019-cmodelsdiff/labyrinth/0143-labyrinth-14-0.smt2",
                  "round-1:2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2",
                  "round-1:nec-smt/large/getoption_group/prp-9-49.smt2",
                  "round-1:nec-smt/large/checkpass_pwd/prp-33-48.smt2",
                  "round-1:nec-smt/large/checkpass_pwd/prp-34-47.smt2",
                  "round-1:nec-smt/large/checkpass_pwd/prp-53-50.smt2",
                  "round-1:nec-smt/large/checkpass_pwd/prp-55-50.smt2",
                  "round-2:2019-cmodelsdiff/labyrinth/0143-labyrinth-14-0.smt2",
                  "round-2:2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2",
                  "round-2:nec-smt/large/checkpass/prp-13-49.smt2",
                  "round-2:nec-smt/large/checkpass_pwd/prp-33-48.smt2",
                  "round-2:nec-smt/large/checkpass_pwd/prp-53-50.smt2",
                  "round-2:nec-smt/large/checkpass_pwd/prp-55-50.smt2"
                ],
                "par2_ratio": 1.734952158177575
              },
              "expected_unique_inputs": 11,
              "families": {
                "2019-cmodelsdiff": {
                  "baseline": {
                    "error": 0,
                    "par2": 141.213768,
                    "rows": 6,
                    "sat": 6,
                    "solved": 6,
                    "timeout": 0,
                    "unknown": 0,
                    "unsat": 0,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "baseline_common_seconds": 0,
                  "candidate": {
                    "error": 0,
                    "par2": 720.0,
                    "rows": 6,
                    "sat": 0,
                    "solved": 0,
                    "timeout": 6,
                    "unknown": 0,
                    "unsat": 0,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "candidate_common_seconds": 0,
                  "common_runtime_ratio": null,
                  "common_solved": 0,
                  "disagreements": [],
                  "gained": [],
                  "lost": [
                    "round-0:2019-cmodelsdiff/labyrinth/0143-labyrinth-14-0.smt2",
                    "round-0:2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2",
                    "round-1:2019-cmodelsdiff/labyrinth/0143-labyrinth-14-0.smt2",
                    "round-1:2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2",
                    "round-2:2019-cmodelsdiff/labyrinth/0143-labyrinth-14-0.smt2",
                    "round-2:2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2"
                  ],
                  "par2_ratio": 5.0986529868674
                },
                "nec-smt": {
                  "baseline": {
                    "error": 0,
                    "par2": 1736.323927,
                    "rows": 27,
                    "sat": 14,
                    "solved": 23,
                    "timeout": 4,
                    "unknown": 0,
                    "unsat": 9,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "baseline_common_seconds": 597.412725,
                  "candidate": {
                    "error": 0,
                    "par2": 2537.438076,
                    "rows": 27,
                    "sat": 8,
                    "solved": 11,
                    "timeout": 16,
                    "unknown": 0,
                    "unsat": 3,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "candidate_common_seconds": 617.438076,
                  "common_runtime_ratio": 1.0335201279818738,
                  "common_solved": 11,
                  "disagreements": [],
                  "gained": [],
                  "lost": [
                    "round-0:nec-smt/large/checkpass_pwd/prp-33-48.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-34-47.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-53-50.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-9-49.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-33-48.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-34-47.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-53-50.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-55-50.smt2",
                    "round-2:nec-smt/large/checkpass/prp-13-49.smt2",
                    "round-2:nec-smt/large/checkpass_pwd/prp-33-48.smt2",
                    "round-2:nec-smt/large/checkpass_pwd/prp-53-50.smt2",
                    "round-2:nec-smt/large/checkpass_pwd/prp-55-50.smt2"
                  ],
                  "par2_ratio": 1.4613851923265007
                }
              },
              "identities": {
                "baseline": [
                  "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                ],
                "candidate": [
                  "231217363ee13a31976f8aa4c5e4fce982538c2737775c69810d2b72ced9299c"
                ]
              },
              "loss_counts": {
                "2019-cmodelsdiff/labyrinth/0143-labyrinth-14-0.smt2": 3,
                "2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2": 3,
                "nec-smt/large/checkpass/prp-13-49.smt2": 1,
                "nec-smt/large/checkpass_pwd/prp-33-48.smt2": 3,
                "nec-smt/large/checkpass_pwd/prp-34-47.smt2": 2,
                "nec-smt/large/checkpass_pwd/prp-53-50.smt2": 3,
                "nec-smt/large/checkpass_pwd/prp-55-50.smt2": 2,
                "nec-smt/large/getoption_group/prp-9-49.smt2": 1
              },
              "loss_rerun_status": "repeated-loss",
              "note": "Three complete paired reruns; a loss in at least two blocks acceptance. This verdict covers the repeat-loss criterion only, not the full-corpus timing thresholds, model validation or recorded-reference evidence. Timeout/unknown rows remain explicit in each pair's metrics.",
              "ratio_limit": 1.01,
              "repeated_losses": [
                "2019-cmodelsdiff/labyrinth/0143-labyrinth-14-0.smt2",
                "2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2",
                "nec-smt/large/checkpass_pwd/prp-33-48.smt2",
                "nec-smt/large/checkpass_pwd/prp-34-47.smt2",
                "nec-smt/large/checkpass_pwd/prp-53-50.smt2",
                "nec-smt/large/checkpass_pwd/prp-55-50.smt2"
              ],
              "rounds": [
                {
                  "baseline": {
                    "error": 0,
                    "par2": 731.060644,
                    "rows": 11,
                    "sat": 6,
                    "solved": 8,
                    "timeout": 3,
                    "unknown": 0,
                    "unsat": 2,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "baseline_common_seconds": 165.594243,
                  "candidate": {
                    "error": 0,
                    "par2": 1132.780878,
                    "rows": 11,
                    "sat": 2,
                    "solved": 3,
                    "timeout": 8,
                    "unknown": 0,
                    "unsat": 1,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "candidate_common_seconds": 172.780878,
                  "common_runtime_ratio": 1.0433990630942405,
                  "common_solved": 3,
                  "disagreements": [],
                  "gained": [],
                  "lost": [
                    "2019-cmodelsdiff/labyrinth/0143-labyrinth-14-0.smt2",
                    "2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2",
                    "nec-smt/large/checkpass_pwd/prp-33-48.smt2",
                    "nec-smt/large/checkpass_pwd/prp-34-47.smt2",
                    "nec-smt/large/checkpass_pwd/prp-53-50.smt2"
                  ],
                  "par2_ratio": 1.5495032967470206
                },
                {
                  "baseline": {
                    "error": 0,
                    "par2": 606.290962,
                    "rows": 11,
                    "sat": 7,
                    "solved": 10,
                    "timeout": 1,
                    "unknown": 0,
                    "unsat": 3,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "baseline_common_seconds": 169.514743,
                  "candidate": {
                    "error": 0,
                    "par2": 1129.466532,
                    "rows": 11,
                    "sat": 2,
                    "solved": 3,
                    "timeout": 8,
                    "unknown": 0,
                    "unsat": 1,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "candidate_common_seconds": 169.466532,
                  "common_runtime_ratio": 0.999715594058978,
                  "common_solved": 3,
                  "disagreements": [],
                  "gained": [],
                  "lost": [
                    "2019-cmodelsdiff/labyrinth/0143-labyrinth-14-0.smt2",
                    "2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2",
                    "nec-smt/large/getoption_group/prp-9-49.smt2",
                    "nec-smt/large/checkpass_pwd/prp-33-48.smt2",
                    "nec-smt/large/checkpass_pwd/prp-34-47.smt2",
                    "nec-smt/large/checkpass_pwd/prp-53-50.smt2",
                    "nec-smt/large/checkpass_pwd/prp-55-50.smt2"
                  ],
                  "par2_ratio": 1.8629117087184945
                },
                {
                  "baseline": {
                    "error": 0,
                    "par2": 540.186089,
                    "rows": 11,
                    "sat": 7,
                    "solved": 11,
                    "timeout": 0,
                    "unknown": 0,
                    "unsat": 4,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "baseline_common_seconds": 262.303739,
                  "candidate": {
                    "error": 0,
                    "par2": 995.190666,
                    "rows": 11,
                    "sat": 4,
                    "solved": 5,
                    "timeout": 6,
                    "unknown": 0,
                    "unsat": 1,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "candidate_common_seconds": 275.19066599999996,
                  "common_runtime_ratio": 1.0491297876619288,
                  "common_solved": 5,
                  "disagreements": [],
                  "gained": [],
                  "lost": [
                    "2019-cmodelsdiff/labyrinth/0143-labyrinth-14-0.smt2",
                    "2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2",
                    "nec-smt/large/checkpass/prp-13-49.smt2",
                    "nec-smt/large/checkpass_pwd/prp-33-48.smt2",
                    "nec-smt/large/checkpass_pwd/prp-53-50.smt2",
                    "nec-smt/large/checkpass_pwd/prp-55-50.smt2"
                  ],
                  "par2_ratio": 1.8423108004175204
                }
              ],
              "timeout": 60.0,
              "timing_status": "needs-triage"
            }
          },
          "QF_UFLIA_complete": {
            "aggregate": {
              "baseline": {
                "error": 0,
                "par2": 22571.64008,
                "rows": 1318,
                "sat": 810,
                "solved": 1150,
                "timeout": 168,
                "unknown": 0,
                "unsat": 340,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "baseline_common_seconds": 2411.64008,
              "candidate": {
                "error": 0,
                "par2": 22570.786199,
                "rows": 1318,
                "sat": 810,
                "solved": 1150,
                "timeout": 168,
                "unknown": 0,
                "unsat": 340,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "candidate_common_seconds": 2410.786199,
              "common_runtime_ratio": 0.9996459334844029,
              "common_solved": 1150,
              "disagreements": [],
              "gained": [],
              "lost": [],
              "par2_ratio": 0.9999621701836031
            },
            "expected_unique_inputs": 659,
            "families": {
              "20230314-Jaroslav-Bendik-Certora": {
                "baseline": {
                  "error": 0,
                  "par2": 17064.161802,
                  "rows": 152,
                  "sat": 10,
                  "solved": 12,
                  "timeout": 140,
                  "unknown": 0,
                  "unsat": 2,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 264.16180199999997,
                "candidate": {
                  "error": 0,
                  "par2": 17068.049871,
                  "rows": 152,
                  "sat": 10,
                  "solved": 12,
                  "timeout": 140,
                  "unknown": 0,
                  "unsat": 2,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 268.049871,
                "common_runtime_ratio": 1.0147185133148056,
                "common_solved": 12,
                "disagreements": [],
                "gained": [],
                "lost": [],
                "par2_ratio": 1.0002278499843775
              },
              "TwoSquares": {
                "baseline": {
                  "error": 0,
                  "par2": 0.897804,
                  "rows": 42,
                  "sat": 10,
                  "solved": 42,
                  "timeout": 0,
                  "unknown": 0,
                  "unsat": 32,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 0.897804,
                "candidate": {
                  "error": 0,
                  "par2": 0.8625860000000001,
                  "rows": 42,
                  "sat": 10,
                  "solved": 42,
                  "timeout": 0,
                  "unknown": 0,
                  "unsat": 32,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 0.8625860000000001,
                "common_runtime_ratio": 0.9607731754369551,
                "common_solved": 42,
                "disagreements": [],
                "gained": [],
                "lost": [],
                "par2_ratio": 0.9607731754369551
              },
              "mathsat": {
                "baseline": {
                  "error": 0,
                  "par2": 4758.825517,
                  "rows": 908,
                  "sat": 626,
                  "solved": 882,
                  "timeout": 26,
                  "unknown": 0,
                  "unsat": 256,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 1638.825517,
                "candidate": {
                  "error": 0,
                  "par2": 4750.203506,
                  "rows": 908,
                  "sat": 626,
                  "solved": 882,
                  "timeout": 26,
                  "unknown": 0,
                  "unsat": 256,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 1630.203506,
                "common_runtime_ratio": 0.9947389084984574,
                "common_solved": 882,
                "disagreements": [],
                "gained": [],
                "lost": [],
                "par2_ratio": 0.9981882061090074
              },
              "wisas": {
                "baseline": {
                  "error": 0,
                  "par2": 747.754957,
                  "rows": 216,
                  "sat": 164,
                  "solved": 214,
                  "timeout": 2,
                  "unknown": 0,
                  "unsat": 50,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 507.754957,
                "candidate": {
                  "error": 0,
                  "par2": 751.670236,
                  "rows": 216,
                  "sat": 164,
                  "solved": 214,
                  "timeout": 2,
                  "unknown": 0,
                  "unsat": 50,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 511.670236,
                "common_runtime_ratio": 1.0077109616479825,
                "common_solved": 214,
                "disagreements": [],
                "gained": [],
                "lost": [],
                "par2_ratio": 1.0052360455298193
              }
            },
            "identities": {
              "baseline": [
                "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
              ],
              "candidate": [
                "231217363ee13a31976f8aa4c5e4fce982538c2737775c69810d2b72ced9299c"
              ]
            },
            "note": "Timing only; independent SAT-model coverage and recorded-reference joins are separate acceptance gates. Any lost solve requires three paired reruns; loss in at least two blocks acceptance.",
            "ratio_limit": 1.02,
            "rounds": [
              {
                "baseline": {
                  "error": 0,
                  "par2": 11305.052812,
                  "rows": 659,
                  "sat": 405,
                  "solved": 575,
                  "timeout": 84,
                  "unknown": 0,
                  "unsat": 170,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 1225.052812,
                "candidate": {
                  "error": 0,
                  "par2": 11315.235546,
                  "rows": 659,
                  "sat": 405,
                  "solved": 575,
                  "timeout": 84,
                  "unknown": 0,
                  "unsat": 170,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 1235.235546,
                "common_runtime_ratio": 1.0083120775694365,
                "common_solved": 575,
                "disagreements": [],
                "gained": [],
                "lost": [],
                "par2_ratio": 1.0009007241424994
              },
              {
                "baseline": {
                  "error": 0,
                  "par2": 11266.587268,
                  "rows": 659,
                  "sat": 405,
                  "solved": 575,
                  "timeout": 84,
                  "unknown": 0,
                  "unsat": 170,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 1186.587268,
                "candidate": {
                  "error": 0,
                  "par2": 11255.550653,
                  "rows": 659,
                  "sat": 405,
                  "solved": 575,
                  "timeout": 84,
                  "unknown": 0,
                  "unsat": 170,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 1175.550653,
                "common_runtime_ratio": 0.9906988594116619,
                "common_solved": 575,
                "disagreements": [],
                "gained": [],
                "lost": [],
                "par2_ratio": 0.9990204118836105
              }
            ],
            "timeout": 60.0,
            "timing_status": "pass"
          },
          "replay_hold_note": "All original timing model replays held with scontrol hold pending final candidate timing dependency; release after final timing jobs are recorded. Held jobs:172666,172667,172668,172669,172670,172798,172799,172812,172813,172814.",
          "loss_reruns_batch2": {
            "jobs": {
              "amd-2": "173378",
              "dgx-3": "173379",
              "node-02": "173387",
              "node-03": "173388",
              "node-04": "173389",
              "node-05": "173390",
              "node-06": "173391",
              "node-09": "173392"
            },
            "inputs": 33,
            "status": "running; additional lost solves observed after first11-input batch",
            "resources": "3paired runs60s8GiB1CPU,nomultithread,node pinned to original lost measurement",
            "inputs_artifact": "results/integer-losses-batch2-inputs.json",
            "jobs_artifact": "results/integer-losses-batch2-jobs.txt",
            "measurements_artifact": "results/integer-losses-batch2",
            "replay_job": "173394",
            "replay_status": "Released at offline checkpoint; pending scheduler dependencies on submitted timing jobs. Validation not yet complete.",
            "submission_note": "Initial manifest glob also selected the jobs log and attempted invalid node jobs; SLURM rejected that submission. Remaining node manifests submitted explicitly; no duplicate valid jobs."
          },
          "loss_reruns_batch3": {
            "status": "submitted for completeness of rejected cfc4136 measurement trail",
            "jobs": {
              "dgx-3": 173547,
              "node-03": 173548,
              "node-04": 173549,
              "node-05": 173550,
              "node-06": 173551,
              "node-07": 173552,
              "node-09": 173555
            },
            "inputs": 17,
            "resources": "Three paired rounds,60s8GiB1CPU,nomultithread,pinned original node",
            "manifest": "results/integer-losses-batch3-inputs.json",
            "artifact": "results/integer-losses-batch3",
            "model_replay_job": 173565,
            "model_replay_status": "Released at offline checkpoint; pending scheduler dependencies on submitted timing jobs. Validation not yet complete.",
            "preflight": "check-only --no-sync --build-via-slurm passed cfc4136"
          }
        },
        "retention_followup": {
          "snapshot": "94be9e44b657b8a73725ee0c521ef619d02a86d3",
          "status": "superseded-by-observation-followup; small labyrinth recovered, larger probe still times out",
          "diagnosis": "Legacy standalone OnlineLraPropagator marks external clauses permanent. Shared ComponentDispatcher marked them forgettable. Explicit recipe policy restores standalone false and preserves combined true; performance hypothesis awaits paired probes.",
          "profile_job": "172818",
          "profile_artifact": "results/integer-profile-172818",
          "profile_command": "timeout --signal=TERM --kill-after=15 100 valgrind --tool=callgrind --callgrind-out-file=<artifact> <frozen-baseline-or-candidate> --quiet --stats <labyrinth0143>; SLURM 1 CPU 8 GiB, separate diagnostic, not timing evidence",
          "build_job": "172820",
          "checks_job": "172823",
          "probe_job": "172824",
          "probe_artifact": "results/retention-probe in retention workspace",
          "probe_manifest": [
            "2019-cmodelsdiff/labyrinth/0143-labyrinth-14-0.smt2",
            "2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2",
            "nec-smt/large/checkpass_pwd/prp-30-41.smt2"
          ],
          "local_lint": "passed",
          "documentation_review": "Independent reviewer accepted retention paragraph and pinned references; lia blob f56f3849d7e5549c53232fc3c60a648d49adc998, config blob 3d69a1409912285b4f5a433e7bcdf80f5deb2ecd; runtime qualification excluded.",
          "probe_node_policy": "Initial amd-2 restriction removed before any probes started; paired probes scheduled compute,gpu with node recorded, unchanged 60s/8GiB/1CPU limits",
          "profile_attempts": {
            "172818": "Callgrind empty dumps, timeout SIGKILL; not usable",
            "172829": "Cancelled: instrumentation control waiting; debuginfod downloads suspected",
            "172838": "GDB attempts ended during debuginfod downloads; not usable",
            "172888": "DEBUGINFOD_URLS empty; Callgrind explicit bounded dump succeeds, but interval mainly parsing; not SAT-search timing evidence",
            "172934": "DEBUGINFOD_URLS empty; bounded 8s GDB samples captured baseline SAT clause reduction/garbage collection and cfc SAT fast-elimination/subsumption. Single stacks are diagnostic locations, not frequency estimates."
          },
          "checks_status": "completed 172823; release44/44, Python233, ASan44/44, scaffold build and3/3",
          "binary_sha256": "4e54275582dff389645815441250185cc06f975d501cc43d71c5722e1ab2c971",
          "probe_summary": {
            "aggregate": {
              "baseline": {
                "error": 0,
                "par2": 461.021733,
                "rows": 9,
                "sat": 8,
                "solved": 8,
                "timeout": 1,
                "unknown": 0,
                "unsat": 0,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "baseline_common_seconds": 168.178351,
              "candidate": {
                "error": 0,
                "par2": 650.472693,
                "rows": 9,
                "sat": 5,
                "solved": 5,
                "timeout": 4,
                "unknown": 0,
                "unsat": 0,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "candidate_common_seconds": 170.472693,
              "common_runtime_ratio": 1.01364231475905,
              "common_solved": 5,
              "disagreements": [],
              "gained": [],
              "lost": [
                "round-0:2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2",
                "round-1:2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2",
                "round-2:2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2"
              ],
              "par2_ratio": 1.4109371564051625
            },
            "expected_unique_inputs": 3,
            "families": {
              "2019-cmodelsdiff": {
                "baseline": {
                  "error": 0,
                  "par2": 224.056774,
                  "rows": 6,
                  "sat": 6,
                  "solved": 6,
                  "timeout": 0,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 51.213392,
                "candidate": {
                  "error": 0,
                  "par2": 411.875517,
                  "rows": 6,
                  "sat": 3,
                  "solved": 3,
                  "timeout": 3,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 51.875517,
                "common_runtime_ratio": 1.0129287472308024,
                "common_solved": 3,
                "disagreements": [],
                "gained": [],
                "lost": [
                  "round-0:2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2",
                  "round-1:2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2",
                  "round-2:2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2"
                ],
                "par2_ratio": 1.8382640687310798
              },
              "nec-smt": {
                "baseline": {
                  "error": 0,
                  "par2": 236.964959,
                  "rows": 3,
                  "sat": 2,
                  "solved": 2,
                  "timeout": 1,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 116.964959,
                "candidate": {
                  "error": 0,
                  "par2": 238.597176,
                  "rows": 3,
                  "sat": 2,
                  "solved": 2,
                  "timeout": 1,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 118.59717599999999,
                "common_runtime_ratio": 1.0139547520381724,
                "common_solved": 2,
                "disagreements": [],
                "gained": [],
                "lost": [],
                "par2_ratio": 1.0068880099694402
              }
            },
            "identities": {
              "baseline": [
                "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
              ],
              "candidate": [
                "4e54275582dff389645815441250185cc06f975d501cc43d71c5722e1ab2c971"
              ]
            },
            "loss_counts": {
              "2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2": 3
            },
            "loss_rerun_status": "repeated-loss",
            "note": "Three complete paired reruns; a loss in at least two blocks acceptance. This verdict covers the repeat-loss criterion only, not the full-corpus timing thresholds, model validation or recorded-reference evidence. Timeout/unknown rows remain explicit in each pair's metrics.",
            "ratio_limit": 1.01,
            "repeated_losses": [
              "2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2"
            ],
            "rounds": [
              {
                "baseline": {
                  "error": 0,
                  "par2": 196.000651,
                  "rows": 3,
                  "sat": 2,
                  "solved": 2,
                  "timeout": 1,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 16.882899,
                "candidate": {
                  "error": 0,
                  "par2": 257.176392,
                  "rows": 3,
                  "sat": 1,
                  "solved": 1,
                  "timeout": 2,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 17.176392,
                "common_runtime_ratio": 1.017384040501575,
                "common_solved": 1,
                "disagreements": [],
                "gained": [],
                "lost": [
                  "2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2"
                ],
                "par2_ratio": 1.312120090866433
              },
              {
                "baseline": {
                  "error": 0,
                  "par2": 133.274747,
                  "rows": 3,
                  "sat": 3,
                  "solved": 3,
                  "timeout": 0,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 75.64859200000001,
                "candidate": {
                  "error": 0,
                  "par2": 196.911722,
                  "rows": 3,
                  "sat": 2,
                  "solved": 2,
                  "timeout": 1,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 76.911722,
                "common_runtime_ratio": 1.016697336547916,
                "common_solved": 2,
                "disagreements": [],
                "gained": [],
                "lost": [
                  "2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2"
                ],
                "par2_ratio": 1.4774871191464352
              },
              {
                "baseline": {
                  "error": 0,
                  "par2": 131.746335,
                  "rows": 3,
                  "sat": 3,
                  "solved": 3,
                  "timeout": 0,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 75.64686,
                "candidate": {
                  "error": 0,
                  "par2": 196.384579,
                  "rows": 3,
                  "sat": 2,
                  "solved": 2,
                  "timeout": 1,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 76.384579,
                "common_runtime_ratio": 1.009752143049956,
                "common_solved": 2,
                "disagreements": [],
                "gained": [],
                "lost": [
                  "2019-cmodelsdiff/labyrinth/0190-labyrinth-18-0.smt2"
                ],
                "par2_ratio": 1.4906265058530852
              }
            ],
            "timeout": 60.0,
            "timing_status": "needs-triage"
          },
          "probe_model_jobs": [
            "172969",
            "172970",
            "172971"
          ],
          "probe_model_status": "Released at offline checkpoint; pending scheduler dependencies on submitted timing jobs. Validation not yet complete."
        },
        "observation_followup": {
          "snapshot": "25b44cc2204169ff0cc45a771b5ec56895a0511e",
          "status": "Correctness-qualified source; full timing lost-solve acceptance failed onprp-67-50 in2of3reruns. Migration unfinished; no default-promotion claim.",
          "diagnosis": "Legacy QF_LIA observed all clausifier registry atoms. Migration omitted driver-owned Booleans from SAT observations, changing elimination/search. Observe them without component routing and retain registry order when present; existing recipes without driver-owned atoms retain their component observation order. Includes retention correction.",
          "build_job": "172982",
          "checks_job": "172989",
          "probe_job": "172990",
          "static_job": "172991",
          "artifact": "results/observation-probe in separate observation workspace",
          "local_lint": "passed",
          "docs_review": "Independent read-only reviewer accepted lia blob9d408d691edc6f655847317a8e11d68fd4c8b8f0 and config blobc4fa6167ce4e313d3ae490e0352cd94705281908; runtime excluded.",
          "superseded_snapshot": "e38b72aa865fa8042a24c434aad2080080b52ea9",
          "superseded_build": "172935 failed compiling regression: AssignedTheoryLiteral field is atom, not term; solver source unchanged in correction",
          "cancelled_dependent_jobs": [
            "172943",
            "172944",
            "172945"
          ],
          "rendered_inspection": "/tmp/primo-observation-lia.png checked; observation and retention paragraphs readable with pinned links",
          "docs_checks": "make docs and make docs-check-links pass;260pages32224local1033Gitlinks0failures before test-only revision pin update",
          "eight_route_job": "173011",
          "mutations_job": "173012",
          "seed_base": 203610460,
          "gate_note": "Fresh execution/generation at corrected snapshot; same frozen seeds as cfc gate for comparable coverage. Gates depend on checks172989.",
          "preflight": "slurm_prepare_benchmark_workspace.py --check-only --build-via-slurm passed for25b44cc",
          "build_status": "172982 completed0:0, clean Release all-target build",
          "commands": {
            "build": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir /tmp/primo-integer-observation --build-via-slurm --remote-dir primo-integer-unification-observation --reuse-dependencies --cmake <existing-cmake> --cxx-header-manifest <matching-header-manifest> --extra-target all --jobs 4",
            "checks": "PRIMO_EXPECTED_REVISION=25b44cc sbatch --dependency=afterok:172982 scripts/qualification/integer_unification/migration_checks.sbatch",
            "probes": "PRIMO_EXPECTED_GIT=25b44cc PRIMO_COMPARE_TIMEOUT=60 PRIMO_COMPARE_SHARDS=3 sbatch --dependency=afterok:172982 --hint=nomultithread --partition=compute,gpu --array=0-2%3 scripts/slurm_component_loss_rerun.sbatch",
            "static": "sbatch --dependency=afterok:172982 scripts/qualification/public_static.sbatch",
            "eight_routes": "PRIMO_EXPECTED_REVISION=25b44cc PRIMO_SEED_BASE=203610460 PRIMO_BUDGET_REPLAY=1 sbatch --dependency=afterok:172989 --array=0-31%16 scripts/qualification/public_launch.sbatch",
            "mutations": "PRIMO_EXPECTED_REVISION=25b44cc PRIMO_SEED_BASE=203610460 sbatch --dependency=afterok:172989 scripts/qualification/integer_unification/mutations.sbatch"
          },
          "checks_status": "172989 completed0:0; release44/44, Python233, ASan44/44, disabled-backend full build and3/3 scaffold tests",
          "checks_artifact": "tmp/integer-unification/evidence/integer-observation-checks-172989",
          "binary_sha256": "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8",
          "frozen_binary": "results/integer-frozen-binaries/primo-25b44cc",
          "probe_summary": {
            "aggregate": {
              "baseline": {
                "error": 0,
                "par2": 367.53024,
                "rows": 9,
                "sat": 9,
                "solved": 9,
                "timeout": 0,
                "unknown": 0,
                "unsat": 0,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "baseline_common_seconds": 367.53024,
              "candidate": {
                "error": 0,
                "par2": 371.892834,
                "rows": 9,
                "sat": 9,
                "solved": 9,
                "timeout": 0,
                "unknown": 0,
                "unsat": 0,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "candidate_common_seconds": 371.892834,
              "common_runtime_ratio": 1.0118700273479537,
              "common_solved": 9,
              "disagreements": [],
              "gained": [],
              "lost": [],
              "par2_ratio": 1.0118700273479537
            },
            "expected_unique_inputs": 3,
            "families": {
              "2019-cmodelsdiff": {
                "baseline": {
                  "error": 0,
                  "par2": 199.202931,
                  "rows": 6,
                  "sat": 6,
                  "solved": 6,
                  "timeout": 0,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 199.202931,
                "candidate": {
                  "error": 0,
                  "par2": 203.252323,
                  "rows": 6,
                  "sat": 6,
                  "solved": 6,
                  "timeout": 0,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 203.252323,
                "common_runtime_ratio": 1.020327973989499,
                "common_solved": 6,
                "disagreements": [],
                "gained": [],
                "lost": [],
                "par2_ratio": 1.020327973989499
              },
              "nec-smt": {
                "baseline": {
                  "error": 0,
                  "par2": 168.327309,
                  "rows": 3,
                  "sat": 3,
                  "solved": 3,
                  "timeout": 0,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 168.327309,
                "candidate": {
                  "error": 0,
                  "par2": 168.640511,
                  "rows": 3,
                  "sat": 3,
                  "solved": 3,
                  "timeout": 0,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 168.640511,
                "common_runtime_ratio": 1.0018606725305637,
                "common_solved": 3,
                "disagreements": [],
                "gained": [],
                "lost": [],
                "par2_ratio": 1.0018606725305637
              }
            },
            "identities": {
              "baseline": [
                "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
              ],
              "candidate": [
                "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
              ]
            },
            "loss_counts": {},
            "loss_rerun_status": "no-repeated-loss",
            "note": "Three complete paired reruns; a loss in at least two blocks acceptance. This verdict covers the repeat-loss criterion only, not the full-corpus timing thresholds, model validation or recorded-reference evidence. Timeout/unknown rows remain explicit in each pair's metrics.",
            "ratio_limit": 1.01,
            "repeated_losses": [],
            "rounds": [
              {
                "baseline": {
                  "error": 0,
                  "par2": 119.200749,
                  "rows": 3,
                  "sat": 3,
                  "solved": 3,
                  "timeout": 0,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 119.200749,
                "candidate": {
                  "error": 0,
                  "par2": 120.833909,
                  "rows": 3,
                  "sat": 3,
                  "solved": 3,
                  "timeout": 0,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 120.833909,
                "common_runtime_ratio": 1.0137009206208931,
                "common_solved": 3,
                "disagreements": [],
                "gained": [],
                "lost": [],
                "par2_ratio": 1.0137009206208931
              },
              {
                "baseline": {
                  "error": 0,
                  "par2": 121.13717700000001,
                  "rows": 3,
                  "sat": 3,
                  "solved": 3,
                  "timeout": 0,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 121.13717700000001,
                "candidate": {
                  "error": 0,
                  "par2": 123.85113100000001,
                  "rows": 3,
                  "sat": 3,
                  "solved": 3,
                  "timeout": 0,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 123.85113100000001,
                "common_runtime_ratio": 1.0224039726466467,
                "common_solved": 3,
                "disagreements": [],
                "gained": [],
                "lost": [],
                "par2_ratio": 1.0224039726466467
              },
              {
                "baseline": {
                  "error": 0,
                  "par2": 127.192314,
                  "rows": 3,
                  "sat": 3,
                  "solved": 3,
                  "timeout": 0,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "baseline_common_seconds": 127.192314,
                "candidate": {
                  "error": 0,
                  "par2": 127.207794,
                  "rows": 3,
                  "sat": 3,
                  "solved": 3,
                  "timeout": 0,
                  "unknown": 0,
                  "unsat": 0,
                  "unsupported": 0,
                  "wrong_answer": 0
                },
                "candidate_common_seconds": 127.207794,
                "common_runtime_ratio": 1.0001217054672031,
                "common_solved": 3,
                "disagreements": [],
                "gained": [],
                "lost": [],
                "par2_ratio": 1.0001217054672031
              }
            ],
            "timeout": 60.0,
            "timing_status": "needs-triage"
          },
          "probe_model_jobs": [
            "173135",
            "173136",
            "173137"
          ],
          "probe_model_status": "Audited:9/9SAT measurements directly accepted by Dolmen; see2026-10-07-integer-model-coverage-audit.",
          "static": {
            "job": "172991",
            "status": "completed0:0",
            "translation_units": 128,
            "artifact": "tmp/integer-unification/evidence/observation-static-172991",
            "review": "Configured clang-tidy warnings unchanged: existing shared_ptr/CLI11 leak-analysis paths and intentional invalid-enum test casts. Include-cleaner unused suggestions are paired self-includes; provider/transitive advisories inspected. No new warning in changed code."
          },
          "shared_preservation_gate": {
            "job": "173081",
            "tasks": "0-9,17",
            "scope": "Fresh ground profile, finite-domain, retained-session and Boolean-LRA preservation checks. Raw invalid-input UF TypeFuzz tasks10-16 were triaged at cfc and are not counted as current-snapshot coverage; fresh real-seed mutations target changed integer routes.",
            "status": "all11selected tasks completed0:0",
            "model_job": "173159",
            "validator_triage_job": "173164",
            "model_audit_job": "173376",
            "models": {
              "direct_pass": 4049,
              "input_nonconforming_LRA": 518,
              "same_saved_models_pass_with_wider_QF_NRA_logic": 518
            },
            "model_note": "Raw LRA model task2 failed only on validator constant-denominator input syntax. Separate wider-logic validation is explicit; not a direct input-logic pass. Audit173376 checks exact source SAT coverage,25b binary hashes and saved assertion/model hashes."
          },
          "docs_contract_review": "Independent reviewer accepted theory-interface blob3e69bf9ad1e30b413408aa0ef6f5efd452620b55, dpllt blob676d13f1bc75c706180e455e9eab2757e7b24f07, config blob53a6fe8a8e945761b671e9810e0f2bb947274e66, source25b44cc. Qualifier online recipes added; no runtime acceptance.",
          "eight_route": {
            "job": "173011",
            "audit_job": "173163",
            "status": "strict audit passed",
            "routes": {
              "QF_UF": {
                "cases": 1000,
                "pass": 1000,
                "timeout": 0,
                "sat_models": 601,
                "queries": 0,
                "resource_incomplete": 0,
                "reference_timeout": 0,
                "distinct_inputs": 998
              },
              "QF_LRA": {
                "cases": 1000,
                "pass": 1000,
                "timeout": 0,
                "sat_models": 1000,
                "queries": 0,
                "resource_incomplete": 0,
                "reference_timeout": 0,
                "distinct_inputs": 261
              },
              "QF_LIA": {
                "cases": 1000,
                "pass": 980,
                "timeout": 19,
                "sat_models": 868,
                "queries": 0,
                "resource_incomplete": 1,
                "reference_timeout": 2,
                "distinct_inputs": 1000
              },
              "QF_UFLRA": {
                "cases": 1000,
                "pass": 1000,
                "timeout": 0,
                "sat_models": 589,
                "queries": 0,
                "resource_incomplete": 0,
                "reference_timeout": 0,
                "distinct_inputs": 997
              },
              "QF_UFLIA": {
                "cases": 1000,
                "pass": 1000,
                "timeout": 0,
                "sat_models": 501,
                "queries": 0,
                "resource_incomplete": 0,
                "reference_timeout": 0,
                "distinct_inputs": 672
              },
              "UF": {
                "cases": 1000,
                "pass": 1000,
                "timeout": 0,
                "sat_models": 0,
                "queries": 0,
                "resource_incomplete": 0,
                "reference_timeout": 0,
                "distinct_inputs": 567
              },
              "incremental_QF_UF": {
                "cases": 1000,
                "pass": 1000,
                "timeout": 0,
                "sat_models": 6214,
                "queries": 9000,
                "resource_incomplete": 0,
                "reference_timeout": 0,
                "distinct_inputs": 768
              },
              "incremental_QF_LRA": {
                "cases": 1000,
                "pass": 1000,
                "timeout": 0,
                "sat_models": 8000,
                "queries": 11000,
                "resource_incomplete": 0,
                "reference_timeout": 0,
                "distinct_inputs": 1000
              }
            },
            "sat_models": 17773,
            "wrong_answers": 0,
            "crashes": 0,
            "invalid_models": 0,
            "untriaged_reference_disagreements": 0,
            "budget_replay": {
              "cases": 800,
              "queries": 2600,
              "outcomes": {
                "resource-exhausted": 455,
                "pass": 345
              },
              "conflict_counts": {
                "1": 624,
                "0": 1976
              }
            },
            "artifact": "results/integer-observation-qualified-slurm.json",
            "audit_script_sha256": "c1349d33558004a89212ee58ca5223219c36c03a7177b25c89682fd597e75398",
            "parser_type_errors": 0,
            "unsupported": 0
          },
          "mutations": {
            "job": "173012",
            "stages": [
              {
                "seed": {
                  "count": 5,
                  "outcomes": {
                    "PASS": 5
                  },
                  "answers": {
                    "unsat": 3,
                    "sat": 2
                  },
                  "sat_models": 2,
                  "distinct_inputs": 5,
                  "resource_triage": [],
                  "input_manifest_sha256": "1723ca9131b41d2e2f4f6fe874be9eaf05bda253197ea63c0ebde43212f89592"
                },
                "mutant": {
                  "count": 100,
                  "outcomes": {
                    "PASS": 89,
                    "INCOMPLETE": 11
                  },
                  "answers": {
                    "sat": 70,
                    "unknown": 5,
                    "timeout": 5,
                    "unsat": 20
                  },
                  "sat_models": 70,
                  "distinct_inputs": 100,
                  "resource_triage": [
                    "84b47d85f5e5d6d583ce18c25e0c82828031c2b79914622633372efaf1a19479",
                    "779897f08d02c7d6f987e5f5905a07606e425a8ac264576841ce8bc65d96f850",
                    "2887d405a9246d926e91360d36c4f1070db0eb095338cd9fd65886dfebbb470b",
                    "338e0c9b37d8cff3ccdff2cf3364a8987387a5f85b3352b1ebdc1cf41ba39509",
                    "ede795510836a112ee4722b60f480b88fe204523dd8c6f6ca3174276a4dc2b1e"
                  ],
                  "input_manifest_sha256": "27bbef546aef5fecd1a271683f5c7eca785b374a0922bf84eb685e163085887d"
                }
              },
              {
                "seed": {
                  "count": 5,
                  "outcomes": {
                    "PASS": 5
                  },
                  "answers": {
                    "unsat": 2,
                    "sat": 3
                  },
                  "sat_models": 3,
                  "distinct_inputs": 5,
                  "resource_triage": [],
                  "input_manifest_sha256": "ed07e2f277c70b6df75a682e14fe09bb0d73f5e9b96dc80b3576e1bd1a2ce4c4"
                },
                "mutant": {
                  "count": 100,
                  "outcomes": {
                    "PASS": 100
                  },
                  "answers": {
                    "sat": 88,
                    "unsat": 12
                  },
                  "sat_models": 88,
                  "distinct_inputs": 99,
                  "resource_triage": [],
                  "input_manifest_sha256": "2190b5e59ac467a4a714b495f9a9c555c305c612c09820dcf1fe29c81785f295"
                }
              }
            ],
            "resource_replay_jobs": [
              "173149",
              "173150"
            ],
            "extra_model_job": "173153",
            "incompleteness": "Five explicit branch limits also reproduced on baseline; five solver timeouts and one reference timeout; all candidate SAT mutants validated, including reference-incomplete SAT."
          },
          "documentation_checks": "make docs and make docs-check-links passed;260pages32224local1033uniqueGitlinks0failures; rendered observation/retention paragraphs inspected",
          "review": "Whole-tree review coverage from cfc supplemented with current dispatcher, recipe, Boolean observation and regression changes. No borrowed registry storage invalidation: components/backend callbacks do not mutate the clausifier registry at installation. No arithmetic search algorithm/default or combined clause policy change; observation scan replaces the existing registration scan when propositional atoms exist.",
          "timing": {
            "status": "Full timing collected; aggregatePAR2 within2percent forLIA/UFLIA, but repeated lost solve blocks acceptance.",
            "candidate_commit": "25b44cc2204169ff0cc45a771b5ec56895a0511e",
            "baseline_commit": "8ca8ebe8db75966fc8aefdd928a0878e648e7f10",
            "binary_sha256": "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8",
            "baseline_binary_sha256": "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4",
            "jobs": {
              "QF_LIA": "173182",
              "QF_UFLIA": "173183",
              "five_logic_preservation": "173184",
              "shared_default": "173336",
              "shared_online": "173337",
              "shared_lazy_uf": "173338",
              "shared_offline_uflia": "173339"
            },
            "resources": {
              "timeout_seconds": 60,
              "memory_gib": 8,
              "cpus": 1,
              "rounds": 2,
              "solver_args": [
                "--quiet",
                "--stats"
              ],
              "hint": "nomultithread",
              "initial_partition": "compute,gpu",
              "pending_jobs_partition_update": "none; CPU-only allocations from initial submission, no GPUs requested",
              "pairing": "Both binaries and reversed second-round order within each allocation; node recorded per shard"
            },
            "shards": {
              "QF_LIA": 256,
              "QF_UFLIA": 16
            },
            "preservation_profiles": "Same frozen inputs and flags as preceding cfc run; five-logic20/division10s; shared default120/online120/lazyUF31/offlineUFLIA16,5s; all8GiB1CPUtwo paired rounds",
            "artifacts": [
              "results/integer-paired in observation workspace",
              "results/integer-preservation-paired in observation workspace",
              "results/integer-shared-paired in observation workspace"
            ],
            "submission_scripts": [
              "results/primo-observation-timing-submit.sh",
              "results/primo-observation-shared-submit.sh",
              "results/primo-observation-replay-submit.sh"
            ],
            "replay_jobs": {
              "QF_LIA_round0": "173360",
              "QF_LIA_round1": "173361",
              "QF_UFLIA_round0": "173362",
              "QF_UFLIA_round1": "173363",
              "five_logic_preservation": "173364",
              "shared_profiles": "173365",
              "shared_lra_validator_triage": "173366"
            },
            "replay_status": "Audited: full-corpus14001direct passes; preservation/probes564direct and20explicit wider-logic checks; no missing SAT records. See2026-10-07-integer-model-coverage-audit.",
            "acceptance": "No loss reproduced in at least two of three further paired runs; aggregate PAR2 ratio <=1.02 in each full affected division; all candidate ground SAT timing rows independently validated.",
            "held_model_job_inventory": {
              "old_full": [
                172666,
                172667,
                172668,
                172669,
                172670,
                172798
              ],
              "old_shared_triage": {
                "172799": 172798
              },
              "old_loss_batch1": [
                172812,
                172813,
                172814
              ],
              "retention_probes": [
                172969,
                172970,
                172971
              ],
              "observation_probes": [
                173135,
                173136,
                173137
              ],
              "corrected_full": [
                173360,
                173361,
                173362,
                173363,
                173364,
                173365
              ],
              "corrected_shared_triage": {
                "173366": 173365
              },
              "old_loss_batch2": [
                173394
              ],
              "corrected_preservation_reruns": [
                173414
              ],
              "corrected_loss_batch1": [
                173428
              ],
              "corrected_loss_batch2": [
                173520
              ],
              "old_loss_batch3": [
                173565
              ]
            },
            "five_logic_preservation": {
              "QF_LIA": {
                "timing_status": "pass",
                "note": "Timing only; independent SAT-model coverage and recorded-reference joins are separate acceptance gates. Any lost solve requires three paired reruns; loss in at least two blocks acceptance.",
                "identities": {
                  "baseline": [
                    "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                  ],
                  "candidate": [
                    "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                  ]
                },
                "expected_unique_inputs": 20,
                "timeout": 10.0,
                "ratio_limit": 1.01,
                "rounds": [
                  {
                    "baseline": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 14,
                      "unsat": 6,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 6.214834
                    },
                    "candidate": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 14,
                      "unsat": 6,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 6.390442
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 20,
                    "baseline_common_seconds": 6.214834,
                    "candidate_common_seconds": 6.390442,
                    "par2_ratio": 1.028256265573626,
                    "common_runtime_ratio": 1.028256265573626
                  },
                  {
                    "baseline": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 14,
                      "unsat": 6,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 6.870949
                    },
                    "candidate": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 14,
                      "unsat": 6,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 6.432545
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 20,
                    "baseline_common_seconds": 6.870949,
                    "candidate_common_seconds": 6.432545,
                    "par2_ratio": 0.936194548962596,
                    "common_runtime_ratio": 0.936194548962596
                  }
                ],
                "aggregate": {
                  "baseline": {
                    "rows": 40,
                    "solved": 40,
                    "sat": 28,
                    "unsat": 12,
                    "timeout": 0,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 0,
                    "wrong_answer": 0,
                    "par2": 13.085783
                  },
                  "candidate": {
                    "rows": 40,
                    "solved": 40,
                    "sat": 28,
                    "unsat": 12,
                    "timeout": 0,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 0,
                    "wrong_answer": 0,
                    "par2": 12.822987
                  },
                  "disagreements": [],
                  "lost": [],
                  "gained": [],
                  "common_solved": 40,
                  "baseline_common_seconds": 13.085783,
                  "candidate_common_seconds": 12.822987,
                  "par2_ratio": 0.9799174416998968,
                  "common_runtime_ratio": 0.9799174416998968
                },
                "families": {
                  "20180326-Bromberger": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 2.423582
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 2.416859
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 2.423582,
                    "candidate_common_seconds": 2.416859,
                    "par2_ratio": 0.997226006794901,
                    "common_runtime_ratio": 0.997226006794901
                  },
                  "2019-cmodelsdiff": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.22179
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.15534199999999998
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.22179,
                    "candidate_common_seconds": 0.15534199999999998,
                    "par2_ratio": 0.7004012804905541,
                    "common_runtime_ratio": 0.7004012804905541
                  },
                  "2019-ezsmt": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.210847
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.2059980000000001
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 1.210847,
                    "candidate_common_seconds": 1.2059980000000001,
                    "par2_ratio": 0.9959953652278117,
                    "common_runtime_ratio": 0.9959953652278117
                  },
                  "20210219-Dartagnan": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.450136
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.448239
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 1.450136,
                    "candidate_common_seconds": 1.448239,
                    "par2_ratio": 0.9986918468336763,
                    "common_runtime_ratio": 0.9986918468336763
                  },
                  "20220307-SMPT": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.353292
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.307338
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.353292,
                    "candidate_common_seconds": 0.307338,
                    "par2_ratio": 0.8699262932644951,
                    "common_runtime_ratio": 0.8699262932644951
                  },
                  "20231117-c_inference": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.267924
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.238783
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.267924,
                    "candidate_common_seconds": 0.238783,
                    "par2_ratio": 0.8912340813066392,
                    "common_runtime_ratio": 0.8912340813066392
                  },
                  "Averest": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.594981
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.554728
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.594981,
                    "candidate_common_seconds": 0.554728,
                    "par2_ratio": 0.9323457387714902,
                    "common_runtime_ratio": 0.9323457387714902
                  },
                  "CAV_2009_benchmarks": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.24764000000000003
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.203455
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.24764000000000003,
                    "candidate_common_seconds": 0.203455,
                    "par2_ratio": 0.8215756743660151,
                    "common_runtime_ratio": 0.8215756743660151
                  },
                  "CIRC": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.336033
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.30146
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.336033,
                    "candidate_common_seconds": 0.30146,
                    "par2_ratio": 0.897114271515,
                    "common_runtime_ratio": 0.897114271515
                  },
                  "RTCL": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.14438600000000001
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.120491
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.14438600000000001,
                    "candidate_common_seconds": 0.120491,
                    "par2_ratio": 0.8345061155513692,
                    "common_runtime_ratio": 0.8345061155513692
                  },
                  "RWS": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.387762
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.365612
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.387762,
                    "candidate_common_seconds": 0.365612,
                    "par2_ratio": 0.9428773319716733,
                    "common_runtime_ratio": 0.9428773319716733
                  },
                  "arctic-matrix": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.523034
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.488495
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.523034,
                    "candidate_common_seconds": 0.488495,
                    "par2_ratio": 0.933964139998547,
                    "common_runtime_ratio": 0.933964139998547
                  },
                  "bofill-scheduling": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.20785900000000002
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.205933
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.20785900000000002,
                    "candidate_common_seconds": 0.205933,
                    "par2_ratio": 0.9907341034066361,
                    "common_runtime_ratio": 0.9907341034066361
                  },
                  "calypto": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.516396
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.5441310000000001
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 1.516396,
                    "candidate_common_seconds": 1.5441310000000001,
                    "par2_ratio": 1.01829007726214,
                    "common_runtime_ratio": 1.01829007726214
                  },
                  "convert": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.16902499999999998
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.16369899999999998
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.16902499999999998,
                    "candidate_common_seconds": 0.16369899999999998,
                    "par2_ratio": 0.9684898683626683,
                    "common_runtime_ratio": 0.9684898683626683
                  },
                  "cut_lemmas": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.24247000000000002
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.221196
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.24247000000000002,
                    "candidate_common_seconds": 0.221196,
                    "par2_ratio": 0.9122613106776095,
                    "common_runtime_ratio": 0.9122613106776095
                  },
                  "dillig": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.154733
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.146534
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.154733,
                    "candidate_common_seconds": 0.146534,
                    "par2_ratio": 0.947011949616436,
                    "common_runtime_ratio": 0.947011949616436
                  },
                  "fft": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.150562
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.166581
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.150562,
                    "candidate_common_seconds": 0.166581,
                    "par2_ratio": 1.1063947078280045,
                    "common_runtime_ratio": 1.1063947078280045
                  },
                  "mathsat": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.846221
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.859117
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 1.846221,
                    "candidate_common_seconds": 1.859117,
                    "par2_ratio": 1.0069850792510755,
                    "common_runtime_ratio": 1.0069850792510755
                  },
                  "miplib2003": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.6371100000000001
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.708996
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.6371100000000001,
                    "candidate_common_seconds": 0.708996,
                    "par2_ratio": 1.1128313791966848,
                    "common_runtime_ratio": 1.1128313791966848
                  }
                }
              },
              "QF_LRA": {
                "timing_status": "pass",
                "note": "Timing only; independent SAT-model coverage and recorded-reference joins are separate acceptance gates. Any lost solve requires three paired reruns; loss in at least two blocks acceptance.",
                "identities": {
                  "baseline": [
                    "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                  ],
                  "candidate": [
                    "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                  ]
                },
                "expected_unique_inputs": 20,
                "timeout": 10.0,
                "ratio_limit": 1.01,
                "rounds": [
                  {
                    "baseline": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 14,
                      "unsat": 6,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 6.307069
                    },
                    "candidate": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 14,
                      "unsat": 6,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 6.266332
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 20,
                    "baseline_common_seconds": 6.307069,
                    "candidate_common_seconds": 6.266332,
                    "par2_ratio": 0.9935410568680951,
                    "common_runtime_ratio": 0.9935410568680951
                  },
                  {
                    "baseline": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 14,
                      "unsat": 6,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 7.077451
                    },
                    "candidate": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 14,
                      "unsat": 6,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 6.411044
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 20,
                    "baseline_common_seconds": 7.077451,
                    "candidate_common_seconds": 6.411044,
                    "par2_ratio": 0.9058408175485779,
                    "common_runtime_ratio": 0.9058408175485779
                  }
                ],
                "aggregate": {
                  "baseline": {
                    "rows": 40,
                    "solved": 40,
                    "sat": 28,
                    "unsat": 12,
                    "timeout": 0,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 0,
                    "wrong_answer": 0,
                    "par2": 13.38452
                  },
                  "candidate": {
                    "rows": 40,
                    "solved": 40,
                    "sat": 28,
                    "unsat": 12,
                    "timeout": 0,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 0,
                    "wrong_answer": 0,
                    "par2": 12.677376
                  },
                  "disagreements": [],
                  "lost": [],
                  "gained": [],
                  "common_solved": 40,
                  "baseline_common_seconds": 13.38452,
                  "candidate_common_seconds": 12.677376,
                  "par2_ratio": 0.9471670257879999,
                  "common_runtime_ratio": 0.9471670257879999
                },
                "families": {
                  "2017-Heizmann-UltimateInvariantSynthesis": {
                    "baseline": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 2,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.206189
                    },
                    "candidate": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 2,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.112382
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 4,
                    "baseline_common_seconds": 1.206189,
                    "candidate_common_seconds": 1.112382,
                    "par2_ratio": 0.9222286059647369,
                    "common_runtime_ratio": 0.9222286059647369
                  },
                  "2019-ezsmt": {
                    "baseline": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 4,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 2.071824
                    },
                    "candidate": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 4,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.943421
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 4,
                    "baseline_common_seconds": 2.071824,
                    "candidate_common_seconds": 1.943421,
                    "par2_ratio": 0.9380241757987166,
                    "common_runtime_ratio": 0.9380241757987166
                  },
                  "DTP-Scheduling": {
                    "baseline": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 4,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.1843970000000001
                    },
                    "candidate": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 4,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.097211
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 4,
                    "baseline_common_seconds": 1.1843970000000001,
                    "candidate_common_seconds": 1.097211,
                    "par2_ratio": 0.9263878581252737,
                    "common_runtime_ratio": 0.9263878581252737
                  },
                  "LassoRanker": {
                    "baseline": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 4,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 2.411457
                    },
                    "candidate": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 4,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 2.325478
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 4,
                    "baseline_common_seconds": 2.411457,
                    "candidate_common_seconds": 2.325478,
                    "par2_ratio": 0.9643456217548146,
                    "common_runtime_ratio": 0.9643456217548146
                  },
                  "TM": {
                    "baseline": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 4,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.48565200000000003
                    },
                    "candidate": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 4,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.41573000000000004
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 4,
                    "baseline_common_seconds": 0.48565200000000003,
                    "candidate_common_seconds": 0.41573000000000004,
                    "par2_ratio": 0.8560244784331168,
                    "common_runtime_ratio": 0.8560244784331168
                  },
                  "clock_synchro": {
                    "baseline": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 0,
                      "unsat": 4,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 2.836297
                    },
                    "candidate": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 0,
                      "unsat": 4,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 2.744765
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 4,
                    "baseline_common_seconds": 2.836297,
                    "candidate_common_seconds": 2.744765,
                    "par2_ratio": 0.9677283443870652,
                    "common_runtime_ratio": 0.9677283443870652
                  },
                  "latendresse": {
                    "baseline": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 4,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.371564
                    },
                    "candidate": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 4,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.37358
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 4,
                    "baseline_common_seconds": 1.371564,
                    "candidate_common_seconds": 1.37358,
                    "par2_ratio": 1.0014698548518335,
                    "common_runtime_ratio": 1.0014698548518335
                  },
                  "miplib": {
                    "baseline": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 2,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.987447
                    },
                    "candidate": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 2,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.021233
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 4,
                    "baseline_common_seconds": 0.987447,
                    "candidate_common_seconds": 1.021233,
                    "par2_ratio": 1.0342155072626684,
                    "common_runtime_ratio": 1.0342155072626684
                  },
                  "sal": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.223165
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.169697
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.223165,
                    "candidate_common_seconds": 0.169697,
                    "par2_ratio": 0.7604104586292653,
                    "common_runtime_ratio": 0.7604104586292653
                  },
                  "sc": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.24124
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.19368000000000002
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.24124,
                    "candidate_common_seconds": 0.19368000000000002,
                    "par2_ratio": 0.8028519316862875,
                    "common_runtime_ratio": 0.8028519316862875
                  },
                  "tta_startup": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.195015
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.139525
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.195015,
                    "candidate_common_seconds": 0.139525,
                    "par2_ratio": 0.7154577852985669,
                    "common_runtime_ratio": 0.7154577852985669
                  },
                  "uart": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.170273
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 2,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.140674
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.170273,
                    "candidate_common_seconds": 0.140674,
                    "par2_ratio": 0.8261673900148584,
                    "common_runtime_ratio": 0.8261673900148584
                  }
                }
              },
              "QF_UF": {
                "timing_status": "needs-triage",
                "note": "Timing only; independent SAT-model coverage and recorded-reference joins are separate acceptance gates. Any lost solve requires three paired reruns; loss in at least two blocks acceptance.",
                "identities": {
                  "baseline": [
                    "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                  ],
                  "candidate": [
                    "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                  ]
                },
                "expected_unique_inputs": 20,
                "timeout": 10.0,
                "ratio_limit": 1.01,
                "rounds": [
                  {
                    "baseline": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 4,
                      "unsat": 16,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 7.757707
                    },
                    "candidate": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 4,
                      "unsat": 16,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 7.728505
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 20,
                    "baseline_common_seconds": 7.757707,
                    "candidate_common_seconds": 7.728505,
                    "par2_ratio": 0.996235743371076,
                    "common_runtime_ratio": 0.996235743371076
                  },
                  {
                    "baseline": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 4,
                      "unsat": 16,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 7.742069
                    },
                    "candidate": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 4,
                      "unsat": 16,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 8.511243
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 20,
                    "baseline_common_seconds": 7.742069,
                    "candidate_common_seconds": 8.511243,
                    "par2_ratio": 1.0993499282943617,
                    "common_runtime_ratio": 1.0993499282943617
                  }
                ],
                "aggregate": {
                  "baseline": {
                    "rows": 40,
                    "solved": 40,
                    "sat": 8,
                    "unsat": 32,
                    "timeout": 0,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 0,
                    "wrong_answer": 0,
                    "par2": 15.499776
                  },
                  "candidate": {
                    "rows": 40,
                    "solved": 40,
                    "sat": 8,
                    "unsat": 32,
                    "timeout": 0,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 0,
                    "wrong_answer": 0,
                    "par2": 16.239748
                  },
                  "disagreements": [],
                  "lost": [],
                  "gained": [],
                  "common_solved": 40,
                  "baseline_common_seconds": 15.499776,
                  "candidate_common_seconds": 16.239748,
                  "par2_ratio": 1.0477408189640933,
                  "common_runtime_ratio": 1.0477408189640933
                },
                "families": {
                  "Goel": {
                    "baseline": {
                      "rows": 8,
                      "solved": 8,
                      "sat": 6,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 2.306909
                    },
                    "candidate": {
                      "rows": 8,
                      "solved": 8,
                      "sat": 6,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 2.489802
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 8,
                    "baseline_common_seconds": 2.306909,
                    "candidate_common_seconds": 2.489802,
                    "par2_ratio": 1.0792805437925812,
                    "common_runtime_ratio": 1.0792805437925812
                  },
                  "NEQ": {
                    "baseline": {
                      "rows": 8,
                      "solved": 8,
                      "sat": 0,
                      "unsat": 8,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 2.5215739999999998
                    },
                    "candidate": {
                      "rows": 8,
                      "solved": 8,
                      "sat": 0,
                      "unsat": 8,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 2.67742
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 8,
                    "baseline_common_seconds": 2.5215739999999998,
                    "candidate_common_seconds": 2.67742,
                    "par2_ratio": 1.0618050471649851,
                    "common_runtime_ratio": 1.0618050471649851
                  },
                  "PEQ": {
                    "baseline": {
                      "rows": 8,
                      "solved": 8,
                      "sat": 0,
                      "unsat": 8,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 4.443823
                    },
                    "candidate": {
                      "rows": 8,
                      "solved": 8,
                      "sat": 0,
                      "unsat": 8,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 4.5133090000000005
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 8,
                    "baseline_common_seconds": 4.443823,
                    "candidate_common_seconds": 4.5133090000000005,
                    "par2_ratio": 1.0156365363786992,
                    "common_runtime_ratio": 1.0156365363786992
                  },
                  "QG": {
                    "baseline": {
                      "rows": 8,
                      "solved": 8,
                      "sat": 2,
                      "unsat": 6,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 4.716624
                    },
                    "candidate": {
                      "rows": 8,
                      "solved": 8,
                      "sat": 2,
                      "unsat": 6,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 4.874239
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 8,
                    "baseline_common_seconds": 4.716624,
                    "candidate_common_seconds": 4.874239,
                    "par2_ratio": 1.0334169100610946,
                    "common_runtime_ratio": 1.0334169100610946
                  },
                  "SEQ": {
                    "baseline": {
                      "rows": 8,
                      "solved": 8,
                      "sat": 0,
                      "unsat": 8,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.510846
                    },
                    "candidate": {
                      "rows": 8,
                      "solved": 8,
                      "sat": 0,
                      "unsat": 8,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.6849779999999999
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 8,
                    "baseline_common_seconds": 1.510846,
                    "candidate_common_seconds": 1.6849779999999999,
                    "par2_ratio": 1.115254632172968,
                    "common_runtime_ratio": 1.115254632172968
                  }
                }
              },
              "QF_UFLIA": {
                "timing_status": "needs-triage",
                "note": "Timing only; independent SAT-model coverage and recorded-reference joins are separate acceptance gates. Any lost solve requires three paired reruns; loss in at least two blocks acceptance.",
                "identities": {
                  "baseline": [
                    "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                  ],
                  "candidate": [
                    "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                  ]
                },
                "expected_unique_inputs": 20,
                "timeout": 10.0,
                "ratio_limit": 1.01,
                "rounds": [
                  {
                    "baseline": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 17,
                      "unsat": 3,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 6.848698
                    },
                    "candidate": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 17,
                      "unsat": 3,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 7.005327
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 20,
                    "baseline_common_seconds": 6.848698,
                    "candidate_common_seconds": 7.005327,
                    "par2_ratio": 1.0228698943945258,
                    "common_runtime_ratio": 1.0228698943945258
                  },
                  {
                    "baseline": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 17,
                      "unsat": 3,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 6.757838
                    },
                    "candidate": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 17,
                      "unsat": 3,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 6.992269
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 20,
                    "baseline_common_seconds": 6.757838,
                    "candidate_common_seconds": 6.992269,
                    "par2_ratio": 1.0346902367295576,
                    "common_runtime_ratio": 1.0346902367295576
                  }
                ],
                "aggregate": {
                  "baseline": {
                    "rows": 40,
                    "solved": 40,
                    "sat": 34,
                    "unsat": 6,
                    "timeout": 0,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 0,
                    "wrong_answer": 0,
                    "par2": 13.606536
                  },
                  "candidate": {
                    "rows": 40,
                    "solved": 40,
                    "sat": 34,
                    "unsat": 6,
                    "timeout": 0,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 0,
                    "wrong_answer": 0,
                    "par2": 13.997596
                  },
                  "disagreements": [],
                  "lost": [],
                  "gained": [],
                  "common_solved": 40,
                  "baseline_common_seconds": 13.606536,
                  "candidate_common_seconds": 13.997596,
                  "par2_ratio": 1.028740599370773,
                  "common_runtime_ratio": 1.028740599370773
                },
                "families": {
                  "20230314-Jaroslav-Bendik-Certora": {
                    "baseline": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 2,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.673192
                    },
                    "candidate": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 2,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.72424
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 4,
                    "baseline_common_seconds": 1.673192,
                    "candidate_common_seconds": 1.72424,
                    "par2_ratio": 1.0305093497936877,
                    "common_runtime_ratio": 1.0305093497936877
                  },
                  "TwoSquares": {
                    "baseline": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.344244
                    },
                    "candidate": {
                      "rows": 2,
                      "solved": 2,
                      "sat": 0,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.35308300000000004
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 2,
                    "baseline_common_seconds": 0.344244,
                    "candidate_common_seconds": 0.35308300000000004,
                    "par2_ratio": 1.0256765550016849,
                    "common_runtime_ratio": 1.0256765550016849
                  },
                  "mathsat": {
                    "baseline": {
                      "rows": 18,
                      "solved": 18,
                      "sat": 18,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 6.656726
                    },
                    "candidate": {
                      "rows": 18,
                      "solved": 18,
                      "sat": 18,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 6.83601
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 18,
                    "baseline_common_seconds": 6.656726,
                    "candidate_common_seconds": 6.83601,
                    "par2_ratio": 1.0269327594375974,
                    "common_runtime_ratio": 1.0269327594375974
                  },
                  "wisas": {
                    "baseline": {
                      "rows": 16,
                      "solved": 16,
                      "sat": 14,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 4.932374
                    },
                    "candidate": {
                      "rows": 16,
                      "solved": 16,
                      "sat": 14,
                      "unsat": 2,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 5.084263
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 16,
                    "baseline_common_seconds": 4.932374,
                    "candidate_common_seconds": 5.084263,
                    "par2_ratio": 1.0307942990535592,
                    "common_runtime_ratio": 1.0307942990535592
                  }
                }
              },
              "QF_UFLRA": {
                "timing_status": "needs-triage",
                "note": "Timing only; independent SAT-model coverage and recorded-reference joins are separate acceptance gates. Any lost solve requires three paired reruns; loss in at least two blocks acceptance.",
                "identities": {
                  "baseline": [
                    "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                  ],
                  "candidate": [
                    "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                  ]
                },
                "expected_unique_inputs": 20,
                "timeout": 10.0,
                "ratio_limit": 1.01,
                "rounds": [
                  {
                    "baseline": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 12,
                      "unsat": 8,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 6.366271
                    },
                    "candidate": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 12,
                      "unsat": 8,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 6.442748
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 20,
                    "baseline_common_seconds": 6.366271,
                    "candidate_common_seconds": 6.442748,
                    "par2_ratio": 1.0120128407980118,
                    "common_runtime_ratio": 1.0120128407980118
                  },
                  {
                    "baseline": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 12,
                      "unsat": 8,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 6.3305430000000005
                    },
                    "candidate": {
                      "rows": 20,
                      "solved": 20,
                      "sat": 12,
                      "unsat": 8,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 6.477844
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 20,
                    "baseline_common_seconds": 6.3305430000000005,
                    "candidate_common_seconds": 6.477844,
                    "par2_ratio": 1.0232683041565311,
                    "common_runtime_ratio": 1.0232683041565311
                  }
                ],
                "aggregate": {
                  "baseline": {
                    "rows": 40,
                    "solved": 40,
                    "sat": 24,
                    "unsat": 16,
                    "timeout": 0,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 0,
                    "wrong_answer": 0,
                    "par2": 12.696814
                  },
                  "candidate": {
                    "rows": 40,
                    "solved": 40,
                    "sat": 24,
                    "unsat": 16,
                    "timeout": 0,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 0,
                    "wrong_answer": 0,
                    "par2": 12.920592000000001
                  },
                  "disagreements": [],
                  "lost": [],
                  "gained": [],
                  "common_solved": 40,
                  "baseline_common_seconds": 12.696814,
                  "candidate_common_seconds": 12.920592000000001,
                  "par2_ratio": 1.0176247364102522,
                  "common_runtime_ratio": 1.0176247364102522
                },
                "families": {
                  "cpachecker-bmc-svcomp14": {
                    "baseline": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 4,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.207322
                    },
                    "candidate": {
                      "rows": 4,
                      "solved": 4,
                      "sat": 4,
                      "unsat": 0,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.230589
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 4,
                    "baseline_common_seconds": 1.207322,
                    "candidate_common_seconds": 1.230589,
                    "par2_ratio": 1.0192715779220456,
                    "common_runtime_ratio": 1.0192715779220456
                  },
                  "cpachecker-induction-svcomp14": {
                    "baseline": {
                      "rows": 18,
                      "solved": 18,
                      "sat": 14,
                      "unsat": 4,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 10.050625
                    },
                    "candidate": {
                      "rows": 18,
                      "solved": 18,
                      "sat": 14,
                      "unsat": 4,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 10.214827
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 18,
                    "baseline_common_seconds": 10.050625,
                    "candidate_common_seconds": 10.214827,
                    "par2_ratio": 1.0163374914495367,
                    "common_runtime_ratio": 1.0163374914495367
                  },
                  "mathsat": {
                    "baseline": {
                      "rows": 18,
                      "solved": 18,
                      "sat": 6,
                      "unsat": 12,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.438867
                    },
                    "candidate": {
                      "rows": 18,
                      "solved": 18,
                      "sat": 6,
                      "unsat": 12,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 1.475176
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 18,
                    "baseline_common_seconds": 1.438867,
                    "candidate_common_seconds": 1.475176,
                    "par2_ratio": 1.0252344379292875,
                    "common_runtime_ratio": 1.0252344379292875
                  }
                }
              }
            },
            "shared_profiles": {
              "default": {
                "timing_status": "pass",
                "note": "Timing only; independent SAT-model coverage and recorded-reference joins are separate acceptance gates. Any lost solve requires three paired reruns; loss in at least two blocks acceptance.",
                "identities": {
                  "baseline": [
                    "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                  ],
                  "candidate": [
                    "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                  ]
                },
                "expected_unique_inputs": 120,
                "timeout": 5.0,
                "ratio_limit": 1.01,
                "rounds": [
                  {
                    "baseline": {
                      "rows": 120,
                      "solved": 106,
                      "sat": 52,
                      "unsat": 54,
                      "timeout": 6,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 8,
                      "wrong_answer": 0,
                      "par2": 143.781195
                    },
                    "candidate": {
                      "rows": 120,
                      "solved": 106,
                      "sat": 52,
                      "unsat": 54,
                      "timeout": 6,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 8,
                      "wrong_answer": 0,
                      "par2": 143.532321
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 106,
                    "baseline_common_seconds": 3.781195,
                    "candidate_common_seconds": 3.532321,
                    "par2_ratio": 0.9982690782337704,
                    "common_runtime_ratio": 0.9341811252791776
                  },
                  {
                    "baseline": {
                      "rows": 120,
                      "solved": 106,
                      "sat": 52,
                      "unsat": 54,
                      "timeout": 6,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 8,
                      "wrong_answer": 0,
                      "par2": 143.546169
                    },
                    "candidate": {
                      "rows": 120,
                      "solved": 106,
                      "sat": 52,
                      "unsat": 54,
                      "timeout": 6,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 8,
                      "wrong_answer": 0,
                      "par2": 143.575633
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 106,
                    "baseline_common_seconds": 3.546169,
                    "candidate_common_seconds": 3.5756330000000003,
                    "par2_ratio": 1.0002052580030891,
                    "common_runtime_ratio": 1.0083086846678768
                  }
                ],
                "aggregate": {
                  "baseline": {
                    "rows": 240,
                    "solved": 212,
                    "sat": 104,
                    "unsat": 108,
                    "timeout": 12,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 16,
                    "wrong_answer": 0,
                    "par2": 287.327364
                  },
                  "candidate": {
                    "rows": 240,
                    "solved": 212,
                    "sat": 104,
                    "unsat": 108,
                    "timeout": 12,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 16,
                    "wrong_answer": 0,
                    "par2": 287.107954
                  },
                  "disagreements": [],
                  "lost": [],
                  "gained": [],
                  "common_solved": 212,
                  "baseline_common_seconds": 7.327364,
                  "candidate_common_seconds": 7.107954,
                  "par2_ratio": 0.9992363762471298,
                  "common_runtime_ratio": 0.9700560801947331
                },
                "families": {
                  "QF_LIA": {
                    "baseline": {
                      "rows": 28,
                      "solved": 26,
                      "sat": 22,
                      "unsat": 4,
                      "timeout": 2,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 20.435754
                    },
                    "candidate": {
                      "rows": 28,
                      "solved": 26,
                      "sat": 22,
                      "unsat": 4,
                      "timeout": 2,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 20.442231
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 26,
                    "baseline_common_seconds": 0.43575400000000003,
                    "candidate_common_seconds": 0.442231,
                    "par2_ratio": 1.00031694450814,
                    "common_runtime_ratio": 1.0148638910945165
                  },
                  "QF_LRA": {
                    "baseline": {
                      "rows": 24,
                      "solved": 24,
                      "sat": 16,
                      "unsat": 8,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.343274
                    },
                    "candidate": {
                      "rows": 24,
                      "solved": 24,
                      "sat": 16,
                      "unsat": 8,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.33286
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 24,
                    "baseline_common_seconds": 0.343274,
                    "candidate_common_seconds": 0.33286,
                    "par2_ratio": 0.9696627184115312,
                    "common_runtime_ratio": 0.9696627184115312
                  },
                  "QF_UF": {
                    "baseline": {
                      "rows": 62,
                      "solved": 62,
                      "sat": 24,
                      "unsat": 38,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 3.1852300000000002
                    },
                    "candidate": {
                      "rows": 62,
                      "solved": 62,
                      "sat": 24,
                      "unsat": 38,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 3.165275
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 62,
                    "baseline_common_seconds": 3.1852300000000002,
                    "candidate_common_seconds": 3.165275,
                    "par2_ratio": 0.9937351462845696,
                    "common_runtime_ratio": 0.9937351462845696
                  },
                  "QF_UFLIA": {
                    "baseline": {
                      "rows": 32,
                      "solved": 30,
                      "sat": 14,
                      "unsat": 16,
                      "timeout": 2,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 22.408511999999998
                    },
                    "candidate": {
                      "rows": 32,
                      "solved": 30,
                      "sat": 14,
                      "unsat": 16,
                      "timeout": 2,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 22.42783
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 30,
                    "baseline_common_seconds": 2.408512,
                    "candidate_common_seconds": 2.42783,
                    "par2_ratio": 1.000862083122699,
                    "common_runtime_ratio": 1.0080207198469429
                  },
                  "QF_UFLRA": {
                    "baseline": {
                      "rows": 52,
                      "solved": 52,
                      "sat": 28,
                      "unsat": 24,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.565396
                    },
                    "candidate": {
                      "rows": 52,
                      "solved": 52,
                      "sat": 28,
                      "unsat": 24,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.556695
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 52,
                    "baseline_common_seconds": 0.565396,
                    "candidate_common_seconds": 0.556695,
                    "par2_ratio": 0.9846107860685255,
                    "common_runtime_ratio": 0.9846107860685255
                  },
                  "UF": {
                    "baseline": {
                      "rows": 42,
                      "solved": 18,
                      "sat": 0,
                      "unsat": 18,
                      "timeout": 8,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 16,
                      "wrong_answer": 0,
                      "par2": 240.389198
                    },
                    "candidate": {
                      "rows": 42,
                      "solved": 18,
                      "sat": 0,
                      "unsat": 18,
                      "timeout": 8,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 16,
                      "wrong_answer": 0,
                      "par2": 240.183063
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 18,
                    "baseline_common_seconds": 0.389198,
                    "candidate_common_seconds": 0.183063,
                    "par2_ratio": 0.9991424947472057,
                    "common_runtime_ratio": 0.4703595599155186
                  }
                }
              },
              "online": {
                "timing_status": "needs-triage",
                "note": "Timing only; independent SAT-model coverage and recorded-reference joins are separate acceptance gates. Any lost solve requires three paired reruns; loss in at least two blocks acceptance.",
                "identities": {
                  "baseline": [
                    "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                  ],
                  "candidate": [
                    "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                  ]
                },
                "expected_unique_inputs": 120,
                "timeout": 5.0,
                "ratio_limit": 1.01,
                "rounds": [
                  {
                    "baseline": {
                      "rows": 120,
                      "solved": 103,
                      "sat": 52,
                      "unsat": 51,
                      "timeout": 9,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 8,
                      "wrong_answer": 0,
                      "par2": 179.673038
                    },
                    "candidate": {
                      "rows": 120,
                      "solved": 102,
                      "sat": 52,
                      "unsat": 50,
                      "timeout": 10,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 8,
                      "wrong_answer": 0,
                      "par2": 184.729201
                    },
                    "disagreements": [],
                    "lost": [
                      "QF_UF/NEQ/NEQ048_size7.smt2"
                    ],
                    "gained": [],
                    "common_solved": 102,
                    "baseline_common_seconds": 4.74149,
                    "candidate_common_seconds": 4.729201,
                    "par2_ratio": 1.0281409111588573,
                    "common_runtime_ratio": 0.9974081986885979
                  },
                  {
                    "baseline": {
                      "rows": 120,
                      "solved": 103,
                      "sat": 52,
                      "unsat": 51,
                      "timeout": 9,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 8,
                      "wrong_answer": 0,
                      "par2": 179.333756
                    },
                    "candidate": {
                      "rows": 120,
                      "solved": 103,
                      "sat": 52,
                      "unsat": 51,
                      "timeout": 9,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 8,
                      "wrong_answer": 0,
                      "par2": 179.346315
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 103,
                    "baseline_common_seconds": 9.333756000000001,
                    "candidate_common_seconds": 9.346315,
                    "par2_ratio": 1.0000700314334576,
                    "common_runtime_ratio": 1.0013455462088359
                  }
                ],
                "aggregate": {
                  "baseline": {
                    "rows": 240,
                    "solved": 206,
                    "sat": 104,
                    "unsat": 102,
                    "timeout": 18,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 16,
                    "wrong_answer": 0,
                    "par2": 359.006794
                  },
                  "candidate": {
                    "rows": 240,
                    "solved": 205,
                    "sat": 104,
                    "unsat": 101,
                    "timeout": 19,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 16,
                    "wrong_answer": 0,
                    "par2": 364.075516
                  },
                  "disagreements": [],
                  "lost": [
                    "round-0:QF_UF/NEQ/NEQ048_size7.smt2"
                  ],
                  "gained": [],
                  "common_solved": 205,
                  "baseline_common_seconds": 14.075246,
                  "candidate_common_seconds": 14.075516,
                  "par2_ratio": 1.0141187355913939,
                  "common_runtime_ratio": 1.0000191826132205
                },
                "families": {
                  "QF_LIA": {
                    "baseline": {
                      "rows": 28,
                      "solved": 26,
                      "sat": 22,
                      "unsat": 4,
                      "timeout": 2,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 20.461785
                    },
                    "candidate": {
                      "rows": 28,
                      "solved": 26,
                      "sat": 22,
                      "unsat": 4,
                      "timeout": 2,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 20.474157
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 26,
                    "baseline_common_seconds": 0.461785,
                    "candidate_common_seconds": 0.474157,
                    "par2_ratio": 1.0006046393313195,
                    "common_runtime_ratio": 1.0267916887729138
                  },
                  "QF_LRA": {
                    "baseline": {
                      "rows": 24,
                      "solved": 24,
                      "sat": 16,
                      "unsat": 8,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.379609
                    },
                    "candidate": {
                      "rows": 24,
                      "solved": 24,
                      "sat": 16,
                      "unsat": 8,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.382567
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 24,
                    "baseline_common_seconds": 0.379609,
                    "candidate_common_seconds": 0.382567,
                    "par2_ratio": 1.007792228319139,
                    "common_runtime_ratio": 1.007792228319139
                  },
                  "QF_UF": {
                    "baseline": {
                      "rows": 62,
                      "solved": 56,
                      "sat": 24,
                      "unsat": 32,
                      "timeout": 6,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 70.699646
                    },
                    "candidate": {
                      "rows": 62,
                      "solved": 55,
                      "sat": 24,
                      "unsat": 31,
                      "timeout": 7,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 75.738962
                    },
                    "disagreements": [],
                    "lost": [
                      "round-0:QF_UF/NEQ/NEQ048_size7.smt2"
                    ],
                    "gained": [],
                    "common_solved": 55,
                    "baseline_common_seconds": 5.768098,
                    "candidate_common_seconds": 5.738962000000001,
                    "par2_ratio": 1.0712778109242584,
                    "common_runtime_ratio": 0.9949487682074751
                  },
                  "QF_UFLIA": {
                    "baseline": {
                      "rows": 32,
                      "solved": 30,
                      "sat": 14,
                      "unsat": 16,
                      "timeout": 2,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 26.767747
                    },
                    "candidate": {
                      "rows": 32,
                      "solved": 30,
                      "sat": 14,
                      "unsat": 16,
                      "timeout": 2,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 26.810301
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 30,
                    "baseline_common_seconds": 6.767747,
                    "candidate_common_seconds": 6.810301,
                    "par2_ratio": 1.0015897490364056,
                    "common_runtime_ratio": 1.0062877645987653
                  },
                  "QF_UFLRA": {
                    "baseline": {
                      "rows": 52,
                      "solved": 52,
                      "sat": 28,
                      "unsat": 24,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.52477
                    },
                    "candidate": {
                      "rows": 52,
                      "solved": 52,
                      "sat": 28,
                      "unsat": 24,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 0.495212
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 52,
                    "baseline_common_seconds": 0.52477,
                    "candidate_common_seconds": 0.495212,
                    "par2_ratio": 0.9436743716294759,
                    "common_runtime_ratio": 0.9436743716294759
                  },
                  "UF": {
                    "baseline": {
                      "rows": 42,
                      "solved": 18,
                      "sat": 0,
                      "unsat": 18,
                      "timeout": 8,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 16,
                      "wrong_answer": 0,
                      "par2": 240.173237
                    },
                    "candidate": {
                      "rows": 42,
                      "solved": 18,
                      "sat": 0,
                      "unsat": 18,
                      "timeout": 8,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 16,
                      "wrong_answer": 0,
                      "par2": 240.174317
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 18,
                    "baseline_common_seconds": 0.173237,
                    "candidate_common_seconds": 0.174317,
                    "par2_ratio": 1.0000044967541493,
                    "common_runtime_ratio": 1.0062342340262185
                  }
                }
              },
              "lazy-uf": {
                "timing_status": "needs-triage",
                "note": "Timing only; independent SAT-model coverage and recorded-reference joins are separate acceptance gates. Any lost solve requires three paired reruns; loss in at least two blocks acceptance.",
                "identities": {
                  "baseline": [
                    "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                  ],
                  "candidate": [
                    "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                  ]
                },
                "expected_unique_inputs": 31,
                "timeout": 5.0,
                "ratio_limit": 1.01,
                "rounds": [
                  {
                    "baseline": {
                      "rows": 31,
                      "solved": 23,
                      "sat": 10,
                      "unsat": 13,
                      "timeout": 8,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 80.147155
                    },
                    "candidate": {
                      "rows": 31,
                      "solved": 23,
                      "sat": 10,
                      "unsat": 13,
                      "timeout": 8,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 80.148576
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 23,
                    "baseline_common_seconds": 0.147155,
                    "candidate_common_seconds": 0.148576,
                    "par2_ratio": 1.000017729886981,
                    "common_runtime_ratio": 1.009656484659033
                  },
                  {
                    "baseline": {
                      "rows": 31,
                      "solved": 23,
                      "sat": 10,
                      "unsat": 13,
                      "timeout": 8,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 80.145503
                    },
                    "candidate": {
                      "rows": 31,
                      "solved": 23,
                      "sat": 10,
                      "unsat": 13,
                      "timeout": 8,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 80.148755
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 23,
                    "baseline_common_seconds": 0.145503,
                    "candidate_common_seconds": 0.148755,
                    "par2_ratio": 1.0000405762005136,
                    "common_runtime_ratio": 1.0223500546380488
                  }
                ],
                "aggregate": {
                  "baseline": {
                    "rows": 62,
                    "solved": 46,
                    "sat": 20,
                    "unsat": 26,
                    "timeout": 16,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 0,
                    "wrong_answer": 0,
                    "par2": 160.292658
                  },
                  "candidate": {
                    "rows": 62,
                    "solved": 46,
                    "sat": 20,
                    "unsat": 26,
                    "timeout": 16,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 0,
                    "wrong_answer": 0,
                    "par2": 160.297331
                  },
                  "disagreements": [],
                  "lost": [],
                  "gained": [],
                  "common_solved": 46,
                  "baseline_common_seconds": 0.292658,
                  "candidate_common_seconds": 0.297331,
                  "par2_ratio": 1.0000291529260188,
                  "common_runtime_ratio": 1.0159674432272483
                },
                "families": {
                  "QF_UF": {
                    "baseline": {
                      "rows": 62,
                      "solved": 46,
                      "sat": 20,
                      "unsat": 26,
                      "timeout": 16,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 160.292658
                    },
                    "candidate": {
                      "rows": 62,
                      "solved": 46,
                      "sat": 20,
                      "unsat": 26,
                      "timeout": 16,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 160.297331
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 46,
                    "baseline_common_seconds": 0.292658,
                    "candidate_common_seconds": 0.297331,
                    "par2_ratio": 1.0000291529260188,
                    "common_runtime_ratio": 1.0159674432272483
                  }
                }
              },
              "offline-uflia": {
                "timing_status": "pass",
                "note": "Timing only; independent SAT-model coverage and recorded-reference joins are separate acceptance gates. Any lost solve requires three paired reruns; loss in at least two blocks acceptance.",
                "identities": {
                  "baseline": [
                    "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                  ],
                  "candidate": [
                    "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                  ]
                },
                "expected_unique_inputs": 16,
                "timeout": 5.0,
                "ratio_limit": 1.01,
                "rounds": [
                  {
                    "baseline": {
                      "rows": 16,
                      "solved": 13,
                      "sat": 6,
                      "unsat": 7,
                      "timeout": 3,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 33.416556
                    },
                    "candidate": {
                      "rows": 16,
                      "solved": 13,
                      "sat": 6,
                      "unsat": 7,
                      "timeout": 3,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 33.418702
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 13,
                    "baseline_common_seconds": 3.416556,
                    "candidate_common_seconds": 3.418702,
                    "par2_ratio": 1.0000642196640492,
                    "common_runtime_ratio": 1.0006281179058678
                  },
                  {
                    "baseline": {
                      "rows": 16,
                      "solved": 13,
                      "sat": 6,
                      "unsat": 7,
                      "timeout": 3,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 33.406756
                    },
                    "candidate": {
                      "rows": 16,
                      "solved": 13,
                      "sat": 6,
                      "unsat": 7,
                      "timeout": 3,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 33.370757
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 13,
                    "baseline_common_seconds": 3.4067559999999997,
                    "candidate_common_seconds": 3.370757,
                    "par2_ratio": 0.9989224036000381,
                    "common_runtime_ratio": 0.9894330559629161
                  }
                ],
                "aggregate": {
                  "baseline": {
                    "rows": 32,
                    "solved": 26,
                    "sat": 12,
                    "unsat": 14,
                    "timeout": 6,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 0,
                    "wrong_answer": 0,
                    "par2": 66.823312
                  },
                  "candidate": {
                    "rows": 32,
                    "solved": 26,
                    "sat": 12,
                    "unsat": 14,
                    "timeout": 6,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 0,
                    "wrong_answer": 0,
                    "par2": 66.789459
                  },
                  "disagreements": [],
                  "lost": [],
                  "gained": [],
                  "common_solved": 26,
                  "baseline_common_seconds": 6.823312,
                  "candidate_common_seconds": 6.789459,
                  "par2_ratio": 0.9994933953587932,
                  "common_runtime_ratio": 0.995038626403131
                },
                "families": {
                  "QF_UFLIA": {
                    "baseline": {
                      "rows": 32,
                      "solved": 26,
                      "sat": 12,
                      "unsat": 14,
                      "timeout": 6,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 66.823312
                    },
                    "candidate": {
                      "rows": 32,
                      "solved": 26,
                      "sat": 12,
                      "unsat": 14,
                      "timeout": 6,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 66.789459
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 26,
                    "baseline_common_seconds": 6.823312,
                    "candidate_common_seconds": 6.789459,
                    "par2_ratio": 0.9994933953587932,
                    "common_runtime_ratio": 0.995038626403131
                  }
                }
              }
            },
            "preservation_reruns": {
              "status": "Timing reruns complete with no repeated loss; all213SAT measurements directly validated after repairing setup in175600. Runtime flags retained.",
              "jobs": {
                "QF_UF": "173404",
                "QF_LIA": "173405",
                "QF_LRA": "173406",
                "QF_UFLRA": "173407",
                "QF_UFLIA": "173408",
                "shared_online_lost_solve": "173409",
                "shared_lazy_uf": "173410"
              },
              "reason": "Five-logic solve counts preserved, but UF/UFLIA/UFLRA small-runtime ratios flagged; shared online lost NEQ048_size7 at4.931548s baseline versus5.012145s candidate timeout; lazyUF common-runtime ratio flagged. Three fresh paired runs retain original time/memory/CPU limits.",
              "limits": "10seconds for five-logic preservation;5seconds shared;8GiB1CPU,nomultithread. Five-logic and online loss pinned original nodes; lazyUF complete31-input manifest in one paired job.",
              "artifacts": [
                "results/integer-preservation-reruns",
                "results/integer-shared-online-loss",
                "results/integer-shared-lazy-reruns",
                "results/integer-preservation-rerun-jobs.txt"
              ],
              "replay_job": "173414",
              "online_loss_reruns": {
                "aggregate": {
                  "baseline": {
                    "error": 0,
                    "par2": 14.264447,
                    "rows": 3,
                    "sat": 0,
                    "solved": 3,
                    "timeout": 0,
                    "unknown": 0,
                    "unsat": 3,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "baseline_common_seconds": 14.264447,
                  "candidate": {
                    "error": 0,
                    "par2": 14.183229,
                    "rows": 3,
                    "sat": 0,
                    "solved": 3,
                    "timeout": 0,
                    "unknown": 0,
                    "unsat": 3,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "candidate_common_seconds": 14.183229,
                  "common_runtime_ratio": 0.9943062636777998,
                  "common_solved": 3,
                  "disagreements": [],
                  "gained": [],
                  "lost": [],
                  "par2_ratio": 0.9943062636777998
                },
                "expected_unique_inputs": 1,
                "families": {
                  "QF_UF": {
                    "baseline": {
                      "error": 0,
                      "par2": 14.264447,
                      "rows": 3,
                      "sat": 0,
                      "solved": 3,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 3,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 14.264447,
                    "candidate": {
                      "error": 0,
                      "par2": 14.183229,
                      "rows": 3,
                      "sat": 0,
                      "solved": 3,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 3,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 14.183229,
                    "common_runtime_ratio": 0.9943062636777998,
                    "common_solved": 3,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.9943062636777998
                  }
                },
                "identities": {
                  "baseline": [
                    "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                  ],
                  "candidate": [
                    "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                  ]
                },
                "loss_counts": {},
                "loss_rerun_status": "no-repeated-loss",
                "note": "Three complete paired reruns; a loss in at least two blocks acceptance. This verdict covers the repeat-loss criterion only, not the full-corpus timing thresholds, model validation or recorded-reference evidence. Timeout/unknown rows remain explicit in each pair's metrics.",
                "ratio_limit": 1.01,
                "repeated_losses": [],
                "rounds": [
                  {
                    "baseline": {
                      "error": 0,
                      "par2": 4.749172,
                      "rows": 1,
                      "sat": 0,
                      "solved": 1,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 1,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 4.749172,
                    "candidate": {
                      "error": 0,
                      "par2": 4.723449,
                      "rows": 1,
                      "sat": 0,
                      "solved": 1,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 1,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 4.723449,
                    "common_runtime_ratio": 0.9945836874301457,
                    "common_solved": 1,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.9945836874301457
                  },
                  {
                    "baseline": {
                      "error": 0,
                      "par2": 4.749446,
                      "rows": 1,
                      "sat": 0,
                      "solved": 1,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 1,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 4.749446,
                    "candidate": {
                      "error": 0,
                      "par2": 4.734629,
                      "rows": 1,
                      "sat": 0,
                      "solved": 1,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 1,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 4.734629,
                    "common_runtime_ratio": 0.9968802677196457,
                    "common_solved": 1,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.9968802677196457
                  },
                  {
                    "baseline": {
                      "error": 0,
                      "par2": 4.765829,
                      "rows": 1,
                      "sat": 0,
                      "solved": 1,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 1,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 4.765829,
                    "candidate": {
                      "error": 0,
                      "par2": 4.725151,
                      "rows": 1,
                      "sat": 0,
                      "solved": 1,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 1,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 4.725151,
                    "common_runtime_ratio": 0.991464653893373,
                    "common_solved": 1,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.991464653893373
                  }
                ],
                "timeout": 5.0,
                "timing_status": "pass"
              },
              "five_logic_three_round_summaries": {
                "QF_LIA": {
                  "timing_status": "needs-triage",
                  "note": "Three complete paired reruns; a loss in at least two blocks acceptance. This verdict covers the repeat-loss criterion only, not the full-corpus timing thresholds, model validation or recorded-reference evidence. Timeout/unknown rows remain explicit in each pair's metrics.",
                  "identities": {
                    "baseline": [
                      "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                    ],
                    "candidate": [
                      "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                    ]
                  },
                  "expected_unique_inputs": 20,
                  "timeout": 10.0,
                  "ratio_limit": 1.01,
                  "rounds": [
                    {
                      "baseline": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 14,
                        "unsat": 6,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.542093
                      },
                      "candidate": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 14,
                        "unsat": 6,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.667081
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 20,
                      "baseline_common_seconds": 6.542093,
                      "candidate_common_seconds": 6.667081,
                      "par2_ratio": 1.019105200736217,
                      "common_runtime_ratio": 1.019105200736217
                    },
                    {
                      "baseline": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 14,
                        "unsat": 6,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.33
                      },
                      "candidate": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 14,
                        "unsat": 6,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.593341
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 20,
                      "baseline_common_seconds": 6.33,
                      "candidate_common_seconds": 6.593341,
                      "par2_ratio": 1.0416020537124802,
                      "common_runtime_ratio": 1.0416020537124802
                    },
                    {
                      "baseline": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 14,
                        "unsat": 6,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.277449
                      },
                      "candidate": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 14,
                        "unsat": 6,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.519101
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 20,
                      "baseline_common_seconds": 6.277449,
                      "candidate_common_seconds": 6.519101,
                      "par2_ratio": 1.038495254999284,
                      "common_runtime_ratio": 1.038495254999284
                    }
                  ],
                  "aggregate": {
                    "baseline": {
                      "rows": 60,
                      "solved": 60,
                      "sat": 42,
                      "unsat": 18,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 19.149542
                    },
                    "candidate": {
                      "rows": 60,
                      "solved": 60,
                      "sat": 42,
                      "unsat": 18,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 19.779523
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 60,
                    "baseline_common_seconds": 19.149542,
                    "candidate_common_seconds": 19.779523,
                    "par2_ratio": 1.0328979669592098,
                    "common_runtime_ratio": 1.0328979669592098
                  },
                  "families": {
                    "20180326-Bromberger": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 3.6173330000000004
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 3.630779
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 3.6173330000000004,
                      "candidate_common_seconds": 3.630779,
                      "par2_ratio": 1.0037171031807135,
                      "common_runtime_ratio": 1.0037171031807135
                    },
                    "2019-cmodelsdiff": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.23628300000000002
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.230528
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.23628300000000002,
                      "candidate_common_seconds": 0.230528,
                      "par2_ratio": 0.9756436138020932,
                      "common_runtime_ratio": 0.9756436138020932
                    },
                    "2019-ezsmt": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 1.7448329999999999
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 1.88315
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 1.7448329999999999,
                      "candidate_common_seconds": 1.88315,
                      "par2_ratio": 1.0792723429692126,
                      "common_runtime_ratio": 1.0792723429692126
                    },
                    "20210219-Dartagnan": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 2.2924059999999997
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 2.464882
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 2.2924059999999997,
                      "candidate_common_seconds": 2.464882,
                      "par2_ratio": 1.0752379814046902,
                      "common_runtime_ratio": 1.0752379814046902
                    },
                    "20220307-SMPT": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.465649
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.491448
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.465649,
                      "candidate_common_seconds": 0.491448,
                      "par2_ratio": 1.0554043925789598,
                      "common_runtime_ratio": 1.0554043925789598
                    },
                    "20231117-c_inference": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.339876
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.361129
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.339876,
                      "candidate_common_seconds": 0.361129,
                      "par2_ratio": 1.0625316291824076,
                      "common_runtime_ratio": 1.0625316291824076
                    },
                    "Averest": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.883875
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.924235
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.883875,
                      "candidate_common_seconds": 0.924235,
                      "par2_ratio": 1.0456625654080045,
                      "common_runtime_ratio": 1.0456625654080045
                    },
                    "CAV_2009_benchmarks": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.299321
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.293606
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.299321,
                      "candidate_common_seconds": 0.293606,
                      "par2_ratio": 0.9809067856916153,
                      "common_runtime_ratio": 0.9809067856916153
                    },
                    "CIRC": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.42512
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.444847
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.42512,
                      "candidate_common_seconds": 0.444847,
                      "par2_ratio": 1.04640336846067,
                      "common_runtime_ratio": 1.04640336846067
                    },
                    "RTCL": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.172883
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.176819
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.172883,
                      "candidate_common_seconds": 0.176819,
                      "par2_ratio": 1.022766842315323,
                      "common_runtime_ratio": 1.022766842315323
                    },
                    "RWS": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.509553
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.551612
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.509553,
                      "candidate_common_seconds": 0.551612,
                      "par2_ratio": 1.082540972185425,
                      "common_runtime_ratio": 1.082540972185425
                    },
                    "arctic-matrix": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.776924
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.787647
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.776924,
                      "candidate_common_seconds": 0.787647,
                      "par2_ratio": 1.0138018647898637,
                      "common_runtime_ratio": 1.0138018647898637
                    },
                    "bofill-scheduling": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.274745
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.30439700000000003
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.274745,
                      "candidate_common_seconds": 0.30439700000000003,
                      "par2_ratio": 1.107925530946878,
                      "common_runtime_ratio": 1.107925530946878
                    },
                    "calypto": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 2.252638
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 2.318557
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 2.252638,
                      "candidate_common_seconds": 2.318557,
                      "par2_ratio": 1.0292630240633427,
                      "common_runtime_ratio": 1.0292630240633427
                    },
                    "convert": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.238392
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.242148
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.238392,
                      "candidate_common_seconds": 0.242148,
                      "par2_ratio": 1.01575556226719,
                      "common_runtime_ratio": 1.01575556226719
                    },
                    "cut_lemmas": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.330813
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.322485
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.330813,
                      "candidate_common_seconds": 0.322485,
                      "par2_ratio": 0.9748256567909968,
                      "common_runtime_ratio": 0.9748256567909968
                    },
                    "dillig": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.219146
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.215928
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.219146,
                      "candidate_common_seconds": 0.215928,
                      "par2_ratio": 0.9853157255893331,
                      "common_runtime_ratio": 0.9853157255893331
                    },
                    "fft": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.224857
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.24886799999999998
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.224857,
                      "candidate_common_seconds": 0.24886799999999998,
                      "par2_ratio": 1.106783422352873,
                      "common_runtime_ratio": 1.106783422352873
                    },
                    "mathsat": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 2.870216
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 2.918252
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 2.870216,
                      "candidate_common_seconds": 2.918252,
                      "par2_ratio": 1.0167360226547408,
                      "common_runtime_ratio": 1.0167360226547408
                    },
                    "miplib2003": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.974679
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.968206
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.974679,
                      "candidate_common_seconds": 0.968206,
                      "par2_ratio": 0.9933588391665359,
                      "common_runtime_ratio": 0.9933588391665359
                    }
                  },
                  "loss_rerun_status": "no-repeated-loss",
                  "loss_counts": {},
                  "repeated_losses": []
                },
                "QF_LRA": {
                  "timing_status": "pass",
                  "note": "Three complete paired reruns; a loss in at least two blocks acceptance. This verdict covers the repeat-loss criterion only, not the full-corpus timing thresholds, model validation or recorded-reference evidence. Timeout/unknown rows remain explicit in each pair's metrics.",
                  "identities": {
                    "baseline": [
                      "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                    ],
                    "candidate": [
                      "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                    ]
                  },
                  "expected_unique_inputs": 20,
                  "timeout": 10.0,
                  "ratio_limit": 1.01,
                  "rounds": [
                    {
                      "baseline": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 14,
                        "unsat": 6,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.334639
                      },
                      "candidate": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 14,
                        "unsat": 6,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.27426
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 20,
                      "baseline_common_seconds": 6.334639,
                      "candidate_common_seconds": 6.27426,
                      "par2_ratio": 0.9904684386908236,
                      "common_runtime_ratio": 0.9904684386908236
                    },
                    {
                      "baseline": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 14,
                        "unsat": 6,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.368359
                      },
                      "candidate": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 14,
                        "unsat": 6,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.3002709999999995
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 20,
                      "baseline_common_seconds": 6.368359,
                      "candidate_common_seconds": 6.3002709999999995,
                      "par2_ratio": 0.9893083916908578,
                      "common_runtime_ratio": 0.9893083916908578
                    },
                    {
                      "baseline": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 14,
                        "unsat": 6,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.409131
                      },
                      "candidate": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 14,
                        "unsat": 6,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.359653
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 20,
                      "baseline_common_seconds": 6.409131,
                      "candidate_common_seconds": 6.359653,
                      "par2_ratio": 0.9922800766593786,
                      "common_runtime_ratio": 0.9922800766593786
                    }
                  ],
                  "aggregate": {
                    "baseline": {
                      "rows": 60,
                      "solved": 60,
                      "sat": 42,
                      "unsat": 18,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 19.112129
                    },
                    "candidate": {
                      "rows": 60,
                      "solved": 60,
                      "sat": 42,
                      "unsat": 18,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 18.934184
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 60,
                    "baseline_common_seconds": 19.112129,
                    "candidate_common_seconds": 18.934184,
                    "par2_ratio": 0.9906894203152353,
                    "common_runtime_ratio": 0.9906894203152353
                  },
                  "families": {
                    "2017-Heizmann-UltimateInvariantSynthesis": {
                      "baseline": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 3,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 1.689877
                      },
                      "candidate": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 3,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 1.677716
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 6,
                      "baseline_common_seconds": 1.689877,
                      "candidate_common_seconds": 1.677716,
                      "par2_ratio": 0.9928036182515059,
                      "common_runtime_ratio": 0.9928036182515059
                    },
                    "2019-ezsmt": {
                      "baseline": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 6,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 2.957967
                      },
                      "candidate": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 6,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 2.955387
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 6,
                      "baseline_common_seconds": 2.957967,
                      "candidate_common_seconds": 2.955387,
                      "par2_ratio": 0.9991277793159964,
                      "common_runtime_ratio": 0.9991277793159964
                    },
                    "DTP-Scheduling": {
                      "baseline": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 6,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 1.668129
                      },
                      "candidate": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 6,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 1.654589
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 6,
                      "baseline_common_seconds": 1.668129,
                      "candidate_common_seconds": 1.654589,
                      "par2_ratio": 0.9918831217489775,
                      "common_runtime_ratio": 0.9918831217489775
                    },
                    "LassoRanker": {
                      "baseline": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 6,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 3.648249
                      },
                      "candidate": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 6,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 3.611838
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 6,
                      "baseline_common_seconds": 3.648249,
                      "candidate_common_seconds": 3.611838,
                      "par2_ratio": 0.9900195957019382,
                      "common_runtime_ratio": 0.9900195957019382
                    },
                    "TM": {
                      "baseline": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 6,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.620316
                      },
                      "candidate": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 6,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.627472
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 6,
                      "baseline_common_seconds": 0.620316,
                      "candidate_common_seconds": 0.627472,
                      "par2_ratio": 1.0115360558167128,
                      "common_runtime_ratio": 1.0115360558167128
                    },
                    "clock_synchro": {
                      "baseline": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 0,
                        "unsat": 6,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 4.193785
                      },
                      "candidate": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 0,
                        "unsat": 6,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 4.121427
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 6,
                      "baseline_common_seconds": 4.193785,
                      "candidate_common_seconds": 4.121427,
                      "par2_ratio": 0.982746373502695,
                      "common_runtime_ratio": 0.982746373502695
                    },
                    "latendresse": {
                      "baseline": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 6,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 1.967971
                      },
                      "candidate": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 6,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 1.936859
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 6,
                      "baseline_common_seconds": 1.967971,
                      "candidate_common_seconds": 1.936859,
                      "par2_ratio": 0.9841908239501498,
                      "common_runtime_ratio": 0.9841908239501498
                    },
                    "miplib": {
                      "baseline": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 3,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 1.421438
                      },
                      "candidate": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 3,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 1.414155
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 6,
                      "baseline_common_seconds": 1.421438,
                      "candidate_common_seconds": 1.414155,
                      "par2_ratio": 0.9948763153932849,
                      "common_runtime_ratio": 0.9948763153932849
                    },
                    "sal": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.253652
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.24916
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.253652,
                      "candidate_common_seconds": 0.24916,
                      "par2_ratio": 0.9822906974910507,
                      "common_runtime_ratio": 0.9822906974910507
                    },
                    "sc": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.283688
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.283608
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.283688,
                      "candidate_common_seconds": 0.283608,
                      "par2_ratio": 0.9997180000564001,
                      "common_runtime_ratio": 0.9997180000564001
                    },
                    "tta_startup": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.205367
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.20123
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.205367,
                      "candidate_common_seconds": 0.20123,
                      "par2_ratio": 0.9798555756280221,
                      "common_runtime_ratio": 0.9798555756280221
                    },
                    "uart": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.20168999999999998
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 3,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.200743
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.20168999999999998,
                      "candidate_common_seconds": 0.200743,
                      "par2_ratio": 0.9953046754920919,
                      "common_runtime_ratio": 0.9953046754920919
                    }
                  },
                  "loss_rerun_status": "no-repeated-loss",
                  "loss_counts": {},
                  "repeated_losses": []
                },
                "QF_UF": {
                  "timing_status": "needs-triage",
                  "note": "Three complete paired reruns; a loss in at least two blocks acceptance. This verdict covers the repeat-loss criterion only, not the full-corpus timing thresholds, model validation or recorded-reference evidence. Timeout/unknown rows remain explicit in each pair's metrics.",
                  "identities": {
                    "baseline": [
                      "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                    ],
                    "candidate": [
                      "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                    ]
                  },
                  "expected_unique_inputs": 20,
                  "timeout": 10.0,
                  "ratio_limit": 1.01,
                  "rounds": [
                    {
                      "baseline": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 4,
                        "unsat": 16,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 8.113499
                      },
                      "candidate": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 4,
                        "unsat": 16,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 8.190957
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 20,
                      "baseline_common_seconds": 8.113499,
                      "candidate_common_seconds": 8.190957,
                      "par2_ratio": 1.0095468058848593,
                      "common_runtime_ratio": 1.0095468058848593
                    },
                    {
                      "baseline": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 4,
                        "unsat": 16,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 8.000051
                      },
                      "candidate": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 4,
                        "unsat": 16,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 8.235951
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 20,
                      "baseline_common_seconds": 8.000051,
                      "candidate_common_seconds": 8.235951,
                      "par2_ratio": 1.029487312018386,
                      "common_runtime_ratio": 1.029487312018386
                    },
                    {
                      "baseline": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 4,
                        "unsat": 16,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 8.035895
                      },
                      "candidate": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 4,
                        "unsat": 16,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 7.993022
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 20,
                      "baseline_common_seconds": 8.035895,
                      "candidate_common_seconds": 7.993022,
                      "par2_ratio": 0.9946648133157538,
                      "common_runtime_ratio": 0.9946648133157538
                    }
                  ],
                  "aggregate": {
                    "baseline": {
                      "rows": 60,
                      "solved": 60,
                      "sat": 12,
                      "unsat": 48,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 24.149445
                    },
                    "candidate": {
                      "rows": 60,
                      "solved": 60,
                      "sat": 12,
                      "unsat": 48,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 24.41993
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 60,
                    "baseline_common_seconds": 24.149445,
                    "candidate_common_seconds": 24.41993,
                    "par2_ratio": 1.0112004644413153,
                    "common_runtime_ratio": 1.0112004644413153
                  },
                  "families": {
                    "Goel": {
                      "baseline": {
                        "rows": 12,
                        "solved": 12,
                        "sat": 9,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 3.77656
                      },
                      "candidate": {
                        "rows": 12,
                        "solved": 12,
                        "sat": 9,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 4.11008
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 12,
                      "baseline_common_seconds": 3.77656,
                      "candidate_common_seconds": 4.11008,
                      "par2_ratio": 1.0883131738937022,
                      "common_runtime_ratio": 1.0883131738937022
                    },
                    "NEQ": {
                      "baseline": {
                        "rows": 12,
                        "solved": 12,
                        "sat": 0,
                        "unsat": 12,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 4.036755
                      },
                      "candidate": {
                        "rows": 12,
                        "solved": 12,
                        "sat": 0,
                        "unsat": 12,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 4.042338
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 12,
                      "baseline_common_seconds": 4.036755,
                      "candidate_common_seconds": 4.042338,
                      "par2_ratio": 1.001383041576712,
                      "common_runtime_ratio": 1.001383041576712
                    },
                    "PEQ": {
                      "baseline": {
                        "rows": 12,
                        "solved": 12,
                        "sat": 0,
                        "unsat": 12,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.851943
                      },
                      "candidate": {
                        "rows": 12,
                        "solved": 12,
                        "sat": 0,
                        "unsat": 12,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.823576
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 12,
                      "baseline_common_seconds": 6.851943,
                      "candidate_common_seconds": 6.823576,
                      "par2_ratio": 0.995860006424455,
                      "common_runtime_ratio": 0.995860006424455
                    },
                    "QG": {
                      "baseline": {
                        "rows": 12,
                        "solved": 12,
                        "sat": 3,
                        "unsat": 9,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 7.178521
                      },
                      "candidate": {
                        "rows": 12,
                        "solved": 12,
                        "sat": 3,
                        "unsat": 9,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 7.146755
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 12,
                      "baseline_common_seconds": 7.178521,
                      "candidate_common_seconds": 7.146755,
                      "par2_ratio": 0.9955748544860424,
                      "common_runtime_ratio": 0.9955748544860424
                    },
                    "SEQ": {
                      "baseline": {
                        "rows": 12,
                        "solved": 12,
                        "sat": 0,
                        "unsat": 12,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 2.305666
                      },
                      "candidate": {
                        "rows": 12,
                        "solved": 12,
                        "sat": 0,
                        "unsat": 12,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 2.297181
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 12,
                      "baseline_common_seconds": 2.305666,
                      "candidate_common_seconds": 2.297181,
                      "par2_ratio": 0.996319935324544,
                      "common_runtime_ratio": 0.996319935324544
                    }
                  },
                  "loss_rerun_status": "no-repeated-loss",
                  "loss_counts": {},
                  "repeated_losses": []
                },
                "QF_UFLIA": {
                  "timing_status": "pass",
                  "note": "Three complete paired reruns; a loss in at least two blocks acceptance. This verdict covers the repeat-loss criterion only, not the full-corpus timing thresholds, model validation or recorded-reference evidence. Timeout/unknown rows remain explicit in each pair's metrics.",
                  "identities": {
                    "baseline": [
                      "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                    ],
                    "candidate": [
                      "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                    ]
                  },
                  "expected_unique_inputs": 20,
                  "timeout": 10.0,
                  "ratio_limit": 1.01,
                  "rounds": [
                    {
                      "baseline": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 17,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 7.116798
                      },
                      "candidate": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 17,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 7.172604
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 20,
                      "baseline_common_seconds": 7.116798,
                      "candidate_common_seconds": 7.172604,
                      "par2_ratio": 1.0078414477971693,
                      "common_runtime_ratio": 1.0078414477971693
                    },
                    {
                      "baseline": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 17,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 7.118502
                      },
                      "candidate": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 17,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 7.17152
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 20,
                      "baseline_common_seconds": 7.118502,
                      "candidate_common_seconds": 7.17152,
                      "par2_ratio": 1.0074479153057765,
                      "common_runtime_ratio": 1.0074479153057765
                    },
                    {
                      "baseline": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 17,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.814154
                      },
                      "candidate": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 17,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.826397
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 20,
                      "baseline_common_seconds": 6.814154,
                      "candidate_common_seconds": 6.826397,
                      "par2_ratio": 1.0017967013953604,
                      "common_runtime_ratio": 1.0017967013953604
                    }
                  ],
                  "aggregate": {
                    "baseline": {
                      "rows": 60,
                      "solved": 60,
                      "sat": 51,
                      "unsat": 9,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 21.049454
                    },
                    "candidate": {
                      "rows": 60,
                      "solved": 60,
                      "sat": 51,
                      "unsat": 9,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 21.170521
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 60,
                    "baseline_common_seconds": 21.049454,
                    "candidate_common_seconds": 21.170521,
                    "par2_ratio": 1.0057515506102914,
                    "common_runtime_ratio": 1.0057515506102914
                  },
                  "families": {
                    "20230314-Jaroslav-Bendik-Certora": {
                      "baseline": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 3,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 2.631504
                      },
                      "candidate": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 3,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 2.60214
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 6,
                      "baseline_common_seconds": 2.631504,
                      "candidate_common_seconds": 2.60214,
                      "par2_ratio": 0.9888413622019955,
                      "common_runtime_ratio": 0.9888413622019955
                    },
                    "TwoSquares": {
                      "baseline": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.537042
                      },
                      "candidate": {
                        "rows": 3,
                        "solved": 3,
                        "sat": 0,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 0.5330159999999999
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 3,
                      "baseline_common_seconds": 0.537042,
                      "candidate_common_seconds": 0.5330159999999999,
                      "par2_ratio": 0.9925033796239399,
                      "common_runtime_ratio": 0.9925033796239399
                    },
                    "mathsat": {
                      "baseline": {
                        "rows": 27,
                        "solved": 27,
                        "sat": 27,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 10.268641
                      },
                      "candidate": {
                        "rows": 27,
                        "solved": 27,
                        "sat": 27,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 10.334060000000001
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 27,
                      "baseline_common_seconds": 10.268641,
                      "candidate_common_seconds": 10.334060000000001,
                      "par2_ratio": 1.0063707553901242,
                      "common_runtime_ratio": 1.0063707553901242
                    },
                    "wisas": {
                      "baseline": {
                        "rows": 24,
                        "solved": 24,
                        "sat": 21,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 7.612267
                      },
                      "candidate": {
                        "rows": 24,
                        "solved": 24,
                        "sat": 21,
                        "unsat": 3,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 7.701305
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 24,
                      "baseline_common_seconds": 7.612267,
                      "candidate_common_seconds": 7.701305,
                      "par2_ratio": 1.0116966470041053,
                      "common_runtime_ratio": 1.0116966470041053
                    }
                  },
                  "loss_rerun_status": "no-repeated-loss",
                  "loss_counts": {},
                  "repeated_losses": []
                },
                "QF_UFLRA": {
                  "timing_status": "pass",
                  "note": "Three complete paired reruns; a loss in at least two blocks acceptance. This verdict covers the repeat-loss criterion only, not the full-corpus timing thresholds, model validation or recorded-reference evidence. Timeout/unknown rows remain explicit in each pair's metrics.",
                  "identities": {
                    "baseline": [
                      "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                    ],
                    "candidate": [
                      "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                    ]
                  },
                  "expected_unique_inputs": 20,
                  "timeout": 10.0,
                  "ratio_limit": 1.01,
                  "rounds": [
                    {
                      "baseline": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 12,
                        "unsat": 8,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.660971
                      },
                      "candidate": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 12,
                        "unsat": 8,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.6735359999999995
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 20,
                      "baseline_common_seconds": 6.660971,
                      "candidate_common_seconds": 6.6735359999999995,
                      "par2_ratio": 1.001886361613044,
                      "common_runtime_ratio": 1.001886361613044
                    },
                    {
                      "baseline": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 12,
                        "unsat": 8,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.665812
                      },
                      "candidate": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 12,
                        "unsat": 8,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.663602
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 20,
                      "baseline_common_seconds": 6.665812,
                      "candidate_common_seconds": 6.663602,
                      "par2_ratio": 0.999668457496251,
                      "common_runtime_ratio": 0.999668457496251
                    },
                    {
                      "baseline": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 12,
                        "unsat": 8,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.4376549999999995
                      },
                      "candidate": {
                        "rows": 20,
                        "solved": 20,
                        "sat": 12,
                        "unsat": 8,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 6.336034
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 20,
                      "baseline_common_seconds": 6.4376549999999995,
                      "candidate_common_seconds": 6.336034,
                      "par2_ratio": 0.984214593668036,
                      "common_runtime_ratio": 0.984214593668036
                    }
                  ],
                  "aggregate": {
                    "baseline": {
                      "rows": 60,
                      "solved": 60,
                      "sat": 36,
                      "unsat": 24,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 19.764438
                    },
                    "candidate": {
                      "rows": 60,
                      "solved": 60,
                      "sat": 36,
                      "unsat": 24,
                      "timeout": 0,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 19.673172
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 60,
                    "baseline_common_seconds": 19.764438,
                    "candidate_common_seconds": 19.673172,
                    "par2_ratio": 0.9953823124138416,
                    "common_runtime_ratio": 0.9953823124138416
                  },
                  "families": {
                    "cpachecker-bmc-svcomp14": {
                      "baseline": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 6,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 1.892161
                      },
                      "candidate": {
                        "rows": 6,
                        "solved": 6,
                        "sat": 6,
                        "unsat": 0,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 1.866757
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 6,
                      "baseline_common_seconds": 1.892161,
                      "candidate_common_seconds": 1.866757,
                      "par2_ratio": 0.9865740811696256,
                      "common_runtime_ratio": 0.9865740811696256
                    },
                    "cpachecker-induction-svcomp14": {
                      "baseline": {
                        "rows": 27,
                        "solved": 27,
                        "sat": 21,
                        "unsat": 6,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 15.641395
                      },
                      "candidate": {
                        "rows": 27,
                        "solved": 27,
                        "sat": 21,
                        "unsat": 6,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 15.569113999999999
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 27,
                      "baseline_common_seconds": 15.641395,
                      "candidate_common_seconds": 15.569113999999999,
                      "par2_ratio": 0.9953788648646748,
                      "common_runtime_ratio": 0.9953788648646748
                    },
                    "mathsat": {
                      "baseline": {
                        "rows": 27,
                        "solved": 27,
                        "sat": 9,
                        "unsat": 18,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 2.230882
                      },
                      "candidate": {
                        "rows": 27,
                        "solved": 27,
                        "sat": 9,
                        "unsat": 18,
                        "timeout": 0,
                        "error": 0,
                        "unsupported": 0,
                        "unknown": 0,
                        "wrong_answer": 0,
                        "par2": 2.237301
                      },
                      "disagreements": [],
                      "lost": [],
                      "gained": [],
                      "common_solved": 27,
                      "baseline_common_seconds": 2.230882,
                      "candidate_common_seconds": 2.237301,
                      "par2_ratio": 1.0028773373042592,
                      "common_runtime_ratio": 1.0028773373042592
                    }
                  },
                  "loss_rerun_status": "no-repeated-loss",
                  "loss_counts": {},
                  "repeated_losses": []
                }
              },
              "shared_lazy_uf_summary": {
                "timing_status": "pass",
                "note": "Three complete paired reruns; a loss in at least two blocks acceptance. This verdict covers the repeat-loss criterion only, not the full-corpus timing thresholds, model validation or recorded-reference evidence. Timeout/unknown rows remain explicit in each pair's metrics.",
                "identities": {
                  "baseline": [
                    "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                  ],
                  "candidate": [
                    "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                  ]
                },
                "expected_unique_inputs": 31,
                "timeout": 5.0,
                "ratio_limit": 1.01,
                "rounds": [
                  {
                    "baseline": {
                      "rows": 31,
                      "solved": 23,
                      "sat": 10,
                      "unsat": 13,
                      "timeout": 8,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 80.210799
                    },
                    "candidate": {
                      "rows": 31,
                      "solved": 23,
                      "sat": 10,
                      "unsat": 13,
                      "timeout": 8,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 80.203691
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 23,
                    "baseline_common_seconds": 0.210799,
                    "candidate_common_seconds": 0.203691,
                    "par2_ratio": 0.9999113835033611,
                    "common_runtime_ratio": 0.9662806749557636
                  },
                  {
                    "baseline": {
                      "rows": 31,
                      "solved": 23,
                      "sat": 10,
                      "unsat": 13,
                      "timeout": 8,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 80.209176
                    },
                    "candidate": {
                      "rows": 31,
                      "solved": 23,
                      "sat": 10,
                      "unsat": 13,
                      "timeout": 8,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 80.203956
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 23,
                    "baseline_common_seconds": 0.209176,
                    "candidate_common_seconds": 0.203956,
                    "par2_ratio": 0.9999349201642466,
                    "common_runtime_ratio": 0.9750449382338318
                  },
                  {
                    "baseline": {
                      "rows": 31,
                      "solved": 23,
                      "sat": 10,
                      "unsat": 13,
                      "timeout": 8,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 80.211549
                    },
                    "candidate": {
                      "rows": 31,
                      "solved": 23,
                      "sat": 10,
                      "unsat": 13,
                      "timeout": 8,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 80.210055
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 23,
                    "baseline_common_seconds": 0.211549,
                    "candidate_common_seconds": 0.210055,
                    "par2_ratio": 0.9999813742532262,
                    "common_runtime_ratio": 0.9929378063711009
                  }
                ],
                "aggregate": {
                  "baseline": {
                    "rows": 93,
                    "solved": 69,
                    "sat": 30,
                    "unsat": 39,
                    "timeout": 24,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 0,
                    "wrong_answer": 0,
                    "par2": 240.631524
                  },
                  "candidate": {
                    "rows": 93,
                    "solved": 69,
                    "sat": 30,
                    "unsat": 39,
                    "timeout": 24,
                    "error": 0,
                    "unsupported": 0,
                    "unknown": 0,
                    "wrong_answer": 0,
                    "par2": 240.617702
                  },
                  "disagreements": [],
                  "lost": [],
                  "gained": [],
                  "common_solved": 69,
                  "baseline_common_seconds": 0.631524,
                  "candidate_common_seconds": 0.617702,
                  "par2_ratio": 0.9999425594794471,
                  "common_runtime_ratio": 0.9781132625205059
                },
                "families": {
                  "QF_UF": {
                    "baseline": {
                      "rows": 93,
                      "solved": 69,
                      "sat": 30,
                      "unsat": 39,
                      "timeout": 24,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 240.631524
                    },
                    "candidate": {
                      "rows": 93,
                      "solved": 69,
                      "sat": 30,
                      "unsat": 39,
                      "timeout": 24,
                      "error": 0,
                      "unsupported": 0,
                      "unknown": 0,
                      "wrong_answer": 0,
                      "par2": 240.617702
                    },
                    "disagreements": [],
                    "lost": [],
                    "gained": [],
                    "common_solved": 69,
                    "baseline_common_seconds": 0.631524,
                    "candidate_common_seconds": 0.617702,
                    "par2_ratio": 0.9999425594794471,
                    "common_runtime_ratio": 0.9781132625205059
                  }
                },
                "loss_rerun_status": "no-repeated-loss",
                "loss_counts": {},
                "repeated_losses": []
              },
              "five_round_pooled": {
                "QF_LIA": {
                  "baseline_par2": 32.235325,
                  "candidate_par2": 32.60251,
                  "par2_ratio": 1.0113907646347602,
                  "lost_measurements": 0,
                  "note": "All five small-preservation rounds pooled; not a substitute for the required two full-corpus rounds."
                },
                "QF_LRA": {
                  "baseline_par2": 32.496649,
                  "candidate_par2": 31.611559999999997,
                  "par2_ratio": 0.972763684034006,
                  "lost_measurements": 0,
                  "note": "All five small-preservation rounds pooled; not a substitute for the required two full-corpus rounds."
                },
                "QF_UF": {
                  "baseline_par2": 39.649221,
                  "candidate_par2": 40.659678,
                  "par2_ratio": 1.0254849143189977,
                  "lost_measurements": 0,
                  "note": "All five small-preservation rounds pooled; not a substitute for the required two full-corpus rounds."
                },
                "QF_UFLIA": {
                  "baseline_par2": 34.65599,
                  "candidate_par2": 35.168117,
                  "par2_ratio": 1.0147774453997707,
                  "lost_measurements": 0,
                  "note": "All five small-preservation rounds pooled; not a substitute for the required two full-corpus rounds."
                },
                "QF_UFLRA": {
                  "baseline_par2": 32.461252,
                  "candidate_par2": 32.593764,
                  "par2_ratio": 1.0040821592463531,
                  "lost_measurements": 0,
                  "note": "All five small-preservation rounds pooled; not a substitute for the required two full-corpus rounds."
                }
              }
            },
            "loss_reruns_batch1": {
              "jobs": {
                "amd-1": "173426",
                "amd-2": "173427"
              },
              "inputs": 10,
              "status": "All ten inputs completed three paired reruns; no losses in any rerun. Model replay pending.",
              "inputs_artifact": "results/integer-losses-batch1-inputs.json",
              "jobs_artifact": "results/integer-losses-batch1-jobs.txt",
              "measurements_artifact": "results/integer-losses-batch1",
              "resources": "3paired repetitions60s8GiB1CPU,nomultithread;original node pinned",
              "replay_job": "173428",
              "replay_status": "Released at offline checkpoint; pending scheduler dependencies on submitted timing jobs. Validation not yet complete.",
              "amd1_summary": {
                "aggregate": {
                  "baseline": {
                    "error": 0,
                    "par2": 1249.445483,
                    "rows": 12,
                    "sat": 0,
                    "solved": 3,
                    "timeout": 9,
                    "unknown": 0,
                    "unsat": 3,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "baseline_common_seconds": 169.445483,
                  "candidate": {
                    "error": 0,
                    "par2": 1250.131797,
                    "rows": 12,
                    "sat": 0,
                    "solved": 3,
                    "timeout": 9,
                    "unknown": 0,
                    "unsat": 3,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "candidate_common_seconds": 170.131797,
                  "common_runtime_ratio": 1.004050352879575,
                  "common_solved": 3,
                  "disagreements": [],
                  "gained": [],
                  "lost": [],
                  "par2_ratio": 1.0005492948746768
                },
                "expected_unique_inputs": 4,
                "families": {
                  "nec-smt": {
                    "baseline": {
                      "error": 0,
                      "par2": 1249.445483,
                      "rows": 12,
                      "sat": 0,
                      "solved": 3,
                      "timeout": 9,
                      "unknown": 0,
                      "unsat": 3,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 169.445483,
                    "candidate": {
                      "error": 0,
                      "par2": 1250.131797,
                      "rows": 12,
                      "sat": 0,
                      "solved": 3,
                      "timeout": 9,
                      "unknown": 0,
                      "unsat": 3,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 170.131797,
                    "common_runtime_ratio": 1.004050352879575,
                    "common_solved": 3,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0005492948746768
                  }
                },
                "identities": {
                  "baseline": [
                    "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                  ],
                  "candidate": [
                    "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                  ]
                },
                "loss_counts": {},
                "loss_rerun_status": "no-repeated-loss",
                "note": "Three complete paired reruns; a loss in at least two blocks acceptance. This verdict covers the repeat-loss criterion only, not the full-corpus timing thresholds, model validation or recorded-reference evidence. Timeout/unknown rows remain explicit in each pair's metrics.",
                "ratio_limit": 1.01,
                "repeated_losses": [],
                "rounds": [
                  {
                    "baseline": {
                      "error": 0,
                      "par2": 417.743959,
                      "rows": 4,
                      "sat": 0,
                      "solved": 1,
                      "timeout": 3,
                      "unknown": 0,
                      "unsat": 1,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 57.743959,
                    "candidate": {
                      "error": 0,
                      "par2": 417.084818,
                      "rows": 4,
                      "sat": 0,
                      "solved": 1,
                      "timeout": 3,
                      "unknown": 0,
                      "unsat": 1,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 57.084818,
                    "common_runtime_ratio": 0.9885851089635195,
                    "common_solved": 1,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.9984221411565642
                  },
                  {
                    "baseline": {
                      "error": 0,
                      "par2": 414.678704,
                      "rows": 4,
                      "sat": 0,
                      "solved": 1,
                      "timeout": 3,
                      "unknown": 0,
                      "unsat": 1,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 54.678704,
                    "candidate": {
                      "error": 0,
                      "par2": 413.725804,
                      "rows": 4,
                      "sat": 0,
                      "solved": 1,
                      "timeout": 3,
                      "unknown": 0,
                      "unsat": 1,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 53.725804,
                    "common_runtime_ratio": 0.9825727398367012,
                    "common_solved": 1,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.9977020763525875
                  },
                  {
                    "baseline": {
                      "error": 0,
                      "par2": 417.02282,
                      "rows": 4,
                      "sat": 0,
                      "solved": 1,
                      "timeout": 3,
                      "unknown": 0,
                      "unsat": 1,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 57.02282,
                    "candidate": {
                      "error": 0,
                      "par2": 419.321175,
                      "rows": 4,
                      "sat": 0,
                      "solved": 1,
                      "timeout": 3,
                      "unknown": 0,
                      "unsat": 1,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 59.321175,
                    "common_runtime_ratio": 1.0403058810490255,
                    "common_solved": 1,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.005511341082006
                  }
                ],
                "timeout": 60.0,
                "timing_status": "pass"
              }
            },
            "qf_uflia_full": {
              "artifact": "tmp/integer-unification/evidence/paired-25b-QF_UFLIA-summary.json",
              "summary": {
                "aggregate": {
                  "baseline": {
                    "error": 0,
                    "par2": 21120.59631100005,
                    "rows": 1318,
                    "sat": 814,
                    "solved": 1154,
                    "timeout": 164,
                    "unknown": 0,
                    "unsat": 340,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "baseline_common_seconds": 1440.5963109999996,
                  "candidate": {
                    "error": 0,
                    "par2": 21106.87996300002,
                    "rows": 1318,
                    "sat": 814,
                    "solved": 1154,
                    "timeout": 164,
                    "unknown": 0,
                    "unsat": 340,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "candidate_common_seconds": 1426.8799629999978,
                  "common_runtime_ratio": 0.9904787011494702,
                  "common_solved": 1154,
                  "disagreements": [],
                  "gained": [],
                  "lost": [],
                  "par2_ratio": 0.999350570040824
                },
                "expected_unique_inputs": 659,
                "families": {
                  "20230314-Jaroslav-Bendik-Certora": {
                    "baseline": {
                      "error": 0,
                      "par2": 16637.191249,
                      "rows": 152,
                      "sat": 14,
                      "solved": 16,
                      "timeout": 136,
                      "unknown": 0,
                      "unsat": 2,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 317.191249,
                    "candidate": {
                      "error": 0,
                      "par2": 16637.135535,
                      "rows": 152,
                      "sat": 14,
                      "solved": 16,
                      "timeout": 136,
                      "unknown": 0,
                      "unsat": 2,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 317.13553500000006,
                    "common_runtime_ratio": 0.9998243520268115,
                    "common_solved": 16,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.9999966512376299
                  },
                  "TwoSquares": {
                    "baseline": {
                      "error": 0,
                      "par2": 0.6684459999999999,
                      "rows": 42,
                      "sat": 10,
                      "solved": 42,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 32,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 0.6684459999999999,
                    "candidate": {
                      "error": 0,
                      "par2": 0.698636,
                      "rows": 42,
                      "sat": 10,
                      "solved": 42,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 32,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 0.698636,
                    "common_runtime_ratio": 1.0451644560667581,
                    "common_solved": 42,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0451644560667581
                  },
                  "mathsat": {
                    "baseline": {
                      "error": 0,
                      "par2": 3983.2864240000035,
                      "rows": 908,
                      "sat": 626,
                      "solved": 882,
                      "timeout": 26,
                      "unknown": 0,
                      "unsat": 256,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 863.2864240000002,
                    "candidate": {
                      "error": 0,
                      "par2": 3966.932431000001,
                      "rows": 908,
                      "sat": 626,
                      "solved": 882,
                      "timeout": 26,
                      "unknown": 0,
                      "unsat": 256,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 846.9324309999992,
                    "common_runtime_ratio": 0.9810561216470595,
                    "common_solved": 882,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.9958943467129386
                  },
                  "wisas": {
                    "baseline": {
                      "error": 0,
                      "par2": 499.4501919999999,
                      "rows": 216,
                      "sat": 164,
                      "solved": 214,
                      "timeout": 2,
                      "unknown": 0,
                      "unsat": 50,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 259.45019199999996,
                    "candidate": {
                      "error": 0,
                      "par2": 502.1133610000001,
                      "rows": 216,
                      "sat": 164,
                      "solved": 214,
                      "timeout": 2,
                      "unknown": 0,
                      "unsat": 50,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 262.1133610000001,
                    "common_runtime_ratio": 1.0102646638241846,
                    "common_solved": 214,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0053322013739465
                  }
                },
                "identities": {
                  "baseline": [
                    "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                  ],
                  "candidate": [
                    "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                  ]
                },
                "note": "Timing only; independent SAT-model coverage and recorded-reference joins are separate acceptance gates. Any lost solve requires three paired reruns; loss in at least two blocks acceptance.",
                "ratio_limit": 1.02,
                "rounds": [
                  {
                    "baseline": {
                      "error": 0,
                      "par2": 10559.921440000004,
                      "rows": 659,
                      "sat": 407,
                      "solved": 577,
                      "timeout": 82,
                      "unknown": 0,
                      "unsat": 170,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 719.9214399999987,
                    "candidate": {
                      "error": 0,
                      "par2": 10551.850508000003,
                      "rows": 659,
                      "sat": 407,
                      "solved": 577,
                      "timeout": 82,
                      "unknown": 0,
                      "unsat": 170,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 711.8505079999998,
                    "common_runtime_ratio": 0.9887891489938139,
                    "common_solved": 577,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.9992357015110521
                  },
                  {
                    "baseline": {
                      "error": 0,
                      "par2": 10560.674871000003,
                      "rows": 659,
                      "sat": 407,
                      "solved": 577,
                      "timeout": 82,
                      "unknown": 0,
                      "unsat": 170,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 720.6748709999989,
                    "candidate": {
                      "error": 0,
                      "par2": 10555.029455000004,
                      "rows": 659,
                      "sat": 407,
                      "solved": 577,
                      "timeout": 82,
                      "unknown": 0,
                      "unsat": 170,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 715.0294549999995,
                    "common_runtime_ratio": 0.9921664869594164,
                    "common_solved": 577,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.9994654303755244
                  }
                ],
                "timeout": 60.0,
                "timing_status": "pass"
              },
              "model_validation": "pending held replay jobs; timing verdict is not final acceptance"
            },
            "loss_reruns_batch1_amd2": {
              "artifact": "tmp/integer-unification/evidence/observation-losses-batch1-amd-2-summary.json",
              "summary": {
                "aggregate": {
                  "baseline": {
                    "error": 0,
                    "par2": 1371.6983109999999,
                    "rows": 18,
                    "sat": 3,
                    "solved": 12,
                    "timeout": 6,
                    "unknown": 0,
                    "unsat": 9,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "baseline_common_seconds": 651.698311,
                  "candidate": {
                    "error": 0,
                    "par2": 1381.645051,
                    "rows": 18,
                    "sat": 3,
                    "solved": 12,
                    "timeout": 6,
                    "unknown": 0,
                    "unsat": 9,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "candidate_common_seconds": 661.6450510000001,
                  "common_runtime_ratio": 1.0152627984945017,
                  "common_solved": 12,
                  "disagreements": [],
                  "gained": [],
                  "lost": [],
                  "par2_ratio": 1.007251405006651
                },
                "expected_unique_inputs": 6,
                "families": {
                  "20210219-Dartagnan": {
                    "baseline": {
                      "error": 0,
                      "par2": 148.321699,
                      "rows": 3,
                      "sat": 0,
                      "solved": 3,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 3,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 148.321699,
                    "candidate": {
                      "error": 0,
                      "par2": 153.567872,
                      "rows": 3,
                      "sat": 0,
                      "solved": 3,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 3,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 153.567872,
                    "common_runtime_ratio": 1.0353702326454608,
                    "common_solved": 3,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0353702326454608
                  },
                  "nec-smt": {
                    "baseline": {
                      "error": 0,
                      "par2": 1223.376612,
                      "rows": 15,
                      "sat": 3,
                      "solved": 9,
                      "timeout": 6,
                      "unknown": 0,
                      "unsat": 6,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 503.37661199999997,
                    "candidate": {
                      "error": 0,
                      "par2": 1228.077179,
                      "rows": 15,
                      "sat": 3,
                      "solved": 9,
                      "timeout": 6,
                      "unknown": 0,
                      "unsat": 6,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 508.077179,
                    "common_runtime_ratio": 1.0093380719086726,
                    "common_solved": 9,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0038422894094037
                  }
                },
                "identities": {
                  "baseline": [
                    "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                  ],
                  "candidate": [
                    "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                  ]
                },
                "loss_counts": {},
                "loss_rerun_status": "no-repeated-loss",
                "note": "Three complete paired reruns; a loss in at least two blocks acceptance. This verdict covers the repeat-loss criterion only, not the full-corpus timing thresholds, model validation or recorded-reference evidence. Timeout/unknown rows remain explicit in each pair's metrics.",
                "ratio_limit": 1.01,
                "repeated_losses": [],
                "rounds": [
                  {
                    "baseline": {
                      "error": 0,
                      "par2": 524.412516,
                      "rows": 6,
                      "sat": 1,
                      "solved": 3,
                      "timeout": 3,
                      "unknown": 0,
                      "unsat": 2,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 164.412516,
                    "candidate": {
                      "error": 0,
                      "par2": 533.258839,
                      "rows": 6,
                      "sat": 1,
                      "solved": 3,
                      "timeout": 3,
                      "unknown": 0,
                      "unsat": 2,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 173.258839,
                    "common_runtime_ratio": 1.053805654309189,
                    "common_solved": 3,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0168690157654436
                  },
                  {
                    "baseline": {
                      "error": 0,
                      "par2": 457.94103300000006,
                      "rows": 6,
                      "sat": 1,
                      "solved": 4,
                      "timeout": 2,
                      "unknown": 0,
                      "unsat": 3,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 217.941033,
                    "candidate": {
                      "error": 0,
                      "par2": 457.632287,
                      "rows": 6,
                      "sat": 1,
                      "solved": 4,
                      "timeout": 2,
                      "unknown": 0,
                      "unsat": 3,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 217.632287,
                    "common_runtime_ratio": 0.9985833507543299,
                    "common_solved": 4,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.9993257952929497
                  },
                  {
                    "baseline": {
                      "error": 0,
                      "par2": 389.344762,
                      "rows": 6,
                      "sat": 1,
                      "solved": 5,
                      "timeout": 1,
                      "unknown": 0,
                      "unsat": 4,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 269.344762,
                    "candidate": {
                      "error": 0,
                      "par2": 390.753925,
                      "rows": 6,
                      "sat": 1,
                      "solved": 5,
                      "timeout": 1,
                      "unknown": 0,
                      "unsat": 4,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 270.753925,
                    "common_runtime_ratio": 1.0052318188389346,
                    "common_solved": 5,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0036193192705645
                  }
                ],
                "timeout": 60.0,
                "timing_status": "needs-triage"
              },
              "model_validation": "pending held replay jobs; timing verdict is not final acceptance"
            },
            "interim_independent_review": {
              "reviewer": "lia_doc_review",
              "reviewed_run_log_blob": "b136cc45a71e002dd7aa89553d262996217a4aae",
              "verdict": "Accurate interim evidence, not final qualification. Preserve measured small-sample UF slowdown and generic >1% flags; do not dismiss as noise. Full LIA, lost-solve reruns, reference checks and candidate SAT-model replay remain required."
            },
            "loss_reruns_batch2": {
              "status": "All eight inputs completed three paired reruns; getoption_group/prp-19-49 lost once, none lost twice. Model replay pending.",
              "jobs": {
                "amd-1": 173505,
                "amd-2": 173506,
                "dgx-3": 173519
              },
              "counts": {
                "amd-1": 4,
                "amd-2": 2,
                "dgx-3": 2
              },
              "resources": "Three paired rounds per input; unchanged60s8GiB1CPU; pinned original node; nomultithread",
              "manifest": "results/integer-losses-batch2-inputs.json",
              "artifact": "results/integer-losses-batch2",
              "model_replay_job": 173520,
              "model_replay_status": "Released at offline checkpoint; pending scheduler dependencies on submitted timing jobs. Validation not yet complete.",
              "preflight": "check-only --no-sync --build-via-slurm passed25b44cc",
              "submission_note": "Initial node glob selected amd nodes; dgx-3 submitted separately before freezing model-replay task mapping.",
              "completed_groups": {
                "amd-2": {
                  "aggregate": {
                    "baseline": {
                      "error": 0,
                      "par2": 323.420897,
                      "rows": 6,
                      "sat": 3,
                      "solved": 6,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 3,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 323.420897,
                    "candidate": {
                      "error": 0,
                      "par2": 324.98434399999996,
                      "rows": 6,
                      "sat": 3,
                      "solved": 6,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 3,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 324.98434399999996,
                    "common_runtime_ratio": 1.0048340939453888,
                    "common_solved": 6,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0048340939453888
                  },
                  "expected_unique_inputs": 2,
                  "families": {
                    "nec-smt": {
                      "baseline": {
                        "error": 0,
                        "par2": 323.420897,
                        "rows": 6,
                        "sat": 3,
                        "solved": 6,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 3,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "baseline_common_seconds": 323.420897,
                      "candidate": {
                        "error": 0,
                        "par2": 324.98434399999996,
                        "rows": 6,
                        "sat": 3,
                        "solved": 6,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 3,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "candidate_common_seconds": 324.98434399999996,
                      "common_runtime_ratio": 1.0048340939453888,
                      "common_solved": 6,
                      "disagreements": [],
                      "gained": [],
                      "lost": [],
                      "par2_ratio": 1.0048340939453888
                    }
                  },
                  "identities": {
                    "baseline": [
                      "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                    ],
                    "candidate": [
                      "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                    ]
                  },
                  "loss_counts": {},
                  "loss_rerun_status": "no-repeated-loss",
                  "note": "Three complete paired reruns; a loss in at least two blocks acceptance. This verdict covers the repeat-loss criterion only, not the full-corpus timing thresholds, model validation or recorded-reference evidence. Timeout/unknown rows remain explicit in each pair's metrics.",
                  "ratio_limit": 1.01,
                  "repeated_losses": [],
                  "rounds": [
                    {
                      "baseline": {
                        "error": 0,
                        "par2": 110.611046,
                        "rows": 2,
                        "sat": 1,
                        "solved": 2,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 1,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "baseline_common_seconds": 110.611046,
                      "candidate": {
                        "error": 0,
                        "par2": 112.005295,
                        "rows": 2,
                        "sat": 1,
                        "solved": 2,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 1,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "candidate_common_seconds": 112.005295,
                      "common_runtime_ratio": 1.01260497075491,
                      "common_solved": 2,
                      "disagreements": [],
                      "gained": [],
                      "lost": [],
                      "par2_ratio": 1.01260497075491
                    },
                    {
                      "baseline": {
                        "error": 0,
                        "par2": 109.551998,
                        "rows": 2,
                        "sat": 1,
                        "solved": 2,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 1,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "baseline_common_seconds": 109.551998,
                      "candidate": {
                        "error": 0,
                        "par2": 109.735863,
                        "rows": 2,
                        "sat": 1,
                        "solved": 2,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 1,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "candidate_common_seconds": 109.735863,
                      "common_runtime_ratio": 1.0016783354330059,
                      "common_solved": 2,
                      "disagreements": [],
                      "gained": [],
                      "lost": [],
                      "par2_ratio": 1.0016783354330059
                    },
                    {
                      "baseline": {
                        "error": 0,
                        "par2": 103.25785300000001,
                        "rows": 2,
                        "sat": 1,
                        "solved": 2,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 1,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "baseline_common_seconds": 103.25785300000001,
                      "candidate": {
                        "error": 0,
                        "par2": 103.243186,
                        "rows": 2,
                        "sat": 1,
                        "solved": 2,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 1,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "candidate_common_seconds": 103.243186,
                      "common_runtime_ratio": 0.9998579575347164,
                      "common_solved": 2,
                      "disagreements": [],
                      "gained": [],
                      "lost": [],
                      "par2_ratio": 0.9998579575347164
                    }
                  ],
                  "timeout": 60.0,
                  "timing_status": "pass"
                },
                "dgx-3": {
                  "aggregate": {
                    "baseline": {
                      "error": 0,
                      "par2": 342.672918,
                      "rows": 6,
                      "sat": 3,
                      "solved": 6,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 3,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 342.672918,
                    "candidate": {
                      "error": 0,
                      "par2": 341.927647,
                      "rows": 6,
                      "sat": 3,
                      "solved": 6,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 3,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 341.927647,
                    "common_runtime_ratio": 0.9978251243070221,
                    "common_solved": 6,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.9978251243070221
                  },
                  "expected_unique_inputs": 2,
                  "families": {
                    "nec-smt": {
                      "baseline": {
                        "error": 0,
                        "par2": 342.672918,
                        "rows": 6,
                        "sat": 3,
                        "solved": 6,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 3,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "baseline_common_seconds": 342.672918,
                      "candidate": {
                        "error": 0,
                        "par2": 341.927647,
                        "rows": 6,
                        "sat": 3,
                        "solved": 6,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 3,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "candidate_common_seconds": 341.927647,
                      "common_runtime_ratio": 0.9978251243070221,
                      "common_solved": 6,
                      "disagreements": [],
                      "gained": [],
                      "lost": [],
                      "par2_ratio": 0.9978251243070221
                    }
                  },
                  "identities": {
                    "baseline": [
                      "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                    ],
                    "candidate": [
                      "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                    ]
                  },
                  "loss_counts": {},
                  "loss_rerun_status": "no-repeated-loss",
                  "note": "Three complete paired reruns; a loss in at least two blocks acceptance. This verdict covers the repeat-loss criterion only, not the full-corpus timing thresholds, model validation or recorded-reference evidence. Timeout/unknown rows remain explicit in each pair's metrics.",
                  "ratio_limit": 1.01,
                  "repeated_losses": [],
                  "rounds": [
                    {
                      "baseline": {
                        "error": 0,
                        "par2": 111.09742,
                        "rows": 2,
                        "sat": 1,
                        "solved": 2,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 1,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "baseline_common_seconds": 111.09742,
                      "candidate": {
                        "error": 0,
                        "par2": 110.321921,
                        "rows": 2,
                        "sat": 1,
                        "solved": 2,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 1,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "candidate_common_seconds": 110.321921,
                      "common_runtime_ratio": 0.9930196488811351,
                      "common_solved": 2,
                      "disagreements": [],
                      "gained": [],
                      "lost": [],
                      "par2_ratio": 0.9930196488811351
                    },
                    {
                      "baseline": {
                        "error": 0,
                        "par2": 115.353117,
                        "rows": 2,
                        "sat": 1,
                        "solved": 2,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 1,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "baseline_common_seconds": 115.353117,
                      "candidate": {
                        "error": 0,
                        "par2": 115.435381,
                        "rows": 2,
                        "sat": 1,
                        "solved": 2,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 1,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "candidate_common_seconds": 115.435381,
                      "common_runtime_ratio": 1.0007131493464543,
                      "common_solved": 2,
                      "disagreements": [],
                      "gained": [],
                      "lost": [],
                      "par2_ratio": 1.0007131493464543
                    },
                    {
                      "baseline": {
                        "error": 0,
                        "par2": 116.222381,
                        "rows": 2,
                        "sat": 1,
                        "solved": 2,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 1,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "baseline_common_seconds": 116.222381,
                      "candidate": {
                        "error": 0,
                        "par2": 116.170345,
                        "rows": 2,
                        "sat": 1,
                        "solved": 2,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 1,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "candidate_common_seconds": 116.170345,
                      "common_runtime_ratio": 0.9995522721221827,
                      "common_solved": 2,
                      "disagreements": [],
                      "gained": [],
                      "lost": [],
                      "par2_ratio": 0.9995522721221827
                    }
                  ],
                  "timeout": 60.0,
                  "timing_status": "pass"
                },
                "amd-1": {
                  "aggregate": {
                    "baseline": {
                      "error": 0,
                      "par2": 668.7049490000002,
                      "rows": 12,
                      "sat": 12,
                      "solved": 12,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 0,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 609.8961600000001,
                    "candidate": {
                      "error": 0,
                      "par2": 727.789633,
                      "rows": 12,
                      "sat": 11,
                      "solved": 11,
                      "timeout": 1,
                      "unknown": 0,
                      "unsat": 0,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 607.789633,
                    "common_runtime_ratio": 0.9965460890916248,
                    "common_solved": 11,
                    "disagreements": [],
                    "gained": [],
                    "lost": [
                      "round-2:nec-smt/large/getoption_group/prp-19-49.smt2"
                    ],
                    "par2_ratio": 1.088356881593828
                  },
                  "expected_unique_inputs": 4,
                  "families": {
                    "nec-smt": {
                      "baseline": {
                        "error": 0,
                        "par2": 668.7049490000002,
                        "rows": 12,
                        "sat": 12,
                        "solved": 12,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 0,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "baseline_common_seconds": 609.8961600000001,
                      "candidate": {
                        "error": 0,
                        "par2": 727.789633,
                        "rows": 12,
                        "sat": 11,
                        "solved": 11,
                        "timeout": 1,
                        "unknown": 0,
                        "unsat": 0,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "candidate_common_seconds": 607.789633,
                      "common_runtime_ratio": 0.9965460890916248,
                      "common_solved": 11,
                      "disagreements": [],
                      "gained": [],
                      "lost": [
                        "round-2:nec-smt/large/getoption_group/prp-19-49.smt2"
                      ],
                      "par2_ratio": 1.088356881593828
                    }
                  },
                  "identities": {
                    "baseline": [
                      "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                    ],
                    "candidate": [
                      "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                    ]
                  },
                  "loss_counts": {
                    "nec-smt/large/getoption_group/prp-19-49.smt2": 1
                  },
                  "loss_rerun_status": "no-repeated-loss",
                  "note": "Three complete paired reruns; a loss in at least two blocks acceptance. This verdict covers the repeat-loss criterion only, not the full-corpus timing thresholds, model validation or recorded-reference evidence. Timeout/unknown rows remain explicit in each pair's metrics.",
                  "ratio_limit": 1.01,
                  "repeated_losses": [],
                  "rounds": [
                    {
                      "baseline": {
                        "error": 0,
                        "par2": 222.542419,
                        "rows": 4,
                        "sat": 4,
                        "solved": 4,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 0,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "baseline_common_seconds": 222.542419,
                      "candidate": {
                        "error": 0,
                        "par2": 222.972846,
                        "rows": 4,
                        "sat": 4,
                        "solved": 4,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 0,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "candidate_common_seconds": 222.972846,
                      "common_runtime_ratio": 1.0019341346334516,
                      "common_solved": 4,
                      "disagreements": [],
                      "gained": [],
                      "lost": [],
                      "par2_ratio": 1.0019341346334516
                    },
                    {
                      "baseline": {
                        "error": 0,
                        "par2": 225.07150000000001,
                        "rows": 4,
                        "sat": 4,
                        "solved": 4,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 0,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "baseline_common_seconds": 225.07150000000001,
                      "candidate": {
                        "error": 0,
                        "par2": 219.412678,
                        "rows": 4,
                        "sat": 4,
                        "solved": 4,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 0,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "candidate_common_seconds": 219.412678,
                      "common_runtime_ratio": 0.9748576696738591,
                      "common_solved": 4,
                      "disagreements": [],
                      "gained": [],
                      "lost": [],
                      "par2_ratio": 0.9748576696738591
                    },
                    {
                      "baseline": {
                        "error": 0,
                        "par2": 221.09103,
                        "rows": 4,
                        "sat": 4,
                        "solved": 4,
                        "timeout": 0,
                        "unknown": 0,
                        "unsat": 0,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "baseline_common_seconds": 162.282241,
                      "candidate": {
                        "error": 0,
                        "par2": 285.404109,
                        "rows": 4,
                        "sat": 3,
                        "solved": 3,
                        "timeout": 1,
                        "unknown": 0,
                        "unsat": 0,
                        "unsupported": 0,
                        "wrong_answer": 0
                      },
                      "candidate_common_seconds": 165.404109,
                      "common_runtime_ratio": 1.0192372743977574,
                      "common_solved": 3,
                      "disagreements": [],
                      "gained": [],
                      "lost": [
                        "nec-smt/large/getoption_group/prp-19-49.smt2"
                      ],
                      "par2_ratio": 1.2908895896862032
                    }
                  ],
                  "timeout": 60.0,
                  "timing_status": "needs-triage"
                }
              }
            },
            "qf_lia_full": {
              "artifact": "results/integer-paired/QF_LIA-summary.json",
              "summary": {
                "aggregate": {
                  "baseline": {
                    "error": 0,
                    "par2": 894358.8394489986,
                    "rows": 26612,
                    "sat": 13179,
                    "solved": 19893,
                    "timeout": 5115,
                    "unknown": 1604,
                    "unsat": 6714,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "baseline_common_seconds": 85365.95199599981,
                  "candidate": {
                    "error": 0,
                    "par2": 893837.416857993,
                    "rows": 26612,
                    "sat": 13187,
                    "solved": 19903,
                    "timeout": 5103,
                    "unknown": 1606,
                    "unsat": 6716,
                    "unsupported": 0,
                    "wrong_answer": 0
                  },
                  "candidate_common_seconds": 85465.396613,
                  "common_runtime_ratio": 1.0011649213143532,
                  "common_solved": 19846,
                  "disagreements": [],
                  "gained": [
                    "round-0:nec-smt/large/getoption_group/prp-27-49.smt2",
                    "round-0:nec-smt/large/bftpd_login/prp-41-43.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-20-41.smt2",
                    "round-0:20231117-c_inference/30_30_18_20_sat.smt2",
                    "round-0:20231117-c_inference/40_40_58_4_unsat.smt2",
                    "round-0:2019-ezsmt/Labyrinth/SCC/0143-labyrinth-14-0.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-41-42.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-46-41.smt2",
                    "round-0:nec-smt/large/bftpd_login/prp-13-50.smt2",
                    "round-0:nec-smt/large/getoption_group/prp-53-46.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-29-41.smt2",
                    "round-0:nec-smt/large/getoption_group/prp-61-49.smt2",
                    "round-0:nec-smt/large/getoption_group/prp-16-49.smt2",
                    "round-0:nec-smt/large/getoption_user/prp-48-46.smt2",
                    "round-0:nec-smt/large/getoption_group/prp-68-50.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-13-47.smt2",
                    "round-0:nec-smt/large/getoption_group/prp-7-49.smt2",
                    "round-0:nec-smt/large/getoption_group/prp-23-49.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-51-48.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-81-50.smt2",
                    "round-1:2019-cmodelsdiff/labyrinth/0110-labyrinth-16-0.smt2",
                    "round-1:nec-smt/large/getoption_user/prp-0-46.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-27-50.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-54-49.smt2",
                    "round-1:nec-smt/large/checkpass/prp-22-49.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-18-42.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-20-42.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-41-46.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-40-43.smt2",
                    "round-1:nec-smt/large/getoption_directories/prp-10-49.smt2",
                    "round-1:20220307-SMPT/SharedMemory-PT-000050/RF-09.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-24-42.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-41-42.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-47-46.smt2",
                    "round-1:tropical-matrix/constraint-916807.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-46-42.smt2",
                    "round-1:nec-smt/large/checkpass/prp-43-49.smt2",
                    "round-1:arctic-matrix/constraint-901628.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-27-42.smt2",
                    "round-1:nec-smt/large/getoption_user/prp-42-49.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-61-50.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-16-50.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-63-50.smt2",
                    "round-1:nec-smt/large/getoption_user/prp-45-46.smt2",
                    "round-1:nec-smt/large/getoption_user/prp-46-47.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-65-50.smt2",
                    "round-1:nec-smt/large/getoption_user/prp-47-46.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-13-48.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-2-50.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-13-49.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-20-49.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-5-48.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-70-50.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-14-49.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-75-50.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-51-49.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-33-49.smt2"
                  ],
                  "lost": [
                    "round-0:nec-smt/large/getoption_group/prp-8-49.smt2",
                    "round-0:nec-smt/large/bftpd_login/prp-36-45.smt2",
                    "round-0:nec-smt/large/getoption_group/prp-25-49.smt2",
                    "round-0:nec-smt/large/checkpass/prp-17-49.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-34-45.smt2",
                    "round-0:nec-smt/large/getoption_group/prp-28-49.smt2",
                    "round-0:20210219-Dartagnan/ReachSafety-Loops/benchmark35_linear-O0.smt2",
                    "round-0:nec-smt/large/checkpass/prp-19-49.smt2",
                    "round-0:nec-smt/large/checkpass/prp-22-49.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-8-40.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-8-43.smt2",
                    "round-0:20220307-SMPT/SharedMemory-PT-000050/RC-11.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-25-41.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-29-40.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-47-41.smt2",
                    "round-0:nec-smt/large/getoption_group/prp-14-50.smt2",
                    "round-0:nec-smt/large/getoption_group/prp-15-49.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-48-48.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-30-47.smt2",
                    "round-0:nec-smt/large/getoption_group/prp-19-49.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-13-50.smt2",
                    "round-0:nec-smt/large/getoption_group/prp-20-49.smt2",
                    "round-0:nec-smt/large/checkpass_pwd/prp-32-50.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-25-50.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-16-49.smt2",
                    "round-1:nec-smt/large/checkpass/prp-2-49.smt2",
                    "round-1:nec-smt/large/bftpd_login/prp-46-44.smt2",
                    "round-1:20231117-c_inference/40_40_58_4_unsat.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-28-42.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-40-42.smt2",
                    "round-1:nec-smt/large/getoption_directories/prp-10-50.smt2",
                    "round-1:tropical-matrix/constraint-642278.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-24-43.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-41-43.smt2",
                    "round-1:20220307-SMPT/SharedMemory-PT-000050/RF-14.smt2",
                    "round-1:arctic-matrix/constraint-706002.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-54-46.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-47-42.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-47-48.smt2",
                    "round-1:nec-smt/large/getoption_user/prp-46-46.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-30-50.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-49-47.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-67-50.smt2",
                    "round-1:nec-smt/large/checkpass/prp-10-49.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-2-49.smt2",
                    "round-1:nec-smt/large/getoption_group/prp-69-50.smt2",
                    "round-1:nec-smt/large/checkpass_pwd/prp-32-50.smt2"
                  ],
                  "par2_ratio": 0.9994169872672956
                },
                "expected_unique_inputs": 13306,
                "families": {
                  "20180326-Bromberger": {
                    "baseline": {
                      "error": 0,
                      "par2": 114421.928594,
                      "rows": 1612,
                      "sat": 472,
                      "solved": 660,
                      "timeout": 782,
                      "unknown": 170,
                      "unsat": 188,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 181.92859400000012,
                    "candidate": {
                      "error": 0,
                      "par2": 114422.20600800017,
                      "rows": 1612,
                      "sat": 472,
                      "solved": 660,
                      "timeout": 780,
                      "unknown": 172,
                      "unsat": 188,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 182.206008,
                    "common_runtime_ratio": 1.0015248510083021,
                    "common_solved": 660,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0000024244828205
                  },
                  "2019-cmodelsdiff": {
                    "baseline": {
                      "error": 0,
                      "par2": 4944.848868999997,
                      "rows": 298,
                      "sat": 253,
                      "solved": 267,
                      "timeout": 31,
                      "unknown": 0,
                      "unsat": 14,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 1224.8488689999997,
                    "candidate": {
                      "error": 0,
                      "par2": 4857.410154000001,
                      "rows": 298,
                      "sat": 254,
                      "solved": 268,
                      "timeout": 30,
                      "unknown": 0,
                      "unsat": 14,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 1199.8460679999998,
                    "common_runtime_ratio": 0.9795870318103711,
                    "common_solved": 267,
                    "disagreements": [],
                    "gained": [
                      "round-1:2019-cmodelsdiff/labyrinth/0110-labyrinth-16-0.smt2"
                    ],
                    "lost": [],
                    "par2_ratio": 0.9823172118468246
                  },
                  "2019-ezsmt": {
                    "baseline": {
                      "error": 0,
                      "par2": 5069.559401000001,
                      "rows": 246,
                      "sat": 185,
                      "solved": 213,
                      "timeout": 33,
                      "unknown": 0,
                      "unsat": 28,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 1109.5594010000004,
                    "candidate": {
                      "error": 0,
                      "par2": 5050.529597000002,
                      "rows": 246,
                      "sat": 186,
                      "solved": 214,
                      "timeout": 32,
                      "unknown": 0,
                      "unsat": 28,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 1152.0669819999998,
                    "common_runtime_ratio": 1.0383103247664696,
                    "common_solved": 213,
                    "disagreements": [],
                    "gained": [
                      "round-0:2019-ezsmt/Labyrinth/SCC/0143-labyrinth-14-0.smt2"
                    ],
                    "lost": [],
                    "par2_ratio": 0.9962462607704634
                  },
                  "20210219-Dartagnan": {
                    "baseline": {
                      "error": 0,
                      "par2": 14558.438895999998,
                      "rows": 306,
                      "sat": 28,
                      "solved": 202,
                      "timeout": 104,
                      "unknown": 0,
                      "unsat": 174,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 2035.131169000001,
                    "candidate": {
                      "error": 0,
                      "par2": 14836.359746,
                      "rows": 306,
                      "sat": 28,
                      "solved": 201,
                      "timeout": 105,
                      "unknown": 0,
                      "unsat": 173,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 2236.359745999999,
                    "common_runtime_ratio": 1.0988774483262795,
                    "common_solved": 201,
                    "disagreements": [],
                    "gained": [],
                    "lost": [
                      "round-0:20210219-Dartagnan/ReachSafety-Loops/benchmark35_linear-O0.smt2"
                    ],
                    "par2_ratio": 1.0190900172735116
                  },
                  "20220307-SMPT": {
                    "baseline": {
                      "error": 0,
                      "par2": 25418.428232000057,
                      "rows": 11704,
                      "sat": 8437,
                      "solved": 11545,
                      "timeout": 159,
                      "unknown": 0,
                      "unsat": 3108,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 6220.621017999966,
                    "candidate": {
                      "error": 0,
                      "par2": 25530.461620999835,
                      "rows": 11704,
                      "sat": 8436,
                      "solved": 11544,
                      "timeout": 160,
                      "unknown": 0,
                      "unsat": 3108,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 6271.517112000021,
                    "common_runtime_ratio": 1.0081818348767402,
                    "common_solved": 11543,
                    "disagreements": [],
                    "gained": [
                      "round-1:20220307-SMPT/SharedMemory-PT-000050/RF-09.smt2"
                    ],
                    "lost": [
                      "round-0:20220307-SMPT/SharedMemory-PT-000050/RC-11.smt2",
                      "round-1:20220307-SMPT/SharedMemory-PT-000050/RF-14.smt2"
                    ],
                    "par2_ratio": 1.0044075655653144
                  },
                  "20230321-UltimateAutomizerSvcomp2023": {
                    "baseline": {
                      "error": 0,
                      "par2": 480.0,
                      "rows": 4,
                      "sat": 0,
                      "solved": 0,
                      "timeout": 0,
                      "unknown": 4,
                      "unsat": 0,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 0,
                    "candidate": {
                      "error": 0,
                      "par2": 480.0,
                      "rows": 4,
                      "sat": 0,
                      "solved": 0,
                      "timeout": 0,
                      "unknown": 4,
                      "unsat": 0,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 0,
                    "common_runtime_ratio": null,
                    "common_solved": 0,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0
                  },
                  "20231117-c_inference": {
                    "baseline": {
                      "error": 0,
                      "par2": 14695.240628999996,
                      "rows": 160,
                      "sat": 35,
                      "solved": 46,
                      "timeout": 114,
                      "unknown": 0,
                      "unsat": 11,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 960.1349009999999,
                    "candidate": {
                      "error": 0,
                      "par2": 14643.658703,
                      "rows": 160,
                      "sat": 36,
                      "solved": 47,
                      "timeout": 113,
                      "unknown": 0,
                      "unsat": 11,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 964.8192780000003,
                    "common_runtime_ratio": 1.004878873786508,
                    "common_solved": 45,
                    "disagreements": [],
                    "gained": [
                      "round-0:20231117-c_inference/30_30_18_20_sat.smt2",
                      "round-0:20231117-c_inference/40_40_58_4_unsat.smt2"
                    ],
                    "lost": [
                      "round-1:20231117-c_inference/40_40_58_4_unsat.smt2"
                    ],
                    "par2_ratio": 0.9964898889849954
                  },
                  "Averest": {
                    "baseline": {
                      "error": 0,
                      "par2": 43.37021499999999,
                      "rows": 38,
                      "sat": 18,
                      "solved": 38,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 20,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 43.37021499999999,
                    "candidate": {
                      "error": 0,
                      "par2": 42.699537,
                      "rows": 38,
                      "sat": 18,
                      "solved": 38,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 20,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 42.699537,
                    "common_runtime_ratio": 0.9845359770524543,
                    "common_solved": 38,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.9845359770524543
                  },
                  "CAV_2009_benchmarks": {
                    "baseline": {
                      "error": 0,
                      "par2": 57657.866286000004,
                      "rows": 1182,
                      "sat": 534,
                      "solved": 704,
                      "timeout": 213,
                      "unknown": 265,
                      "unsat": 170,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 297.86628600000023,
                    "candidate": {
                      "error": 0,
                      "par2": 57653.158975000035,
                      "rows": 1182,
                      "sat": 534,
                      "solved": 704,
                      "timeout": 212,
                      "unknown": 266,
                      "unsat": 170,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 293.15897499999994,
                    "common_runtime_ratio": 0.9841965632861173,
                    "common_solved": 704,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.999918357870258
                  },
                  "CIRC": {
                    "baseline": {
                      "error": 0,
                      "par2": 4602.024067,
                      "rows": 102,
                      "sat": 36,
                      "solved": 64,
                      "timeout": 38,
                      "unknown": 0,
                      "unsat": 28,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 42.024066999999995,
                    "candidate": {
                      "error": 0,
                      "par2": 4602.851551,
                      "rows": 102,
                      "sat": 36,
                      "solved": 64,
                      "timeout": 38,
                      "unknown": 0,
                      "unsat": 28,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 42.851550999999986,
                    "common_runtime_ratio": 1.0196907167504752,
                    "common_solved": 64,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0001798087076366
                  },
                  "RTCL": {
                    "baseline": {
                      "error": 0,
                      "par2": 0.344858,
                      "rows": 4,
                      "sat": 4,
                      "solved": 4,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 0,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 0.344858,
                    "candidate": {
                      "error": 0,
                      "par2": 0.363051,
                      "rows": 4,
                      "sat": 4,
                      "solved": 4,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 0,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 0.363051,
                    "common_runtime_ratio": 1.0527550470048541,
                    "common_solved": 4,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0527550470048541
                  },
                  "RWS": {
                    "baseline": {
                      "error": 0,
                      "par2": 2709.0842019999996,
                      "rows": 40,
                      "sat": 18,
                      "solved": 18,
                      "timeout": 22,
                      "unknown": 0,
                      "unsat": 0,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 69.084202,
                    "candidate": {
                      "error": 0,
                      "par2": 2711.223308,
                      "rows": 40,
                      "sat": 18,
                      "solved": 18,
                      "timeout": 22,
                      "unknown": 0,
                      "unsat": 0,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 71.22330799999997,
                    "common_runtime_ratio": 1.0309637505836713,
                    "common_solved": 18,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0007896048407876
                  },
                  "arctic-matrix": {
                    "baseline": {
                      "error": 0,
                      "par2": 21163.743124000004,
                      "rows": 200,
                      "sat": 29,
                      "solved": 29,
                      "timeout": 171,
                      "unknown": 0,
                      "unsat": 0,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 584.627081,
                    "candidate": {
                      "error": 0,
                      "par2": 21162.782011000007,
                      "rows": 200,
                      "sat": 29,
                      "solved": 29,
                      "timeout": 171,
                      "unknown": 0,
                      "unsat": 0,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 584.6831670000001,
                    "common_runtime_ratio": 1.0000959346595855,
                    "common_solved": 28,
                    "disagreements": [],
                    "gained": [
                      "round-1:arctic-matrix/constraint-901628.smt2"
                    ],
                    "lost": [
                      "round-1:arctic-matrix/constraint-706002.smt2"
                    ],
                    "par2_ratio": 0.9999545868141393
                  },
                  "bofill-scheduling": {
                    "baseline": {
                      "error": 0,
                      "par2": 2122.0309580000026,
                      "rows": 1304,
                      "sat": 806,
                      "solved": 1296,
                      "timeout": 8,
                      "unknown": 0,
                      "unsat": 490,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 1162.0309580000016,
                    "candidate": {
                      "error": 0,
                      "par2": 2165.110263999997,
                      "rows": 1304,
                      "sat": 806,
                      "solved": 1296,
                      "timeout": 8,
                      "unknown": 0,
                      "unsat": 490,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 1205.110263999998,
                    "common_runtime_ratio": 1.0370724253974621,
                    "common_solved": 1296,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0203009790397197
                  },
                  "calypto": {
                    "baseline": {
                      "error": 0,
                      "par2": 485.95097500000014,
                      "rows": 74,
                      "sat": 44,
                      "solved": 70,
                      "timeout": 4,
                      "unknown": 0,
                      "unsat": 26,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 5.950975,
                    "candidate": {
                      "error": 0,
                      "par2": 486.15675799999997,
                      "rows": 74,
                      "sat": 44,
                      "solved": 70,
                      "timeout": 4,
                      "unknown": 0,
                      "unsat": 26,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 6.156758000000001,
                    "common_runtime_ratio": 1.0345797117279103,
                    "common_solved": 70,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0004234645274657
                  },
                  "check": {
                    "baseline": {
                      "error": 0,
                      "par2": 240.073504,
                      "rows": 10,
                      "sat": 2,
                      "solved": 8,
                      "timeout": 0,
                      "unknown": 2,
                      "unsat": 6,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 0.07350399999999999,
                    "candidate": {
                      "error": 0,
                      "par2": 240.07656799999998,
                      "rows": 10,
                      "sat": 2,
                      "solved": 8,
                      "timeout": 0,
                      "unknown": 2,
                      "unsat": 6,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 0.07656800000000001,
                    "common_runtime_ratio": 1.041684806269047,
                    "common_solved": 8,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0000127627578592
                  },
                  "convert": {
                    "baseline": {
                      "error": 0,
                      "par2": 33494.531245,
                      "rows": 638,
                      "sat": 282,
                      "solved": 360,
                      "timeout": 16,
                      "unknown": 262,
                      "unsat": 78,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 134.53124500000007,
                    "candidate": {
                      "error": 0,
                      "par2": 33494.66644499998,
                      "rows": 638,
                      "sat": 282,
                      "solved": 360,
                      "timeout": 16,
                      "unknown": 262,
                      "unsat": 78,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 134.66644499999992,
                    "common_runtime_ratio": 1.0010049710013451,
                    "common_solved": 360,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.000004036479836
                  },
                  "cut_lemmas": {
                    "baseline": {
                      "error": 0,
                      "par2": 6187.895298999998,
                      "rows": 186,
                      "sat": 0,
                      "solved": 138,
                      "timeout": 0,
                      "unknown": 48,
                      "unsat": 138,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 427.89529899999985,
                    "candidate": {
                      "error": 0,
                      "par2": 6177.167498000002,
                      "rows": 186,
                      "sat": 0,
                      "solved": 138,
                      "timeout": 0,
                      "unknown": 48,
                      "unsat": 138,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 417.1674979999999,
                    "common_runtime_ratio": 0.9749289112895817,
                    "common_solved": 138,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.9982663247386021
                  },
                  "dillig": {
                    "baseline": {
                      "error": 0,
                      "par2": 23764.28065500001,
                      "rows": 466,
                      "sat": 264,
                      "solved": 270,
                      "timeout": 116,
                      "unknown": 80,
                      "unsat": 6,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 244.28065499999997,
                    "candidate": {
                      "error": 0,
                      "par2": 23761.780363000027,
                      "rows": 466,
                      "sat": 264,
                      "solved": 270,
                      "timeout": 116,
                      "unknown": 80,
                      "unsat": 6,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 241.780363,
                    "common_runtime_ratio": 0.989764674570731,
                    "common_solved": 270,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.9998947878104841
                  },
                  "fft": {
                    "baseline": {
                      "error": 0,
                      "par2": 1200.402686,
                      "rows": 18,
                      "sat": 4,
                      "solved": 8,
                      "timeout": 10,
                      "unknown": 0,
                      "unsat": 4,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 0.402686,
                    "candidate": {
                      "error": 0,
                      "par2": 1200.44663,
                      "rows": 18,
                      "sat": 4,
                      "solved": 8,
                      "timeout": 10,
                      "unknown": 0,
                      "unsat": 4,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 0.44662999999999997,
                    "common_runtime_ratio": 1.1091272107796148,
                    "common_solved": 8,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0000366077154879
                  },
                  "mathsat": {
                    "baseline": {
                      "error": 0,
                      "par2": 299.2626890000001,
                      "rows": 242,
                      "sat": 42,
                      "solved": 242,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 200,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 299.2626890000001,
                    "candidate": {
                      "error": 0,
                      "par2": 308.91450399999985,
                      "rows": 242,
                      "sat": 42,
                      "solved": 242,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 200,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 308.91450399999985,
                    "common_runtime_ratio": 1.0322519824714926,
                    "common_solved": 242,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0322519824714926
                  },
                  "miplib2003": {
                    "baseline": {
                      "error": 0,
                      "par2": 2176.566959999999,
                      "rows": 32,
                      "sat": 14,
                      "solved": 14,
                      "timeout": 18,
                      "unknown": 0,
                      "unsat": 0,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 16.56696,
                    "candidate": {
                      "error": 0,
                      "par2": 2178.5744290000002,
                      "rows": 32,
                      "sat": 14,
                      "solved": 14,
                      "timeout": 18,
                      "unknown": 0,
                      "unsat": 0,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 18.574429000000002,
                    "common_runtime_ratio": 1.1211730456281659,
                    "common_solved": 14,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.000922309782742
                  },
                  "nec-smt": {
                    "baseline": {
                      "error": 0,
                      "par2": 376456.7083839997,
                      "rows": 5560,
                      "sat": 1327,
                      "solved": 3014,
                      "timeout": 2546,
                      "unknown": 0,
                      "unsat": 1687,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 68557.99375900005,
                    "candidate": {
                      "error": 0,
                      "par2": 375651.687404001,
                      "rows": 5560,
                      "sat": 1333,
                      "solved": 3023,
                      "timeout": 2537,
                      "unknown": 0,
                      "unsat": 1690,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 68331.18427899998,
                    "common_runtime_ratio": 0.9966917135761387,
                    "common_solved": 2973,
                    "disagreements": [],
                    "gained": [
                      "round-0:nec-smt/large/getoption_group/prp-27-49.smt2",
                      "round-0:nec-smt/large/bftpd_login/prp-41-43.smt2",
                      "round-0:nec-smt/large/checkpass_pwd/prp-20-41.smt2",
                      "round-0:nec-smt/large/checkpass_pwd/prp-41-42.smt2",
                      "round-0:nec-smt/large/checkpass_pwd/prp-46-41.smt2",
                      "round-0:nec-smt/large/bftpd_login/prp-13-50.smt2",
                      "round-0:nec-smt/large/getoption_group/prp-53-46.smt2",
                      "round-0:nec-smt/large/checkpass_pwd/prp-29-41.smt2",
                      "round-0:nec-smt/large/getoption_group/prp-61-49.smt2",
                      "round-0:nec-smt/large/getoption_group/prp-16-49.smt2",
                      "round-0:nec-smt/large/getoption_user/prp-48-46.smt2",
                      "round-0:nec-smt/large/getoption_group/prp-68-50.smt2",
                      "round-0:nec-smt/large/checkpass_pwd/prp-13-47.smt2",
                      "round-0:nec-smt/large/getoption_group/prp-7-49.smt2",
                      "round-0:nec-smt/large/getoption_group/prp-23-49.smt2",
                      "round-0:nec-smt/large/checkpass_pwd/prp-51-48.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-81-50.smt2",
                      "round-1:nec-smt/large/getoption_user/prp-0-46.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-27-50.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-54-49.smt2",
                      "round-1:nec-smt/large/checkpass/prp-22-49.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-18-42.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-20-42.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-41-46.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-40-43.smt2",
                      "round-1:nec-smt/large/getoption_directories/prp-10-49.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-24-42.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-41-42.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-47-46.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-46-42.smt2",
                      "round-1:nec-smt/large/checkpass/prp-43-49.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-27-42.smt2",
                      "round-1:nec-smt/large/getoption_user/prp-42-49.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-61-50.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-16-50.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-63-50.smt2",
                      "round-1:nec-smt/large/getoption_user/prp-45-46.smt2",
                      "round-1:nec-smt/large/getoption_user/prp-46-47.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-65-50.smt2",
                      "round-1:nec-smt/large/getoption_user/prp-47-46.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-13-48.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-2-50.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-13-49.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-20-49.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-5-48.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-70-50.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-14-49.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-75-50.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-51-49.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-33-49.smt2"
                    ],
                    "lost": [
                      "round-0:nec-smt/large/getoption_group/prp-8-49.smt2",
                      "round-0:nec-smt/large/bftpd_login/prp-36-45.smt2",
                      "round-0:nec-smt/large/getoption_group/prp-25-49.smt2",
                      "round-0:nec-smt/large/checkpass/prp-17-49.smt2",
                      "round-0:nec-smt/large/checkpass_pwd/prp-34-45.smt2",
                      "round-0:nec-smt/large/getoption_group/prp-28-49.smt2",
                      "round-0:nec-smt/large/checkpass/prp-19-49.smt2",
                      "round-0:nec-smt/large/checkpass/prp-22-49.smt2",
                      "round-0:nec-smt/large/checkpass_pwd/prp-8-40.smt2",
                      "round-0:nec-smt/large/checkpass_pwd/prp-8-43.smt2",
                      "round-0:nec-smt/large/checkpass_pwd/prp-25-41.smt2",
                      "round-0:nec-smt/large/checkpass_pwd/prp-29-40.smt2",
                      "round-0:nec-smt/large/checkpass_pwd/prp-47-41.smt2",
                      "round-0:nec-smt/large/getoption_group/prp-14-50.smt2",
                      "round-0:nec-smt/large/getoption_group/prp-15-49.smt2",
                      "round-0:nec-smt/large/checkpass_pwd/prp-48-48.smt2",
                      "round-0:nec-smt/large/checkpass_pwd/prp-30-47.smt2",
                      "round-0:nec-smt/large/getoption_group/prp-19-49.smt2",
                      "round-0:nec-smt/large/checkpass_pwd/prp-13-50.smt2",
                      "round-0:nec-smt/large/getoption_group/prp-20-49.smt2",
                      "round-0:nec-smt/large/checkpass_pwd/prp-32-50.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-25-50.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-16-49.smt2",
                      "round-1:nec-smt/large/checkpass/prp-2-49.smt2",
                      "round-1:nec-smt/large/bftpd_login/prp-46-44.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-28-42.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-40-42.smt2",
                      "round-1:nec-smt/large/getoption_directories/prp-10-50.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-24-43.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-41-43.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-54-46.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-47-42.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-47-48.smt2",
                      "round-1:nec-smt/large/getoption_user/prp-46-46.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-30-50.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-49-47.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-67-50.smt2",
                      "round-1:nec-smt/large/checkpass/prp-10-49.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-2-49.smt2",
                      "round-1:nec-smt/large/getoption_group/prp-69-50.smt2",
                      "round-1:nec-smt/large/checkpass_pwd/prp-32-50.smt2"
                    ],
                    "par2_ratio": 0.997861584182005
                  },
                  "pb2010": {
                    "baseline": {
                      "error": 0,
                      "par2": 11809.167603999997,
                      "rows": 162,
                      "sat": 22,
                      "solved": 66,
                      "timeout": 96,
                      "unknown": 0,
                      "unsat": 44,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 289.16760399999987,
                    "candidate": {
                      "error": 0,
                      "par2": 11816.118853999998,
                      "rows": 162,
                      "sat": 22,
                      "solved": 66,
                      "timeout": 96,
                      "unknown": 0,
                      "unsat": 44,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 296.11885399999994,
                    "common_runtime_ratio": 1.0240388269773126,
                    "common_solved": 66,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0005886316659311
                  },
                  "pidgeons": {
                    "baseline": {
                      "error": 0,
                      "par2": 0.54088,
                      "rows": 38,
                      "sat": 0,
                      "solved": 38,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 38,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 0.54088,
                    "candidate": {
                      "error": 0,
                      "par2": 0.5702780000000001,
                      "rows": 38,
                      "sat": 0,
                      "solved": 38,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 38,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 0.5702780000000001,
                    "common_runtime_ratio": 1.054352166839225,
                    "common_solved": 38,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.054352166839225
                  },
                  "prime-cone": {
                    "baseline": {
                      "error": 0,
                      "par2": 0.8359029999999997,
                      "rows": 74,
                      "sat": 38,
                      "solved": 74,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 36,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 0.8359029999999997,
                    "candidate": {
                      "error": 0,
                      "par2": 0.8568420000000001,
                      "rows": 74,
                      "sat": 38,
                      "solved": 74,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 36,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 0.8568420000000001,
                    "common_runtime_ratio": 1.0250495571854634,
                    "common_solved": 74,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0250495571854634
                  },
                  "rings": {
                    "baseline": {
                      "error": 0,
                      "par2": 64484.322803999996,
                      "rows": 588,
                      "sat": 0,
                      "solved": 54,
                      "timeout": 124,
                      "unknown": 410,
                      "unsat": 54,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 404.32280399999996,
                    "candidate": {
                      "error": 0,
                      "par2": 64481.83279999999,
                      "rows": 588,
                      "sat": 0,
                      "solved": 54,
                      "timeout": 124,
                      "unknown": 410,
                      "unsat": 54,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 401.83279999999996,
                    "common_runtime_ratio": 0.9938415444902782,
                    "common_solved": 54,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.999961385901383
                  },
                  "rings_preprocessed": {
                    "baseline": {
                      "error": 0,
                      "par2": 53124.642762999996,
                      "rows": 588,
                      "sat": 0,
                      "solved": 146,
                      "timeout": 119,
                      "unknown": 323,
                      "unsat": 146,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 84.642763,
                    "candidate": {
                      "error": 0,
                      "par2": 53123.684306,
                      "rows": 588,
                      "sat": 0,
                      "solved": 146,
                      "timeout": 120,
                      "unknown": 322,
                      "unsat": 146,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 83.68430600000002,
                    "common_runtime_ratio": 0.9886764447894975,
                    "common_solved": 146,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.9999819583351502
                  },
                  "slacks": {
                    "baseline": {
                      "error": 0,
                      "par2": 28118.913069,
                      "rows": 466,
                      "sat": 232,
                      "solved": 232,
                      "timeout": 222,
                      "unknown": 12,
                      "unsat": 0,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 38.91306900000001,
                    "candidate": {
                      "error": 0,
                      "par2": 28118.744758000004,
                      "rows": 466,
                      "sat": 232,
                      "solved": 232,
                      "timeout": 222,
                      "unknown": 12,
                      "unsat": 0,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 38.74475799999999,
                    "common_runtime_ratio": 0.9956746922222964,
                    "common_solved": 232,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 0.9999940143134416
                  },
                  "tightrhombus": {
                    "baseline": {
                      "error": 0,
                      "par2": 3360.387634,
                      "rows": 44,
                      "sat": 0,
                      "solved": 16,
                      "timeout": 0,
                      "unknown": 28,
                      "unsat": 16,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 0.38763400000000003,
                    "candidate": {
                      "error": 0,
                      "par2": 3360.389314,
                      "rows": 44,
                      "sat": 0,
                      "solved": 16,
                      "timeout": 0,
                      "unknown": 28,
                      "unsat": 16,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 0.38931400000000005,
                    "common_runtime_ratio": 1.0043339851509414,
                    "common_solved": 16,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0000004999423229
                  },
                  "tropical-matrix": {
                    "baseline": {
                      "error": 0,
                      "par2": 21259.994365999988,
                      "rows": 216,
                      "sat": 47,
                      "solved": 47,
                      "timeout": 169,
                      "unknown": 0,
                      "unsat": 0,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 921.1582500000001,
                    "candidate": {
                      "error": 0,
                      "par2": 21268.917274,
                      "rows": 216,
                      "sat": 47,
                      "solved": 47,
                      "timeout": 169,
                      "unknown": 0,
                      "unsat": 0,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 929.309633,
                    "common_runtime_ratio": 1.0088490582372789,
                    "common_solved": 46,
                    "disagreements": [],
                    "gained": [
                      "round-1:tropical-matrix/constraint-916807.smt2"
                    ],
                    "lost": [
                      "round-1:tropical-matrix/constraint-642278.smt2"
                    ],
                    "par2_ratio": 1.0004197041563794
                  },
                  "wisa": {
                    "baseline": {
                      "error": 0,
                      "par2": 7.453698000000001,
                      "rows": 10,
                      "sat": 6,
                      "solved": 10,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 4,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 7.453698000000001,
                    "candidate": {
                      "error": 0,
                      "par2": 8.017307,
                      "rows": 10,
                      "sat": 6,
                      "solved": 10,
                      "timeout": 0,
                      "unknown": 0,
                      "unsat": 4,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 8.017307,
                    "common_runtime_ratio": 1.0756146814641536,
                    "common_solved": 10,
                    "disagreements": [],
                    "gained": [],
                    "lost": [],
                    "par2_ratio": 1.0756146814641536
                  }
                },
                "identities": {
                  "baseline": [
                    "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4"
                  ],
                  "candidate": [
                    "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
                  ]
                },
                "note": "Timing only; independent SAT-model coverage and recorded-reference joins are separate acceptance gates. Any lost solve requires three paired reruns; loss in at least two blocks acceptance.",
                "ratio_limit": 1.02,
                "rounds": [
                  {
                    "baseline": {
                      "error": 0,
                      "par2": 449115.07216200075,
                      "rows": 13306,
                      "sat": 6578,
                      "solved": 9927,
                      "timeout": 2578,
                      "unknown": 801,
                      "unsat": 3349,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 42307.711287999715,
                    "candidate": {
                      "error": 0,
                      "par2": 449496.9258789998,
                      "rows": 13306,
                      "sat": 6574,
                      "solved": 9923,
                      "timeout": 2580,
                      "unknown": 803,
                      "unsat": 3349,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 42432.562819,
                    "common_runtime_ratio": 1.0029510348633701,
                    "common_solved": 9904,
                    "disagreements": [],
                    "gained": [
                      "nec-smt/large/getoption_group/prp-27-49.smt2",
                      "nec-smt/large/bftpd_login/prp-41-43.smt2",
                      "nec-smt/large/checkpass_pwd/prp-20-41.smt2",
                      "20231117-c_inference/30_30_18_20_sat.smt2",
                      "20231117-c_inference/40_40_58_4_unsat.smt2",
                      "2019-ezsmt/Labyrinth/SCC/0143-labyrinth-14-0.smt2",
                      "nec-smt/large/checkpass_pwd/prp-41-42.smt2",
                      "nec-smt/large/checkpass_pwd/prp-46-41.smt2",
                      "nec-smt/large/bftpd_login/prp-13-50.smt2",
                      "nec-smt/large/getoption_group/prp-53-46.smt2",
                      "nec-smt/large/checkpass_pwd/prp-29-41.smt2",
                      "nec-smt/large/getoption_group/prp-61-49.smt2",
                      "nec-smt/large/getoption_group/prp-16-49.smt2",
                      "nec-smt/large/getoption_user/prp-48-46.smt2",
                      "nec-smt/large/getoption_group/prp-68-50.smt2",
                      "nec-smt/large/checkpass_pwd/prp-13-47.smt2",
                      "nec-smt/large/getoption_group/prp-7-49.smt2",
                      "nec-smt/large/getoption_group/prp-23-49.smt2",
                      "nec-smt/large/checkpass_pwd/prp-51-48.smt2"
                    ],
                    "lost": [
                      "nec-smt/large/getoption_group/prp-8-49.smt2",
                      "nec-smt/large/bftpd_login/prp-36-45.smt2",
                      "nec-smt/large/getoption_group/prp-25-49.smt2",
                      "nec-smt/large/checkpass/prp-17-49.smt2",
                      "nec-smt/large/checkpass_pwd/prp-34-45.smt2",
                      "nec-smt/large/getoption_group/prp-28-49.smt2",
                      "20210219-Dartagnan/ReachSafety-Loops/benchmark35_linear-O0.smt2",
                      "nec-smt/large/checkpass/prp-19-49.smt2",
                      "nec-smt/large/checkpass/prp-22-49.smt2",
                      "nec-smt/large/checkpass_pwd/prp-8-40.smt2",
                      "nec-smt/large/checkpass_pwd/prp-8-43.smt2",
                      "20220307-SMPT/SharedMemory-PT-000050/RC-11.smt2",
                      "nec-smt/large/checkpass_pwd/prp-25-41.smt2",
                      "nec-smt/large/checkpass_pwd/prp-29-40.smt2",
                      "nec-smt/large/checkpass_pwd/prp-47-41.smt2",
                      "nec-smt/large/getoption_group/prp-14-50.smt2",
                      "nec-smt/large/getoption_group/prp-15-49.smt2",
                      "nec-smt/large/checkpass_pwd/prp-48-48.smt2",
                      "nec-smt/large/checkpass_pwd/prp-30-47.smt2",
                      "nec-smt/large/getoption_group/prp-19-49.smt2",
                      "nec-smt/large/checkpass_pwd/prp-13-50.smt2",
                      "nec-smt/large/getoption_group/prp-20-49.smt2",
                      "nec-smt/large/checkpass_pwd/prp-32-50.smt2"
                    ],
                    "par2_ratio": 1.0008502358096352
                  },
                  {
                    "baseline": {
                      "error": 0,
                      "par2": 445243.76728699956,
                      "rows": 13306,
                      "sat": 6601,
                      "solved": 9966,
                      "timeout": 2537,
                      "unknown": 803,
                      "unsat": 3365,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "baseline_common_seconds": 43058.24070799997,
                    "candidate": {
                      "error": 0,
                      "par2": 444340.49097900034,
                      "rows": 13306,
                      "sat": 6613,
                      "solved": 9980,
                      "timeout": 2523,
                      "unknown": 803,
                      "unsat": 3367,
                      "unsupported": 0,
                      "wrong_answer": 0
                    },
                    "candidate_common_seconds": 43032.833794000195,
                    "common_runtime_ratio": 0.999409940731855,
                    "common_solved": 9942,
                    "disagreements": [],
                    "gained": [
                      "nec-smt/large/getoption_group/prp-81-50.smt2",
                      "2019-cmodelsdiff/labyrinth/0110-labyrinth-16-0.smt2",
                      "nec-smt/large/getoption_user/prp-0-46.smt2",
                      "nec-smt/large/getoption_group/prp-27-50.smt2",
                      "nec-smt/large/checkpass_pwd/prp-54-49.smt2",
                      "nec-smt/large/checkpass/prp-22-49.smt2",
                      "nec-smt/large/checkpass_pwd/prp-18-42.smt2",
                      "nec-smt/large/checkpass_pwd/prp-20-42.smt2",
                      "nec-smt/large/getoption_group/prp-41-46.smt2",
                      "nec-smt/large/checkpass_pwd/prp-40-43.smt2",
                      "nec-smt/large/getoption_directories/prp-10-49.smt2",
                      "20220307-SMPT/SharedMemory-PT-000050/RF-09.smt2",
                      "nec-smt/large/checkpass_pwd/prp-24-42.smt2",
                      "nec-smt/large/checkpass_pwd/prp-41-42.smt2",
                      "nec-smt/large/getoption_group/prp-47-46.smt2",
                      "tropical-matrix/constraint-916807.smt2",
                      "nec-smt/large/checkpass_pwd/prp-46-42.smt2",
                      "nec-smt/large/checkpass/prp-43-49.smt2",
                      "arctic-matrix/constraint-901628.smt2",
                      "nec-smt/large/checkpass_pwd/prp-27-42.smt2",
                      "nec-smt/large/getoption_user/prp-42-49.smt2",
                      "nec-smt/large/getoption_group/prp-61-50.smt2",
                      "nec-smt/large/getoption_group/prp-16-50.smt2",
                      "nec-smt/large/getoption_group/prp-63-50.smt2",
                      "nec-smt/large/getoption_user/prp-45-46.smt2",
                      "nec-smt/large/getoption_user/prp-46-47.smt2",
                      "nec-smt/large/getoption_group/prp-65-50.smt2",
                      "nec-smt/large/getoption_user/prp-47-46.smt2",
                      "nec-smt/large/checkpass_pwd/prp-13-48.smt2",
                      "nec-smt/large/getoption_group/prp-2-50.smt2",
                      "nec-smt/large/checkpass_pwd/prp-13-49.smt2",
                      "nec-smt/large/getoption_group/prp-20-49.smt2",
                      "nec-smt/large/checkpass_pwd/prp-5-48.smt2",
                      "nec-smt/large/getoption_group/prp-70-50.smt2",
                      "nec-smt/large/checkpass_pwd/prp-14-49.smt2",
                      "nec-smt/large/getoption_group/prp-75-50.smt2",
                      "nec-smt/large/checkpass_pwd/prp-51-49.smt2",
                      "nec-smt/large/checkpass_pwd/prp-33-49.smt2"
                    ],
                    "lost": [
                      "nec-smt/large/getoption_group/prp-25-50.smt2",
                      "nec-smt/large/checkpass_pwd/prp-16-49.smt2",
                      "nec-smt/large/checkpass/prp-2-49.smt2",
                      "nec-smt/large/bftpd_login/prp-46-44.smt2",
                      "20231117-c_inference/40_40_58_4_unsat.smt2",
                      "nec-smt/large/checkpass_pwd/prp-28-42.smt2",
                      "nec-smt/large/checkpass_pwd/prp-40-42.smt2",
                      "nec-smt/large/getoption_directories/prp-10-50.smt2",
                      "tropical-matrix/constraint-642278.smt2",
                      "nec-smt/large/checkpass_pwd/prp-24-43.smt2",
                      "nec-smt/large/checkpass_pwd/prp-41-43.smt2",
                      "20220307-SMPT/SharedMemory-PT-000050/RF-14.smt2",
                      "arctic-matrix/constraint-706002.smt2",
                      "nec-smt/large/getoption_group/prp-54-46.smt2",
                      "nec-smt/large/checkpass_pwd/prp-47-42.smt2",
                      "nec-smt/large/checkpass_pwd/prp-47-48.smt2",
                      "nec-smt/large/getoption_user/prp-46-46.smt2",
                      "nec-smt/large/checkpass_pwd/prp-30-50.smt2",
                      "nec-smt/large/checkpass_pwd/prp-49-47.smt2",
                      "nec-smt/large/getoption_group/prp-67-50.smt2",
                      "nec-smt/large/checkpass/prp-10-49.smt2",
                      "nec-smt/large/getoption_group/prp-2-49.smt2",
                      "nec-smt/large/getoption_group/prp-69-50.smt2",
                      "nec-smt/large/checkpass_pwd/prp-32-50.smt2"
                    ],
                    "par2_ratio": 0.997971276917579
                  }
                ],
                "timeout": 60.0,
                "timing_status": "needs-triage"
              }
            },
            "lost_case_recovery": {
              "status": "Complete lost-case investigation;46inputs x3paired reruns and50/50candidateSATmeasurements directly model-validated. Repeat-loss gate FAILED forprp-67-50 in2of3pairs; migration remains unfinished.",
              "scope": "Complete the three-pair lost-solve check for all46unique corrected-candidate losses, plus separate SAT-model replay for all138candidate rerun measurements. Eighteen inputs had already finished;28are new.",
              "baseline_commit": "8ca8ebe8db75966fc8aefdd928a0878e648e7f10",
              "candidate_commit": "25b44cc2204169ff0cc45a771b5ec56895a0511e",
              "baseline_sha256": "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4",
              "candidate_sha256": "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8",
              "manifest": "benchmarks/integer-unification-final-losses-28.txt",
              "manifest_sha256": "36918d6e6607f5f7cf835e281d4fb1d4125bc95d5bba6f1d3b8325287348a80f",
              "jobs": {
                "amd-1": 175171,
                "amd-2": 175172,
                "dgx-3": 175173,
                "dgx-4": 175174,
                "node-02": 175175,
                "node-03": 175176,
                "node-04": 175177,
                "node-05": 175178,
                "node-06": 175179,
                "node-07": 175180,
                "node-08": 175181,
                "node-09": 175182
              },
              "node_substitution": "Originaldgx-4 isDOWN+NOT_RESPONDING; its one input rerun on dgx-3 with same reportedDGX hardware configuration. Both arms colocated; other inputs retain original nodes.",
              "resources": "60seconds8GiB1CPU,nomultithread;3paired rounds with alternating arm order.",
              "model_job": 175199,
              "model_resources": "180secondssolver60secondsDolmen8GiBvalidator12GiBallocation1CPU;depends on all12timing arrays;138shards,concurrency28.",
              "model_harness": "scripts/qualification/integer_unification/loss_models.sbatch",
              "model_fix": "Explicitcontrib/local/bin/dolmen path; previous jobs failed before validation due to missing dolmen onPATH. Previous attempts preserved; new attempt model-validation-recovery.",
              "preflight": "slurm_prepare_benchmark_workspace.py --check-only --no-sync --build-via-slurm confirmed25b44cc/CaDiCaL3.0.0; both frozenSHA256identities matched.",
              "artifacts": [
                "results/integer-losses-batch3",
                "results/integer-losses-batch3-inputs.json",
                "results/integer-losses-batch3-jobs.txt",
                "results/integer-loss-recovery-model-tasks.txt",
                "results/integer-loss-recovery-summary.json"
              ],
              "commands": [
                "PRIMO_COMPARE_TIMEOUT=60 PRIMO_COMPARE_SHARDS=<node input count> sbatch --hint=nomultithread --nodelist=<recorded node> --array=0-<count-1> scripts/slurm_component_loss_rerun.sbatch",
                "PRIMO_REPLAY_TASKS=results/integer-loss-recovery-model-tasks.txt PRIMO_MODEL_ATTEMPT=model-validation-recovery sbatch --array=0-137%28 --dependency=afterany:<twelve timing jobs> scripts/qualification/integer_unification/loss_models.sbatch"
              ],
              "result": {
                "pending": [],
                "unique_inputs": 46,
                "loss_counts": {
                  "nec-smt/large/getoption_group/prp-19-49.smt2": 1,
                  "nec-smt/large/checkpass_pwd/prp-30-50.smt2": 1,
                  "nec-smt/large/getoption_group/prp-67-50.smt2": 2
                },
                "repeated_losses": [
                  "nec-smt/large/getoption_group/prp-67-50.smt2"
                ],
                "complete_lost_union_verified": true,
                "all_groups_correctness_ok": true,
                "status": "failed"
              },
              "aggregate_reruns": {
                "baseline": {
                  "rows": 138,
                  "solved": 109,
                  "sat": 51,
                  "unsat": 58,
                  "timeout": 29,
                  "unknown": 0,
                  "error": 0,
                  "wrong_answer": 0,
                  "par2": 9411.289999
                },
                "candidate": {
                  "rows": 138,
                  "solved": 108,
                  "sat": 50,
                  "unsat": 58,
                  "timeout": 30,
                  "unknown": 0,
                  "error": 0,
                  "wrong_answer": 0,
                  "par2": 9478.787631
                }
              },
              "generic_timing_flags": [
                "batch1/amd-2",
                "batch2/amd-1",
                "batch3/amd-1",
                "batch3/node-04"
              ],
              "repeated_case_detail": [
                {
                  "round": "round-0",
                  "arm": "baseline",
                  "file": "nec-smt/large/getoption_group/prp-67-50.smt2",
                  "status": "ok",
                  "answer": "unsat",
                  "seconds": "59.981617",
                  "timeout": "false",
                  "exit_code": "0",
                  ":time.preprocessing-us": "23886443",
                  ":time.solve-us": "31811888",
                  ":time.qf-lia.sat-us": null,
                  ":sat.conflicts": "342",
                  ":theory.conflicts": "30",
                  ":lra.pivots": "313"
                },
                {
                  "round": "round-0",
                  "arm": "candidate",
                  "file": "nec-smt/large/getoption_group/prp-67-50.smt2",
                  "status": "ok",
                  "answer": "unsat",
                  "seconds": "58.947219",
                  "timeout": "false",
                  "exit_code": "0",
                  ":time.preprocessing-us": "23434344",
                  ":time.solve-us": "31537334",
                  ":time.qf-lia.sat-us": "22489853",
                  ":sat.conflicts": "342",
                  ":theory.conflicts": "30",
                  ":lra.pivots": "313"
                },
                {
                  "round": "round-1",
                  "arm": "baseline",
                  "file": "nec-smt/large/getoption_group/prp-67-50.smt2",
                  "status": "ok",
                  "answer": "unsat",
                  "seconds": "59.829651",
                  "timeout": "false",
                  "exit_code": "0",
                  ":time.preprocessing-us": "23847498",
                  ":time.solve-us": "31891994",
                  ":time.qf-lia.sat-us": null,
                  ":sat.conflicts": "342",
                  ":theory.conflicts": "30",
                  ":lra.pivots": "313"
                },
                {
                  "round": "round-1",
                  "arm": "candidate",
                  "file": "nec-smt/large/getoption_group/prp-67-50.smt2",
                  "status": "timeout",
                  "answer": "unsat",
                  "seconds": "60.578677",
                  "timeout": "true",
                  "exit_code": "0",
                  ":time.preprocessing-us": "23660782",
                  ":time.solve-us": "32850188",
                  ":time.qf-lia.sat-us": "22712579",
                  ":sat.conflicts": "342",
                  ":theory.conflicts": "30",
                  ":lra.pivots": "313"
                },
                {
                  "round": "round-2",
                  "arm": "baseline",
                  "file": "nec-smt/large/getoption_group/prp-67-50.smt2",
                  "status": "ok",
                  "answer": "unsat",
                  "seconds": "59.117046",
                  "timeout": "false",
                  "exit_code": "0",
                  ":time.preprocessing-us": "23900107",
                  ":time.solve-us": "31282686",
                  ":time.qf-lia.sat-us": null,
                  ":sat.conflicts": "342",
                  ":theory.conflicts": "30",
                  ":lra.pivots": "313"
                },
                {
                  "round": "round-2",
                  "arm": "candidate",
                  "file": "nec-smt/large/getoption_group/prp-67-50.smt2",
                  "status": "timeout",
                  "answer": "unsat",
                  "seconds": "60.443794",
                  "timeout": "true",
                  "exit_code": "0",
                  ":time.preprocessing-us": "23854939",
                  ":time.solve-us": "32506230",
                  ":time.qf-lia.sat-us": "22652032",
                  ":sat.conflicts": "342",
                  ":theory.conflicts": "30",
                  ":lra.pivots": "313"
                }
              ],
              "interpretation": "prp-67-50 lost in2of3pairs, so25b44cc fails the agreed acceptance gate. Candidate printedUNSAT with exit0 but exceeded60seconds in those pairs; timeout classification takes precedence. All six runs reported342SATconflicts,30theoryconflicts,313LRApivots. These counters do not establish the runtime cause, and proximity to cutoff does not waive the failure.",
              "summary_sha256": "1f940484f1a469aa9c63b5c66215e5ae177ecd15cc29e76e2f951ea0255ae817",
              "local_checks": "make lint and slurm_validate_sbatch passed; make docs and docs-check-links passed.",
              "model_summary": {
                "status": "complete",
                "counts": {
                  "shards": 138,
                  "completed_shards": 138,
                  "expected_sat": 50,
                  "dolmen_pass": 50
                },
                "outcomes": {
                  "pass": 50
                },
                "pending": [],
                "failures": [],
                "note": "Every candidate SAT measurement across all46lost inputs and3reruns; separate from timing, direct Dolmen only."
              },
              "model_summary_artifact": "results/integer-loss-recovery-model-summary.json",
              "model_summary_sha256": "4d8aadac6642a241e9e572a2ab2ec31409dbdaa75f32927506fd5a1594414b5e",
              "model_audit": "Exact138candidate parent shards; all expectedSATmeasurements covered. Parent timing/provenance and savedmanifest/summary SHA256checks passed; binary/input stability recorded;50directDolmenpasses, no changed answers, invalid models, solver/validator errors, timeouts, unsupported inputs or missing rows.",
              "independent_review_repairs": {
                "R1": "Updated both live remaining-work summaries: timing and lost-rerun collection complete, acceptance failed, broader qualification work remains."
              },
              "independent_review": {
                "reviewer": "loss_evidence_review",
                "verdict": "Ready for lost-case investigation evidence only; R1fixed, no required findings. Migration acceptance remains failed.",
                "reviewed_run_log_sha256": "0c364dab3682fafdb57f67ebc381ef60835490ef14fd1a6c3456e894ea17fc11",
                "limits": "Reviewer inspected supplied aggregate/detail artifacts and replay script; did not independently repeat remote per-shard audit, scheduler checks or executions."
              },
              "verification": {
                "lint": "make lint passed",
                "batch_script": "slurm_validate_sbatch passed;138/138actualSLURMreplay tasks completed0:0",
                "docs": "make docs passed; docs-check-links260pages32224local links1033Gitlinks0failures",
                "scheduler": "All28new paired timing tasks and138model tasks COMPLETED0:0; queue empty",
                "processes": "No local solver/test/fuzzer experiments running",
                "cpp_checks": "NoC++source changed in this investigation; previous solver checks retained, no new solver acceptance claim."
              }
            },
            "model_coverage_audit": "2026-10-07-integer-model-coverage-audit"
          },
          "profiling": {
            "status": "Profiles complete; no solver change or performance qualification claim",
            "question": "Does the repeated prp-67-50 loss come from different integer/search work or substantial shared-driver overhead? Locate dominant costs before changing code.",
            "input": "nec-smt/large/getoption_group/prp-67-50.smt2",
            "baseline_commit": "8ca8ebe8db75966fc8aefdd928a0878e648e7f10",
            "candidate_commit": "25b44cc2204169ff0cc45a771b5ec56895a0511e",
            "binary_sha256": {
              "baseline": "4f5b5e403e0b92fa6543d2afb1bd6608df50f64e6bf6fc7ebc98758a9fc52ce4",
              "candidate": "f3a3904e9cf7628eece6fb4c30f80de9f29eafa4ab89eca5a48afbf9643901a8"
            },
            "jobs": {
              "sampler_probe": 175337,
              "paired_profiles": 175339,
              "sampler_tests": 175340,
              "flatten_off_diagnostic": 175404
            },
            "resources": "SLURM, original amd-1 node, 8 GiB and one CPU with nomultithread. Each profile has a 180-second deadline. Probe and tests use 1 GiB and one CPU. No local solver runs.",
            "method": "Frozen release binaries sampled through GDB/MI every 0.2 seconds, with seeded jitter between 0.8 and 1.2 times the interval and up to 41 frames. Two baseline/candidate pairs reverse arm order; seeds are 203610600 and 203610601. The ablation uses one profile per binary with seed 203610602. DEBUGINFOD_URLS is empty. perf is unavailable.",
            "default_profiles": {
              "baseline": {
                "samples": 532,
                "phase_samples": {
                  "other_preprocessing": 83,
                  "other": 13,
                  "boolean_flattening": 129,
                  "clausification": 78,
                  "sat_preprocessing": 187,
                  "other_sat_solve": 11,
                  "frontend_cleanup": 31
                },
                "phase_percent": {
                  "other_preprocessing": 15.601503759398497,
                  "other": 2.443609022556391,
                  "boolean_flattening": 24.24812030075188,
                  "clausification": 14.661654135338345,
                  "sat_preprocessing": 35.150375939849624,
                  "other_sat_solve": 2.0676691729323307,
                  "frontend_cleanup": 5.827067669172933
                },
                "allocator_percent": 36.46616541353384,
                "profile_wall_seconds": [
                  54.73459070362151,
                  54.16130394116044
                ]
              },
              "candidate": {
                "samples": 528,
                "phase_samples": {
                  "other_preprocessing": 81,
                  "other": 13,
                  "boolean_flattening": 127,
                  "clausification": 80,
                  "sat_preprocessing": 185,
                  "other_sat_solve": 11,
                  "frontend_cleanup": 31
                },
                "phase_percent": {
                  "other_preprocessing": 15.340909090909092,
                  "other": 2.462121212121212,
                  "boolean_flattening": 24.053030303030305,
                  "clausification": 15.151515151515152,
                  "sat_preprocessing": 35.03787878787879,
                  "other_sat_solve": 2.0833333333333335,
                  "frontend_cleanup": 5.871212121212121
                },
                "allocator_percent": 33.90151515151515,
                "profile_wall_seconds": [
                  53.88864952325821,
                  54.26563106290996
                ]
              }
            },
            "default_per_run": {
              "round-0-baseline": {
                "answer": [
                  "unsat"
                ],
                "samples": 267,
                "statistics": {
                  ":sat.vars": "774795",
                  ":sat.clauses": "32089151",
                  ":sat.clause-lits": "94730720",
                  ":sat.conflicts": "342",
                  ":sat.decisions": "131888",
                  ":theory.conflicts": "30",
                  ":lra.pivots": "313",
                  ":time.preprocessing-us": "22311442",
                  ":time.solve-us": "28587207",
                  ":time.tactic.normalize-boolean-us": "13124033"
                },
                "profile_wall_seconds": 54.73459070362151
              },
              "round-0-candidate": {
                "answer": [
                  "unsat"
                ],
                "samples": 262,
                "statistics": {
                  ":sat.vars": "774795",
                  ":sat.clauses": "32089151",
                  ":sat.clause-lits": "94730720",
                  ":sat.conflicts": "342",
                  ":sat.decisions": "131888",
                  ":theory.conflicts": "30",
                  ":lra.pivots": "313",
                  ":time.preprocessing-us": "21723755",
                  ":time.solve-us": "28306208",
                  ":time.tactic.normalize-boolean-us": "12802094"
                },
                "profile_wall_seconds": 53.88864952325821
              },
              "round-1-baseline": {
                "answer": [
                  "unsat"
                ],
                "samples": 265,
                "statistics": {
                  ":sat.vars": "774795",
                  ":sat.clauses": "32089151",
                  ":sat.clause-lits": "94730720",
                  ":sat.conflicts": "342",
                  ":sat.decisions": "131888",
                  ":theory.conflicts": "30",
                  ":lra.pivots": "313",
                  ":time.preprocessing-us": "22030659",
                  ":time.solve-us": "28289196",
                  ":time.tactic.normalize-boolean-us": "12878700"
                },
                "profile_wall_seconds": 54.16130394116044
              },
              "round-1-candidate": {
                "answer": [
                  "unsat"
                ],
                "samples": 266,
                "statistics": {
                  ":sat.vars": "774795",
                  ":sat.clauses": "32089151",
                  ":sat.clause-lits": "94730720",
                  ":sat.conflicts": "342",
                  ":sat.decisions": "131888",
                  ":theory.conflicts": "30",
                  ":lra.pivots": "313",
                  ":time.preprocessing-us": "21803610",
                  ":time.solve-us": "28622748",
                  ":time.tactic.normalize-boolean-us": "12811981"
                },
                "profile_wall_seconds": 54.26563106290996
              }
            },
            "flatten_off": {
              "baseline": {
                "answer": [
                  "unsat"
                ],
                "samples": 148,
                "statistics": {
                  ":sat.vars": "1540012",
                  ":sat.clauses": "4598947",
                  ":sat.clause-lits": "10729674",
                  ":sat.conflicts": "1049",
                  ":sat.decisions": "136668",
                  ":theory.conflicts": "97",
                  ":lra.pivots": "797",
                  ":time.preprocessing-us": "9166964",
                  ":time.solve-us": "18588334",
                  ":time.tactic.normalize-boolean-us": "1351"
                },
                "profile_wall_seconds": 30.488582964986563
              },
              "candidate": {
                "answer": [
                  "unsat"
                ],
                "samples": 147,
                "statistics": {
                  ":sat.vars": "1540012",
                  ":sat.clauses": "4598947",
                  ":sat.clause-lits": "10729674",
                  ":sat.conflicts": "1049",
                  ":sat.decisions": "136668",
                  ":theory.conflicts": "97",
                  ":lra.pivots": "797",
                  ":time.preprocessing-us": "8973413",
                  ":time.solve-us": "18566271",
                  ":time.tactic.normalize-boolean-us": "1346"
                },
                "profile_wall_seconds": 30.29583789408207
              }
            },
            "finding": "Default phase distributions are nearly identical: about 40% in Primo preprocessing, 15% in clausification, 35% in CaDiCaL preprocessing, 2% in other SAT solving, and 6% in frontend cleanup. All four default runs have 774,795 SAT variables, 32,089,151 clauses, 342 SAT conflicts, 131,888 decisions, 30 theory conflicts and 313 LRA pivots. No substantial new integer-search or shared-driver hotspot was detected at this sample resolution. This does not establish the cause of the small cutoff crossings.",
            "ablation_finding": "Disabling post-flattening yields 4,598,947 clauses versus 32,089,151, and 10,729,674 clause literals versus 94,730,720. Variables rise to 1,540,012 and SAT conflicts to 1,049. Both versions remain UNSAT. Instrumented wall duration falls from about 54 seconds to about 30 seconds. This identifies shared Boolean-expansion cost as a promising target; it is not a benchmark speedup or a recommendation to change defaults globally.",
            "code_basis": [
              "src/smt/preprocessing.cpp:3455: flatten_associative_booleans copies matching child operands subject to an arity bound, then rebuilds Boolean nodes.",
              "src/core/term_manager.cpp:96: mk_and and mk_or construct deduplication sets for arity greater than 8.",
              "src/smt/clausifier.cpp:476: encode_and and encode_or emit one binary clause per child plus a reverse clause."
            ],
            "limitations": [
              "Wall-clock stack observations are not CPU events or call counts. GDB perturbs runtime, scheduling can bias counts, and optimized or deep frames may be missing.",
              "Two default profiles per binary and one ablation profile per binary on one input are insufficient to attribute a small regression or promote an option.",
              "Allocator fractions overlap phase shares. Phase counts use the first matching stack predicate, not stopwatch regions.",
              "All six profiled runs exit normally with UNSAT; agreement is not an UNSAT proof. SAT-model validation is not applicable.",
              "The original two-of-three lost-solve acceptance failure remains recorded; profiling does not waive it."
            ],
            "artifacts": [
              "results/integer-loss-profile-25b",
              "results/integer-loss-profile-flatten-off",
              "tmp/integer-unification/evidence/profile-175339-summary.json",
              "tmp/integer-unification/evidence/profile-175404-summary.json"
            ],
            "summary_sha256": {
              "profile-175339-summary.json": "f7ee7f3e813484d5e6daa5a92756619595dfb7188bfcd616dfaba604dffa2505",
              "profile-175404-summary.json": "609154bc9f34237cb9a2af6d4a689b5c84801c00071792b57b0a9923be19b8ea"
            },
            "commands": [
              "export PRIMO_WORKDIR=<observation-workspace> PRIMO_BASELINE_SOLVER=<frozen-primo-8ca8ebe> PRIMO_CANDIDATE_SOLVER=<frozen-primo-25b44cc> PRIMO_PROFILE_INPUT=<corpus-root>/nec-smt/large/getoption_group/prp-67-50.smt2\ncd \"$PRIMO_WORKDIR\"\nexport PRIMO_PROFILE_OUT=\"$PWD/results/integer-loss-profile-25b\" PRIMO_PROFILE_SAMPLER=\"$PWD/results/profile_gdb_samples.py\"\nsbatch --partition=compute,gpu --nodelist=amd-1 --hint=nomultithread results/profile_pair.sbatch",
              "sbatch --partition=compute,gpu --nodelist=amd-1 --hint=nomultithread --dependency=afterok:175339 results/primo-profile-ablation.sbatch\n# The staged file is scripts/qualification/integer_unification/profile_flatten_off.sbatch; use the new parent job ID when reproducing.",
              "python3 scripts/summarize_gdb_samples.py <profile-root> > <summary.json>"
            ],
            "verification": {
              "probe": "Job 175337 completed normally with 10 samples.",
              "tests": "All three tests passed in job 175340: normal stacks, rejection of an answer followed by exit 7, and deadline cleanup of the inferior.",
              "lint": "make lint passed.",
              "frozen_identity": "The profile job passed sha256sum --check for both binaries, the input and sampler.",
              "docs": "make docs and make docs-check-links passed: 260 pages, 32,227 local links, 1,035 Git links, zero failures.",
              "rendered_inspection": "Inspected the new section in headless Chrome at 1400x2400; text, code block and source links display without clipping. Screenshot /tmp/primo-profile-doc.png. Browser exited.",
              "scope": "Only profiling tools, tests and documentation changed. No new solver build, C++/ASan/clang-tidy run or performance promotion is claimed; existing solver qualification remains unchanged.",
              "process_audit": "All four profiling/probe/test jobs completed. No local profiler, solver, test, fuzzer or browser processes remained."
            },
            "input_sha256": "7b82c687a760ef27dc0f4275a7f879b6762b7de7deffef6cee1d1a62778781bb",
            "sampler_sha256": "11e12eb28df2bc297decdbd7ecbd73f813dd0513e8040f22c9d25414e42ef4b1",
            "gdb_version": "GNU gdb (GDB) Rocky Linux 10.2-13.el9",
            "tooling_commit": "90d29667fa8796b9db41967afb65ab202388b54e",
            "reproduction_environment": [
              "Use the already SLURM-built workspaces and frozen binaries recorded in this entry. Set PRIMO_WORKDIR to the observation workspace, PRIMO_BASELINE_SOLVER to frozen primo-8ca8ebe, PRIMO_CANDIDATE_SOLVER to frozen primo-25b44cc, and PRIMO_PROFILE_INPUT to the corpus root followed by the recorded input path.",
              "Copy scripts/profile_gdb_samples.py into $PRIMO_WORKDIR/results/profile_gdb_samples.py. The executed profile_flatten_off.sbatch reads that staged sampler. Copy both batch scripts into results/ as well. Do not rebuild or replace either binary.",
              "Run the preparation helper with --check-only --no-sync --build-via-slurm and the candidate 25b44cc checkout before submitting. From the remote workspace, export all variables in the command block below; inline environment assignments on an earlier sbatch command do not persist."
            ],
            "independent_review_repairs": {
              "PROF-DOC-01": "Added profilesource pinned to the tooling commit containing both linked scripts.",
              "PROF-DOC-02": "Recorded shared exported variables, staging prerequisites, actual node/hint options and parent dependency.",
              "PROF-DOC-03": "Rewrote the profiling prose with word and number boundaries."
            },
            "independent_review": {
              "reviewer": "profile_docs_review",
              "verdict": "Ready; PROF-DOC-01, PROF-DOC-02 and PROF-DOC-03 resolved. Acceptance covers profiling documentation and inspected evidence only.",
              "reviewed_blobs": {
                "debugging.md": "fa8b9711ff40f80dcc32d9c2a8ebf2e470e79803",
                "_config.yml": "2648002fd837a124d351a571ee39fde5fc605c36",
                "run-log.json": "684a5bb71ca36fb4941b3518bd6dd9770b16569a"
              },
              "limits": "Reviewer checked source links, numeric artifacts and interpretation; did not independently execute cluster jobs or inspect rendering."
            },
            "disposition": {
              "priority": "low",
              "status": "deferred potential tuning point",
              "reason": "User requested recording the lead without treating it as substantial. The single-case profiles do not demonstrate a material migration bottleneck or a corpus-wide benefit. Preserve the measured local effect without promoting it to an optimization priority.",
              "next_action": "None scheduled. If revisited, test an expansion-sensitive flattening policy on a representative family before considering any default change.",
              "acceptance": "This prioritization does not waive or change the recorded lost-solve acceptance result.",
              "documentation": "docs/development/tuning.md#deferred-tuning-note-boolean-post-flattening",
              "documentation_review": "Independent reviewer tuning_note_review accepted the bounded note and disposition; no required corrections.",
              "verification": "make docs and make docs-check-links passed (260 pages, 32,230 local links, 1,036 Git links, zero failures); rendered note inspected. No code changes or solver runs."
            }
          }
        }
      },
      "offline_checkpoint": {
        "reason": "User announced imminent offline period; preserve remote progress and explicit unfinished qualification.",
        "source_commit": "25b44cc2204169ff0cc45a771b5ec56895a0511e",
        "last_evidence_commit": "385752a",
        "status": "Implementation and correctness gates complete; migration qualification unfinished. No final acceptance claim.",
        "completed_timing": "Corrected QF_UFLIA two full paired rounds pass timing:1154/1318 solved both arms, no losses,PAR2ratio0.999350570040824. Corrected18 provisionalQF_LIA lost inputs have three paired reruns each; no input lost in at least two reruns.",
        "small_preservation_limitation": "Pooled five-round QF_UF small-sample PAR2 regression2.55% remains reported; no noise dismissal or blanket performance acceptance.",
        "scheduler_release": {
          "timing_dependencies": [
            172616,
            173182,
            173391,
            173548,
            173551,
            173552,
            173555
          ],
          "model_jobs": {
            "172666": {
              "group": "old_full",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "172667": {
              "group": "old_full",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "172668": {
              "group": "old_full",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "172669": {
              "group": "old_full",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "172670": {
              "group": "old_full",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "172798": {
              "group": "old_full",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "172799": {
              "group": "old_shared_triage",
              "dependency": "afterany:172798",
              "released": true
            },
            "172812": {
              "group": "old_loss_batch1",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "172813": {
              "group": "old_loss_batch1",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "172814": {
              "group": "old_loss_batch1",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "172969": {
              "group": "retention_probes",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "172970": {
              "group": "retention_probes",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "172971": {
              "group": "retention_probes",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "173135": {
              "group": "observation_probes",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "173136": {
              "group": "observation_probes",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "173137": {
              "group": "observation_probes",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "173360": {
              "group": "corrected_full",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "173361": {
              "group": "corrected_full",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "173362": {
              "group": "corrected_full",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "173363": {
              "group": "corrected_full",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "173364": {
              "group": "corrected_full",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "173365": {
              "group": "corrected_full",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "173366": {
              "group": "corrected_shared_triage",
              "dependency": "afterany:173365",
              "released": true
            },
            "173394": {
              "group": "old_loss_batch2",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "173414": {
              "group": "corrected_preservation_reruns",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "173428": {
              "group": "corrected_loss_batch1",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "173520": {
              "group": "corrected_loss_batch2",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            },
            "173565": {
              "group": "old_loss_batch3",
              "dependency": "afterany:172616:173182:173391:173548:173551:173552:173555",
              "released": true
            }
          },
          "note": "Future loss reruns not yet submitted must wait for these model jobs, or hold them before starting timing. All known timing jobs precede model replay."
        },
        "scheduler_verification": "All28 jobs verified PENDING(Dependency) after release; triage jobs depend on their own model-replay parent.",
        "commands": [
          "python3 results/primo-offline-model-release.py",
          "squeue -h -j <28 recorded model jobs> -o \"%F %T %R\""
        ],
        "remote_artifacts": [
          "results/integer-offline-model-release.json",
          "results/primo-offline-model-release.py",
          "results/integer-held-model-jobs.json",
          "results/integer-paired",
          "results/integer-losses-batch1",
          "results/integer-losses-batch2",
          "results/integer-losses-batch3"
        ],
        "local_artifacts": "tmp/integer-unification/evidence",
        "resume": [
          "Read this entry and active queue. Preserve frozen baseline/cfc/25b binaries and all timing/replay provenance; do not rebuild the referenced workspaces.",
          "Collect final full QF_LIA timing for rejectedcfc job172616 and corrected25b job173182; summarize all13306inputs and both rounds with scripts/summarize_component_pairs.py. CorrectedQF_UFLIA summary already complete.",
          "Compute final union of every lost solve over both rounds. For corrected25b subtract batch1(10inputs) and batch2(8inputs); for rejectedcfc subtract first11 and batch2(33) and batch3(17). Additional final losses remain possible and require three new paired reruns60s8GiB1CPU.",
          "Because model jobs are now released, wait for them to finish before scheduling additional timing reruns, or hold pending model jobs and wait for active validators to exit. Keep validation separate from timing. Submit separate model checks for every successful candidateSAT in future reruns.",
          "Audit all model replay coverage and saved artifact hashes; triage input-language validation failures separately and preserve any retries. Every successful candidate groundSAT measurement needs independent validation.",
          "Rejoin completed results to frozen historical references and verify complete input hashes. Historical4GiB reference timings are context only against current8GiB paired runs.",
          "Reject migration if any loss repeats in at least2of3reruns or either full affected division has aggregatePAR2regression greater than2%; fix/requalify or retain old default and reportunfinished. Preserve generic1% tool flags and small preservation regressions.",
          "Finish independent evidence/docs review, documentation build/linkchecks/rendered verification as applicable, and final committed qualification evidence. Audit local processes and gitstatus/log before final report."
        ],
        "last_documentation_checks": "make docs and make docs-check-links passed;260pages32224local links1033Gitlinks0failures; reviewed interim run-log blob b136cc45a71e002dd7aa89553d262996217a4aae.",
        "local_execution": "No local solver,ctest,typefuzz,YinYang or browser experiment processes present at checkpoint audit; remotejobs intentionally active.",
        "independent_review": {
          "reviewer": "lia_doc_review",
          "accepted_blob": "45509881e9e78087aa774a88c9da29895b25e2d4",
          "verdict": "Ready for handoff accuracy only; full timing/model replay/final qualification unfinished. Reviewer checked artifact agreement, not live scheduler."
        }
      }
    },
    {
      "id": "2026-10-05-full-evaluation-refresh",
      "date": "2026-10-05",
      "kind": "fresh-supported-logic-and-native-session-evaluation",
      "commit": "5efbd02293e15a53fbaad748ceda78bc7d27bbac",
      "reporting_revision": "01f31b5",
      "timing_recipe_revision": "a4470b2",
      "evidence_status": "complete-with-resource-outcomes",
      "scope": "Fresh current-default Primo timings over all six supported non-incremental divisions; rebuild/assumptions over 1778 native UF and 10 native LRA sessions. Reuse comparable historical reference timings only after provenance checks. Separate post-timing supported ground SAT-model replay. Historical timings remain unchanged.",
      "decision": "All requested fresh Primo timings complete; every selected ground SAT model and completed native session qualified. OpenSMT closes the two native LRA reference gaps with202 agreeing UNSAT queries and successful live Primo replays. Reference timeouts/unknowns and incomplete timing sessions remain unsolved. Historical-reference comparability and quantified-model limitations remain explicit; no new reference timing baseline.",
      "execution": {
        "workspace": "primo-evaluation-20261005",
        "environment": "SLURM compute allocations; no workstation or SSH-login solver batch",
        "build": "Release GCC11.4.1, CaDiCaL3.0.0-7b99c07",
        "tools": {
          "primo": {
            "sha256": "d0f69f50540efa7561e7895d2f24acff26787756a85b9bdb9f67e7eaaed496e0",
            "version": "primo 0.2.0\ngit: 5efbd02\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07\n"
          },
          "z3": {
            "sha256": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0",
            "version": "Z3 version 5.1.0 - 64 bit\n"
          },
          "cvc5": {
            "sha256": "4a93548398445cf1a774655583f5465b156c26f63f2cdfb94f4728fdf7adde46",
            "version": "cvc5 1.3.4 [git f3b21c4 on branch HEAD]"
          },
          "dolmen": {
            "sha256": "08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e",
            "version": "0.10\n"
          }
        },
        "timing_resources": "Initial non-incremental allocation: 1 task,1 CPU,8GiB,3h per shard,compute partition,nomultithread; initial4-task concurrency, superseded by concurrency_updates. Each non-incremental shard records lscpu. Native allocations use1 task,1 CPU,8GiB,2h and their separately recorded whole-session timeouts.",
        "reference_timing": "Cancelled remaining Z3/cvc5 timing reruns at user request; preserve partial artifacts, reuse historical reference rows only where identity and measurement settings permit.",
        "concurrency_updates": {
          "reason": "Use newly available SLURM capacity after cancelling reference timing reruns; per-process CPU, memory and time limits unchanged.",
          "final_timing_throttles": {
            "167587": 16,
            "167590": 16,
            "167593": 64,
            "167596": 8,
            "167599": 8,
            "167602": 64,
            "167605": 8,
            "167607": 8
          },
          "final_replay_throttles": {
            "167641": 16,
            "167642": 8,
            "167643": 32,
            "167644": 8,
            "167645": 8,
            "167646": 16,
            "167647": 8
          },
          "command": "scontrol update JobId=<owned-array> ArrayTaskThrottle=<count>; already-finished task warnings retained in submission logs."
        }
      },
      "corpora": {
        "QF_UF": {
          "count": 7503,
          "bytes": 988035549,
          "manifest_sha256": "963e161de1928537b1db23f07a026d6f2a251b0a4024624af9df05a51ec9344b"
        },
        "QF_LRA": {
          "count": 1753,
          "bytes": 2575846184,
          "manifest_sha256": "9542f4fb956f12ed139b66bd4189cbcafc4d85c53ae792cdbdfa3e81f7afcc0b"
        },
        "QF_LIA": {
          "count": 13306,
          "bytes": 8192190039,
          "manifest_sha256": "4c28c67efc28c640f361c0dc6d55b099f2d5b819ec53d02302a2cb4cc4ae85bd"
        },
        "QF_UFLRA": {
          "count": 1284,
          "bytes": 1645365818,
          "manifest_sha256": "5da4294c373b086fbc90af241cbe08b987098a2e99fb5da780e046978a79d7be"
        },
        "QF_UFLIA": {
          "count": 659,
          "bytes": 118566018,
          "manifest_sha256": "c7bb65f38ebace9fa7972342f435b086a09ead030d9e0278b99bd0d477a3e3b8"
        },
        "UF": {
          "count": 7590,
          "bytes": 437074406,
          "manifest_sha256": "9f9428111a417c54ead8295b083c3d65798a55a9783ce01fabdffa68ff61e721"
        }
      },
      "corpus_provenance": {
        "inventory_job": "167419",
        "inventory_artifact": "results/refresh-inventory/inventory.json",
        "manifest_format": "SHA256, two spaces, relative path, newline; sorted by relative path",
        "ground_comparison_job": "167557",
        "historical_comparison": "All5 ground corpora match every path/hash in the287b743 historical manifests:0 additions, removals or changed inputs.",
        "qf_lia_restore": {
          "url": "https://zenodo.org/records/16740866/files/QF_LIA.tar.zst",
          "published_md5": "6b78b5c578394cf7a72b22087279f34f",
          "stage_job": "167418",
          "result": "Checksum accepted;13306 restored files match historical hashes."
        }
      },
      "commands": {
        "prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir <clean-5efbd02-worktree> --remote-dir <workspace> --cmake <cmake> --build-via-slurm --reuse-dependencies --cxx-header-manifest <matching-header-manifest> --extra-target all; --check-only with z3,cvc5,dolmen before submissions",
        "checks": "PRIMO_WORKDIR=<workspace> PRIMO_EXPECTED_REVISION=5efbd02 PRIMO_CMAKE_BIN=<cmake-bin> PRIMO_CXX_HEADER_MANIFEST=<manifest> PRIMO_ASAN_RUNTIME_DIR=<verified-runtime-dir> sbatch --ntasks=1 scripts/qualification/public_checks.sbatch",
        "static": "scripts/qualification/public_static.sbatch and publication_followups/static_examples.sbatch, --ntasks=1, same workspace/header manifest",
        "gate": "PRIMO_EXPECTED_REVISION=5efbd02 PRIMO_SEED_BASE=203010050 PRIMO_BUDGET_REPLAY=1 sbatch --ntasks=1 --array=0-31%8 scripts/qualification/public_launch.sbatch",
        "mutations": "Same revision/seed base; PRIMO_YINYANG_BIN=<verified-yinyang-bin> sbatch --ntasks=1 scripts/qualification/public_mutations.sbatch",
        "mixed_gate": "PRIMO_FUZZ_SEED_BASE=203110050 PRIMO_FUZZ_SOLVER_ARGS=--quiet PRIMO_FUZZ_OUT_DIR=results/refresh-mixed-gate sbatch --ntasks=1 --array=0-3%4 scripts/slurm_qf_uflra_fuzz_gate.sbatch",
        "ground_timing": "For each logic and solver: PRIMO_PHASE=benchmark PRIMO_TIMEOUT=60 PRIMO_SHARDS=<count> PRIMO_CORPUS_ROOT=<workspace>/corpora/<logic> PRIMO_CAMPAIGN_OUT=results/refresh-timing/<logic>/<solver> PRIMO_CAMPAIGN_ID=refresh-20261005-<logic>-<solver> PRIMO_SOLVER=<binary> PRIMO_SOLVER_ARGS=<--quiet only for Primo> PRIMO_EXPECTED_GIT=<5efbd02 only for Primo> sbatch --partition=compute --hint=nomultithread --array=0-<shards-minus1>%4 scripts/qualification/evaluation_refresh/timing.sbatch",
        "ground_replay": "After all20 timing arrays: PRIMO_PHASE=replay PRIMO_MODEL_TIMEOUT=90 PRIMO_DOLMEN_TIMEOUT=30 PRIMO_DOLMEN_SIZE=8G PRIMO_CAMPAIGN_OUT=results/refresh-timing/<ground-logic>/primo sbatch --ntasks=1 --mem=12G --array=0-<shards-minus1>%4 --dependency=afterany:<all-timing-jobs> scripts/slurm_real_corpus_validation.sbatch",
        "native_timing": "scripts/slurm_native_uf_sessions.sbatch with --ntasks=1 --hint=nomultithread; PRIMO_EXPECTED_REVISION=5efbd02,PRIMO_UF_PHASE=timing,matching root/manifest,CVC5 path;16 shards,4 profiles (rebuild,assumptions,z3,cvc5),arrays0-63%4 forUF and0-39%4 forLRA,30s or600s whole-session timeout. Primo flags --quiet --stats --max-theory-conflicts=10000 plus retained-mode selector.",
        "native_replay": "Same native driver/profiles/root/manifest; PRIMO_UF_PHASE=validate,PRIMO_UF_TIMING=<timing-root>,fresh validation output,60s Dolmen budget; afterany all20 timing arrays. Incomplete timing sessions remain unqualified, not model passes.",
        "summary": "scripts/qualification/evaluation_refresh/summarize.py --root results/refresh-timing --inventory results/refresh-inventory/inventory.json --reference-map results/refresh-reference-map.json --timeout 60 --out <report>",
        "local_checks": "make lint; make docs; make docs-check-links; sbatch validators;2 mocked metadata tests",
        "final_report": "PRIMO_WORKDIR=<workspace> PRIMO_REPORTING_DIR=results/reporting-01f31b5 sbatch --dependency=afterany:167641:167642:167643:167644:167645:167646:167647 scripts/qualification/evaluation_refresh/report.sbatch"
      },
      "jobs": {
        "build": "167167",
        "checks": "167168",
        "static": "167169",
        "static_examples": "167170",
        "generated": "167171",
        "mutations": "167180",
        "deterministic_seeds": "167414",
        "mixed_gate": "167510",
        "reporter_tests": "167514",
        "native_lra_qualification": "167420",
        "native_lra_manifest": "167606",
        "timing": {
          "QF_UF": {
            "primo": "167587",
            "z3": "167588",
            "cvc5": "167589"
          },
          "QF_LRA": {
            "primo": "167590",
            "z3": "167591",
            "cvc5": "167592"
          },
          "QF_LIA": {
            "primo": "167593",
            "z3": "167594",
            "cvc5": "167595"
          },
          "QF_UFLRA": {
            "primo": "167596",
            "z3": "167597",
            "cvc5": "167598"
          },
          "QF_UFLIA": {
            "primo": "167599",
            "z3": "167600",
            "cvc5": "167601"
          },
          "UF": {
            "primo": "167602",
            "z3": "167603",
            "cvc5": "167604"
          },
          "native_UF": {
            "all": "167605"
          },
          "native_LRA": {
            "manifest": "167606",
            "all": "167607"
          }
        },
        "model_replay": {
          "QF_UF": {
            "models": "167641"
          },
          "QF_LRA": {
            "models": "167642"
          },
          "QF_LIA": {
            "models": "167643"
          },
          "QF_UFLRA": {
            "models": "167644"
          },
          "QF_UFLIA": {
            "models": "167645"
          },
          "native_UF": {
            "models": "167646"
          },
          "native_LRA": {
            "models": "167647"
          }
        },
        "gate_report": "167432",
        "report_preflight": "168173",
        "final_report": "168188"
      },
      "checks": {
        "release": "43/43 passed",
        "asan": "43/43 passed",
        "python": "229 tests in qualification; 2 initial reporter tests passed in SLURM167514; six focused metadata tests passed locally after reporting-only01f31b5.",
        "documentation_examples": "12/12 passed",
        "static": "All 126 tracked source/test C++ units plus four documentation examples rescanned: 18 normal and 404 include advisories match normalized a953edd baseline exactly; 7 unchanged example include advisories. No warning-free claim.",
        "generated": {
          "count": 8000,
          "pass": 7978,
          "timeout": 22,
          "other_incomplete": 0,
          "wrong_answer": 0,
          "crash": 0,
          "invalid_model": 0,
          "reference_disagreement": 0,
          "selected_ground_sat_models": 17877,
          "seed_base": 203010050,
          "timeout_seconds": 5,
          "routes": {
            "QF_UF": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 630,
              "queries": 0,
              "resource_incomplete": 0,
              "reference_timeout": 0,
              "distinct_inputs": 997
            },
            "QF_LRA": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 1000,
              "queries": 0,
              "resource_incomplete": 0,
              "reference_timeout": 0,
              "distinct_inputs": 285
            },
            "QF_LIA": {
              "cases": 1000,
              "pass": 978,
              "timeout": 22,
              "sat_models": 876,
              "queries": 0,
              "resource_incomplete": 0,
              "reference_timeout": 3,
              "distinct_inputs": 1000
            },
            "QF_UFLRA": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 574,
              "queries": 0,
              "resource_incomplete": 0,
              "reference_timeout": 0,
              "distinct_inputs": 999
            },
            "QF_UFLIA": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 525,
              "queries": 0,
              "resource_incomplete": 0,
              "reference_timeout": 0,
              "distinct_inputs": 672
            },
            "UF": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 0,
              "queries": 0,
              "resource_incomplete": 0,
              "reference_timeout": 0,
              "distinct_inputs": 560
            },
            "incremental_QF_UF": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 6272,
              "queries": 9000,
              "resource_incomplete": 0,
              "reference_timeout": 0,
              "distinct_inputs": 813
            },
            "incremental_QF_LRA": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 8000,
              "queries": 11000,
              "resource_incomplete": 0,
              "reference_timeout": 0,
              "distinct_inputs": 1000
            }
          }
        },
        "budget_replay": {
          "samples": 800,
          "definitive_samples": 344,
          "exhausted_samples": 456,
          "timeout_samples": 0,
          "queries": 2600,
          "exhausted_queries": 635,
          "limit": 1,
          "timeout_seconds": 10,
          "overshoot": 0
        },
        "mutations": {
          "count": 212,
          "pass": 212,
          "seed_count": 16,
          "mutant_sat_models": 165,
          "seed_sat_models": 6,
          "seed_base": 203010050,
          "shards": [
            {
              "seed": {
                "count": 14,
                "pass": 14,
                "sat_models": 5,
                "distinct_inputs": 14,
                "input_manifest_sha256": "4a628d55a24c2cb506920fc62bf7ae98c7ee76b69498e6e94e78d2ba0e672058"
              },
              "mutant": {
                "count": 112,
                "pass": 112,
                "sat_models": 68,
                "distinct_inputs": 105,
                "input_manifest_sha256": "d53d6f37760a5a1d96c8543821232e2eccc2261b4ff92114ec51f7596bd06b36"
              }
            },
            {
              "seed": {
                "count": 2,
                "pass": 2,
                "sat_models": 1,
                "distinct_inputs": 2,
                "input_manifest_sha256": "49c268f97a4af3df7d93322ada38a1339cbfb41bff798ae387a778ea4a7e566b"
              },
              "mutant": {
                "count": 100,
                "pass": 100,
                "sat_models": 97,
                "distinct_inputs": 100,
                "input_manifest_sha256": "9a35ec01741a3d2aa3451bccea1e2ed74c7346952f02192cab265969289b340e"
              }
            }
          ]
        },
        "native_lra": "All10 full parser checks and4-query validation prefixes passed, no known-answer mismatch and unchanged inputs/binaries. Full120s session diagnostics all timed out; exit1 from the strict gate is resource-incomplete, not a crash or a full-session pass.",
        "mixed_campaign": {
          "job": "167510",
          "summary_job": "168102",
          "seed_base": 203110050,
          "results": {
            "general": {
              "cases": 3000,
              "outcomes": {
                "PASS": 3000
              },
              "eligible_sat": 1709,
              "independent_models": 1709,
              "model_outcomes": {
                "pass": 1709
              }
            },
            "finite-qf-uf": {
              "cases": 500,
              "outcomes": {
                "PASS": 500
              },
              "eligible_sat": 252,
              "independent_models": 0,
              "model_outcomes": {}
            },
            "finite-qf-uflra": {
              "cases": 500,
              "outcomes": {
                "PASS": 500
              },
              "eligible_sat": 252,
              "independent_models": 252,
              "model_outcomes": {
                "pass": 252
              }
            }
          },
          "qualification": "All 4000 answer cases passed. General and finite-UFLRA eligible SAT selections independently validated in full; finite-UF answer cases do not have an additional model replay in this supplemental gate."
        },
        "report_docs": "make docs and make docs-check-links pass; 258 pages, 31719 local links,1005 Git links,0 failures,377 external URLs deferred. Revised section independently reviewed and desktop render inspected.",
        "report_preflight": "Metadata-only job168173 intentionally ran before completion: exit1 for incomplete QF_LRA timings and missing model coverage. Native UF timing was complete with no answer failures/disagreements. This is an expected refusal of partial evidence, not a solver failure."
      },
      "shards_per_solver": {
        "QF_UF": 64,
        "QF_LRA": 16,
        "QF_LIA": 128,
        "QF_UFLRA": 16,
        "QF_UFLIA": 8,
        "UF": 64
      },
      "attempts": [
        {
          "job": "167556",
          "result": "Native manifest adapter initially rejected legitimate unknown status annotations. Preserve them explicitly for fresh reference comparison; corrected retry167606 prepared all10 inputs."
        },
        {
          "jobs": [
            "167559",
            "167562"
          ],
          "result": "Idle AMD-node hardware checks could not launch: Job credential expired. No solver ran in these allocations. Timing remains on working compute partition."
        },
        {
          "job": "167419",
          "result": "Inventory completed within15min allocation (9m04s). An attempted extension arrived after completion and was refused as already finished; no limit changed."
        }
      ],
      "artifacts": {
        "root": "primo-evaluation-20261005/results",
        "local": "results/evaluation-refresh-20261005",
        "preserved_binary": "results/refresh-inventory/primo-5efbd02",
        "qualification": "results/refresh-qualification.json",
        "timing": "results/refresh-timing",
        "native": "results/refresh-native-{uf,lra}/{timing,validation}"
      },
      "limitations": [
        "Timing and selected ground/native model replay are complete; resource-incomplete outcomes remain unsolved and reference timing reuse retains its original conditions.",
        "Quantified UF models are not independently validated by the supported ground-model workflow.",
        "Native timings are whole-session measurements; partial query progress and unknown benchmark annotations remain explicit.",
        "Reference timing reruns cancelled by user. Reuse only audited historical references; incomplete or unverified sets remain unavailable. No fresh-reference performance claim."
      ],
      "documentation_review": {
        "reviewer": "review_experiments_docs",
        "scope": "New timing-refresh runbook and source-role configuration only, not unfinished experiment outcomes",
        "status": "accepted",
        "findings": "REFRESH-DOC-01 source links and S01 result layout/tool identities resolved",
        "accepted_blobs": {
          "docs/development/experiments.md": "3c4b096fe4e692513bb3ac3fc21067c0c4b4432f",
          "docs/_config.yml": "45f3a0abcd6d9167e06eae2dc41dbd7816316f1b"
        },
        "validation": "make docs and docs-check-links passed258pages31719local links1004Git links0failures;377external URLs deferred. Desktop section rendered without overflow/errors.",
        "historical_reuse": {
          "baseline": "f4f35c6",
          "implementation": "01f31b5",
          "reviewer": "independent read-only reviewer",
          "files": [
            "docs/development/experiments.md final section",
            "docs/_config.yml refreshsource role"
          ],
          "accepted_blobs": [
            "8162f67033efcba084f2cfda723499b65f810d66",
            "a3f82027a39cd7500b4a44059b732bf0247f2581"
          ],
          "finding": "REFRESH-HIST-01 fixed: explicit JSON file path and shard-parent root",
          "verdict": "ready; no required findings",
          "unchecked": "Result acceptance and independent rendering not covered."
        },
        "evidence_page": {
          "baseline": "c3c5509",
          "accepted_commit": "0561584",
          "files": [
            "docs/evidence/evaluation-refresh.md",
            "docs/coverage/evaluation-refresh-qualification.json",
            "docs/_toc.yml"
          ],
          "accepted_blobs": [
            "3090eb32cd1251192621546ab410ba837b1087ad",
            "38f4880c78cfbc3525189ec198dea7c67ce7a87d",
            "b6cc52429e5d7a3db9616d876d5359629db7f717"
          ],
          "verdict": "Independent read-only reviewer: ready, no required findings. Scope includes method and completed correctness, not unfinished timing/model results.",
          "checks": "make lint, make docs, docs-check-links pass;259pages,31951local links,1006Git links,0failures,379external URLs deferred. Scope/table rendering inspected."
        }
      },
      "reference_cancellation": {
        "reason": "User clarified clean slate applies to Primo; cancel remaining reference timing reruns and reuse comparable historical timings. Fresh correctness references remain included.",
        "jobs": [
          "167588",
          "167589",
          "167591",
          "167592",
          "167594",
          "167595",
          "167597",
          "167598",
          "167600",
          "167601",
          "167603",
          "167604"
        ],
        "native_tasks": "167605 slots 0..63 and 167607 slots 0..39 with slot modulo 4 in {2,3}; Primo profiles 0 and 1 retained.",
        "verification": "squeue confirms no non-incremental reference jobs or native reference tasks remain active.",
        "artifacts": "Partial reference timings retained unchanged, excluded from the requested fresh Primo baseline.",
        "model_replay": "All seven replay arrays retained; afterany dependencies remain valid after cancellation cleanup."
      },
      "reference_audit": {
        "job": "168031",
        "artifact": "results/refresh-reference-audit.json",
        "complete_hash_matched_ground_sets": 9,
        "missing": "Historical cvc5 QF_LIA is incomplete (12445/13306 rows); quantified UF references use a different historical driver and are not part of this ground audit. Neither is automatically filled from cancelled runs.",
        "historical_source": "results/full-revalidation-287b743/real",
        "compatibility": "Same reference binaries, exact path/content hashes, arguments and 60s limits. Prior allocation 1CPU/4GiB versus fresh 1CPU/8GiB; report context, not a controlled same-node performance claim.",
        "native_uf": {
          "job": "168102",
          "artifact": "results/refresh-native-reference-audit.json",
          "historical_source": "results/uf-native-timing-1595948",
          "result": "Both references have1778 exact-manifest sessions, unchanged binary hashes and30s limit; Z3 completes1778, cvc5 completes1768 with10timeouts. Ground/native historical inputs and binary identities checked before reuse."
        }
      },
      "progress_snapshot": {
        "status": "partial; not final evaluation",
        "artifact": "results/evaluation-refresh-20261005/progress-snapshot2.json",
        "finished_primo_timing": {
          "QF_UF": {
            "rows": 7503,
            "solved": 7497,
            "timeouts": 6
          },
          "QF_LRA": {
            "rows": 1753,
            "solved": 1537,
            "timeouts": 216
          },
          "QF_UFLRA": {
            "rows": 1284,
            "solved": 1270,
            "timeouts": 14
          },
          "QF_UFLIA": {
            "rows": 659,
            "solved": 574,
            "timeouts": 85
          }
        },
        "native_UF": {
          "sessions_per_profile": 1778,
          "rebuild": {
            "complete": 1775,
            "timeout": 3
          },
          "assumptions": {
            "complete": 1772,
            "unknown": 6
          },
          "unknown_triage": "All six unknown sessions report theory conflict limit reached and exactly10000 aggregate conflicts in an exhausted query; no overshoot. Artifact results/refresh-native-uf/unknown-triage.json."
        },
        "native_LRA": {
          "sessions_per_profile": 10,
          "rebuild": {
            "timeout": 10,
            "partial_queries": 328
          },
          "assumptions": {
            "complete": 3,
            "timeout": 7,
            "completed_queries": 303,
            "partial_queries": 450
          }
        },
        "limitations": "QF_LIA and quantified UF timing still active; all post-timing model arrays pending. Available historical ground comparisons have no decisive disagreements so far. This is not final model or performance acceptance."
      },
      "report_recipe_revision": "6fa6f0b",
      "session_shapes": {
        "native_UF": {
          "sessions": 1778,
          "queries": 29990,
          "minimum_queries": 2,
          "median_queries": 3,
          "maximum_queries": 494
        },
        "native_LRA": {
          "sessions": 10,
          "queries": 1515,
          "queries_per_session": {
            "101": 5,
            "202": 5
          }
        }
      },
      "completed_timing_and_validation": {
        "QF_UF": {
          "rows": 7503,
          "solved": 7497,
          "sat": 3142,
          "unsat": 4355,
          "statuses": {
            "ok": 7497,
            "timeout": 6
          },
          "unknown": 0,
          "wrong": 0,
          "par2": 4633.099264999995,
          "models": {
            "expected_sat": 3142,
            "completed": 3142,
            "missing": 0,
            "outcomes": {
              "pass": 3142
            },
            "shard_states": {
              "complete": 64
            },
            "coverage_issues": [],
            "fully_validated": true
          },
          "exception_rows": []
        },
        "QF_LRA": {
          "rows": 1753,
          "solved": 1537,
          "sat": 932,
          "unsat": 605,
          "statuses": {
            "timeout": 216,
            "ok": 1537
          },
          "unknown": 0,
          "wrong": 0,
          "par2": 32834.02108299998,
          "models": {
            "expected_sat": 932,
            "completed": 932,
            "missing": 0,
            "outcomes": {
              "pass": 932
            },
            "shard_states": {
              "complete": 16
            },
            "coverage_issues": [],
            "fully_validated": true
          },
          "exception_rows": []
        },
        "QF_LIA": {
          "rows": 13306,
          "solved": 9705,
          "sat": 6461,
          "unsat": 3244,
          "statuses": {
            "ok": 10456,
            "timeout": 2850
          },
          "unknown": 751,
          "wrong": 0,
          "par2": 470785.1583109994,
          "models": {
            "expected_sat": 6461,
            "completed": 6461,
            "missing": 0,
            "outcomes": {
              "pass": 6461
            },
            "shard_states": {
              "complete": 128
            },
            "coverage_issues": [],
            "fully_validated": true
          },
          "exception_rows": []
        },
        "QF_UFLRA": {
          "rows": 1284,
          "solved": 1270,
          "sat": 759,
          "unsat": 511,
          "statuses": {
            "ok": 1270,
            "timeout": 14
          },
          "unknown": 0,
          "wrong": 0,
          "par2": 2399.475908999998,
          "models": {
            "expected_sat": 759,
            "completed": 759,
            "missing": 0,
            "outcomes": {
              "pass": 759
            },
            "shard_states": {
              "complete": 16
            },
            "coverage_issues": [],
            "fully_validated": true
          },
          "exception_rows": []
        },
        "QF_UFLIA": {
          "rows": 659,
          "solved": 574,
          "sat": 405,
          "unsat": 169,
          "statuses": {
            "timeout": 85,
            "ok": 574
          },
          "unknown": 0,
          "wrong": 0,
          "par2": 11443.511550000007,
          "models": {
            "expected_sat": 405,
            "completed": 405,
            "missing": 0,
            "outcomes": {
              "pass": 405
            },
            "shard_states": {
              "complete": 8
            },
            "coverage_issues": [],
            "fully_validated": true
          },
          "exception_rows": []
        },
        "UF": {
          "rows": 7590,
          "solved": 1954,
          "sat": 1,
          "unsat": 1953,
          "statuses": {
            "timeout": 5602,
            "ok": 1988
          },
          "unknown": 34,
          "wrong": 0,
          "par2": 681968.4267750009,
          "models": {
            "expected_sat": 1,
            "completed": 0,
            "missing": 1,
            "outcomes": {},
            "shard_states": {},
            "coverage_issues": [],
            "fully_validated": false
          },
          "exception_rows": []
        },
        "qualification": "Quantified UF models are outside the independent ground-model workflow; that route is not claimed model-validated."
      },
      "final_report_attempt": {
        "job": "168188",
        "exit": 1,
        "artifact": "results/refresh-report-status.json",
        "result": "All single-query timings and supported ground model coverage pass; native UF passes; native LRA incomplete due solely to two reference timeouts.",
        "followup": "Original report remains failed/incomplete as recorded. Supplemental native-LRA qualification in docs/coverage/evaluation-refresh-native-lra.json closes its only outstanding coverage condition without overwriting that attempt."
      },
      "alternative_reference_replay": {
        "job": "172138",
        "status": "cancelled after full incremental OpenSMT qualification superseded these slower fresh-context checks; partial artifacts retained, no pass claim",
        "script": "scripts/qualification/evaluation_refresh/native_lra_alternatives.sbatch",
        "parent": "2026-10-05-full-evaluation-refresh",
        "indices": [
          6,
          8
        ],
        "inputs": [
          "incremental/QF_LRA/hybrid_networks/fisher_star_20_3.inter.bmc_k100.smt2",
          "incremental/QF_LRA/hybrid_networks/rod_30_3.inter.bmc_k100.smt2"
        ],
        "queries_per_session": 101,
        "profile": [
          "--quiet",
          "--stats",
          "--max-theory-conflicts=10000",
          "--incremental-mode=assumptions"
        ],
        "resources": "4 independent tasks;1 CPU,8GiB,2h each;600s per candidate/reference query,60s Dolmen. Whole-session replay preserves query scopes; timings unchanged.",
        "command": "PRIMO_WORKDIR=<prepared-workspace> PRIMO_LRA_ROOT=<original-native-root> sbatch scripts/qualification/evaluation_refresh/native_lra_alternatives.sbatch",
        "references": {
          "yices-smt2": {
            "version": "2.7.0, revision4f19700f0e272f4a68250080d12a873523bc7ac3",
            "sha256": "eab7efbff2a6f0cce2fcd2c25cb4a94e0e048c902d8ef9e6fd7d7989aa54c501"
          },
          "opensmt": {
            "version": "2.9.2 (printed to stderr; existing driver captures only stdout in run.json)",
            "sha256": "b7899e9aff299026d3251df7a28f51f56d8bd1e5b0fd7be11bcc72c4f2803a98"
          }
        },
        "artifacts": "results/refresh-native-lra/alternative-references/{yices-smt2,opensmt}/assumptions/shard-{6,8}",
        "preflight": "Clean frozen5efbd02 workspace checked with preparation helper --check-only --no-sync; both reference executables and Dolmen verified. Batch script validator and lint pass."
      },
      "incremental_reference_replay": {
        "job": "172142",
        "status": "terminal: OpenSMT2/2 full sessions pass; Yices0/2 and cvc5 0/2 resource-incomplete at600s; no reference disagreement",
        "script": "scripts/qualification/evaluation_refresh/native_lra_incremental_references.sbatch",
        "indices": [
          6,
          8
        ],
        "purpose": "Run the original two101-query sessions through each reference incrementally; require successful exits, exact definite query coverage, and agreement with immutable Primo timed answers. Then validate a live Primo replay against that independent recorded oracle, with Dolmen on any SAT answers. Ignore only exact success acknowledgment lines; retain raw output.",
        "reference_arguments": {
          "yices-smt2": [
            "--incremental"
          ],
          "opensmt": [],
          "cvc5": [
            "--incremental",
            "--use-portfolio",
            "-L",
            "smt2.6",
            "--print-success",
            "--no-type-checking",
            "--no-interactive",
            "--fp-exp"
          ]
        },
        "cvc5_profile_origin": "Exact incremental competition profile supplied by user; non-incremental variant not used.",
        "resources": "6 tasks,1CPU/8GiB each,30min job;600s per whole reference session;600s per Primo response,60s Dolmen. Correctness only, not new reference timing baseline.",
        "command": "PRIMO_WORKDIR=<prepared-workspace> PRIMO_LRA_ROOT=<original-native-root> sbatch scripts/qualification/evaluation_refresh/native_lra_incremental_references.sbatch",
        "artifacts": "results/refresh-native-lra/incremental-references/{yices-smt2,opensmt,cvc5}/shard-{6,8}",
        "preflight": "Preparation helper --check-only --no-sync accepted frozen5efbd02 and cvc5; earlier preflight accepted Yices/OpenSMT/Dolmen. SBATCH validator and lint pass.",
        "reason": "Fresh query-context comparisons discard reference incremental reuse; add full incremental reference runs without replacing earlier incomplete attempts.",
        "results": [
          {
            "reference": "cvc5",
            "index": 6,
            "file": "incremental/QF_LRA/hybrid_networks/fisher_star_20_3.inter.bmc_k100.smt2",
            "outcome": "reference-incomplete",
            "reference_status": "timeout",
            "reference_exit_code": null,
            "reference_seconds": 600.0421876888722,
            "reference_answers": 68,
            "reference_answer_counts": {
              "unsat": 68
            },
            "qualified_queries": 0,
            "sat_models": 0,
            "reference_sha256": "4a93548398445cf1a774655583f5465b156c26f63f2cdfb94f4728fdf7adde46",
            "reference_version": "cvc5 1.3.4 [git f3b21c4 on branch HEAD]\ncompiled with GCC version Ubuntu Clang 18.1.3 (1ubuntu1) on May  7 2026 15:33:02\n\nCopyright (c) 2009-2026 by the authors and their institutional\naffiliations listed at https://cvc5.github.io/people.html\n\ncvc5 is open-source and is covered by the BSD license (modified).\n\nTHIS SOFTWARE IS PROVIDED AS-IS, WITHOUT ANY WARRANTIES.\nUSE AT YOUR OWN RISK.\n\nThis version of cvc5 is linked against the following non-(L)GPL'ed\nthird party libraries.\n\n  CaDiCaL - Simplified Satisfiability Solver\n  See https://github.com/arminbiere/cadical for copyright information.\n\n  SymFPU - The Symbolic Floating Point Unit\n  See https://github.com/martin-cs/symfpu/tree/CVC4 for copyright information.\n\nThis version of cvc5 is linked against the following third party\nlibraries covered by the LGPLv3 license.\nSee licenses/lgpl-3.0.txt for more information.\n\n  GMP - Gnu Multi Precision Arithmetic Library\n  See http://gmplib.org for copyright information.\n\n  LibPoly polynomial library\n  See https://github.com/SRI-CSL/libpoly for copyright and\n  licensing information.\n\ncvc5 is statically linked against these libraries. To recompile\nthis version of cvc5 with different versions of these libraries\nfollow the instructions on https://github.com/cvc5/cvc5/blob/main/INSTALL.md\n\nSee the file COPYING (distributed with the source code, and with\nall binaries) for the full cvc5 copyright, licensing, and (lack of)\nwarranty information.\n\n",
            "reference_options": [
              "--incremental",
              "--use-portfolio",
              "-L",
              "smt2.6",
              "--print-success",
              "--no-type-checking",
              "--no-interactive",
              "--fp-exp"
            ],
            "source_sha256": "17682e3c43ccec75a1dc95cf80b78c8b392f5ed7019c5b807618d986b985ed23",
            "manifest_sha256": "b1d57c7844fe716fdeb9668b001e389019ad830fe6a832798a853e68832c8e1f",
            "timing_result_sha256": "9bcdaccba0b05e31fc25099bb638cc6ff541aaea66a0162eb1917e42c988465e",
            "raw_summary_sha256": "ba7a4f794040b467bb1600bceb4d52698600e434848dda316b332c8784181807",
            "reference_whole_session_timeout": 600,
            "candidate_query_timeout": 600,
            "dolmen_timeout": 60
          },
          {
            "reference": "cvc5",
            "index": 8,
            "file": "incremental/QF_LRA/hybrid_networks/rod_30_3.inter.bmc_k100.smt2",
            "outcome": "reference-incomplete",
            "reference_status": "timeout",
            "reference_exit_code": null,
            "reference_seconds": 600.0405366234481,
            "reference_answers": 44,
            "reference_answer_counts": {
              "unsat": 44
            },
            "qualified_queries": 0,
            "sat_models": 0,
            "reference_sha256": "4a93548398445cf1a774655583f5465b156c26f63f2cdfb94f4728fdf7adde46",
            "reference_version": "cvc5 1.3.4 [git f3b21c4 on branch HEAD]\ncompiled with GCC version Ubuntu Clang 18.1.3 (1ubuntu1) on May  7 2026 15:33:02\n\nCopyright (c) 2009-2026 by the authors and their institutional\naffiliations listed at https://cvc5.github.io/people.html\n\ncvc5 is open-source and is covered by the BSD license (modified).\n\nTHIS SOFTWARE IS PROVIDED AS-IS, WITHOUT ANY WARRANTIES.\nUSE AT YOUR OWN RISK.\n\nThis version of cvc5 is linked against the following non-(L)GPL'ed\nthird party libraries.\n\n  CaDiCaL - Simplified Satisfiability Solver\n  See https://github.com/arminbiere/cadical for copyright information.\n\n  SymFPU - The Symbolic Floating Point Unit\n  See https://github.com/martin-cs/symfpu/tree/CVC4 for copyright information.\n\nThis version of cvc5 is linked against the following third party\nlibraries covered by the LGPLv3 license.\nSee licenses/lgpl-3.0.txt for more information.\n\n  GMP - Gnu Multi Precision Arithmetic Library\n  See http://gmplib.org for copyright information.\n\n  LibPoly polynomial library\n  See https://github.com/SRI-CSL/libpoly for copyright and\n  licensing information.\n\ncvc5 is statically linked against these libraries. To recompile\nthis version of cvc5 with different versions of these libraries\nfollow the instructions on https://github.com/cvc5/cvc5/blob/main/INSTALL.md\n\nSee the file COPYING (distributed with the source code, and with\nall binaries) for the full cvc5 copyright, licensing, and (lack of)\nwarranty information.\n\n",
            "reference_options": [
              "--incremental",
              "--use-portfolio",
              "-L",
              "smt2.6",
              "--print-success",
              "--no-type-checking",
              "--no-interactive",
              "--fp-exp"
            ],
            "source_sha256": "c9d05bf18f96d884f15852dd6e010ee7ef066e5bb31268290b82a985e6ed07a4",
            "manifest_sha256": "b1d57c7844fe716fdeb9668b001e389019ad830fe6a832798a853e68832c8e1f",
            "timing_result_sha256": "07cfae66f59bb754db80816109eb8c91caaabb45a2836238f10d5c7e0d182955",
            "raw_summary_sha256": "a779ce88dbee19e513dfc62a4badd959eec15fc6079552c34facbf769192c73c",
            "reference_whole_session_timeout": 600,
            "candidate_query_timeout": 600,
            "dolmen_timeout": 60
          },
          {
            "reference": "opensmt",
            "index": 6,
            "file": "incremental/QF_LRA/hybrid_networks/fisher_star_20_3.inter.bmc_k100.smt2",
            "outcome": "pass",
            "reference_status": "done",
            "reference_exit_code": 0,
            "reference_seconds": 187.31360960379243,
            "reference_answers": 101,
            "reference_answer_counts": {
              "unsat": 101
            },
            "qualified_queries": 101,
            "sat_models": 0,
            "reference_sha256": "b7899e9aff299026d3251df7a28f51f56d8bd1e5b0fd7be11bcc72c4f2803a98",
            "reference_version": "v2.9.2\n",
            "reference_options": [],
            "source_sha256": "17682e3c43ccec75a1dc95cf80b78c8b392f5ed7019c5b807618d986b985ed23",
            "manifest_sha256": "b1d57c7844fe716fdeb9668b001e389019ad830fe6a832798a853e68832c8e1f",
            "timing_result_sha256": "9bcdaccba0b05e31fc25099bb638cc6ff541aaea66a0162eb1917e42c988465e",
            "raw_summary_sha256": "b8de555e79f77cd5bab9f5c6b9205a374d40574cfa99c8d4276a94642732d4bc",
            "reference_whole_session_timeout": 600,
            "candidate_query_timeout": 600,
            "dolmen_timeout": 60
          },
          {
            "reference": "opensmt",
            "index": 8,
            "file": "incremental/QF_LRA/hybrid_networks/rod_30_3.inter.bmc_k100.smt2",
            "outcome": "pass",
            "reference_status": "done",
            "reference_exit_code": 0,
            "reference_seconds": 198.07808309793472,
            "reference_answers": 101,
            "reference_answer_counts": {
              "unsat": 101
            },
            "qualified_queries": 101,
            "sat_models": 0,
            "reference_sha256": "b7899e9aff299026d3251df7a28f51f56d8bd1e5b0fd7be11bcc72c4f2803a98",
            "reference_version": "v2.9.2\n",
            "reference_options": [],
            "source_sha256": "c9d05bf18f96d884f15852dd6e010ee7ef066e5bb31268290b82a985e6ed07a4",
            "manifest_sha256": "b1d57c7844fe716fdeb9668b001e389019ad830fe6a832798a853e68832c8e1f",
            "timing_result_sha256": "07cfae66f59bb754db80816109eb8c91caaabb45a2836238f10d5c7e0d182955",
            "raw_summary_sha256": "900ee88f24457b09902af1960c854320d9f3a79304ae4ff5c0759bc95d7a8356",
            "reference_whole_session_timeout": 600,
            "candidate_query_timeout": 600,
            "dolmen_timeout": 60
          },
          {
            "reference": "yices-smt2",
            "index": 6,
            "file": "incremental/QF_LRA/hybrid_networks/fisher_star_20_3.inter.bmc_k100.smt2",
            "outcome": "reference-incomplete",
            "reference_status": "timeout",
            "reference_exit_code": null,
            "reference_seconds": 600.0522016678005,
            "reference_answers": 76,
            "reference_answer_counts": {
              "unsat": 76
            },
            "qualified_queries": 0,
            "sat_models": 0,
            "reference_sha256": "eab7efbff2a6f0cce2fcd2c25cb4a94e0e048c902d8ef9e6fd7d7989aa54c501",
            "reference_version": "Yices 2.7.0\nCopyright SRI International.\nLinked with GMP 6.3.0\nCopyright Free Software Foundation, Inc.\nBuild date: 2025-07-17\nPlatform: x86_64-pc-linux-gnu (release/static)\nRevision: 4f19700f0e272f4a68250080d12a873523bc7ac3\n",
            "reference_options": [
              "--incremental"
            ],
            "source_sha256": "17682e3c43ccec75a1dc95cf80b78c8b392f5ed7019c5b807618d986b985ed23",
            "manifest_sha256": "b1d57c7844fe716fdeb9668b001e389019ad830fe6a832798a853e68832c8e1f",
            "timing_result_sha256": "9bcdaccba0b05e31fc25099bb638cc6ff541aaea66a0162eb1917e42c988465e",
            "raw_summary_sha256": "bd806902673ccc774d999ff31ccbb9932236eb05de075be258719c196461974c",
            "reference_whole_session_timeout": 600,
            "candidate_query_timeout": 600,
            "dolmen_timeout": 60
          },
          {
            "reference": "yices-smt2",
            "index": 8,
            "file": "incremental/QF_LRA/hybrid_networks/rod_30_3.inter.bmc_k100.smt2",
            "outcome": "reference-incomplete",
            "reference_status": "timeout",
            "reference_exit_code": null,
            "reference_seconds": 600.0348227918148,
            "reference_answers": 55,
            "reference_answer_counts": {
              "unsat": 55
            },
            "qualified_queries": 0,
            "sat_models": 0,
            "reference_sha256": "eab7efbff2a6f0cce2fcd2c25cb4a94e0e048c902d8ef9e6fd7d7989aa54c501",
            "reference_version": "Yices 2.7.0\nCopyright SRI International.\nLinked with GMP 6.3.0\nCopyright Free Software Foundation, Inc.\nBuild date: 2025-07-17\nPlatform: x86_64-pc-linux-gnu (release/static)\nRevision: 4f19700f0e272f4a68250080d12a873523bc7ac3\n",
            "reference_options": [
              "--incremental"
            ],
            "source_sha256": "c9d05bf18f96d884f15852dd6e010ee7ef066e5bb31268290b82a985e6ed07a4",
            "manifest_sha256": "b1d57c7844fe716fdeb9668b001e389019ad830fe6a832798a853e68832c8e1f",
            "timing_result_sha256": "07cfae66f59bb754db80816109eb8c91caaabb45a2836238f10d5c7e0d182955",
            "raw_summary_sha256": "5b0d1255e98ab82630ed7717065a5f4d92423f82c5eb44bab4383d6b1641b37a",
            "reference_whole_session_timeout": 600,
            "candidate_query_timeout": 600,
            "dolmen_timeout": 60
          }
        ],
        "qualification": {
          "status": "complete",
          "selected_reference": "opensmt",
          "qualified_sessions": 2,
          "qualified_queries": 202,
          "sat_models": 0,
          "changed_answers": 0,
          "reference_disagreements": 0,
          "remaining_selected_sessions": 0,
          "native_lra_total_qualified_complete_sessions": 3,
          "native_lra_total_qualified_queries": 303,
          "incomplete_timing_sessions": "10 rebuild timeouts and7 assumptions timeouts remain unsolved, not qualified complete sessions.",
          "resource_outcomes": "Yices and cvc5 each timed out on both original sessions at600s; partial answers agree but are not passes."
        },
        "coverage_artifact": "docs/coverage/evaluation-refresh-native-lra.json",
        "recipe_revision": "adcdbb8"
      },
      "final_artifacts": {
        "non_incremental": "results/refresh-timing-summary.json",
        "native_uf": "results/refresh-native-uf/summary.json",
        "native_lra_original": "results/refresh-native-lra/summary.json",
        "native_lra_supplement": "docs/coverage/evaluation-refresh-native-lra.json",
        "ground_model_passes": 11699,
        "native_uf_model_passes": 49773,
        "native_lra_qualified_queries": 303,
        "local_collection": "results/evaluation-refresh-20261005/"
      }
    },
    {
      "id": "2026-10-05-publication-six-findings-qualified",
      "date": "2026-10-05",
      "kind": "publication-repair-qualification",
      "commit": "5c96568bd817eefb3f77e47e6ca55fd8ea99aad1",
      "branch": "docs/public-repository-migration",
      "scope": [
        "A-012",
        "A-013",
        "B-012",
        "B-013",
        "B-014",
        "C-004"
      ],
      "evidence_status": "accepted-correctness-sample",
      "decision": "Close all six technical findings with regressions and fresh SLURM evidence. Publication rights, owner acceptance, GitHub settings and visibility remain separate. No performance claim.",
      "reporting_revision": "83d35da",
      "reporting_changes": "Metadata-only fixes f5f4429 and83d35da preserve old aggregate fields and require exact hash-bound resource triage. Solver sources, binaries and gate recipes remain5c96568.",
      "execution": {
        "environment": "SLURM compute allocations",
        "workspace": "primo-public-followups-final",
        "local_work": "Editing, Git, mocked-process Python checks, lint, docs and artifact inspection; no local solver batch. Strict SSH host-key verification used existing trusted keys; connection details stay outside tracked files.",
        "compiler": "GCC11.4.1",
        "sat_backend": "CaDiCaL3.0.0-7b99c07",
        "reference": "Z3 5.1.0",
        "model_validator": "Dolmen0.10",
        "binary_sha256": {
          "build-slurm-rel/primo": "608e6b0f0f06f1de2c65da801632ec59ff0e490486b1b5c218c348b26119411c",
          "contrib/local/bin/z3": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0",
          "contrib/local/bin/dolmen": "08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e"
        }
      },
      "commands": {
        "prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir <clean-5c96568-worktree> --remote-dir <workspace> --cmake <cmake> --build-via-slurm --reuse-dependencies --cxx-header-manifest <matching-header-manifest> --extra-target all",
        "preflight": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir <clean-5c96568-worktree> --remote-dir <workspace> --cmake <cmake> --check-only",
        "checks": "PRIMO_WORKDIR=<workspace> PRIMO_EXPECTED_REVISION=5c96568 PRIMO_CMAKE_BIN=<cmake-bin> PRIMO_CXX_HEADER_MANIFEST=<matching-header-manifest> PRIMO_ASAN_RUNTIME_DIR=<verified-runtime-dir> sbatch --ntasks=1 scripts/qualification/public_checks.sbatch",
        "focused": "srun --ntasks=1 --job-name=primo-followup-focused --cpus-per-task=1 --mem=4G --time=00:05:00 <ctest> --test-dir build-slurm-rel --output-on-failure --timeout 120 -R primo_(smt_session|component_combination)_tests",
        "static": "PRIMO_WORKDIR=<workspace> sbatch --ntasks=1 scripts/qualification/public_static.sbatch",
        "static_examples": "PRIMO_WORKDIR=<workspace> PRIMO_CXX_HEADER_MANIFEST=<matching-header-manifest> sbatch --ntasks=1 scripts/qualification/publication_followups/static_examples.sbatch",
        "generated": "PRIMO_WORKDIR=<workspace> PRIMO_EXPECTED_REVISION=5c96568 PRIMO_SEED_BASE=202810040 PRIMO_BUDGET_REPLAY=1 sbatch --ntasks=1 --array=0-31%8 scripts/qualification/public_launch.sbatch",
        "mutations": "PRIMO_WORKDIR=<workspace> PRIMO_EXPECTED_REVISION=5c96568 PRIMO_SEED_BASE=202810040 PRIMO_YINYANG_BIN=<yinyang-bin> sbatch --ntasks=1 scripts/qualification/public_mutations.sbatch",
        "report": "srun --ntasks=1 --job-name=primo-followup-summary --cpus-per-task=1 --mem=4G --time=00:10:00 python3 scripts/qualification/publication_followups/summarize.py --gate-job 165257 --mutation-job 165258 --candidate 5c96568bd817eefb3f77e47e6ca55fd8ea99aad1 --resource-triage results/publication-followups-resource-triage.json --out results/publication-followups-qualification.json",
        "final_python": "srun --ntasks=1 --job-name=primo-followup-python --cpus-per-task=1 --mem=2G --time=00:05:00 python3 -m unittest discover -s tests/python",
        "node_limit_replay": "In SLURM job165296: timeout 30 build-slurm-rel/primo --stats <original-input>; timeout 30 results/primo-71cd492 --stats <original-input>; timeout 30 contrib/local/bin/z3 <original-input>. Capture each exit/stdout/stderr separately and hash input/binaries.",
        "local": "make lint; make docs; make docs-check-links; git diff --check"
      },
      "jobs": {
        "build": "165252",
        "focused": "165253",
        "checks": "165291",
        "static": "165255",
        "static_examples": "165256",
        "generated": "165257",
        "mutations": "165258",
        "resource_replay": "165296",
        "report": "165309",
        "final_python": "165310"
      },
      "checks": {
        "release": "43/43 passed",
        "asan": "43/43 passed",
        "python": "228 passed in165291; 229 after final report regression in165310",
        "documentation_examples": "12/12 passed",
        "focused": "2/2 passed",
        "static": {
          "translation_units": 130,
          "ordinary_diagnostics": 18,
          "include_cleaner_advisories": 411,
          "disposition": "Pre-repair a953edd baseline from job158839, results/symmetry-payloads/static.tar.gz:18 normal and404 source/test include diagnostics; final normalized diagnostics match it, plus7 unchanged example advisories. Compared with intermediate71cd492,7 source/test advisories removed and0 added (418 to411 total). Existing callback ownership and guarded enum-conversion diagnostics inspected; paired headers and transitive-provider advisories retained. No warning-free claim."
        },
        "code_review": "Whole-tree tracked non-generated review with focused implementation audit: no blocking issue remains. Hot-path typed guards are constant-time; no new full callback scan. Lazy quantified full-candidate check repairs omitted reasoning; no speed claim.",
        "local_documentation": {
          "lint": "make lint passed",
          "build": "make docs passed",
          "links": "make docs-check-links passed:258 pages,31716 local links,997 unique Git links,0 failures;376 external URLs deferred, not claimed checked",
          "rendering": "Writer checked4 desktop pages at1440x1100: no overflow, MathJax errors or Sphinx error nodes; inspected evidence table and closure screenshots. Not a mobile/accessibility audit."
        }
      },
      "generated": {
        "generator": "Per-route scripts in public_launch.sbatch; FuzzSMT for QF_LIA",
        "seed_base": 202810040,
        "seed_rule": "base+slot for ground; base+10000*slot for quantified/sessions; sessions then seed+index",
        "count": 8000,
        "pass": 7976,
        "timeout": 23,
        "timeout_detail": "18 Primo timeouts with Z3 SAT;5 both-solver timeouts",
        "resource_incomplete": 1,
        "wrong_answer": 0,
        "crash": 0,
        "parser_type_error": 0,
        "unsupported": 0,
        "untriaged_reference_disagreement": 0,
        "invalid_model": 0,
        "timeout_seconds": 5,
        "ground_model_timeout_seconds": 10,
        "session_model_timeout_seconds": 20,
        "ground_sat_models": 17849,
        "session_queries": 20000,
        "routes": {
          "QF_UF": {
            "cases": 1000,
            "pass": 1000,
            "timeout": 0,
            "sat_models": 651,
            "queries": 0,
            "resource_incomplete": 0,
            "reference_timeout": 0,
            "distinct_inputs": 999
          },
          "QF_LRA": {
            "cases": 1000,
            "pass": 1000,
            "timeout": 0,
            "sat_models": 1000,
            "queries": 0,
            "resource_incomplete": 0,
            "reference_timeout": 0,
            "distinct_inputs": 273
          },
          "QF_LIA": {
            "cases": 1000,
            "pass": 977,
            "timeout": 23,
            "sat_models": 862,
            "queries": 0,
            "resource_incomplete": 0,
            "reference_timeout": 5,
            "distinct_inputs": 1000
          },
          "QF_UFLRA": {
            "cases": 1000,
            "pass": 1000,
            "timeout": 0,
            "sat_models": 578,
            "queries": 0,
            "resource_incomplete": 0,
            "reference_timeout": 0,
            "distinct_inputs": 1000
          },
          "QF_UFLIA": {
            "cases": 1000,
            "pass": 999,
            "timeout": 0,
            "sat_models": 498,
            "queries": 0,
            "resource_incomplete": 1,
            "reference_timeout": 0,
            "distinct_inputs": 672
          },
          "UF": {
            "cases": 1000,
            "pass": 1000,
            "timeout": 0,
            "sat_models": 0,
            "queries": 0,
            "resource_incomplete": 0,
            "reference_timeout": 0,
            "distinct_inputs": 554
          },
          "incremental_QF_UF": {
            "cases": 1000,
            "pass": 1000,
            "timeout": 0,
            "sat_models": 6260,
            "queries": 9000,
            "resource_incomplete": 0,
            "reference_timeout": 0,
            "distinct_inputs": 793
          },
          "incremental_QF_LRA": {
            "cases": 1000,
            "pass": 1000,
            "timeout": 0,
            "sat_models": 8000,
            "queries": 11000,
            "resource_incomplete": 0,
            "reference_timeout": 0,
            "distinct_inputs": 1000
          }
        }
      },
      "budget_replay": {
        "count": 800,
        "selection": "25 per shard",
        "conflict_limit": 1,
        "timeout_seconds": 10,
        "pass_samples": 338,
        "resource_exhausted_samples": 461,
        "timeout_samples": 1,
        "returned_queries": 2599,
        "definitive_queries": 1995,
        "exhausted_queries": 604,
        "conflict_counts": {
          "0": 1995,
          "1": 604
        },
        "timeout_detail": "Both Z3 and Primo timed out with no answer: shard-9/budget-replay/00017, input SHA25682eff1b458c13c1392575f2b4926947572b23065e17271efa6c5fcd21fc4f712. Incomplete, not a pass.",
        "overshoot_completed_replays": 0,
        "incomplete_replay_scope": "Timeout/reference-incomplete partial answers are not accepted as checked. The only final timeout sample returned no answers from either solver.",
        "wrong_answer": 0
      },
      "mutations": {
        "generator": "YinYang OpFuzz with scripts/seeded_opfuzz.py and model_linear_ops.txt",
        "seed_base": 202810040,
        "seed_rule": "base+slot",
        "seed_counts": [
          14,
          2
        ],
        "iterations_per_seed": [
          8,
          50
        ],
        "count": 212,
        "pass": 212,
        "wrong_answer": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "mutant_sat_models": 171,
        "seed_sat_models": 6,
        "timeout_seconds": {
          "seed": 30,
          "generation_solver": 5,
          "mutant_replay": 10,
          "model_replay": 30
        },
        "shards": [
          {
            "seed": {
              "count": 14,
              "pass": 14,
              "sat_models": 5,
              "distinct_inputs": 14,
              "input_manifest_sha256": "4a628d55a24c2cb506920fc62bf7ae98c7ee76b69498e6e94e78d2ba0e672058"
            },
            "mutant": {
              "count": 112,
              "pass": 112,
              "sat_models": 71,
              "distinct_inputs": 105,
              "input_manifest_sha256": "39efca58180d30c58cc6e72a5af0baedac180e1a6ef23603a3b1f3ec19480bd3"
            }
          },
          {
            "seed": {
              "count": 2,
              "pass": 2,
              "sat_models": 1,
              "distinct_inputs": 2,
              "input_manifest_sha256": "49c268f97a4af3df7d93322ada38a1339cbfb41bff798ae387a778ea4a7e566b"
            },
            "mutant": {
              "count": 100,
              "pass": 100,
              "sat_models": 100,
              "distinct_inputs": 100,
              "input_manifest_sha256": "abac4cbc82984117e09caa4cacbf7c6565184aa26bc4eacc4d009d4544703368"
            }
          }
        ]
      },
      "resource_triage": [
        {
          "input_sha256": "2e684de5ec74dcd125cd0a643d8f57fd0d0429da02bf6a0af4334ce9b6dcec38",
          "route": "QF_UFLIA",
          "reference_answer": "sat",
          "reason": "integer branch-and-bound node limit",
          "classification": "resource-incomplete",
          "replay_job": "165296",
          "replay_artifact": "results/followup-unknown-165296",
          "prior_revision": "71cd492ebb24b8c845c9c693dbaf8b888cf7bf59",
          "input": "results/public-launch/165257/shard-16/gate/cases/case-00086.smt2"
        }
      ],
      "superseded_attempts": [
        {
          "job": "165254",
          "result": "Release43/43 passed; three Python summary mocks lacked newly added reference_timeout field. Fixed optional aggregation in f5f4429; job165291 passed. ASan was not reached in165254."
        },
        {
          "job": "165292",
          "result": "Report rejected previously untriaged UNKNOWN_INVOLVED. No acceptance claimed."
        },
        {
          "job": "165293",
          "result": "Diagnostic confirmed integer node-limit message on both binaries, but appended unsupported get-info command caused exit2. Discard as clean-replay evidence; corrected original-input replay165296 has exit0 for all three solvers."
        }
      ],
      "artifacts": {
        "summary": "docs/coverage/publication-followups-qualification.json",
        "triage": "docs/coverage/publication-followups-resource-triage.json",
        "generated": "primo-public-followups-final/results/public-launch/165257",
        "mutations": "primo-public-followups-final/results/public-mutations/165258",
        "resource_replay": "primo-public-followups-final/results/followup-unknown-165296",
        "checks": "results/publication-followups/checks-final",
        "local_replay": "results/publication-followups/followup-unknown-165296",
        "development": "results/publication-followups/development"
      },
      "limitations": [
        "Bounded correctness sample, not a proof of completeness or a runtime comparison.",
        "Quantified models not independently checked. Resource limits and timeouts are incomplete, not solved.",
        "Local/source documentation links are distinct from external URL availability and unpublished GitHub state."
      ],
      "documentation_review": {
        "status": "accepted by separate read-only reviewer",
        "files": [
          "docs/evidence/publication-followups.md",
          "docs/coverage/page-review.md",
          "docs/work/publication.md",
          "docs/evidence/publication.md",
          "docs/reference/statistics.md",
          "docs/coverage/publication-followups-qualification.json",
          "docs/coverage/publication-followups-resource-triage.json",
          "docs/run-log.json"
        ],
        "reviewer": "review_experiments_docs",
        "baseline": "83d35da",
        "qualified_solver": "5c96568",
        "findings": {
          "PUB-FUP-01": "Restrict overshoot acceptance to completed replays and disclose unchecked incomplete partial results. Resolved and rechecked.",
          "PUB-FUP-02": "Restore revision-pinned implementation and regression links for all6 findings. Resolved and rechecked; repairsource pins5c96568.",
          "PUB-FUP-03": "Identify a953edd/job158839 baseline and distinguish intermediate71 seven-advisory cleanup. Resolved; reviewer independently compared archive."
        },
        "accepted_blobs": {
          "docs/evidence/publication-followups.md": "3eb3ef7ecfbaf7ec003edbf97fad8b5fc595eff1",
          "docs/coverage/page-review.md": "d26f46ac99ecb77fe2ad96ae0f84d5bae800a221",
          "docs/work/publication.md": "9d95dde1f5b9998e5b02e2ed0042b6255c616768",
          "docs/evidence/publication.md": "9502ce6f7775e388128cd2576067ad8ef88e47c6",
          "docs/reference/statistics.md": "b524927e673dfffa7d1984a0dbffd51244489008",
          "docs/_toc.yml": "fed1f72f93c3636e1483e47af0fd4f79f3e04743",
          "docs/coverage/publication-followups-qualification.json": "2a8dfe26e8cc81033934303cb542058d36d885e1",
          "docs/coverage/publication-followups-resource-triage.json": "074a4377a6dc0bc86cf7ccd65320631b027bf996",
          "docs/_config.yml": "4f27d3db28edccdc3eb8d8e917fa45ba69d0614f"
        },
        "ledger_reviewed_blob_before_this_acceptance_record": "2f639d80aaf13da9758255ab57131762894a332a",
        "unchecked": "Acceptance covers assigned evidence/closure changes and first2 ledger entries only. Reviewer did not reread every remote raw shard or independently check rendering/external URL availability."
      }
    },
    {
      "id": "2026-10-04-publication-followup-development",
      "date": "2026-10-04",
      "kind": "publication-repair-development",
      "commit": "5c96568bd817eefb3f77e47e6ca55fd8ea99aad1",
      "branch": "docs/public-repository-migration",
      "scope": [
        "A-012",
        "A-013",
        "B-012",
        "B-013",
        "B-014",
        "C-004"
      ],
      "evidence_status": "superseded-by-final-qualification",
      "decision": "Retain repairs and regressions; development attempts below are not the final publication gate.",
      "execution": "Solver builds and tests ran in SLURM. Local work was editing, mocked-process Python regressions, lint, documentation and artifact inspection. SSH used existing trusted keys with strict host-key checking; connection details remain outside Git.",
      "implementation": {
        "B-014": "a19493701d7ab31931d7466fd88a44803f41abf3",
        "B-012_B-013": "11cd06fdd742effc73379c17f1cef0d283b29bcb",
        "A-012_C-004": "241a873af13b17d6a30862498747851f4330026a",
        "A-013_initial": "a03fe0d41a512339143cd06eaafd0e42dc03ad87",
        "B-012_quoted_binding_identity": "d16acb42d87a55eaa5f76faf14a904900a9a7e8b",
        "B-013_empty_selection_dependency": "519b7b5",
        "callback_and_lazy_quantified_followup": "71cd492ebb24b8c845c9c693dbaf8b888cf7bf59",
        "direct_callback_followup": "451d0a1"
      },
      "commands": {
        "prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --build-via-slurm --reuse-dependencies --cxx-header-manifest <matching-header-manifest> --cmake <cmake> --extra-target primo_smt_session_tests --extra-target primo_component_combination_tests <workspace-options>",
        "checks": "PRIMO_WORKDIR=<workspace> PRIMO_EXPECTED_REVISION=<revision> PRIMO_CMAKE_BIN=<cmake-bin> PRIMO_CXX_HEADER_MANIFEST=<matching-header-manifest> PRIMO_ASAN_RUNTIME_DIR=<verified-runtime-dir> sbatch scripts/qualification/public_checks.sbatch",
        "focused": "srun --ntasks=1 --job-name=primo-followup-focused --cpus-per-task=1 --mem=4G --time=00:05:00 <ctest> --test-dir build-slurm-rel --output-on-failure --timeout 120 -R primo_(smt_session|component_combination)_tests",
        "tooling": "python3 -m unittest discover -s tests/python -p test_tuning_process_status.py; corresponding test_analyzer_scope.py, test_tactic_composition_matrix.py, test_slurm_prepare_benchmark_workspace.py and test_budget_replay.py; python3 scripts/analyze_smt2.py --selftest; make lint; make docs; make docs-check-links"
      },
      "attempts": [
        {
          "revision": "241a873",
          "build_job": "165069",
          "checks_job": "165070",
          "result": "43/43 release and 43/43 ASan tests; 224 Python tests; documentation examples passed",
          "binary_sha256": "c63c63060336706b52161c44bb92e31df4c9522ea0b72907f9589b9d1f214e52",
          "artifacts": "primo-public-followups/results/public-checks-165070.{out,err}"
        },
        {
          "revision": "a03fe0d",
          "build_job": "165071",
          "checks_job": "165072",
          "result": "42/43 release tests passed; newly written UF regression fixture lacked a closing parenthesis. Fixed in 70d7abf; ASan not reached.",
          "artifacts": "primo-public-followups-final/results/public-checks-165072.{out,err}"
        },
        {
          "revision": "70d7abf",
          "build_job": "165073",
          "focused_job": "165074",
          "result": "Component regression passed; session regression found aggregate count 3 at limit 1 in online QF_UFLIA. Diagnostic replay 165093 also exposed lazy quantified ground checking omission (30-second timeout). Fixed in 71cd492. Earlier diagnostic job165092 used an invalid CLI spelling and performed no solver checks.",
          "artifacts": "primo-public-followups-final/results/conflict-diagnose-corrected/"
        },
        {
          "revision": "71cd492",
          "build_job": "165110",
          "focused_job": "165127",
          "result": "2/2 focused tests passed, including lazy/incremental ground and quantified limits, exact single counting, integer infeasibility, forced fallback, retained-query reset and callback streaming.",
          "binary_sha256": "28a24fa982ddf78058909f076eea172bb6428c507515a82ae666e5c672a7c011"
        },
        {
          "revision": "71cd492",
          "checks_job": "165128",
          "static_job": "165129",
          "generated_job": "165130",
          "mutations_job": "165131",
          "static_examples_job": "165179",
          "result": "43/43 release and ASan, 227 Python tests, 12 documentation checks. Generated gate: 7975 passes and 25 timeouts (one includes Z3 timeout); 212 mutant passes. Initial replay classifier accepted 800 samples, but count audit found 237 queries exceeded limit1, up to12 reports; reject this as final conflict-budget qualification. Direct callback guards repaired in a4b486e/451d0a1; strict replay now requires exactly1.",
          "summary": "results/publication-followups/71-summary.json"
        },
        {
          "revision": "d2de453",
          "build_job": "165181",
          "result": "Build passed with real unused include removed and direct-header advisories resolved. No qualification launched: completed earlier count audit required direct callback guards."
        },
        {
          "revision": "a4b486e",
          "build_job": "165250",
          "result": "Build cancelled before qualification to incorporate independent reviewer DIRECT-DOC-01: recheck EUF exhaustion after a propagation scan can consume the budget."
        },
        {
          "revision": "451d0a1",
          "build_job": "165251",
          "result": "Build cancelled before qualification to strengthen branching arithmetic fixtures: separated bound endpoints ensure theory reasoning rather than a propositional complement after lowering."
        }
      ],
      "tooling_regressions": "Mocked wrappers reproduce post-answer abnormal-exit misclassification on the old implementation; lexical-let and composition regressions expose the old behavior. Final local targeted suites pass, including quoted-name identity and empty selection without Dolmen. No solver batch ran locally. A metadata-only regression now separates reference timeouts from errors; old summary attempt165180 rejected one both-solver timeout, corrected report produced afterward. Strict budget replay rejects overshoots.",
      "build_correction": "The cluster default launched two tasks for bare srun. 5c25f96 makes preparation pass --ntasks=1 and adds a mocked command regression; build165110 and subsequent submissions explicitly request one task. Earlier timings are not performance evidence.",
      "documentation_review": "Separate read-only reviewer accepted tuning, analyzer/composition, numeric/probe and resource-accounting documentation. CBQ-DOC-01 required source navigation for callback/lazy fixes; resolved with repairsource pinned71cd492 in00ed482. Builds and local/source-link checks pass; external URL availability is a separate publication concern. DIRECT-DOC-01 was resolved in451d0a1 and separately accepted; final source links use451d0a1.",
      "limitations": "The complete publication qualification and final static-analysis triage are recorded separately. No speed/default-promotion claim."
    },
    {
      "id": "2026-10-02-symmetry-numeric-payload-repair",
      "date": "2026-10-02",
      "kind": "soundness-repair-qualification",
      "commit": "a953edd5a345d8532141eea8c075d1f070772235",
      "branch": "docs/public-repository-migration",
      "baseline": "09749dd2bfecb6f8f296a83dc1939416c9ad7b01",
      "scope": "D-006 exact numeric payload preservation in finite-choice symmetry comparison",
      "decision": "Accept the D-006 correctness repair; six other page-review findings and publication approval remain open.",
      "evidence_status": "current",
      "environment": {
        "execution": "SLURM compute allocations only; local editing, documentation builds, lint and evidence aggregation",
        "compiler": "GCC 11.4.1 with matching provisioned C++ headers",
        "build": "Release and Debug/AddressSanitizer; CaDiCaL 3.0.0-7b99c07",
        "references": {
          "z3": "5.1.0",
          "cvc5": "1.3.4 f3b21c4"
        },
        "validator": "Dolmen 0.10",
        "mutator": "YinYang/OpFuzz 0.3.0, scripts/seeded_opfuzz.py",
        "asan_runtime": "Previously signature-verified libasan-11.5.0-14.el9 runtime from publication qualification; no system install",
        "warnings": "Shared-filesystem clock-skew warnings during make; clean SLURM build and both complete test suites succeeded. No timing/performance claim."
      },
      "jobs": {
        "baseline_build": "158804",
        "baseline_reproduction": "158813",
        "candidate_build": "158834",
        "checks_and_asan": "158838",
        "static": "158839",
        "fuzz_array": "158840_0 through 158840_3",
        "mutations": "158841"
      },
      "commands": {
        "prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --build-via-slurm --reuse-dependencies --extra-target all --jobs 4 --cxx-header-manifest <matching-header-manifest> --require-tool contrib/local/bin/z3 --require-tool contrib/local/bin/cvc5 --require-tool contrib/local/bin/dolmen <connection-and-workspace-options>",
        "preflight": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync <same-workspace-and-tool-options>",
        "baseline": "Build 09749dd through the helper; copy the three candidate benchmarks/smoke/qf_uflra/sat_symmetry_*.smt2 fixtures to tmp/symmetry in that workspace; PRIMO_WORKDIR=<workspace> sbatch scripts/qualification/symmetry_payloads/reproduce.sbatch (supply recipe from repair tree)",
        "checks": "PRIMO_WORKDIR=<workspace> PRIMO_EXPECTED_REVISION=a953edd PRIMO_CMAKE_BIN=<cmake-bin> PRIMO_CXX_HEADER_MANIFEST=<matching-header-manifest> PRIMO_ASAN_RUNTIME_DIR=<verified-runtime-dir> sbatch scripts/qualification/symmetry_payloads/checks.sbatch",
        "checks_detail": "ctest --test-dir build-slurm-rel --timeout 120 --output-on-failure -R primo_(preprocessing|boolean_solver)_tests; 12 regression/profile SAT-only Dolmen checks; make -o contrib-required check BUILD_DIR=build-slurm-rel; python3 scripts/check_doc_examples.py --solver build-slurm-rel/primo; make -o contrib-required asan-test ASAN_BUILD_DIR=build-public-asan",
        "fuzz": "PRIMO_WORKDIR=<workspace> PRIMO_FUZZ_SEED_BASE=2026100300 PRIMO_FUZZ_OUT_DIR=results/symmetry-fuzz sbatch scripts/slurm_qf_uflra_fuzz_gate.sbatch",
        "fuzz_references": "general: --ref z3; finite-choice QF_UF/QF_UFLRA: --ref z3 --ref cvc5. Primo build-slurm-rel/primo; finite-choice QF_UF additionally uses --preprocessing-mode=strong; other profiles default.",
        "mutations": "PRIMO_WORKDIR=<workspace> PRIMO_EXPECTED_REVISION=a953edd PRIMO_YINYANG_BIN=<yinyang-bin> sbatch scripts/qualification/symmetry_payloads/mutations.sbatch",
        "mutation_references": "Primo build-slurm-rel/primo --quiet versus z3 model_validate=true during OpFuzz; strict retained-input replay with check_solver_seed_corpus.py --ignore-declared-status --ref contrib/local/bin/z3, requiring decisive matching answers and zero exits.",
        "models": "validate_model.py --solver build-slurm-rel/primo --solver-arg=--quiet --expect-sat --require-dolmen-pass --dolmen-arg=--strict=false; separate SAT-only replay, never included in speed measurements",
        "static": "PRIMO_WORKDIR=<workspace> sbatch scripts/qualification/public_static.sbatch; all126 translation units through clang-tidy then misc-include-cleaner",
        "orchestration": "New bounded recipes were copied to tmp/qualification in the frozen remote workspace and invoked there. No solver source was changed remotely. They are committed beside this record."
      },
      "resources": {
        "build": {
          "requested_cpus": 4,
          "allocated_cpus": 4,
          "memory": "8G",
          "wall_limit": "30min"
        },
        "checks": {
          "requested_cpus": 4,
          "allocated_cpus": 4,
          "memory": "8G",
          "wall_limit": "40min",
          "regression_solver_timeout_seconds": 10,
          "regression_dolmen_timeout_seconds": 10
        },
        "static": {
          "cpus": 8,
          "memory": "16G",
          "wall_limit": "45min"
        },
        "fuzz_per_shard": {
          "requested_cpus": 1,
          "allocated_cpus": 2,
          "memory": "4G",
          "wall_limit": "60min",
          "answer_timeout_seconds": 5,
          "model_solver_timeout_seconds": 10,
          "dolmen_timeout_seconds": 10
        },
        "mutations": {
          "requested_cpus": 1,
          "allocated_cpus": 2,
          "memory": "4G",
          "wall_limit": "15min",
          "campaign_seconds": 300,
          "generation_solver_timeout_seconds": 5,
          "strict_mutant_replay_timeout_seconds": 10,
          "original_seed_timeout_seconds": 30,
          "model_solver_timeout_seconds": 30,
          "dolmen_timeout_seconds": 30
        },
        "baseline_reproduction": {
          "requested_cpus": 1,
          "allocated_cpus": 2,
          "memory": "2G",
          "wall_limit": "3min",
          "solver_timeout_seconds": 10
        }
      },
      "seeds": {
        "general": [
          2026100300,
          2026100301,
          2026100302,
          2026100303
        ],
        "finite_qf_uf": [
          2026200300,
          2026200301,
          2026200302,
          2026200303
        ],
        "finite_qf_uflra": [
          2026300300,
          2026300301,
          2026300302,
          2026300303
        ],
        "mutations": 202610021,
        "mutations_per_seed": 20,
        "mutation_config": "scripts/fuzz_configs/model_linear_ops.txt",
        "mutation_sources": [
          "benchmarks/smoke/qf_uflra/sat_symmetry_numeric_values.smt2",
          "benchmarks/smoke/qf_uflra/sat_symmetry_coefficients.smt2",
          "benchmarks/smoke/qf_uflra/sat_symmetry_equal_numeric_values.smt2",
          "benchmarks/seeds/qf_uflra_scale/mathsat_randomdecoupled_pb_real_40_80_60_01.smt2",
          "benchmarks/seeds/qf_uflra_scale/mathsat_randomdecoupled_pb_real_40_80_60_36.smt2"
        ]
      },
      "binaries": {
        "build-slurm-rel/primo": "3b7fda0204c62d52078ca4e29de6364595d400ac35034fd09bd9862ace3d4b46",
        "contrib/local/bin/z3": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0",
        "contrib/local/bin/cvc5": "4a93548398445cf1a774655583f5465b156c26f63f2cdfb94f4728fdf7adde46",
        "contrib/local/bin/dolmen": "08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e",
        "build-public-asan/primo": "39c2a6e4ff474a2497184d683bd994dff45d00aa3c61dfbd760144517184d760"
      },
      "results": {
        "baseline": "Two satisfiable regressions returned false UNSAT on09749dd under default, Basic0, and Basic0without precedence. Symmetry-off and both references returned SAT. The equal-payload control remained SAT. CandidateSAT in all12 fixture/profile combinations, all independently model-checked.",
        "fresh": {
          "generated_pass": 4000,
          "mutant_pass": 100,
          "wrong_answer": 0,
          "crash": 0,
          "parser_or_type_error": 0,
          "timeout": 0,
          "unsupported": 0,
          "reference_disagreement": 0,
          "invalid_model": 0,
          "dolmen_pass": 2095,
          "model_coverage": "2011 generated mixed/finite-choice arithmetic SAT cases +68 SAT mutants +4 SAT seeds +12 regression/profile models. Finite-choice QF_UF: answer comparison only."
        },
        "checks": {
          "release_ctest": 43,
          "asan_ctest": 43,
          "python_tests": 216,
          "documentation_examples": 12,
          "direct_pass_calls": 40,
          "integration_sat_assertions": 18,
          "independent_regression_models": 12,
          "status": "all passed"
        },
        "static": {
          "translation_units": 126,
          "clang_tidy_diagnostics": 18,
          "include_cleaner_advisories": 404,
          "errors": 0,
          "disposition": "Same diagnostic baseline as the initial snapshot and preceding publication qualification. Two ownership-analysis reports and sixteen guarded-enum-probe reports reviewed; no new blocking diagnostic. Include advisories: twenty paired self-headers retained; variant is needed for std::get; remaining383 concern transitive includes. This is not a warning-free claim."
        }
      },
      "superseded_attempt": {
        "candidate": "2794606ab52a1cbcfe069c80a22e28803b6d4881",
        "jobs": {
          "build": "158816",
          "checks": "158823",
          "static": "158824",
          "fuzz_array": "158825_0 through 158825_3",
          "mutations": "158826"
        },
        "failure": "checks exited8 because the new integration fixtures were resolved from the build directory without ../. The direct pass tests passed. This was test setup, not a solver result. Fix the three paths and rerun all gates on a953edd; solver src/ byte-identical between snapshots. This attempt is not the accepted qualification.",
        "completed_provisional_results": {
          "generated_pass": 4000,
          "generated_sat_models": 2011,
          "mutant_pass": 100,
          "mutant_sat_models": 68,
          "seed_pass": 5,
          "seed_sat_models": 4,
          "wrong_answer": 0,
          "crash": 0,
          "parser_or_type_error": 0,
          "timeout": 0,
          "unsupported": 0,
          "reference_disagreement": 0
        },
        "configuration": "Same generator/reference commands, seeds, counts and limits as selected run. Initial static18/404 advisories; no independent regression models or full checks reached."
      },
      "artifacts": {
        "summary": "docs/coverage/symmetry-payload-qualification.json",
        "summary_sha256": "a8db3aadbab2a2173b567a0a5e7a8957a4603ae15571359822c8a1cd0f5aa132",
        "raw_root": "results/symmetry-payloads",
        "candidate_results": "results/symmetry-payloads/qualified/results",
        "failure_artifacts": "results/symmetry-payloads/qualified/results/symmetry-mutations/bugs (empty); generated cases and individual outputs retained in fuzz corpora",
        "archives": {
          "checks.tar.gz": "1bf960c78bece8cb06826bafa5d6512ea7b16ac8646e8cb2183898ba96bcd709",
          "fuzz-and-mutations.tar.gz": "b827f77fde2f41de447a2e7ee74df72a9385483e1e15255929dd6b29ce8e9681",
          "initial-candidate.tar.gz": "fce55afacaa20384e38ba51d22b91b02bda7061cf7e0168a51b3b3f2ae5c1e9a",
          "static.tar.gz": "d9971fa170ef0be3a0da160ce8d30f1e2966e8f8a7384aa9456fa76ab225f157"
        }
      },
      "limitations": [
        "Bounded correctness repair, not a performance/default promotion or exhaustive all-logic proof.",
        "The finite-choice templates deliberately repeat: 500cases in each finite corpus yield42 distinct inputs; general3000 yield2992; mutations100 yield80.",
        "No new general symmetry detector or linear DAG normalization is implemented.",
        "This qualification closes only D-006. Other six audit findings and publication requirements remain open."
      ]
    },
    {
      "id": "2026-10-02-publication-qualification",
      "date": "2026-10-02",
      "kind": "correctness-qualification",
      "commit": "6053dc28a88bc2a7eaa968295987516903898766",
      "branch": "docs/public-repository-migration",
      "validated_snapshot": "6053dc28a88bc2a7eaa968295987516903898766",
      "provenance": "Frozen candidate built on SLURM; src/ is byte-identical to c944fa7. Later commits correct qualification scripts and prepare documentation, notices and reports. They are not solver implementation changes.",
      "scope": "Public research snapshot preparation; bounded correctness qualification, not performance evaluation or default promotion.",
      "decision": "Accept the documented local publication preparation. Public visibility remains pending rights clearance, reader acceptance and verified GitHub configuration/CI.",
      "evidence_status": "current",
      "environment": {
        "execution": "All solver builds, tests, fuzzing, model replay and static analysis ran in SLURM compute allocations. Local work was documentation, packaging and tooling tests.",
        "compiler": "GCC 11.4.1 with matching provisioned header snapshot",
        "release": "Release; CaDiCaL 3.0.0-7b99c07",
        "binaries": {
          "build-slurm-rel/primo": "9788e4831775e601de8b6fbac9c0aeb6e5b9654f09b0cf47d810aee822453f4e",
          "contrib/local/bin/z3": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0",
          "contrib/local/bin/dolmen": "08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e"
        },
        "reference": "Z3 5.1.0",
        "validator": "Dolmen 0.10",
        "asan_binary_sha256": "30eaa0f0ef279049fade369052b704324a23d95fc750d1da32e65676e6187a5c",
        "asan_runtime": {
          "package": "libasan-11.5.0-14.el9.x86_64.rpm",
          "source": "https://ftp.sh.cvut.cz/rocky/9.8/AppStream/x86_64/os/Packages/l/libasan-11.5.0-14.el9.x86_64.rpm",
          "sha256": "e4670fc0e67a7b8f3553b42816ea94b7027fe69a3eb9eb49775bf69a6794ec23",
          "verification": "rpmkeys --checksig: digests signatures OK; extracted in experiment workspace, not installed system-wide"
        },
        "warnings": "Shared-filesystem clock-skew warnings occurred during make. Qualification makes no timing claim; the clean candidate build and completed tests are recorded separately."
      },
      "jobs": {
        "release_build": "156656",
        "fresh_bootstrap_failed": "156670",
        "initial_matrix": "156671",
        "integer_and_tool_path_retry": "156709",
        "disjoint_quantifier_and_session_seeds": "156730",
        "checks_and_asan": "156739",
        "static": "156704",
        "mutations": "156728",
        "gitless_archive": "156717",
        "raw_evidence_archive": "156744"
      },
      "commands": {
        "prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --build-via-slurm --reuse-dependencies --extra-target all --jobs 4 --cxx-header-manifest <matching-header-manifest> --require-tool contrib/local/bin/z3 --require-tool contrib/local/bin/dolmen <connection-and-workspace-options>",
        "preflight": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync <same-workspace-options>",
        "matrix": "PRIMO_WORKDIR=<prepared-workspace> PRIMO_EXPECTED_REVISION=6053dc2 sbatch scripts/qualification/public_launch.sbatch; selected roots in docs/coverage/publication-qualification.json",
        "checks": "scripts/qualification/public_checks.sbatch: make -o contrib-required check BUILD_DIR=build-slurm-rel; check_doc_examples.py; make -o contrib-required asan-test ASAN_BUILD_DIR=build-public-asan",
        "mutations": "scripts/qualification/public_mutations.sbatch: seeded_opfuzz.py with model_linear_ops.txt, strict original/mutant answer comparison, successful-SAT-only Dolmen replay",
        "static": "scripts/qualification/public_static.sbatch: clang-tidy for all 126 .cpp files, followed by misc-include-cleaner",
        "summary": "python3 scripts/qualification/summarize_public_launch.py --root results/public-launch --initial 156671 --integer 156709 --sessions 156730 --candidate 6053dc28a88bc2a7eaa968295987516903898766 --out results/public-launch-summary.json",
        "docs": [
          "make docs-check-links",
          "make docs-check-external (access failures retained)",
          "make lint",
          "actionlint .github/workflows/*.yml"
        ],
        "archive": "scripts/qualification/public_archive.sbatch; extracted f95ba8a source archive, provisioned dependencies, no .git, source revision verified, 12 documentation checks"
      },
      "resources": {
        "matrix": {
          "shards": 32,
          "cpus_per_shard": 1,
          "memory_per_shard": "4G",
          "wall_limit_per_shard": "02:00:00",
          "concurrency_limit": 4,
          "cases_per_shard": 250,
          "ground_seeds": "202610020 + slot (slots 0..19)",
          "quantifier_session_seeds": "202610020 + 10000 * slot (slots 20..31)",
          "answer_timeout_seconds": 5,
          "ground_model_timeout_seconds": 10,
          "session_dolmen_timeout_seconds": 20
        },
        "checks": {
          "cpus": 4,
          "memory": "8G",
          "wall_limit": "00:40:00",
          "ctest_timeout_seconds": 120
        },
        "static": {
          "cpus": 8,
          "memory": "16G",
          "wall_limit": "00:45:00"
        },
        "mutations": {
          "cpus_per_shard": 1,
          "memory": "4G",
          "wall_limit": "00:40:00",
          "mutator_wall_seconds": 900,
          "mutator_solver_timeout_seconds": 5,
          "strict_mutant_replay_timeout_seconds": 10,
          "seed_and_model_timeout_seconds": 30
        }
      },
      "results": {
        "ctest": {
          "pass": 43,
          "failed": 0
        },
        "python_tests": {
          "pass": 208,
          "failed": 0,
          "later_report_checker_tests_local": 5
        },
        "documentation_examples": {
          "pass": 12,
          "failed": 0
        },
        "asan": {
          "pass": 43,
          "failed": 0,
          "options": "detect_leaks=1:strict_init_order=1"
        },
        "fuzz": {
          "generated_inputs_or_sessions": 8000,
          "pass": 7986,
          "timeout": 14,
          "wrong_answer": 0,
          "crash": 0,
          "parser_type_error": 0,
          "unsupported": 0,
          "reference_disagreement": 0,
          "routes": {
            "QF_UF": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 619,
              "queries": 0,
              "distinct_inputs": 999
            },
            "QF_LRA": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 1000,
              "queries": 0,
              "distinct_inputs": 261
            },
            "QF_LIA": {
              "cases": 1000,
              "pass": 986,
              "timeout": 14,
              "sat_models": 869,
              "queries": 0,
              "distinct_inputs": 1000
            },
            "QF_UFLRA": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 557,
              "queries": 0,
              "distinct_inputs": 1000
            },
            "QF_UFLIA": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 506,
              "queries": 0,
              "distinct_inputs": 672
            },
            "UF": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 0,
              "queries": 0,
              "distinct_inputs": 559
            },
            "incremental_QF_UF": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 6284,
              "queries": 9000,
              "distinct_inputs": 825
            },
            "incremental_QF_LRA": {
              "cases": 1000,
              "pass": 1000,
              "timeout": 0,
              "sat_models": 8000,
              "queries": 11000,
              "distinct_inputs": 1000
            }
          },
          "quantifier_profiles": [
            "sum",
            "max",
            "max-colex",
            "leximax",
            "deepening",
            "random",
            "preprocess-only"
          ],
          "ground_sat_models_dolmen_pass": 17835,
          "session_queries": 20000,
          "quantified_model_validation": "not performed; documented checker limitation"
        },
        "mutations": {
          "generator": "YinYang 0.3.0 OpFuzz, commit 04c8618a134e7a6c8b6d54fcd5ee9fd2ec64a2bb, linear operator configuration",
          "seed_count": 16,
          "mutants": 212,
          "distinct_mutants": 205,
          "pass": 212,
          "sat_models_including_seeds": 158,
          "wrong_answer": 0,
          "crash": 0,
          "parser_type_error": 0,
          "timeout": 0,
          "unsupported": 0,
          "reference_disagreement": 0,
          "shards": [
            {
              "slot": 0,
              "logic": "QF_LRA",
              "seed": 202610020,
              "stages": {
                "seed": {
                  "cases": 14,
                  "distinct_inputs": 14,
                  "pass": 14,
                  "sat_models": 5,
                  "input_manifest_sha256": "4a628d55a24c2cb506920fc62bf7ae98c7ee76b69498e6e94e78d2ba0e672058"
                },
                "mutant": {
                  "cases": 112,
                  "distinct_inputs": 105,
                  "pass": 112,
                  "sat_models": 55,
                  "input_manifest_sha256": "510bc82963999c9ef76ab8960037f83b5b70ff17e93c2392eda9de528703c82f"
                }
              }
            },
            {
              "slot": 1,
              "logic": "QF_UFLRA",
              "seed": 202610021,
              "stages": {
                "seed": {
                  "cases": 2,
                  "distinct_inputs": 2,
                  "pass": 2,
                  "sat_models": 1,
                  "input_manifest_sha256": "49c268f97a4af3df7d93322ada38a1339cbfb41bff798ae387a778ea4a7e566b"
                },
                "mutant": {
                  "cases": 100,
                  "distinct_inputs": 100,
                  "pass": 100,
                  "sat_models": 97,
                  "input_manifest_sha256": "647853955578e216d48a1e851e1c111e045168d3a862bebdeffc2920ef19e71d"
                }
              }
            }
          ]
        },
        "static": {
          "translation_units": 126,
          "warnings": 18,
          "include_advisories": 404,
          "review": "Matches prior c944fa7 baseline: CLI11 and tactic shared_ptr analyzer ownership reports; 16 guarded enum-probe diagnostics. Reviewed the same ownership/cast paths. Include scan: 20 paired headers retained, <variant> used by std::get, 383 direct-include advisories. No new C++ implementation change."
        },
        "documentation": {
          "strict_books": 2,
          "pages": 253,
          "local_links": 30327,
          "git_links": 873,
          "compatibility_targets": 1306,
          "failures": 0,
          "external_access_failures_current": 4,
          "external_access_failures_history": 13
        }
      },
      "attempts_excluded": [
        {
          "jobs": [
            "156671_8-11"
          ],
          "reason": "SAT-model replay incorrectly included UNSAT cases; one replay timeout. Superseded by successful-SAT-only retry; initial answers do not replace retry counts."
        },
        {
          "jobs": [
            "156671_20-27",
            "156706"
          ],
          "reason": "Wrapper required executable paths; PATH-only z3 failed before cases."
        },
        {
          "jobs": [
            "156703"
          ],
          "reason": "ctest absent from selected build-tool directory; no test pass claimed."
        },
        {
          "jobs": [
            "156710"
          ],
          "reason": "Release tests/examples passed; ASan link failed on missing system runtime. Superseded by 156739 with provisioned verified runtime."
        },
        {
          "jobs": [
            "156711"
          ],
          "reason": "Quantifier-specific mutation recipe rejected by both solvers on QF_LRA; mixed seeds excluded by size cap. Harness misuse, superseded by ground OpFuzz recipe."
        },
        {
          "jobs": [
            "156709_20-27",
            "156671_28-31"
          ],
          "reason": "Completed but session seed ranges overlapped. Replaced by disjoint-range run 156730. Independently generated duplicate templates still reported as duplicates."
        }
      ],
      "artifacts": {
        "local_directory": "results/public-launch",
        "selected_summary": "docs/coverage/publication-qualification.json",
        "full_raw_archive": "results/public-launch/public-launch-evidence.tar.gz",
        "raw_publication": "Raw generated inputs/models/logs are not published by this change. Committed metadata is not the full raw archive.",
        "source_archive": {
          "revision": "f95ba8a8fde11eeb59738ae0941ebf74692c5f4d",
          "path": "dist/primo-f95ba8a8fde1.tar.gz",
          "sha256": "fb4b9ebaaef627ff2b2fa56e2a22c014c5cf7d579fc771a797aa2c299e624f04",
          "primo_binary_sha256": "2727b66215e83ef6de03f60d9a109a0ee6e0631696d037f53bf89b321c1242a6"
        },
        "final_documentation_archive": {
          "revision": "cebb6c2525fbe2cf4bd00a14108b2f34e92e7964",
          "path": "dist/primo-cebb6c2525fb.tar.gz",
          "sha256": "4736d0b4066aad42d34f4da92c63f77aff04eced46b55d61078898bf9ac70480",
          "verification": "Both strict source books and compatibility assembler rebuilt from this archive without .git. Solver build was checked from the earlier f95ba8a archive; solver sources are identical."
        },
        "attempt_logs_archive": {
          "path": "results/public-launch/public-launch-attempt-logs.tar.gz",
          "sha256": "cd01105b7db016b9fc3b8be42ba989585cecc655c532ae9e289ddc9f2958b987"
        },
        "full_raw_archive_sha256": "12e47774c7dbe19d924e8d697dfe7c9dbf0b4ba21ce3cac83039fa77a148faf7",
        "collection": "SLURM job 156744 completed; raw and attempt-log archives copied locally and SHA-256 verified. Raw archives remain ignored, not published."
      },
      "limitations": [
        "14 QF_LIA timeouts remain incomplete; no answer inferred from reference SAT.",
        "Counts include repeated generator templates; distinct hashes reported separately.",
        "No independent quantified-model validation or new full-corpus speed result.",
        "Fresh dependency bootstrap failed fetching CLI11; actual GitHub-hosted CI remains pending.",
        "Rights/third-party-input terms, hosted-asset audit, reader acceptance, and GitHub settings remain owner work."
      ]
    },
    {
      "id": "2026-10-02-preprocessing-diagnostic-routing",
      "date": "2026-10-02",
      "kind": "correctness-qualification",
      "commit": "c944fa790c2043ebac93b8d6f63c7b02b0c2c235",
      "branch": "docs/public-repository-migration",
      "validated_snapshot": "c944fa790c2043ebac93b8d6f63c7b02b0c2c235",
      "provenance": "The implementation commit was validated in an isolated worktree before acceptance on the working branch. The following evidence and source-link update changes documentation only.",
      "scope": "Keep --preprocess-only as a diagnostic. Quantified UF stops after the frontend, before solve_quantified_uf. Ground preprocessing retains unsat for contradictions and unknown otherwise. No formula export.",
      "decision": "Accept the routing guard and documentation correction; normal solving and preprocessing algorithms are unchanged.",
      "evidence_status": "current",
      "environment": {
        "execution": "All solver and Python tests, documentation example executions, fuzzing and C++ static analysis ran in SLURM compute allocations.",
        "build": "GNU C++ 11.4.1, Release, CaDiCaL 3.0.0-7b99c07; reused matching C++ header snapshot",
        "primo_binary_sha256": "312c9ac39152a405a1e5e2846d47360e40a51cb7d0af88e0353c373fceea6037",
        "reference": "Z3 5.1.0",
        "reference_binary_sha256": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0"
      },
      "jobs": {
        "build": "156609",
        "checks_and_gate": "156612",
        "static_source_and_partial_tests": "156611",
        "static_tests": "156616",
        "include_cleaner": "156615"
      },
      "commands": {
        "build": "python3 scripts/slurm_prepare_benchmark_workspace.py --build-via-slurm --reuse-dependencies --extra-target all --require-tool contrib/local/bin/z3 --jobs 4 --cxx-header-manifest <matching-header-manifest> <connection-and-workspace-options>",
        "preflight": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync --require-tool contrib/local/bin/z3 <connection-and-workspace-options>",
        "checks": "make -o contrib-required check BUILD_DIR=build-slurm-rel CPP_FORMAT_FILES=\"<all tracked src/tests C++ files>\"; cached dependencies verified by the preparation helper",
        "examples": "python3 scripts/check_doc_examples.py --solver build-slurm-rel/primo",
        "gate": "python3 scripts/quantifier_preparation_gate.py --mode generated --solver build-slurm-rel/primo --expected-git c944fa7 --ref contrib/local/bin/z3 --count 1000 --seed 20261002 --timeout 5 --check-preprocess-only --out results/preprocess-diagnostic-gate",
        "static": "clang-tidy -p build-slurm-rel <each of 126 tracked non-generated .cpp files>; repeated with -checks=-*,clang-diagnostic-*,misc-include-cleaner",
        "docs": [
          "make docs",
          "make docs-next",
          "python3 scripts/check_doc_links.py docs/_build/html docs-next/_build/html"
        ],
        "lint": "make lint"
      },
      "resources": {
        "build": {
          "cpus": 4,
          "memory": "8G",
          "wall_limit": "00:30:00"
        },
        "checks_and_gate": {
          "cpus": 4,
          "memory": "8G",
          "wall_limit": "00:20:00",
          "per_solver_timeout_seconds": 5
        },
        "static": {
          "cpus": 2,
          "memory": "8G",
          "wall_limit": "00:20:00"
        },
        "static_tests": {
          "cpus": 4,
          "memory": "8G",
          "wall_limit": "00:10:00"
        },
        "include_cleaner": {
          "cpus": 4,
          "memory": "8G",
          "wall_limit": "00:10:00"
        }
      },
      "results": {
        "ctest": {
          "passed": 43,
          "failed": 0
        },
        "python": {
          "passed": 202,
          "failed": 0
        },
        "documentation_examples": {
          "passed": 12,
          "failed": 0
        },
        "fuzz": {
          "generator": "scripts/quantifier_preparation_gate.py:quantified; existing template generator and Boolean wrappers",
          "seed": 20261002,
          "generated_cases": 1000,
          "distinct_input_sha256": 569,
          "invocations": 8000,
          "pass": 1000,
          "normal_solver_profiles": [
            "sum",
            "max",
            "max-colex",
            "leximax",
            "deepening",
            "random"
          ],
          "per_normal_profile": {
            "sat": 375,
            "unsat": 625,
            "unknown": 0
          },
          "reference": {
            "sat": 375,
            "unsat": 625
          },
          "diagnostic": {
            "unknown": 1000,
            "sat_calls": 0,
            "instances": 0,
            "skolem_lemmas": 0
          },
          "wrong_answer": 0,
          "crash": 0,
          "parser_type_error": 0,
          "timeout": 0,
          "unsupported": 0,
          "reference_disagreement": 0,
          "audit": "Verified each case has all eight profiles, successful exits and matching retained-input hashes. Rechecked diagnostic statistics from the retained stderr files."
        },
        "static": {
          "coverage": "All 90 source translation units were scanned before the first allocation timed out in tests; all 36 test translation units were scanned in the completed continuation. The advisory include scan completed for all 126 files.",
          "compiler_errors": 0,
          "warnings": "Existing CLI11 std::function and tactic shared_ptr ownership diagnostics; enum-table probe diagnostics. Reviewed ownership paths and guarded casts; no blocking issue in this change.",
          "include_advisory_warnings": 404,
          "include_review": "20 paired-header reports retained for header self-containment; the remaining unused-header report is <variant>, used by std::get<DomainValue> in instance_simplifier_tests.cpp. Other reports request direct includes for existing transitive dependencies; no header removal was warranted.",
          "review": "Code review pass: no blocking issues found in the routing guard, ownership, session lifecycle, tests or performance."
        },
        "documentation": {
          "strict_books": 2,
          "pages": 174,
          "local_links": 28178,
          "git_links": 874,
          "failures": 0
        }
      },
      "artifacts": {
        "directory": "results/preprocess-diagnostic-20261002",
        "qualification_archive": "results/preprocess-diagnostic-20261002/qualification.tar.gz",
        "qualification_archive_sha256": "c044e6fd6cdb5329c401b789fa5be25077bb2d28d8ed6b0ae1c00c6440a62688",
        "gate_rows": "results/preprocess-diagnostic-gate/rows.jsonl",
        "gate_inputs_and_outputs": "results/preprocess-diagnostic-gate/case-*",
        "failures": "None; all inputs and outputs retained in the qualification archive.",
        "static-initial.tar.gz": {
          "path": "results/preprocess-diagnostic-20261002/static-initial.tar.gz",
          "sha256": "3c27e4f8799e6e853983eb29feb1ca1529e7604135c1b26d0210a10898bced81"
        },
        "static-tests.tar.gz": {
          "path": "results/preprocess-diagnostic-20261002/static-tests.tar.gz",
          "sha256": "e7a75e411654febf04d52b35c96011eb99a988d2bd9a79e0c0104bff544d32a7"
        },
        "review": "results/preprocess-diagnostic-20261002/review.txt"
      },
      "limits": [
        "This is a diagnostic control-flow correction, not a performance evaluation or default promotion.",
        "The 1000 generated cases contain 569 distinct inputs; the count does not imply 1000 unique formulas.",
        "ASan was not rerun: the change adds an early return and does not change ownership, term storage, parsing or SAT backend code."
      ],
      "operational_notes": [
        "The first remote build lacked C++ standard headers; the clean rebuild used the existing matching header snapshot.",
        "Job 156610 stopped before solver execution because a newline-separated file list broke the make lint recipe. Job 156612 used a space-separated list and completed all checks.",
        "The make check rebuild emitted clock-skew warnings for generated makefiles. The candidate was built from a clean directory by the preparation helper and its exact binary hash was checked by the gate.",
        "The full clang-tidy allocation 156611 timed out after scanning source files and part of the tests. Job 156616 completed all test units; job 156615 completed the advisory include scan. The refused request to extend the first allocation did not change its limit."
      ]
    },
    {
      "id": "2026-09-29-soi-endpoint-correction",
      "date": "2026-09-29",
      "kind": "correctness-qualification",
      "commit": "bc5d21dd7ab28d03d98f90815449b58a0d222d01",
      "branch": "docs/public-repository-migration",
      "scope": "At step zero, update the slope only when a basic value leaves its feasible interval. A fixed variable contributes once at zero and twice at nonzero crossings. Ordinary repair policies and explanation construction are unchanged.",
      "decision": "Accept the SOI endpoint slope correction; SOI remains opt-in.",
      "evidence_status": "current",
      "metadata": "benchmarks/soi-endpoints-20260929.json",
      "metadata_sha256": "6f11ae28ac7bb07afed2428d6a89d0b05e76ede2cb8e1fb93230fa73fa9ca1c0",
      "environment": {
        "execution": "All solver tests, sanitizer runs, reference comparisons and fuzzing ran in SLURM compute allocations. Local work was lint, documentation and static analysis of four documentation examples.",
        "release": "GNU C++ 11.4.1, Release, assertions enabled for unit tests, CaDiCaL 3.0.0-7b99c07; matching pre-provisioned header manifest",
        "asan": "GCCcore 11.3.0, Debug, PRIMO_SANITIZERS=address, ASAN_OPTIONS=detect_leaks=1:strict_init_order=1; matching C system headers",
        "primo_binary_sha256": "69988220778f4f1e4878fda0aa3cf180c45aa6b9d6a46e1e893f7941c087d917",
        "z3_version": "Z3 5.1.0 - 64 bit",
        "z3_binary_sha256": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0",
        "fuzzsmt_jar_sha256": "89f887283d409842ebb19af6fce7a33a1b4a6c006746801b98ca8d716a3b0552"
      },
      "jobs": {
        "build": "153098",
        "checks": "153104",
        "asan": "153105",
        "fuzz": "153106_0..3",
        "normal_static": "153101",
        "include_review": "153110"
      },
      "resources": {
        "build_and_checks": {
          "cpus": 4,
          "memory": "8G",
          "job_wall_limit": "00:30:00"
        },
        "asan": {
          "cpus": 4,
          "memory": "12G",
          "job_wall_limit": "00:30:00"
        },
        "normal_static": {
          "cpus": 2,
          "memory": "4G",
          "job_wall_limit": "00:30:00"
        },
        "includes": {
          "cpus": 4,
          "memory": "12G",
          "job_wall_limit": "00:20:00"
        },
        "fuzz_per_shard": {
          "cpus_requested": 1,
          "cpus_allocated": 2,
          "memory": "2G",
          "job_wall_limit": "01:00:00",
          "per_solver_wall_seconds": 5
        },
        "seed_comparisons": {
          "per_solver_wall_seconds": 10
        },
        "timing_scope": "Concurrent correctness qualification, not an isolated performance measurement."
      },
      "commands": {
        "prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config \"$SSH_CONFIG\" --remote \"$SLURM_REMOTE\" --remote-dir \"$PRIMO_WORKDIR\" --local-dir \"$CLEAN_CANDIDATE\" --build-via-slurm --reuse-dependencies --jobs 4 --cxx-header-manifest \"$HEADER_MANIFEST\" --extra-target all --require-tool contrib/local/bin/z3",
        "preflight": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config \"$SSH_CONFIG\" --remote \"$SLURM_REMOTE\" --remote-dir \"$PRIMO_WORKDIR\" --local-dir \"$CLEAN_CANDIDATE\" --check-only --no-sync --require-tool contrib/local/bin/z3",
        "checks": "sbatch scripts/qualification/soi_endpoints/checks.sbatch; runs make -j4 check BUILD_DIR=build-slurm-rel, seed comparisons and the component reproduction",
        "asan": "sbatch scripts/qualification/soi_endpoints/asan.sbatch; runs make -j4 asan-test ASAN_BUILD_DIR=build-soi-asan",
        "static": "sbatch scripts/slurm_typed_model_static_review.sbatch; sbatch scripts/slurm_component_include_review.sbatch",
        "fuzz": "sbatch --array=0-3 --time=01:00:00 scripts/slurm_qfuf_fuzz_gate.sbatch",
        "fuzz_expansion": "python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver \"$PRIMO_WORKDIR/build-slurm-rel/primo --lra-pivoting-rule=soi --quiet\" --refs z3 --logic QF_LRA --count 250 --timeout 5 --seed <shard.seed> --fuzzer-args <shard.profile> --out <fresh-output>/fuzzsmt/shard-<shard>",
        "generator_expansion": "fuzzsmt QF_LRA -seed <shard.seed> <shard.profile> -bulk-prefix fuzzsmt_<shard.seed>_ -bulk-export 250",
        "reference": "z3 <generated-input.smt2>",
        "local": "make lint; clang-format --dry-run --Werror docs-next/examples/*.cpp; make docs-check-links"
      },
      "verification": {
        "normal_ctest_groups": 43,
        "normal_ctest_seconds": 12.61,
        "asan_ctest_groups": 43,
        "asan_ctest_seconds": 97.73,
        "python_tests": 201,
        "new_tableau_checks": 32,
        "reference_comparisons": 36,
        "seed_scope": "3 QF_LRA seeds, 2 QF_LIA smoke inputs and 12 QF_UFLRA seeds, each under SOI and sparse; 2 new SOI endpoint regressions with preprocessing off.",
        "component_stdout": "pivots=1 x=1 y=0",
        "component_comparison": "Historical diagnostic 2026-09-28-soi-zero-breakpoint-debug needed two pivots for the same valid final assignment.",
        "lint": "Complete local make lint passed, including Ruff and C++ formatting. Remote make check lacked rg and the configured Ruff environment, so its partial lint is not the formatting/Python lint evidence.",
        "static_review": "Normal clang-tidy returned zero after all 126 source/test translation units; four documentation examples also passed locally. The 18 visible normal diagnostics are 16 deliberate invalid-enum test casts, one external CLI11 advisory, and the previously recorded tactic.cpp:69 shared_ptr control-block leak advisory. Reinspection confirms ownership through Goal::data_ -> Data::assertions, no cycle or manual release; leak-enabled ASan passes. No diagnostic in the changed arithmetic source or tests. Advisory scans cover all 130 files: 404 source/test and 7 example include advisories inspected, with no spurious include identified. No warning-free baseline claim.",
        "docs": "make docs-check-links passed both strict books: 127 pages, 19323 local links, 558 unique Git links, zero failures. All anchors in 131 prior HTML files retained. 173 external URLs deferred to HTTP audit.",
        "static_job_completion": "Job 153101 completed its normal clang-tidy stage with exit zero. Its redundant serial include-cleaner stage was intentionally cancelled after job 153110 had already completed that scan on all 126 files. static-stage-transition.txt records the stage boundary; include-cleaner.log could only be opened after the successful first command under set -e.",
        "code_review": "No blocking issues found; soundness, one-sided slopes, exact arithmetic, rollback, ownership, explanations, include hygiene and hot-path costs reviewed."
      },
      "fuzz_summary": {
        "generated": 1000,
        "unique_input_sha256": 1000,
        "pass": 958,
        "sat_agreements": 608,
        "unsat_agreements": 350,
        "timeout": 42,
        "primo_only_timeout": 40,
        "mutual_timeout": 2,
        "reference_timeout": 2,
        "wrong_answer": 0,
        "crash": 0,
        "parser_or_type_error": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "unknown_output": 0,
        "timeout_references": {
          "sat": 37,
          "unsat": 3,
          "timeout": 2
        },
        "shards": [
          {
            "shard": 0,
            "seed": 629290,
            "count": 250,
            "profile": "-mv 1 -Mv 3 -mc 1 -Mc 3 -Mbw 4",
            "counts": {
              "PASS": 244,
              "TIMEOUT": 6
            },
            "summary_sha256": "de7dbdf5d820420c0b7163628467f72b03a2aa227d3bfebc5bbc4672374deb17"
          },
          {
            "shard": 1,
            "seed": 629291,
            "count": 250,
            "profile": "-mv 1 -Mv 3 -mc 1 -Mc 3 -Mbw 16",
            "counts": {
              "PASS": 249,
              "TIMEOUT": 1
            },
            "summary_sha256": "f282b0c090711c7ae69ea1f53ab979f1127f9ec8124fce92f0d8b4f2e219cb35"
          },
          {
            "shard": 2,
            "seed": 629292,
            "count": 250,
            "profile": "-mv 2 -Mv 5 -mc 1 -Mc 4 -Mbw 16",
            "counts": {
              "PASS": 218,
              "TIMEOUT": 32
            },
            "summary_sha256": "c99d1a6ab76b6cf780b339cdbf69ef7a26ddb0a681ac0a913b1993bf72e74ef3"
          },
          {
            "shard": 3,
            "seed": 629293,
            "count": 250,
            "profile": "-mv 2 -Mv 5 -mc 1 -Mc 4 -Mbw 16 -bool-and",
            "counts": {
              "PASS": 247,
              "TIMEOUT": 3
            },
            "summary_sha256": "a3c651a7447f43926f428d0e8df12e2d9daf45fe943aada66df42e7d80126c91"
          }
        ],
        "failures_directory": "results/soi-endpoints-20260929/fuzz/fuzzsmt/shard-*/bugs",
        "failure_classification": "All 42 retained non-pass inputs are timeouts; no stale bug corpus is used as evidence."
      },
      "artifacts": "results/soi-endpoints-20260929",
      "limitations": [
        "42 timeout cases are not agreements or proofs of correctness.",
        "This is an opt-in selection repair, not a full-corpus performance evaluation or default promotion.",
        "No new independent printed-model validation or seed-mutation campaign was run. The merge gate uses generated QF_LRA inputs; existing tests and small QF_LIA/QF_UFLRA seed comparisons provide additional coverage.",
        "External HTTP links were not re-audited; source and local HTML links were checked."
      ],
      "superseded_setup_attempts": {
        "jobs": [
          "153099",
          "153100",
          "153102",
          "153103"
        ],
        "cause": "Archive mtimes made existing dependency stamps stale, so make tried blocked downloads. MAKEFLAGS did not suppress those targets. No solver results from these jobs are counted.",
        "resolution": "After the helper validated existing dependency headers/libraries/versions, each installation stamp was set to its corresponding installer-script mtime; make -n contrib-required then reported nothing to do. Fresh jobs 153104/153105 passed.",
        "build_warnings": "Compute-node/filesystem clock skew produced make timestamp warnings. Source/build trees were freshly configured; revision preflights and complete normal/ASan suites passed."
      }
    },
    {
      "id": "2026-09-28-soi-zero-breakpoint-debug",
      "date": "2026-09-28",
      "kind": "diagnostic",
      "commit": "8f8c196",
      "scope": "One bounded component debug example found during the SOI documentation rewrite; no solver behavior change or batch execution.",
      "evidence_status": "diagnostic_only",
      "environment": {
        "type": "local",
        "host": "workspace",
        "build": "C++20 -O0 -g; lra_tableau.cpp and rational.cpp compiled directly from current source"
      },
      "command": "c++ -std=c++20 -O0 -g -Isrc -Icontrib/local/include docs-next/examples/soi-zero-step.cpp src/theory/arithmetic/lra_tableau.cpp src/util/rational.cpp contrib/local/lib/libgmpxx.a contrib/local/lib/libgmp.a -o /tmp/primo-soi-zero && timeout 10 /tmp/primo-soi-zero",
      "artifacts": {
        "reproducer": "docs-next/examples/soi-zero-step.cpp",
        "explanation": "docs-next/implementation/lra.md, Known limitation: zero-length breakpoints",
        "reproducer_revision": "c47ae85 (before the retained download gained its one-pivot assertion)"
      },
      "summary": {
        "inputs": 1,
        "exit_code": 0,
        "stdout": "pivots=2 x=1 y=0",
        "expected_selection": "The paper objective admits a one-pivot repair by increasing x by 1. The current zero-breakpoint slope adjustment instead selects an initial zero-step pivot.",
        "verdict": "Valid final assignment in this example; confirmed selection discrepancy. No claim about broader correctness or performance."
      },
      "verification": {
        "passed": [
          "Single component debug execution finished within a ten-second timeout.",
          "Final assignment x=1 and y=0 satisfies the example."
        ],
        "pending": [
          "Correct the endpoint slope calculation and add zero/coincident/strict-bound regression coverage.",
          "Run the required remote solver and fuzz gates for any subsequent behavior change."
        ]
      },
      "notes": "The reproduction was initially compiled from a temporary copy; the same program, formatted with repository clang-format, is retained as a documentation download. Solver source is unchanged from the documentation source revision e6d9fcb.",
      "resolved_by": "2026-09-29-soi-endpoint-correction"
    },
    {
      "id": "2026-09-25-bridge-atoms-removal",
      "date": "2026-09-25",
      "recorded_at": "2026-09-25T13:07:49.192638+02:00",
      "commit": "e6d9fcb06f476375aded43a13c22a6d6b4939144",
      "kind": "cleanup-correctness-qualification",
      "decision": "accept removal of the superseded Boolean-domain bridge and selector; registration remains the sole encoding; no performance claim",
      "scope": "Remove code, option plumbing and bridge-only counters. Preserve registration and semantic tests. Repair the Boolean fuzz model selector discovered during qualification. Clarify premise-versus-clause storage in the DPLL(T) draft.",
      "metadata": "benchmarks/bridge-atoms-removal-20260925.json",
      "metadata_sha256": "afcb7e14cc08387b432f7f094a302511fe4b881ce934511444c724cccc9a3abe",
      "verification": {
        "build_job": "151436",
        "normal_job": "151439",
        "asan_job": "151440",
        "normal_ctest_groups": 43,
        "asan_ctest_groups": 43,
        "normal_ctest_seconds": 12.77,
        "asan_ctest_seconds": 97.9,
        "python_tests_final": 194,
        "python_job": "151449_10",
        "commands": [
          "make lint",
          "ctest --test-dir build-slurm-rel --timeout 300 --output-on-failure",
          "python3 -m unittest discover -s tests/python",
          "bash scripts/qualification/shared_assignment/asan.sbatch",
          "make docs",
          "make docs-next"
        ],
        "static_review": "128 tracked C++ translation units; clang-tidy exits zero with 16 deliberate enum-cast diagnostics and one external CLI11 diagnostic. 408 include-cleaner advisories inspected, including documentation examples; no newly identified unused include or blocking review issue.",
        "seed_checks": "12 QF_UFLRA seeds plus 2 scale seeds, under arithmetic-online and both-theories-online profiles, all PASS; exact commands in checks.sbatch",
        "docs": "Strict full builds of both books; source references remapped to e6d9fcb; 83 baseline pages and 1223 HTML IDs preserved; explanation storage illustrated with signed premises; CLI help matches captured output after command-name/whitespace normalization.",
        "recipe": "scripts/qualification/shared_assignment/checks.sbatch and asan.sbatch; complete GCCcore 11.3 toolchain plus matching C system headers via -idirafter for ASan"
      },
      "fuzz_summary": {
        "boolean_qf_uf": 1000,
        "mixed_qf_uflra": 1000,
        "finite_cases": 112,
        "quantified_uf": 1000,
        "quantified_profiles": 6,
        "dolmen_models_pass": 1209,
        "hard_failures_final": {
          "wrong_answer": 0,
          "solver_crash": 0,
          "parser_or_type_error": 0,
          "unsupported": 0,
          "timeout": 0,
          "invalid_model": 0,
          "reference_disagreement": 0
        }
      },
      "jobs": {
        "build": "151436",
        "normal": "151439",
        "asan": "151440",
        "boolean_retry": "151449_10",
        "quantified": "151442_0..3",
        "mixed": "151445_4"
      },
      "superseded_attempt": {
        "job": "151441_10",
        "status": "FAILED; harness defect, corrected in 6f46e32",
        "answers": {
          "PASS": 1000
        },
        "model_stage": {
          "pass": 598,
          "solver_error_after_unsat": 402
        },
        "triage": "Every error row is exactly an UNSAT input followed by get-model; each stdout says get-model requires a current SAT model. All SAT models passed. Repaired harness selects only successful SAT rows and requires replay to remain SAT; fresh retry is the accepted gate.",
        "artifacts": "results/bridge-atoms-removal-20260925/remote/boolean"
      },
      "artifacts": "results/bridge-atoms-removal-20260925",
      "limitations": [
        "Cleanup preserves the registration traversal and per-term operation byte-for-byte; no performance/default promotion or full-corpus benchmark claim.",
        "Quantified generation has 564 distinct input hashes across 1000 cases; 6000 Primo answers are reference-confirmed. cvc5 returned unknown on 312 inputs, all decided by Z3. Quantified SAT models were not independently checked.",
        "Independent model coverage is 598 Boolean QF_UF plus 583 general and 28 finite QF_UFLRA cases; the additional finite QF_UF answer gate does not include model replay."
      ]
    },
    {
      "id": "2026-09-25-shared-assignment-slurm",
      "started_at": "2026-09-25T10:57:31+02:00",
      "recorded_at": "2026-09-25T09:57:28+00:00",
      "date": "2026-09-25",
      "commit": "e4abefb9f19202c47458547fd37b67c8c858fea8",
      "kind": "correctness-and-migration-comparison",
      "decision": "accept shared assignment ownership; no profile/default promotion or performance improvement claim",
      "implementation_commit": "45e25a68916c30e3008ad50716b0c4e46a67abbc",
      "baseline_commit": "fd4d1eb3a40ccaf30fab823237849491ca34ac6c",
      "scope": "One observed-assignment mirror per SAT connection across every production route; kernel undo remains separate. C++ sources unchanged between implementation and measured build. Final harness/docs revisions do not change solver behavior.",
      "candidate": {
        "version": "primo 0.2.0\ngit: e4abefb\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07\n",
        "binary_sha256": "35b90610318700683cc807be1189e1a61d7b1e34e180b2a49d5a0feb36af05d3"
      },
      "reference_versions": {
        "z3": {
          "version": "Z3 version 5.1.0 - 64 bit\n",
          "sha256": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0"
        },
        "cvc5": {
          "version": "cvc5 1.3.4 [git f3b21c4 on branch HEAD]\ncompiled with GCC version Ubuntu Clang 18.1.3 (1ubuntu1) on May  7 2026 15:33:02\n\nCopyright (c) 2009-2026 by the authors and their institutional\naffiliations listed at https://cvc5.github.io/people.html\n\ncvc5 is open-source and is covered by the BSD license (modified).\n\nTHIS SOFTWARE IS PROVIDED AS-IS, WITHOUT ANY WARRANTIES.\nUSE AT YOUR OWN RISK.\n\nThis version of cvc5 is linked against the following non-(L)GPL'ed\nthird party libraries.\n\n  CaDiCaL - Simplified Satisfiability Solver\n  See https://github.com/arminbiere/cadical for copyright information.\n\n  SymFPU - The Symbolic Floating Point Unit\n  See https://github.com/martin-cs/symfpu/tree/CVC4 for copyright information.\n\nThis version of cvc5 is linked against the following third party\nlibraries covered by the LGPLv3 license.\nSee licenses/lgpl-3.0.txt for more information.\n\n  GMP - Gnu Multi Precision Arithmetic Library\n  See http://gmplib.org for copyright information.\n\n  LibPoly polynomial library\n  See https://github.com/SRI-CSL/libpoly for copyright and\n  licensing information.\n\ncvc5 is statically linked against these libraries. To recompile\nthis version of cvc5 with different versions of these libraries\nfollow the instructions on https://github.com/cvc5/cvc5/blob/main/INSTALL.md\n\nSee the file COPYING (distributed with the source code, and with\nall binaries) for the full cvc5 copyright, licensing, and (lack of)\nwarranty information.\n\n",
          "sha256": "4a93548398445cf1a774655583f5465b156c26f63f2cdfb94f4728fdf7adde46"
        },
        "dolmen": {
          "version": "0.10\n",
          "sha256": "08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e"
        }
      },
      "environment": {
        "execution": "remote SLURM via user-requested jump host; exact hostnames and absolute commands in preserved raw provenance",
        "build_jobs": [
          "151294",
          "151295"
        ],
        "main_gate_limits": "one CPU/4 GiB per task; array concurrency 4; per-input limits recorded by each driver",
        "comparison_limits": "5s per solve, 4 shards, two paired rounds with opposite arm order, one CPU/4 GiB per task",
        "sanitizer_limits": "4 CPUs/12 GiB; GCCcore 11.3, matching staged C headers after C++ include paths; address sanitizer, leak detection, 600s per CTest",
        "policy": "All accepted solver batches ran through SLURM. Earlier stopped local run remains preliminary only."
      },
      "verification": {
        "final_html_audit": "3337 local links/assets resolve; all 83 baseline pages and 1223 HTML IDs preserved; 16 draft pages retain navigation/review/support coverage; shared literature copies match",
        "final_docs": "make docs and make docs-next passed with strict full rebuilds in SLURM job 151407, source 166023b; isolated tracked documentation snapshot; both HTML trees collected for local preview",
        "final_candidate_sha256": "483612af0f4a3fd86f109ef1ec5d7c54155d08609a67a4f2ea28782eb1b9b649",
        "final_solver_build": "b26b8b5; job 151403; unchanged C++ sources",
        "final_repaired_mixed_gate": "job 151405 tasks 4/5: 1000 general plus 56 finite QF_UF and 56 finite QF_UFLRA per profile; all answers and selected SAT model replays pass",
        "final_gate_artifacts": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-final-b26b8b5",
        "docs_retry": "151404 caught three stale heading links after the status heading changed; repaired before final rendering",
        "normal_job": "151323",
        "ctest": 43,
        "python": 190,
        "extra_python_selection_tests": 2,
        "normal_commands": [
          "cmake --build build-slurm-rel -j4",
          "ctest --test-dir build-slurm-rel --timeout 300 --output-on-failure",
          "python3 -m unittest discover -s tests/python",
          "check_solver_seed_corpus.py: 12 mixed + 2 scale seeds in each of two exact online profiles"
        ],
        "asan_job": "151383",
        "asan_ctest": 43,
        "asan_seconds": 99.12,
        "lint": "make lint passed locally; syntax/static checks do not launch solvers",
        "static_review": "All 128 tracked C++ translation units reviewed; clang-tidy 19 pre-existing diagnostics, no new ones; include-cleaner advisory inspected; final changed-span scans clean. Logs retained with local review artifacts.",
        "docs_job_before_final_evidence": "151335; both strict books passed; final evidence text rebuilt separately",
        "setup_failures": {
          "151304": "ctest missing from PATH; retry uses .venv-build/bin/ctest",
          "151305": "compute nodes have no PyPI access; dependencies provisioned before retry",
          "151334": "system libasan linker script references absent file",
          "151352": "module initialization absent on compute nodes",
          "151359": "toolchain lacked compute-node C system headers",
          "151377": "C header search ordered before C++ include_next wrappers; fixed with -idirafter",
          "151355": "/usr/bin/time absent on compute nodes; replaced with Python resource RSS wrapper",
          "151364,151365,151366": "canceled dependent jobs after failed timing setup"
        }
      },
      "fuzz_runs": [
        {
          "name": "QF_UF online",
          "job_id": "151303",
          "task": 0,
          "seed": 202609250,
          "count": 1000,
          "timeout_seconds": 5,
          "counts": {
            "PASS": 1000
          },
          "commands": [
            [
              "python3",
              "scripts/fuzz_external.py",
              "--fuzzer",
              "fuzzsmt",
              "--solver",
              "${WORKDIR}/build-slurm-rel/primo --quiet --preprocessing-mode=off --euf-prop=online",
              "--refs",
              "z3",
              "cvc5",
              "--logic",
              "QF_UF",
              "--count",
              "1000",
              "--seed",
              "202609250",
              "--timeout",
              "5",
              "--fuzzer-args",
              "-ms 1 -Ms 2 -mv 2 -Mv 5 -mf 3 -mp 3 -ma 1 -Ma 3",
              "--out",
              "${WORKDIR}/fuzz-results/shared-assignment-e4abefb/task-0/answers"
            ]
          ],
          "summary": {
            "path": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb/task-0/answers/summary.csv",
            "sha256": "1663977b437535050c9b0f2dac1ebcdcb5b6ed5b2514211b509b0585bdf0ff42"
          },
          "provenance": {
            "path": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb/task-0/provenance.json",
            "sha256": "71746c4291276d46f3a0b83191fa783a41eaca58f0eee38cab70e58b2f548ac1"
          }
        },
        {
          "name": "QF_UF lazy",
          "job_id": "151303",
          "task": 1,
          "seed": 202609251,
          "count": 1000,
          "timeout_seconds": 5,
          "counts": {
            "PASS": 1000
          },
          "commands": [
            [
              "python3",
              "scripts/fuzz_external.py",
              "--fuzzer",
              "fuzzsmt",
              "--solver",
              "${WORKDIR}/build-slurm-rel/primo --quiet --preprocessing-mode=off --euf-engine=lazy --euf-prop=off",
              "--refs",
              "z3",
              "cvc5",
              "--logic",
              "QF_UF",
              "--count",
              "1000",
              "--seed",
              "202609251",
              "--timeout",
              "5",
              "--fuzzer-args",
              "-ms 1 -Ms 2 -mv 2 -Mv 5 -mf 3 -mp 3 -ma 1 -Ma 3",
              "--out",
              "${WORKDIR}/fuzz-results/shared-assignment-e4abefb/task-1/answers"
            ]
          ],
          "summary": {
            "path": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb/task-1/answers/summary.csv",
            "sha256": "9fdb7b2690310e0f7c4a1976c853b94a7478f8e95c99004b31f25dec62d2b43f"
          },
          "provenance": {
            "path": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb/task-1/provenance.json",
            "sha256": "ba5a1cef3561f26f9d46ef9b605442a2994e047f98c8f3fd058ab8ee3ddafb21"
          }
        },
        {
          "name": "QF_LRA",
          "job_id": "151303",
          "task": 2,
          "seed": 202609252,
          "count": 1000,
          "timeout_seconds": 5,
          "counts": {
            "PASS": 983,
            "TIMEOUT": 16,
            "REFERENCE_UNUSABLE": 1
          },
          "commands": [
            [
              "python3",
              "scripts/fuzz_external.py",
              "--fuzzer",
              "fuzzsmt",
              "--solver",
              "${WORKDIR}/build-slurm-rel/primo --quiet --preprocessing-mode=off",
              "--refs",
              "z3",
              "cvc5",
              "--logic",
              "QF_LRA",
              "--count",
              "1000",
              "--seed",
              "202609252",
              "--timeout",
              "5",
              "--fuzzer-args",
              "-mv 1 -Mv 4 -mc 1 -Mc 3 -Mbw 4",
              "--out",
              "${WORKDIR}/fuzz-results/shared-assignment-e4abefb/task-2/answers"
            ]
          ],
          "summary": {
            "path": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb/task-2/answers/summary.csv",
            "sha256": "61491466a94d9e41d43c676dd3d5d306bd89db543cbce1cc77689fc96846a2a1"
          },
          "provenance": {
            "path": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb/task-2/provenance.json",
            "sha256": "af22e5a48a7189e2e6a74b9581822523c818a5f8b483ce22de4f5579bca0932f"
          }
        },
        {
          "name": "QF_LIA",
          "job_id": "151303",
          "task": 3,
          "seed": 202609253,
          "count": 1000,
          "timeout_seconds": 5,
          "counts": {
            "PASS": 995,
            "TIMEOUT": 5
          },
          "commands": [
            [
              "python3",
              "scripts/fuzz_external.py",
              "--fuzzer",
              "fuzzsmt",
              "--solver",
              "${WORKDIR}/build-slurm-rel/primo --quiet --preprocessing-mode=off",
              "--refs",
              "z3",
              "cvc5",
              "--logic",
              "QF_LIA",
              "--count",
              "1000",
              "--seed",
              "202609253",
              "--timeout",
              "5",
              "--fuzzer-args",
              "-mv 1 -Mv 4 -mc 1 -Mc 3 -Mbw 4",
              "--out",
              "${WORKDIR}/fuzz-results/shared-assignment-e4abefb/task-3/answers"
            ]
          ],
          "summary": {
            "path": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb/task-3/answers/summary.csv",
            "sha256": "ec1ab79d32114200853b906cb6926fd523a1bfe8a2e0a2e51bccf1c265624ad1"
          },
          "provenance": {
            "path": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb/task-3/provenance.json",
            "sha256": "34cf17347d2e7efa1779cd3f11269ce92fde15a7438ada6d51e5670cbbd6c218"
          }
        },
        {
          "name": "QF_UFLIA online",
          "job_id": "151303",
          "task": 6,
          "seed": 202609256,
          "count": 1000,
          "timeout_seconds": 5,
          "counts": {
            "PASS": 999,
            "TIMEOUT": 1
          },
          "commands": [
            [
              "python3",
              "scripts/qf_uflia_fuzz.py",
              "--solver",
              "${WORKDIR}/build-slurm-rel/primo",
              "--solver-arg=--quiet",
              "--solver-arg=--preprocessing-mode=off",
              "--solver-arg=--euf-prop=online",
              "--ref",
              "z3",
              "--ref",
              "cvc5",
              "--count",
              "1000",
              "--seed",
              "202609256",
              "--timeout",
              "5",
              "--shape",
              "mixed",
              "--out",
              "${WORKDIR}/fuzz-results/shared-assignment-e4abefb/task-6/answers"
            ]
          ],
          "summary": {
            "path": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb/task-6/answers/summary.csv",
            "sha256": "8a77d91589d6d6ad6b694946e4260c23bea29ce703956c0786de3e6db9bbbece"
          },
          "provenance": {
            "path": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb/task-6/provenance.json",
            "sha256": "6da9560b4c216db3e32f06617e9ad74419dd26ba0f0073f76cca4e1f6221afa5"
          }
        },
        {
          "name": "QF_UFLIA offline",
          "job_id": "151303",
          "task": 7,
          "seed": 202609257,
          "count": 1000,
          "timeout_seconds": 5,
          "counts": {
            "PASS": 1000
          },
          "commands": [
            [
              "python3",
              "scripts/qf_uflia_fuzz.py",
              "--solver",
              "${WORKDIR}/build-slurm-rel/primo",
              "--solver-arg=--quiet",
              "--solver-arg=--preprocessing-mode=off",
              "--solver-arg=--no-qf-uflia-online-components",
              "--ref",
              "z3",
              "--ref",
              "cvc5",
              "--count",
              "1000",
              "--seed",
              "202609257",
              "--timeout",
              "5",
              "--shape",
              "mixed",
              "--out",
              "${WORKDIR}/fuzz-results/shared-assignment-e4abefb/task-7/answers"
            ]
          ],
          "summary": {
            "path": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb/task-7/answers/summary.csv",
            "sha256": "3754202a104da8ff86570aa040fbaf1a94f3af926417f90635cffe95efc01e80"
          },
          "provenance": {
            "path": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb/task-7/provenance.json",
            "sha256": "6ead908a7f97284920934631e5dcd36b46cce1be32190042c06818db8efb7ec4"
          }
        },
        {
          "name": "QF_LRA Boolean arithmetic with models",
          "job_id": "151303",
          "task": 17,
          "seed": 202609267,
          "count": 1000,
          "timeout_seconds": 5,
          "counts": {
            "PASS": 1000
          },
          "commands": [
            [
              "python3",
              "scripts/qf_lra_boolean_arithmetic_fuzz.py",
              "--solver",
              "${WORKDIR}/build-slurm-rel/primo",
              "--solver-arg=--quiet",
              "--solver-arg=--preprocessing-mode=off",
              "--count",
              "1000",
              "--seed",
              "202609267",
              "--timeout",
              "5",
              "--dolmen-timeout",
              "5",
              "--dolmen",
              "contrib/local/bin/dolmen",
              "--out",
              "${WORKDIR}/fuzz-results/shared-assignment-e4abefb/task-17/boolean"
            ]
          ],
          "summary": {
            "path": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb/task-17/boolean/summary.csv",
            "sha256": "02613a29e5c7c437b585f4176181d37f55cbc7900db51a349a3333acccde8bb1"
          },
          "provenance": {
            "path": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb/task-17/provenance.json",
            "sha256": "cbcfb0108e2ad6468e3d467e8a21b56513c06bc2744031b88e8e07d2f45f6a1c"
          }
        },
        {
          "name": "QF_UFLRA arithmetic",
          "answer_job_id": "151324",
          "model_job_id": "151353",
          "task": 4,
          "seed": 202609254,
          "solver_args": [
            "--quiet"
          ],
          "timeout_seconds": 5,
          "model_timeout_seconds": 10,
          "reference_commands": [
            "z3",
            "cvc5 (finite cases)"
          ],
          "generator": "qf_uflra_smoke_fuzz.py and finite_domain_fuzz.py; seeds +100000/+200000 for finite cases",
          "answer_counts": {
            "general": {
              "PASS": 1000
            },
            "finite-qf-uf": {
              "PASS": 56
            },
            "finite-qf-uflra": {
              "PASS": 56
            }
          },
          "model_counts": {
            "general": {
              "pass": 583
            },
            "finite-qf-uf": {
              "pass": 28
            },
            "finite-qf-uflra": {
              "pass": 28
            }
          },
          "artifacts": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-mixed-retry-e4abefb/task-4",
          "model_artifacts": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-mixed-models-e4abefb/task-4",
          "recipes": [
            "scripts/slurm_qf_uflra_fuzz_gate.sbatch",
            "scripts/qualification/shared_assignment/mixed-models.sbatch"
          ],
          "note": "Finite QF_UF uses preprocessing=strong. Initial tasks 4/5 supplied conflicting preprocessing options (exit 114); retry answers passed. Initial all-input model stage requested get-model after UNSAT and failed with expected command errors. Successful-SAT-only replay replaces that invalid measurement."
        },
        {
          "name": "QF_UFLRA online EUF and arithmetic",
          "answer_job_id": "151324",
          "model_job_id": "151353",
          "task": 5,
          "seed": 202609255,
          "solver_args": [
            "--quiet",
            "--qf-uflra-online-euf",
            "--euf-prop=online"
          ],
          "timeout_seconds": 5,
          "model_timeout_seconds": 10,
          "reference_commands": [
            "z3",
            "cvc5 (finite cases)"
          ],
          "generator": "qf_uflra_smoke_fuzz.py and finite_domain_fuzz.py; seeds +100000/+200000 for finite cases",
          "answer_counts": {
            "general": {
              "PASS": 1000
            },
            "finite-qf-uf": {
              "PASS": 56
            },
            "finite-qf-uflra": {
              "PASS": 56
            }
          },
          "model_counts": {
            "general": {
              "pass": 570
            },
            "finite-qf-uf": {
              "pass": 28
            },
            "finite-qf-uflra": {
              "pass": 28
            }
          },
          "artifacts": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-mixed-retry-e4abefb/task-5",
          "model_artifacts": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-mixed-models-e4abefb/task-5",
          "recipes": [
            "scripts/slurm_qf_uflra_fuzz_gate.sbatch",
            "scripts/qualification/shared_assignment/mixed-models.sbatch"
          ],
          "note": "Finite QF_UF uses preprocessing=strong. Initial tasks 4/5 supplied conflicting preprocessing options (exit 114); retry answers passed. Initial all-input model stage requested get-model after UNSAT and failed with expected command errors. Successful-SAT-only replay replaces that invalid measurement."
        },
        {
          "name": "retained UF",
          "job_id": "151303",
          "task": 8,
          "seed": 202609258,
          "summary": {
            "sessions": 100,
            "pass": 100,
            "queries": 900,
            "sat_models": 614,
            "untriaged_failure": 0,
            "failures": []
          },
          "artifact": {
            "path": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb/task-8/sessions/summary.json",
            "sha256": "b8b06c51e573e4450e45c95f82c89c941b016025872f4b34c4d3b2475bf74b8c"
          },
          "limits": "10s solver and Dolmen; 100 generated sessions"
        },
        {
          "name": "retained LRA",
          "job_id": "151303",
          "task": 9,
          "seed": 202609259,
          "summary": {
            "sessions": 100,
            "pass": 100,
            "sat_models": 800,
            "queries": 1100,
            "failures": [],
            "untriaged_failure": 0
          },
          "artifact": {
            "path": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb/task-9/sessions/summary.json",
            "sha256": "f2cd773e739cfdf4d01a2954fe9f756983b8c8989dd43b02c263534e09c9b6e9"
          },
          "limits": "10s solver and Dolmen; 100 generated sessions"
        },
        {
          "name": "UF valid generation and scope-preserving mutation",
          "job_id": "151336",
          "seed": 20260925,
          "generated_count": 1000,
          "mutated_count": 200,
          "limits": "5s per solver; 4 shards; max 1000 theory conflicts and 2000 quantifier instances per candidate",
          "reference_commands": [
            "contrib/local/bin/z3",
            "contrib/local/bin/cvc5"
          ],
          "generator": "scripts/quantifier_preparation_gate.py",
          "recipe": "scripts/qualification/shared_assignment/uf-extra.sbatch",
          "counts": {
            "generated": {
              "primo-registration-sum:unsat": 625,
              "primo-registration-max:unsat": 625,
              "primo-registration-max-colex:unsat": 625,
              "primo-registration-leximax:unsat": 625,
              "primo-registration-deepening:unsat": 625,
              "primo-registration-random:unsat": 625,
              "primo-bridge-atoms-sum:unsat": 625,
              "primo-bridge-atoms-max:unsat": 625,
              "primo-bridge-atoms-max-colex:unsat": 625,
              "primo-bridge-atoms-leximax:unsat": 625,
              "primo-bridge-atoms-deepening:unsat": 625,
              "primo-bridge-atoms-random:unsat": 625,
              "ref0:unsat": 625,
              "ref1:unsat": 313,
              "cases": 1000,
              "reference-definite": 1000,
              "ref1:unknown": 312,
              "primo-registration-sum:sat": 375,
              "primo-registration-max:sat": 375,
              "primo-registration-max-colex:sat": 375,
              "primo-registration-leximax:sat": 375,
              "primo-registration-deepening:sat": 375,
              "primo-registration-random:sat": 375,
              "primo-bridge-atoms-sum:sat": 375,
              "primo-bridge-atoms-max:sat": 375,
              "primo-bridge-atoms-max-colex:sat": 375,
              "primo-bridge-atoms-leximax:sat": 375,
              "primo-bridge-atoms-deepening:sat": 375,
              "primo-bridge-atoms-random:sat": 375,
              "ref0:sat": 375,
              "ref1:sat": 375
            },
            "mutations": {
              "primo-registration-sum:unknown": 105,
              "primo-bridge-atoms-sum:unknown": 102,
              "ref0:sat": 93,
              "ref1:unknown": 102,
              "cases": 200,
              "reference-definite": 182,
              "primo-registration-sum:unsat": 89,
              "primo-bridge-atoms-sum:unsat": 90,
              "ref0:unsat": 89,
              "ref1:unsat": 89,
              "ref0:timeout": 18,
              "reference-inconclusive": 18,
              "primo-bridge-atoms-sum:timeout": 8,
              "ref1:sat": 9,
              "primo-registration-sum:timeout": 6
            }
          },
          "artifacts": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-uf-extra-e4abefb"
        },
        {
          "name": "UF TypeFuzz retained-input audit",
          "generator_job_id": "151303",
          "triage_job_id": "151337",
          "tasks": "10..16",
          "seeds": "21 family-stratified small inputs from SMT-LIB 2025 UF; seed=202609250+task",
          "generator": "YinYang/typefuzz 0.3.0; 100 mutations per seed; 2s solver/reference; 1200s per shard; 20kB input limit",
          "reference_commands": [
            "contrib/local/bin/z3",
            "contrib/local/bin/cvc5 --enum-inst (60s original-seed confirmation, 30s mutation confirmation)"
          ],
          "counts": {
            "input-rejected-by-dolmen": 1615,
            "answer-pass": 82,
            "solver-unknown": 175,
            "solver-timeout": 27,
            "answer-confirmed-cvc5": 1
          },
          "invalid_diagnostics": {
            "unbound_identifier": 1490,
            "ill_typed_term": 125
          },
          "acceptance": "1615 malformed inputs excluded; 83 confirmed answers, 175 unknown and 27 timeout outcomes remain distinct; zero valid-input solver errors or wrong answers",
          "artifacts": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-uf-triage-e4abefb",
          "raw_mutants": "results/shared-assignment-20260925/remote/fuzz-results/shared-assignment-e4abefb",
          "recipe": "scripts/qualification/shared_assignment/uf-triage.sbatch"
        }
      ],
      "comparison": {
        "manifest": "benchmarks/shared-assignment-20260925/manifest.json",
        "summary": "benchmarks/shared-assignment-20260925/comparison-summary.json",
        "jobs": {
          "default": "151367",
          "online": "151371",
          "lazy-uf": "151372",
          "offline-uflia": "151373"
        },
        "reference_job": "151378",
        "reference_confirmation_job": "151402",
        "reference_note": "All definite reference answers agree. universalInstance needs cvc5 --enum-inst beyond the initial timeout/unknown reference results; confirmation is separate from timing.",
        "profiles": {
          "default": {
            "rows": 240,
            "baseline_solved": 212,
            "candidate_solved": 212,
            "par2_ratio": 1.0004204093136593,
            "common_runtime_ratio": 1.0104925378383103,
            "strict_timing_status": "needs-triage",
            "lost": [],
            "disagreements": [],
            "models": {
              "expected": 104,
              "outcomes": {
                "pass": 94,
                "input-nonconforming": 10
              }
            },
            "rss": {
              "baseline": {
                "min_kib": 18636,
                "median_kib": 45762.0,
                "max_kib": 71400
              },
              "candidate": {
                "min_kib": 18636,
                "median_kib": 45478.0,
                "max_kib": 73584
              }
            }
          },
          "online": {
            "rows": 240,
            "baseline_solved": 204,
            "candidate_solved": 204,
            "par2_ratio": 1.0002351161321519,
            "common_runtime_ratio": 1.006588702282971,
            "strict_timing_status": "pass",
            "lost": [],
            "disagreements": [],
            "models": {
              "expected": 104,
              "outcomes": {
                "pass": 94,
                "input-nonconforming": 10
              }
            },
            "rss": {
              "baseline": {
                "min_kib": 19464,
                "median_kib": 52994.0,
                "max_kib": 68336
              },
              "candidate": {
                "min_kib": 19464,
                "median_kib": 53132.0,
                "max_kib": 65952
              }
            }
          },
          "lazy-uf": {
            "rows": 62,
            "baseline_solved": 46,
            "candidate_solved": 46,
            "par2_ratio": 1.0000133064086612,
            "common_runtime_ratio": 1.0057081564580541,
            "strict_timing_status": "pass",
            "lost": [],
            "disagreements": [],
            "models": {
              "expected": 20,
              "outcomes": {
                "pass": 20
              }
            },
            "rss": {
              "baseline": {
                "min_kib": 18368,
                "median_kib": 18862.0,
                "max_kib": 19108
              },
              "candidate": {
                "min_kib": 18636,
                "median_kib": 18640.0,
                "max_kib": 19504
              }
            }
          },
          "offline-uflia": {
            "rows": 32,
            "baseline_solved": 26,
            "candidate_solved": 26,
            "par2_ratio": 1.001798843570468,
            "common_runtime_ratio": 1.012322244937915,
            "strict_timing_status": "needs-triage",
            "lost": [],
            "disagreements": [],
            "models": {
              "expected": 12,
              "outcomes": {
                "pass": 12
              }
            },
            "rss": {
              "baseline": {
                "min_kib": 19124,
                "median_kib": 21048.0,
                "max_kib": 24292
              },
              "candidate": {
                "min_kib": 19128,
                "median_kib": 21496.0,
                "max_kib": 24392
              }
            }
          }
        },
        "interpretation": "Solved counts unchanged in all four profiles. Default/offline-Int common times exceed strict 1% threshold by 0.05/0.23 percentage points; preserve needs-triage flags, do not claim a speed benefit. Default mixed scheduling changes work counters (generated case-0833: SAT calls 4 to 16; case-0666: 9 to 6). RSS includes Python harness/descendants and does not isolate trail memory. This sample is not a full-corpus evaluation."
      },
      "model_replay": {
        "jobs": [
          "151379",
          "151395"
        ],
        "wider_logic_triage_job": "151399",
        "expected_sat": 240,
        "replayed_sat": 240,
        "direct_dolmen_pass": 220,
        "wider_logic_dolmen_pass": 20,
        "invalid_models": 0,
        "changed_answers": 0,
        "solver_errors": 0,
        "timeouts": 0,
        "missing": 0,
        "limits": "30s model production and validator; separate from timing",
        "limitation": "Five generated QF_LRA inputs (20 profile/round rows) rejected for constant negative-denominator syntax. Same saved assertions and model validate with --force-smtlib2-logic=QF_NRA. Strict declared-logic coverage remains incomplete for those 20; do not count them as direct passes. No quantified-UF SAT row was produced."
      },
      "artifacts": {
        "collected_root": "results/shared-assignment-20260925/remote",
        "reproducible_recipes": "scripts/qualification/shared_assignment/",
        "main_gate": "scripts/shared_assignment_gate.py",
        "large_artifacts": "ignored results/fuzz directories; retained both locally and on SLURM; no generated inputs or binaries committed"
      }
    },
    {
      "id": "2026-09-25-shared-assignment-local-preliminary",
      "date": "2026-09-25",
      "commit": "45e25a68916c30e3008ad50716b0c4e46a67abbc",
      "kind": "preliminary-correctness",
      "evidence_status": "preliminary; SLURM qualification pending",
      "scope": "Shared assignment ownership across all routes. Local batches were launched contrary to the owner's standing SLURM requirement and stopped when corrected; they do not complete the planned qualification. All local descendants were terminated.",
      "binary_sha256": "ef596e8023a978729f90de06dfadae851084ae598740d596c710996f0afff4c7",
      "version": "primo 0.2.0\ngit: 45e25a6\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07\n",
      "environment": {
        "execution": "local workstation; six driver threads",
        "resource_limits": "5s per generated/reference process; 2s mutation; 10s retained-session/model stages; no explicit memory cap",
        "exact_host_and_commands": "fuzz-results/shared-assignment-45e25a6/commands.json",
        "metadata_sha256": "82c90aab3c79265154e637a566e374ec2a3978dc7c51641a078804aaf9d16992"
      },
      "runs": [
        {
          "name": "qf_uf-online",
          "command": [
            "python3",
            "scripts/fuzz_external.py",
            "--fuzzer",
            "fuzzsmt",
            "--solver",
            "results/shared-assignment-20260925/bin/primo-45e25a6 --quiet --preprocessing-mode=off --euf-prop=online",
            "--refs",
            "z3",
            "cvc5",
            "--logic",
            "QF_UF",
            "--count",
            "1000",
            "--seed",
            "20260925",
            "--timeout",
            "5",
            "--fuzzer-args",
            "-ms 1 -Ms 2 -mv 2 -Mv 5 -mf 3 -mp 3 -ma 1 -Ma 3",
            "--out",
            "fuzz-results/shared-assignment-45e25a6/qf_uf-online"
          ],
          "artifacts": "fuzz-results/shared-assignment-45e25a6/qf_uf-online",
          "rows": 1000,
          "counts": {
            "PASS": 1000
          },
          "summary_sha256": "0d470e190d34597e0e08bfd60ef8fa733b6f2651bab25b7110e35439e8e20471",
          "status": "completed locally; preliminary only",
          "driver": {
            "name": "qf_uf-online",
            "exit_code": 0,
            "elapsed_seconds": 42.24014687538147
          }
        },
        {
          "name": "qf_uf-lazy",
          "command": [
            "python3",
            "scripts/fuzz_external.py",
            "--fuzzer",
            "fuzzsmt",
            "--solver",
            "results/shared-assignment-20260925/bin/primo-45e25a6 --quiet --preprocessing-mode=off --euf-engine=lazy --euf-prop=off",
            "--refs",
            "z3",
            "cvc5",
            "--logic",
            "QF_UF",
            "--count",
            "1000",
            "--seed",
            "20260925",
            "--timeout",
            "5",
            "--fuzzer-args",
            "-ms 1 -Ms 2 -mv 2 -Mv 5 -mf 3 -mp 3 -ma 1 -Ma 3",
            "--out",
            "fuzz-results/shared-assignment-45e25a6/qf_uf-lazy"
          ],
          "artifacts": "fuzz-results/shared-assignment-45e25a6/qf_uf-lazy",
          "rows": 1000,
          "counts": {
            "PASS": 1000
          },
          "summary_sha256": "166f35553466eb69d3abc01f60a19a46a64d08ae4dc70332f55f1aeff2b5cdf1",
          "status": "completed locally; preliminary only",
          "driver": {
            "name": "qf_uf-lazy",
            "exit_code": 0,
            "elapsed_seconds": 40.280831813812256
          }
        },
        {
          "name": "qf_lra-default",
          "command": [
            "python3",
            "scripts/fuzz_external.py",
            "--fuzzer",
            "fuzzsmt",
            "--solver",
            "results/shared-assignment-20260925/bin/primo-45e25a6 --quiet --preprocessing-mode=off",
            "--refs",
            "z3",
            "cvc5",
            "--logic",
            "QF_LRA",
            "--count",
            "1000",
            "--seed",
            "20260925",
            "--timeout",
            "5",
            "--fuzzer-args",
            "-mv 1 -Mv 5 -mc 1 -Mc 3 -Mbw 4",
            "--out",
            "fuzz-results/shared-assignment-45e25a6/qf_lra-default"
          ],
          "artifacts": "fuzz-results/shared-assignment-45e25a6/qf_lra-default",
          "status": "interrupted; gate incomplete"
        },
        {
          "name": "qf_lia-default",
          "command": [
            "python3",
            "scripts/fuzz_external.py",
            "--fuzzer",
            "fuzzsmt",
            "--solver",
            "results/shared-assignment-20260925/bin/primo-45e25a6 --quiet --preprocessing-mode=off",
            "--refs",
            "z3",
            "cvc5",
            "--logic",
            "QF_LIA",
            "--count",
            "1000",
            "--seed",
            "20260925",
            "--timeout",
            "5",
            "--fuzzer-args",
            "-mv 1 -Mv 4 -mc 1 -Mc 3 -Mbw 4",
            "--out",
            "fuzz-results/shared-assignment-45e25a6/qf_lia-default"
          ],
          "artifacts": "fuzz-results/shared-assignment-45e25a6/qf_lia-default",
          "rows": 1000,
          "counts": {
            "PASS": 993,
            "TIMEOUT": 6,
            "REFERENCE_UNUSABLE": 1
          },
          "summary_sha256": "58093e4c406c408c903f309e4cec3e1f9bc959b87ea74d74b84e7518389d9a04",
          "status": "completed locally; preliminary only",
          "driver": {
            "name": "qf_lia-default",
            "exit_code": 1,
            "elapsed_seconds": 205.89162850379944
          }
        },
        {
          "name": "qf_uflra-arithmetic",
          "command": [
            "python3",
            "scripts/qf_uflra_smoke_fuzz.py",
            "--solver",
            "results/shared-assignment-20260925/bin/primo-45e25a6",
            "--ref",
            "z3",
            "--count",
            "1000",
            "--seed",
            "20260925",
            "--timeout",
            "5",
            "--shape",
            "mixed",
            "--solver-arg=--quiet",
            "--solver-arg=--preprocessing-mode=off",
            "--out",
            "fuzz-results/shared-assignment-45e25a6/qf_uflra-arithmetic"
          ],
          "artifacts": "fuzz-results/shared-assignment-45e25a6/qf_uflra-arithmetic",
          "rows": 1000,
          "counts": {
            "PASS": 1000
          },
          "summary_sha256": "26039c2d536788d7816f272b2f9b45455d4c403e94a3ec4cb2fe27c2e87bf31f",
          "status": "completed locally; preliminary only",
          "driver": {
            "name": "qf_uflra-arithmetic",
            "exit_code": 0,
            "elapsed_seconds": 28.49964928627014
          }
        },
        {
          "name": "qf_uflra-both",
          "command": [
            "python3",
            "scripts/qf_uflra_smoke_fuzz.py",
            "--solver",
            "results/shared-assignment-20260925/bin/primo-45e25a6",
            "--ref",
            "z3",
            "--count",
            "1000",
            "--seed",
            "20260925",
            "--timeout",
            "5",
            "--shape",
            "mixed",
            "--solver-arg=--quiet",
            "--solver-arg=--preprocessing-mode=off",
            "--solver-arg=--qf-uflra-online-euf",
            "--solver-arg=--euf-prop=online",
            "--out",
            "fuzz-results/shared-assignment-45e25a6/qf_uflra-both"
          ],
          "artifacts": "fuzz-results/shared-assignment-45e25a6/qf_uflra-both",
          "rows": 1000,
          "counts": {
            "PASS": 1000
          },
          "summary_sha256": "34ff15bd1823197180ed2a164cc85b582ea54ddc6ec5290862b3d62c226f691e",
          "status": "completed locally; preliminary only",
          "driver": {
            "name": "qf_uflra-both",
            "exit_code": 0,
            "elapsed_seconds": 28.217936277389526
          }
        },
        {
          "name": "qf_uflia-online",
          "command": [
            "python3",
            "scripts/qf_uflia_fuzz.py",
            "--solver",
            "results/shared-assignment-20260925/bin/primo-45e25a6",
            "--ref",
            "z3",
            "--count",
            "1000",
            "--seed",
            "20260925",
            "--timeout",
            "5",
            "--shape",
            "mixed",
            "--ref",
            "cvc5",
            "--solver-arg=--quiet",
            "--solver-arg=--preprocessing-mode=off",
            "--solver-arg=--euf-prop=online",
            "--out",
            "fuzz-results/shared-assignment-45e25a6/qf_uflia-online"
          ],
          "artifacts": "fuzz-results/shared-assignment-45e25a6/qf_uflia-online",
          "rows": 1000,
          "counts": {
            "PASS": 1000
          },
          "summary_sha256": "09b3205e00e0e2281c4dda052bcf6aede43501cc4c4624903572a83e27434a30",
          "status": "completed locally; preliminary only",
          "driver": {
            "name": "qf_uflia-online",
            "exit_code": 0,
            "elapsed_seconds": 38.849984884262085
          }
        },
        {
          "name": "qf_uflia-offline",
          "command": [
            "python3",
            "scripts/qf_uflia_fuzz.py",
            "--solver",
            "results/shared-assignment-20260925/bin/primo-45e25a6",
            "--ref",
            "z3",
            "--count",
            "1000",
            "--seed",
            "20260925",
            "--timeout",
            "5",
            "--shape",
            "mixed",
            "--ref",
            "cvc5",
            "--solver-arg=--quiet",
            "--solver-arg=--preprocessing-mode=off",
            "--solver-arg=--no-qf-uflia-online-components",
            "--out",
            "fuzz-results/shared-assignment-45e25a6/qf_uflia-offline"
          ],
          "artifacts": "fuzz-results/shared-assignment-45e25a6/qf_uflia-offline",
          "rows": 1000,
          "counts": {
            "PASS": 1000
          },
          "summary_sha256": "f6a2727a5fe5b6c128706f5880facba514eabd0c6c5dfd40df70d954d2fca87c",
          "status": "completed locally; preliminary only",
          "driver": {
            "name": "qf_uflia-offline",
            "exit_code": 0,
            "elapsed_seconds": 38.53974962234497
          }
        },
        {
          "name": "retained-uf",
          "command": [
            "python3",
            "scripts/incremental_uf_gate.py",
            "--kind",
            "generated",
            "--seed",
            "20260925",
            "--count",
            "100",
            "--solver",
            "results/shared-assignment-20260925/bin/primo-45e25a6",
            "--ref",
            "contrib/local/bin/z3",
            "--dolmen",
            "contrib/local/bin/dolmen",
            "--expected-git",
            "45e25a6",
            "--timeout",
            "10",
            "--dolmen-timeout",
            "10",
            "--solver-arg=--incremental-mode=assumptions",
            "--solver-arg=--preprocessing-mode=off",
            "--solver-arg=--euf-prop=online",
            "--out",
            "fuzz-results/shared-assignment-45e25a6/retained-uf"
          ],
          "artifacts": "fuzz-results/shared-assignment-45e25a6/retained-uf",
          "summary": {
            "sessions": 100,
            "pass": 100,
            "queries": 900,
            "sat_models": 614,
            "untriaged_failure": 0,
            "failures": []
          },
          "status": "completed locally; preliminary only",
          "driver": {
            "name": "retained-uf",
            "exit_code": 0,
            "elapsed_seconds": 27.2111713886261
          }
        },
        {
          "name": "retained-lra",
          "command": [
            "python3",
            "scripts/incremental_lra_gate.py",
            "--kind",
            "generated",
            "--seed",
            "20260925",
            "--count",
            "100",
            "--solver",
            "results/shared-assignment-20260925/bin/primo-45e25a6",
            "--ref",
            "contrib/local/bin/z3",
            "--dolmen",
            "contrib/local/bin/dolmen",
            "--expected-git",
            "45e25a6",
            "--timeout",
            "10",
            "--dolmen-timeout",
            "10",
            "--solver-arg=--incremental-mode=assumptions",
            "--solver-arg=--preprocessing-mode=off",
            "--out",
            "fuzz-results/shared-assignment-45e25a6/retained-lra"
          ],
          "artifacts": "fuzz-results/shared-assignment-45e25a6/retained-lra",
          "summary": {
            "sessions": 100,
            "pass": 100,
            "sat_models": 800,
            "queries": 1100,
            "failures": [],
            "untriaged_failure": 0
          },
          "status": "completed locally; preliminary only",
          "driver": {
            "name": "retained-lra",
            "exit_code": 0,
            "elapsed_seconds": 35.66078972816467
          }
        },
        {
          "name": "uf-mutation",
          "command": [
            "scripts/yinyang_fuzz.sh",
            "--seeds",
            "tmp/shared-assignment-data/uf-seeds",
            "--solver",
            "results/shared-assignment-20260925/bin/primo-45e25a6 --quiet --preprocessing-mode=off",
            "--ref",
            "contrib/local/bin/z3",
            "--seconds",
            "1800",
            "--iterations",
            "100",
            "--solver-timeout",
            "2",
            "--bugs",
            "fuzz-results/shared-assignment-45e25a6/uf-mutation/bugs",
            "--scratch",
            "fuzz-results/shared-assignment-45e25a6/uf-mutation/scratch",
            "--logs",
            "fuzz-results/shared-assignment-45e25a6/uf-mutation/logs",
            "--file-size-limit",
            "20000",
            "--typefuzz",
            "/tmp/primo-shared-yinyang-venv/bin/typefuzz",
            "--random-seed",
            "20260925",
            "--keep-logic",
            "--hoist-declarations",
            "--keep-mutants"
          ],
          "artifacts": "fuzz-results/shared-assignment-45e25a6/uf-mutation",
          "status": "interrupted; gate incomplete"
        }
      ],
      "partial": {
        "qf_lra": {
          "log_rows": 487,
          "pass": 473,
          "timeout": 14,
          "complete_summary": false
        },
        "uf_mutation": {
          "retained_files": 701,
          "bugs_found": 0,
          "status": "interrupted; inputs not independently classified; no passing-gate claim"
        }
      },
      "verification": {
        "normal": "43 CTest groups; 188 Python tests before adding the SLURM driver",
        "asan": "43 CTest groups; final reason/reconnect test rerun under ASan",
        "static": "128 tracked C++ translation units; 19 baseline diagnostics; include-cleaner advisory reviewed",
        "documentation": "Both strict books build; 321 source links checked; 83 old pages and 1223 HTML IDs preserved; five DPLL(T) example profiles pass"
      },
      "remaining": "Fresh SLURM six-logic gates and UF mutation classification; paired fd4d1eb comparison; separate SAT model replay; final qualification record"
    },
    {
      "id": "2026-09-24-euf-assignment-rollback-ac2aaaf",
      "date": "2026-09-24",
      "commit": "ac2aaaf2894207047cdd5468b3ccad1a6436d3a5",
      "branch": "docs/public-repository-migration",
      "kind": "correctness-regression-and-fuzz",
      "scope": "Repair OnlineEufPropagator decision-boundary indexing; preserve root and retained-level assignment markers. Shared assignment ownership remains deferred. No algorithm/default/performance promotion.",
      "environment": {
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "platform": "Linux-7.0.0-31-generic-x86_64-with-glibc2.39",
        "execution": "local; three independent generator drivers; one solver process at a time per driver",
        "limits": {
          "timeout_seconds_per_solver_process": 5,
          "memory_limit": "none explicitly imposed"
        },
        "binary_sha256": "e8908704cde1b076f994517e6b58c18e72229c3ef8b290fe3b31772f109675e8",
        "z3": "Z3 version 5.0.0 - 64 bit",
        "cvc5": "cvc5 1.3.4 [git f3b21c4 on branch HEAD]",
        "fuzzsmt_jar_sha256": "89f887283d409842ebb19af6fce7a33a1b4a6c006746801b98ca8d716a3b0552",
        "build": "Release; CaDiCaL 3.0.0 7b99c07; clean committed build of ac2aaaf; subsequent changes are documentation only"
      },
      "regression": {
        "baseline": "b0a1072 with the new test file and CMake target; existing solver source unchanged",
        "before": "Three deterministic groups fail: root assignments, retained level, empty levels/repeated backtracks. Conflict explanations and reassignment/exported-model-fact groups pass. No incorrect SAT/UNSAT answer reproduced.",
        "after": "All five groups pass. Explanations checked independently over all 5^5 interpretations of five constants and against current assignments. The mixed QF_UFLRA rejected-candidate-merge test now requests and validates a model and requires zero recovery assignments, replacing its previous positive counter expectation.",
        "before_log": "fuzz-results/euf-rollback-20260924-ac2aaaf/callback-before.log",
        "after_log": "fuzz-results/euf-rollback-20260924-ac2aaaf/callback-after.log",
        "tests": [
          "tests/unit/euf_callback_tests.cpp",
          "tests/unit/qf_lra_solver_tests.cpp:qf_uf_lra_live_euf_model_rolls_back_rejected_candidate_merges",
          "benchmarks/smoke/qf_uf/euf_retained_equalities_unsat.smt2"
        ]
      },
      "verification": {
        "make check": "PASS: 42 CTest suites, 188 Python tests, lint/format",
        "make asan-test": "PASS: 42 suites with detect_leaks=1:strict_init_order=1; focused callback executable rebuilt and rerun under ASan after direct-include cleanup",
        "make docs; make docs-next": "PASS before source commit and after the adjacent evidence/source-link update; 319 source links validated, local HTML checked, 83 baseline pages and 1223 HTML IDs preserved",
        "make tidy": "124 tracked source/test translation units; 19 diagnostics identical to prior baseline: 18 unchanged option-name enum-cast diagnostics, one external CLI11 potential-leak diagnostic",
        "make include-cleaner": "390 advisories identical to prior baseline; 22 unused-header suggestions inspected (21 paired self-includes and actually used variant include); no newly introduced diagnostics",
        "code_review": "No blocking issue in focused repair; pre-existing static-analysis cleanup and assignment-owner consolidation remain deferred"
      },
      "smoke": {
        "input": "benchmarks/smoke/qf_uf/euf_retained_equalities_unsat.smt2",
        "expected": "unsat",
        "command_template": "./build/primo --quiet <profile> benchmarks/smoke/qf_uf/euf_retained_equalities_unsat.smt2",
        "profiles": [
          "defaults",
          "--preprocessing-mode=off --euf-prop=online",
          "--preprocessing-mode=off --euf-prop=conflict",
          "--preprocessing-mode=off --euf-engine=lazy --euf-prop=off",
          "--preprocessing-mode=off --incremental-mode=assumptions --euf-prop=online"
        ],
        "references": [
          "z3 benchmarks/smoke/qf_uf/euf_retained_equalities_unsat.smt2",
          "cvc5 benchmarks/smoke/qf_uf/euf_retained_equalities_unsat.smt2"
        ],
        "result": "All agree; no prescribed SAT decision sequence"
      },
      "runs": [
        {
          "logic": "QF_UF",
          "generator": "FuzzSMT 0.3",
          "generator_commit": "ac2aaaf2894207047cdd5468b3ccad1a6436d3a5",
          "seed": 20260924,
          "count": 1000,
          "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet --preprocessing-mode=off --euf-prop=online' --refs z3 cvc5 --logic QF_UF --count 1000 --seed 20260924 --timeout 5 --fuzzer-args '-ms 1 -Ms 2 -mv 2 -Mv 5 -mf 3 -mp 3 -ma 1 -Ma 3' --out fuzz-results/euf-rollback-20260924-ac2aaaf/qf-uf",
          "reference_commands": [
            "z3 <case>",
            "cvc5 <case>"
          ],
          "timeout_seconds_per_solver_process": 5,
          "artifact_directory": "fuzz-results/euf-rollback-20260924-ac2aaaf/qf-uf",
          "summary_csv": "fuzz-results/euf-rollback-20260924-ac2aaaf/qf-uf/summary.csv",
          "summary_sha256": "03a73c753d899d5607fa331a7a26bb2b87fa80266b6a1b6bd9ad98c27917279d",
          "answers": {
            "sat": 908,
            "unsat": 92
          },
          "counts": {
            "pass": 1000,
            "wrong_answer": 0,
            "crash": 0,
            "parser_or_type_error": 0,
            "timeout": 0,
            "unsupported": 0,
            "reference_disagreement": 0,
            "unknown": 0
          },
          "exit_code": 0
        },
        {
          "logic": "QF_UFLRA",
          "generator": "Primo original scripts/qf_uflra_smoke_fuzz.py",
          "generator_commit": "ac2aaaf2894207047cdd5468b3ccad1a6436d3a5",
          "seed": 20260924,
          "count": 1000,
          "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260924 --timeout 5 --shape mixed --solver-arg=--quiet --solver-arg=--preprocessing-mode=off --solver-arg=--qf-uflra-online-euf --solver-arg=--euf-prop=online --out fuzz-results/euf-rollback-20260924-ac2aaaf/qf-uflra",
          "reference_commands": [
            "z3 <case>"
          ],
          "timeout_seconds_per_solver_process": 5,
          "artifact_directory": "fuzz-results/euf-rollback-20260924-ac2aaaf/qf-uflra",
          "summary_csv": "fuzz-results/euf-rollback-20260924-ac2aaaf/qf-uflra/summary.csv",
          "summary_sha256": "29460decd909fa68e8e85c08d03df0c658a4f59b6a66d184bb29b302386385bc",
          "answers": {
            "unsat": 432,
            "sat": 568
          },
          "counts": {
            "pass": 1000,
            "wrong_answer": 0,
            "crash": 0,
            "parser_or_type_error": 0,
            "timeout": 0,
            "unsupported": 0,
            "reference_disagreement": 0,
            "unknown": 0
          },
          "exit_code": 0
        },
        {
          "logic": "QF_UFLIA",
          "generator": "Primo original scripts/qf_uflia_fuzz.py",
          "generator_commit": "ac2aaaf2894207047cdd5468b3ccad1a6436d3a5",
          "seed": 20260924,
          "count": 1000,
          "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflia_fuzz.py --solver ./build/primo --ref z3 --ref cvc5 --count 1000 --seed 20260924 --timeout 5 --shape mixed --solver-arg=--quiet --solver-arg=--preprocessing-mode=off --solver-arg=--euf-prop=online --out fuzz-results/euf-rollback-20260924-ac2aaaf/qf-uflia",
          "reference_commands": [
            "z3 <case>",
            "cvc5 <case>"
          ],
          "timeout_seconds_per_solver_process": 5,
          "artifact_directory": "fuzz-results/euf-rollback-20260924-ac2aaaf/qf-uflia",
          "summary_csv": "fuzz-results/euf-rollback-20260924-ac2aaaf/qf-uflia/summary.csv",
          "summary_sha256": "0514337a316d13ff16bf126dc67980335b0ee774c463623d940758deb1d41a84",
          "answers": {
            "unsat": 501,
            "sat": 499
          },
          "counts": {
            "pass": 1000,
            "wrong_answer": 0,
            "crash": 0,
            "parser_or_type_error": 0,
            "timeout": 0,
            "unsupported": 0,
            "reference_disagreement": 0,
            "unknown": 0
          },
          "exit_code": 0
        }
      ],
      "aggregate": {
        "generated_cases": 3000,
        "pass": 3000,
        "wrong_answer": 0,
        "crash": 0,
        "parser_or_type_error": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "unknown": 0
      },
      "artifacts": {
        "directory": "fuzz-results/euf-rollback-20260924-ac2aaaf",
        "metadata": "fuzz-results/euf-rollback-20260924-ac2aaaf/metadata.json",
        "metadata_sha256": "5e6c12d4c32852ed1eea7ab342fcb0635be08ca25a46c8d910b684e50b1b3c5e",
        "retention": "All 3000 generated cases and summaries retained locally under ignored fuzz-results; commands, counts and hashes committed in this ledger. No external archive/publication."
      },
      "limitations": [
        "Answer-comparison fuzzing does not independently validate printed SAT models; the strengthened mixed unit regression uses Primo typed-model validation.",
        "Direct callback tests do not deterministically exercise borrowed-model-scope deferred notifications or every combined-theory schedule.",
        "No real-corpus performance comparison, mutation campaign, or default-promotion claim.",
        "The reproduced regression is lost propagation, not a demonstrated wrong SAT/UNSAT answer."
      ],
      "evidence_status": "current"
    },
    {
      "id": "2026-09-15-quantifiers-merge-into-main",
      "date": "2026-09-15",
      "commit": "90ac7e9",
      "branch": "main",
      "kind": "merge-record",
      "scope": "Merge 90ac7e9 integrates quantifiers at 42a9915 into main at 18a1e8d. The merge tree is identical to 42a9915 (git diff quantifiers 90ac7e9 is empty), so the branch qualification applies to main unchanged. No new solver runs were made for the merge itself.",
      "environment": {
        "host": "local repository; qualification ran on the CIIRC SLURM cluster",
        "baseline": "origin/main 18a1e8d (version 0.2.0). c7bc7c0 was merged into quantifiers at ff72a12 before qualification; 42a9915 merges 18a1e8d, which changes only the version string in src/main.cpp.",
        "candidate": "quantifiers 42a9915; solver sources identical to 3b9264a apart from the version string"
      },
      "commands": {
        "merge": "git merge --no-ff origin/main (on quantifiers, giving 42a9915); git branch -f main origin/main; git merge --no-ff quantifiers (in a worktree of main); git diff --stat quantifiers HEAD (empty)"
      },
      "results": {
        "evidence": "2026-09-14-quantifiers-merge-readiness-ff72a12: quantifier preparation gate, QF_UFLIA and QF_UF fuzz gates, preservation against origin/main c7bc7c0 (answers identical; QF_UFLIA EUF assignment-notification counters higher from the dispatcher detach of 2fb97bd), UF typefuzz and the UF division. 2026-09-15-quantifiers-instances-per-round-attribution-145630 and 2026-09-15-quantifiers-stall-cutoff-72d00d3: rounds of 128 with the stall cutoff solve 1,948 UF-division files with no wrong answer or reference disagreement, after a clean preparation gate and UF typefuzz. 2026-09-15-quantifiers-cvc5-pool-checks: cvc5 pools confirm 1,601 of the 1,947 unsat answers and refute none; the negative control gives no unsat. 2026-09-15-quantifiers-uf-cvc5-enumerative-146116: cvc5 --enum-inst --no-e-matching solves 2,930 for comparison.",
        "after_qualification": "9e6fd5e, ab9d240 and 3b9264a add the pool export behind --quantifier-export-pools (off by default: the component records nothing) and the checking script; 9710505 and 57f56e3 change documentation only. At 3b9264a: 41/41 CTest, 41/41 ASan CTest, lint and the script tests pass; the pool-check jobs ran the 3b9264a binary with the export on over the 1,947 files. At 42a9915: make check passes (41/41 CTest, 188 Python tests) and primo --version reports 0.2.0.",
        "open": "Nine reference-less unsat answers remain unconfirmed by the pool check (cvc5 --enum-inst answers 36 of the 38). 345 pool checks are inconclusive; for two small examples the exported instances suffice when asserted as ground instances, so cvc5 --pool-inst does not use pools that are sufficient. Primo solves 982 fewer UF files than cvc5's enumerative instantiation; the entailment check and fail masks are not implemented (docs/quantifier-entailment-design.md)."
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-15-quantifiers-uf-cvc5-enumerative-146116",
      "date": "2026-09-15",
      "commit": "3b9264a",
      "branch": "quantifiers",
      "kind": "reference-configuration-comparison",
      "scope": "cvc5 restricted to enumerative instantiation without E-matching over the SMT-LIB UF division, the same technique Primo's quantified route implements, compared with Primo at its current defaults (145714, 72d00d3), default cvc5 and Z3 (143196). The Primo binary is not rerun; the commit names the workspace the job ran from.",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute, 80 single-CPU array tasks",
        "solver": "contrib/local/bin/cvc5 --enum-inst --no-e-matching (cvc5 1.3.4 f3b21c4); options chosen and checked by running the binary (a toy Skolem problem: default unknown, --enum-inst unsat; llist2 x2015_09_10_16_53_56_947_1222396 unsat only without E-matching within 20 s)",
        "corpus": "tmp/UF hard links of the 7,590-file division (manifest prefix 38feaaabff90657e)",
        "timeout": "60 s"
      },
      "jobs": {
        "cvc5_enum": "146116 (80 tasks, all COMPLETED)"
      },
      "commands": {
        "cvc5_enum": "sbatch --array=0-79%80 --export=\"ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_COMPARE_ROOT=tmp/UF,PRIMO_COMPARE_TIMEOUT=60,PRIMO_COMPARE_SHARDS=80,PRIMO_COMPARE_SOLVERS=cvc5-enum=contrib/local/bin/cvc5 --enum-inst --no-e-matching\" scripts/slurm_uf_quantifier_compare.sbatch",
        "summary": "python3 analyze_cvc5_enum.py uf-quantifier-compare-146116 (scratch analyzer; Primo from 145714, default cvc5 and Z3 from 143196); enum-summary.json"
      },
      "results": {
        "solve_counts": "cvc5 --enum-inst --no-e-matching 2,930 (1 sat, 2,929 unsat; 59 unknown, 4,601 timeouts), PAR2 564,369. Primo 72d00d3 1,948, PAR2 682,792. Default cvc5 3,154, PAR2 534,091. Z3 2,765, PAR2 580,843. PAR2 counts a timeout as 120 s.",
        "correctness": "0 wrong answers against :status and 0 disagreements with Primo, default cvc5 or Z3.",
        "pairwise": "Primo only 21, cvc5-enum only 1,003; default cvc5 only 399, cvc5-enum only 175. Virtual best Primo and cvc5-enum 2,951; default cvc5 and cvc5-enum 3,329; all four 3,452.",
        "families": "files; cvc5-enum, Primo, default cvc5, Z3: Barrett 2963; 1381, 954, 1517, 1281. CLEARSY 50; 20, 13, 20, 42. induction-by-reflection 32; 4, 4, 8, 8. grasshopper 376; 354, 281, 350, 362. misc 19; 12, 7, 14, 17. sledgehammer 4140; 1159, 689, 1245, 1045. wintersteiger 10; 0, 0, 0, 10.",
        "time": "On the 1,927 files both Primo and cvc5-enum solve, the median Primo/cvc5-enum time ratio is 0.863, but the totals are 5,581 s against 1,161 s.",
        "reference_less": "Of Primo's 38 unsat answers that neither default cvc5 nor Z3 answers, cvc5-enum answers unsat on 36.",
        "artifacts": "/home/janotmik/primo-quantifiers/results/uf-quantifier-compare-146116 (cvc5-enum shards, enum-summary.json) (SLURM-backed)"
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-15-quantifiers-cvc5-pool-checks",
      "date": "2026-09-15",
      "commit": "3b9264a",
      "branch": "quantifiers",
      "kind": "independent-answer-confirmation",
      "scope": "Independent confirmation of Primo's quantified UF unsat answers with cvc5 pool-based instantiation (scripts/quantifier_pool_check.py). Primo exports its Skolem constants and lemmas and one pool of instantiation tuples per variable-sort signature (--quantifier-export-pools); the script adds them to the unmodified input as declare-pool and :pool annotations, Skolemizes top-level existential assertions in the input text with Primo's constants (from 3b9264a), and runs cvc5 --pool-inst. Pool hints preserve satisfiability. Corroboration also requires fresh Skolem groups and conservative witness lemmas; the checker does not independently verify every exported lemma. The documentation audit of 2026-10-01 corrects the earlier claim that this check needs no trust in Primo: unmatched witness lemmas and their serialization remain trusted. See docs-next/evidence/quantifiers.md for the precise boundary. Recorded commands and outcomes are unchanged. A negative control applies the same pipeline (--force) to files Z3 or cvc5 answered sat.",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute; local laptop for single-file diagnosis",
        "solver": "/home/janotmik/primo-quantifiers/build-slurm-rel/primo at the listed revision, default options (sum order, rounds of 128, stall limit 65,536)",
        "checker": "contrib/local/bin/cvc5 (cvc5 1.3.4 f3b21c4) --pool-inst; pool syntax established only by running the binary on small probes (clean-room: no cvc5 source, documentation or repository files were read)",
        "lists": "results/pool-check/primo-unsat-145714.txt: the 1,947 files 145714 answered unsat; results/pool-check/reference-sat-143196.txt: the 109 files Z3 or cvc5 answered sat in 143196",
        "limits": "60 s for Primo and 60 s for cvc5 per file, 1 CPU and 4 GB per array task"
      },
      "jobs": {
        "unsat_9e6fd5e": "145996 (40 tasks)",
        "control_9e6fd5e": "145997 (8 tasks)",
        "clearsy_rerun_ab9d240": "146045 (unsat), 146046 (control)",
        "unsat_3b9264a": "146068 (40 tasks)",
        "control_3b9264a": "146069 (8 tasks)"
      },
      "commands": {
        "unsat": "sbatch --array=0-39 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_POOL_LIST=$HOME/primo-quantifiers/results/pool-check/primo-unsat-145714.txt,PRIMO_POOL_OUT=$HOME/primo-quantifiers/results/pool-check/unsat-<rev>,PRIMO_POOL_SHARDS=40,PRIMO_POOL_TIMEOUT=60 scripts/slurm_quantifier_pool_check.sbatch",
        "control": "sbatch --array=0-7 \"--export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_POOL_LIST=$HOME/primo-quantifiers/results/pool-check/reference-sat-143196.txt,PRIMO_POOL_OUT=$HOME/primo-quantifiers/results/pool-check/control-<rev>,PRIMO_POOL_SHARDS=8,PRIMO_POOL_TIMEOUT=60,PRIMO_POOL_ARGS=--force --primo-arg=--quantifier-max-instances=5000\" scripts/slurm_quantifier_pool_check.sbatch",
        "summary": "python3 summarize_pool_checks.py pool-check/unsat-<rev> pool-check/control-<rev> (scratch summarizer; plain cvc5 answers from 143196)"
      },
      "results": {
        "unconfirmed_answers": "The three reference-less unsat answers of the earlier UF evaluations are confirmed locally at 9e6fd5e: llist2 x2015_09_10_16_53_56_947_1222396 (cvc5 with pools 0.21 s) and x2015_09_10_16_54_01_121_1224387 (0.20 s), and koenigslemma x2015_09_10_16_51_52_445_1059832 with --primo-arg=--quantifier-tuple-order=max (0.09 s); cvc5 alone times out on each at 60 s, and earlier at 900 s.",
        "unsat_9e6fd5e": "1,947 files: 1,588 confirmed (median cvc5 time 0.126 s, maximum 55 s), 358 inconclusive (cvc5 timeout 209, unknown 149), 1 not checked (Primo timed out on the rerun); 0 refuted. 26 of the 38 reference-less answers and 46 files cvc5 alone did not solve in 143196 are confirmed. Not confirmed by family: Barrett 140, grasshopper 116, sledgehammer 102, misc 1.",
        "control_9e6fd5e": "109 files: no cvc5 unsat. 100 controls ran (cvc5 unknown 62, timeout 17, parse error 21) and 9 were not checked (Primo timeout 8, sat 1). The 21 parse errors were all CLEARSY files: the script annotated quantifiers inside define-fun bodies but emitted definitions before the pools (fixed in ab9d240).",
        "clearsy_rerun_ab9d240": "12 CLEARSY unsat files: 12 confirmed. 26 CLEARSY control files: 25 controls with cvc5 unknown, 1 not checked; no parse error.",
        "diagnosis": "Inconclusive checks at 9e6fd5e split into timeouts (209; median 76 Skolem lemmas and 68 pools against 2 and 43 for confirmed files, similar pool coverage) and quick unknowns (149; small inputs, every quantifier pooled). On three unknown examples Primo skipped no tuple or lemma. In the smallest (sledgehammer Fundamental_Theorem_Algebra uf.1158451) cvc5 turned unsat once the input's top-level existential body was bound to Primo's Skolem constants with let: cvc5 had not recognized Primo's printed existential as the input's, so the pool terms built from Primo's constants were useless. 3b9264a links such Skolemizations to the input text. Black-box probes show cvc5 keeps pools through conjunction splitting, unused variables and disjoint variables. grasshopper dispose_loop_check_free_19_4 (no Skolem constants) stays unknown for an unexplained reason.",
        "unsat_3b9264a": "1,947 files: 1,601 confirmed (median cvc5 time 0.126 s, maximum 55 s, total 1,335 s), 345 inconclusive (cvc5 timeout 204, unknown 141), 1 not checked (Primo timed out on the rerun); 0 refuted. Against 9e6fd5e: 14 newly confirmed, 1 no longer confirmed (Barrett x2015_09_10_17_01_49_670_1779530: 0.12 s, now a timeout). 997 top-level Skolemizations in 356 files were linked to the input text and 459 were not. 29 of the 38 reference-less answers and 50 files cvc5 alone did not solve in 143196 are confirmed; the 9 reference-less answers left are Barrett gram_lang x2015_09_10_16_50_45_459_1267903 and parallel x2015_09_10_16_56_42_740_1008448, grasshopper dl_copy_loop_invariant_36_3, dl_reverse_loop_invariant_28_3 and insert_postcondition_of_insert_27_4, and sledgehammer Fundamental_Theorem_Algebra uf.878138, uf.878946, uf.880874 and uf.881705. Not confirmed by family: Barrett 141, grasshopper 116, sledgehammer 88, misc 1.",
        "control_3b9264a": "109 files: 100 controls with no cvc5 unsat (unknown 83, timeout 17) and no parse error; 9 not checked (Primo timeout 8, sat 1).",
        "artifacts": "/home/janotmik/primo-quantifiers/results/pool-check (file lists, unsat-9e6fd5e, control-9e6fd5e, unsat-clearsy-ab9d240, control-clearsy-ab9d240, unsat-3b9264a, control-3b9264a, summary-9e6fd5e.json, summary-3b9264a.json) (SLURM-backed)"
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-15-quantifiers-stall-cutoff-72d00d3",
      "date": "2026-09-15",
      "commit": "72d00d3",
      "branch": "quantifiers",
      "kind": "correctness-gates-and-configuration-evaluation",
      "scope": "Gates for 72d00d3, which restores rounds of 128 instances and adds the tuple-count stall cutoff (--quantifier-stall-tuples, default 65,536) on top of ff72a12. Only quantified UF instance scheduling changed, so the quantifier preparation gate, a UF typefuzz gate and the UF division were rerun. The quantifier-free gates and origin/main preservation of ff72a12 were not rerun: no quantifier-free route reads the new option.",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute",
        "candidate": "/home/janotmik/primo-quantifiers/build-slurm-rel/primo reporting git 72d00d3, rebuilt with slurm_prepare_benchmark_workspace.py --reuse-dependencies --build-via-slurm --jobs 16 --sync-mode archive --cxx-header-manifest /home/janotmik/primo-cadical-profile/contrib/local/clang-tools-env/cxx-headers/include-paths.txt",
        "references": "contrib/local/bin/z3 (Z3 5.1.0), contrib/local/bin/cvc5 (cvc5 1.3.4 f3b21c4), .venv-yinyang/bin/typefuzz (0.3.0)",
        "local": "Before submission: 40/40 CTest, 40/40 ASan CTest, 178 Python tests, make lint and make docs pass. A mutant that lets a stall fire with an empty queue fails stalls_resume_without_skipping_tuples (unsat expected); the restored source passes."
      },
      "jobs": {
        "quantifier_preparation": "145713 (60 tasks, all COMPLETED)",
        "confirmation": "145857 (COMPLETED)",
        "uf_mutation_fuzz": "145715 (4 tasks, all COMPLETED)",
        "uf_compare": "145714"
      },
      "commands": {
        "quantifier_preparation": "PRIMO_WORKDIR=$HOME/primo-quantifiers PRIMO_GATE_OUT=$HOME/primo-quantifiers/results/quant-prep-72d00d3 PRIMO_UF_CORPUS=$HOME/primo-quantifiers-data/non-incremental/UF PRIMO_EXPECTED_REVISION=72d00d3 sbatch --array=0-59%8 scripts/slurm_quantifier_preparation_gate.sbatch (seed 20260914, 5 s per solver process); python3 scripts/summarize_quantifier_preparation_gate.py --root results/quant-prep-72d00d3 --out results/quant-prep-72d00d3/gate-summary.json",
        "confirmation": "sbatch --wrap over the 11 new unconfirmed mutation inputs: timeout 30 contrib/local/bin/cvc5 --enum-inst <input>, then --full-saturate-quant only if that did not answer unsat; outputs in results/quant-prep-confirm-72d00d3 with input SHA-256 prefixes",
        "uf_mutation_fuzz": "sbatch --time=01:00:00 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_CORPUS_ROOT=$HOME/primo-quantifiers-data/non-incremental/UF,PRIMO_FUZZ_YINYANG_WALL_SECONDS=3000,PRIMO_FUZZ_RANDOM_SEED=202609150,PRIMO_FUZZ_OUT_ROOT=$HOME/primo-quantifiers/fuzz-results/uf-mutation-72d00d3 scripts/slurm_uf_quantifier_mutation_fuzz.sbatch",
        "uf_compare": "sbatch --array=0-79%80 --export=\"ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_COMPARE_ROOT=tmp/UF,PRIMO_COMPARE_TIMEOUT=60,PRIMO_COMPARE_SHARDS=80,PRIMO_COMPARE_SOLVERS=primo=build-slurm-rel/primo --quiet --stats\" scripts/slurm_uf_quantifier_compare.sbatch; Z3/cvc5 answers reused from 143196"
      },
      "results": {
        "quantifier_preparation": "5,000 cases, 40,000 candidate executions, zero wrong answers, crashes, parser or type errors, unsupported cases, or reference disagreements. Generated: 3,000 cases (1,215 distinct inputs), 36,000 reference-confirmed answers (1,125 sat and 1,875 unsat per profile). Arithmetic: 1,000 cases, 2,000 confirmed answers. Native mutations: 1,000 cases (979 distinct inputs); registration 2 sat, 419 unsat, 537 unknown, 42 timeout; bridge-atoms 2 sat, 430 unsat, 525 unknown, 43 timeout; 799 candidate answers confirmed within 5 s. Against ff72a12 (one instance per round) the 5 s timeouts fall from 232/244 to 42/43, unknown answers rise from 354/346 to 537/525 and unsat answers from 412/408 to 419/430.",
        "quantifier_preparation_confirmation": "54 unconfirmed candidate unsat answers on 28 distinct inputs. 17 inputs are byte-identical to inputs confirmed unsat by cvc5 --enum-inst in 145314 (2fb97bd gate). The other 11 (indices 52, 213, 420, 512, 604, 811, 857, 880, 926, 949, 972) were confirmed unsat by cvc5 --enum-inst in 145857, exit 0 each; the --full-saturate-quant fallback was never needed. No definite candidate answer remains unconfirmed.",
        "uf_mutation_fuzz": "4 tasks at 72d00d3, 21 seeds each (19 valid, 2 invalid): 3,784 retained mutants (938, 946, 950, 950), 7,279 solver calls (1,742, 1,853, 1,856, 1,828), 0 bug triggers.",
        "uf_compare": "80/80 shards, 7,590 files at the new defaults (sum order, rounds of 128, stall limit 65,536): solved 1,948 (1 sat, 1,947 unsat), 34 unknown, 5,608 timeouts, PAR2 682,792 (timeout counted as 120 s). 0 wrong answers against :status and 0 disagreements with Z3 or cvc5. Primo alone solves 38 files; the virtual best with Z3 and cvc5 is 3,358.",
        "uf_compare_against_other_rounds": "Against rounds of 128 without the cutoff at ff72a12 (145630: 1,932, PAR2 684,291): +19 -3 (gains Barrett 3, grasshopper 1, misc 1, sledgehammer 14; losses Barrett 2, sledgehammer 1). Against one instance per round at ff72a12 (145389: 1,686, PAR2 716,807): +386 -124; the virtual best of the two is 2,072. Against the 128-per-round sum arm of 144606 at fc786f1: +44 -7.",
        "uf_compare_families": "files; 145714, 145630 (128 unbounded), 145389 (one per round): Barrett 2963; 954, 953, 843. CLEARSY 50; 13, 13, 12. induction-by-reflection 32; 4, 4, 3. grasshopper 376; 281, 280, 220. misc 19; 7, 6, 5. sledgehammer 4140; 689, 676, 603. wintersteiger 10; 0, 0, 0.",
        "uf_compare_stalls": "274 files reported :quant.stalls, 18,695 stalls in total (statistics are printed by runs that finish; most timeouts print none). On files solved by both 145714 and 145630, :quant.rounds (1,695 files) and :sat.solve-calls (1,929 files) have identical sums (71,268 and 104,622), while :quant.instances (tuples instantiated, 1,689 files) falls from 29,481,329 to 13,537,415. Total time on the 1,929 commonly solved files is 4,999 s against 5,158 s; the two jobs ran at different times on shared nodes.",
        "uf_compare_unconfirmed": "Reference-less answers: 35 match a declared unsat status; 3 have none: universalInstance (confirmed earlier by cvc5 enumerative modes) and the two llist2 files (unsat in 0.21 s and 0.20 s; still unconfirmed, see 145107-145112). koenigslemma x2015_09_10_16_51_52_445_1059832 times out.",
        "artifacts": "/home/janotmik/primo-quantifiers/results/quant-prep-72d00d3 (gate-summary.json), results/quant-prep-confirm-72d00d3, fuzz-results/uf-mutation-72d00d3, results/uf-quantifier-compare-145714 (SLURM-backed)"
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-15-quantifiers-instances-per-round-attribution-145630",
      "date": "2026-09-15",
      "commit": "ff72a12",
      "branch": "quantifiers",
      "kind": "paired-configuration-comparison",
      "scope": "Attribution of the UF-division loss at ff72a12 (145389: 1,686 solved at the default of one instance per round, against 1,911 for the 128-per-round sum arm of 144606 at fc786f1). The same binary is rerun on the UF division with --quantifier-instances-per-round=128, which separates the default introduced in 2fb97bd from the generated-term repair and the origin/main merge.",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute, 80 single-CPU array tasks",
        "solver": "/home/janotmik/primo-quantifiers/build-slurm-rel/primo --quiet --stats --quantifier-instances-per-round=128, git ff72a12 (default sum tuple order)",
        "corpus": "tmp/UF hard links of the 7,590-file division (manifest prefix 38feaaabff90657e)",
        "references": "Z3 5.1.0 and cvc5 1.3.4 answers reused from 143196 by path; not rerun",
        "timeout": "60 s"
      },
      "jobs": {
        "batch128": "145630 (80 tasks, all COMPLETED)",
        "default_one_per_round": "145389"
      },
      "commands": {
        "batch128": "sbatch --array=0-79%80 --export=\"ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_COMPARE_ROOT=tmp/UF,PRIMO_COMPARE_TIMEOUT=60,PRIMO_COMPARE_SHARDS=80,PRIMO_COMPARE_SOLVERS=batch128=build-slurm-rel/primo --quiet --stats --quantifier-instances-per-round=128\" scripts/slurm_uf_quantifier_compare.sbatch",
        "summaries": "summarize_uf_quantifier_compare.py results/uf-quantifier-compare-145630 --candidate batch128 --shards 80 --expected-files 7590 --json summary-batch128.json (z3/cvc5 linked from 143196); a scratch analyzer comparing against 143196 references, the 144606 sum arm and 145389 wrote default-summary.json"
      },
      "results": {
        "coverage": "80/80 shards and 7,590 files.",
        "batch128": "Solved 1,932 (1 sat, 1,931 unsat), 34 unknown, 5,624 timeouts, PAR2 684,291 (timeout counted as 120 s). 0 wrong answers against :status and 0 disagreements with Z3 or cvc5. Virtual best with Z3 and cvc5 3,358 (Primo alone 38).",
        "against_one_per_round": "145389 at the same commit solved 1,686 with PAR2 716,807. Batch 128 solves 372 files the default does not; the default solves 126 that batch 128 does not (Barrett 57, sledgehammer 69). The virtual best of the two is 2,058.",
        "against_144606_sum": "The 128-per-round sum arm at fc786f1, before the generated-term repair and the origin/main merge, solved 1,911 with PAR2 686,644. Batch 128 at ff72a12 gains 28 files and loses 7. The repair and the merge therefore do not account for the loss; the default of one instance per round does.",
        "families": "files; batch128, 145389 default, 144606 sum: Barrett 2963; 953, 843, 946. CLEARSY 50; 13, 12, 13. induction-by-reflection 32; 4, 3, 4. grasshopper 376; 280, 220, 281. misc 19; 6, 5, 8. sledgehammer 4140; 676, 603, 659. wintersteiger 10; 0, 0, 0.",
        "mechanism": "From the files solved by both 145389 (one per round) and 144606 (128 per round), 1,542 files: median :quant.rounds 413.5 against 3; median :sat.solve-calls and :combination.online-components.rebuilds 234 against 5; median :quant.instances 566 against 411.5; median time 0.206 s against 0.041 s, total 6,551 s against 2,382 s. Each round is a SAT re-solve and a component rebuild, so single-instance rounds multiply that cost. The 369 files 145389 lost took a median 1.41 s and 32 rounds in 144606.",
        "unconfirmed": "Reference-less answers: 35 match a declared unsat status; 3 have none: universalInstance (confirmed earlier by cvc5 enumerative modes) and the two llist2 files (unsat in 0.18 s each here, 43-47 s at the default; still unconfirmed, see 145107-145112). koenigslemma x2015_09_10_16_51_52_445_1059832 times out.",
        "artifacts": "/home/janotmik/primo-quantifiers/results/uf-quantifier-compare-145630 (summary-batch128.json, default-summary.json) and results/uf-quantifier-compare-145389 (summary-primo.json, default-summary.json) (SLURM-backed)"
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-14-quantifiers-merge-readiness-ff72a12",
      "date": "2026-09-14",
      "commit": "ff72a12",
      "branch": "quantifiers",
      "kind": "merge-readiness-gates",
      "scope": "Fresh gates on ff72a12, the local merge of origin/main c7bc7c0 into quantifiers 05c631c, before merging quantifiers into main. Both sides changed BooleanClausifier::register_boolean_argument_terms: main added a registration cursor (7ac555c), and quantifiers completes that registry at every growth boundary of the quantified route (2fb97bd). The auto-merge combined both. The gates are: the quantifier preparation gate of 2fb97bd, repeated; quantifier-free fuzz merge gates; answers-and-counters preservation against the origin/main baseline; a UF typefuzz gate; and the UF division at current defaults.",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute",
        "candidate": "/home/janotmik/primo-quantifiers/build-slurm-rel/primo reporting git ff72a12",
        "baseline": "/home/janotmik/primo-quantifiers-base/build-slurm-rel/primo reporting git c7bc7c0 (origin/main)",
        "prepare": "slurm_prepare_benchmark_workspace.py --reuse-dependencies --build-via-slurm --jobs 16 --sync-mode archive --cxx-header-manifest /home/janotmik/primo-cadical-profile/contrib/local/clang-tools-env/cxx-headers/include-paths.txt, once from the quantifiers checkout and once from a detached origin/main worktree (--allow-active-jobs)",
        "references": "contrib/local/bin/z3 (Z3 5.1.0), contrib/local/bin/cvc5 (cvc5 1.3.4 f3b21c4), contrib/local/bin/dolmen (0.10), .venv-yinyang/bin/typefuzz (0.3.0)",
        "local": "Before submission, on the merged tree: 40/40 CTest, 40/40 ASan CTest, 178 Python tests, make lint and make docs pass."
      },
      "jobs": {
        "quantifier_preparation": "145386 (60 tasks, all COMPLETED)",
        "qf_uflia_model_fuzz": "145387 (4 tasks, exit 1 from the model stage, see results)",
        "qf_uf_boolean_fuzz": "145388 (11 tasks; 10 exit 1 from the model stage, see results)",
        "uf_compare": "145389",
        "uf_mutation_fuzz": "145390 (4 tasks, all COMPLETED)",
        "preservation_qf_uflia": "145510",
        "preservation_qf_uf_sample": "145511 (16 tasks, all COMPLETED)"
      },
      "commands": {
        "quantifier_preparation": "PRIMO_WORKDIR=$HOME/primo-quantifiers PRIMO_GATE_OUT=$HOME/primo-quantifiers/results/quant-prep-ff72a12 PRIMO_UF_CORPUS=$HOME/primo-quantifiers-data/non-incremental/UF PRIMO_EXPECTED_REVISION=ff72a12 sbatch --array=0-59%8 scripts/slurm_quantifier_preparation_gate.sbatch (seed 20260914, 5 s per solver process); python3 scripts/summarize_quantifier_preparation_gate.py --root results/quant-prep-ff72a12 --out results/quant-prep-ff72a12/gate-summary.json",
        "qf_uflia_model_fuzz": "sbatch --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_FUZZ_SEED_BASE=202609140 scripts/slurm_qf_uflia_model_fuzz_gate.sbatch (4 tasks x 750, shape mixed, depth 3, timeout 5)",
        "qf_uf_boolean_fuzz": "sbatch --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_FUZZ_SEED_BASE=202609140 scripts/slurm_qf_uf_boolean_fuzz_gate.sbatch (11 shapes x 1000, timeout 10)",
        "preservation": "for corpus in QF_UFLIA QF_UF-1of8: sbatch --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_BASELINE=$HOME/primo-quantifiers-base/build-slurm-rel/primo,PRIMO_CANDIDATE=$HOME/primo-quantifiers/build-slurm-rel/primo,PRIMO_PRESERVE_ROOT=$HOME/primo-quantifiers-data/$corpus,PRIMO_PRESERVE_OUT_ROOT=$HOME/primo-quantifiers/results/merge-preservation-ff72a12-$corpus scripts/slurm_quantifier_qf_preservation.sbatch (60 s, one repeat); totals by a scratch summarizer over the per-shard summary.json files",
        "qf_uf_sample": "Every 8th file of the sorted 7,503-file QF_UF corpus at $HOME/primo-qfuf-eval/tmp/QF_UF, hard-linked into $HOME/primo-quantifiers-data/QF_UF-1of8: 938 files, manifest sha256 prefix a4074fc108053ee0, path+size sha256 prefix 37b8e583660bd913 (799 QG-classification, 96 2018-Goel-hwbench, 12 eq_diamond, 7 SEQ, 6 PEQ, 6 NEQ, 6 20190906-CLEARSY, 5 20170829-Rodin, 1 TypeSafe)",
        "uf_compare": "sbatch --array=0-79%80 --export=\"ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_COMPARE_ROOT=tmp/UF,PRIMO_COMPARE_TIMEOUT=60,PRIMO_COMPARE_SHARDS=80,PRIMO_COMPARE_SOLVERS=primo=build-slurm-rel/primo --quiet --stats\" scripts/slurm_uf_quantifier_compare.sbatch; Z3/cvc5 answers reused from 143196",
        "uf_mutation_fuzz": "sbatch --time=01:00:00 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_CORPUS_ROOT=$HOME/primo-quantifiers-data/non-incremental/UF,PRIMO_FUZZ_YINYANG_WALL_SECONDS=3000,PRIMO_FUZZ_RANDOM_SEED=202609140,PRIMO_FUZZ_OUT_ROOT=$HOME/primo-quantifiers/fuzz-results/uf-mutation-ff72a12 scripts/slurm_uf_quantifier_mutation_fuzz.sbatch"
      },
      "results": {
        "quantifier_preparation": "5,000 cases, 40,000 candidate executions, zero wrong answers, crashes, parser or type errors, unsupported cases, or reference disagreements. Generated: 3,000 cases (1,215 distinct inputs), both Boolean-domain modes times six tuple orders, 36,000 reference-confirmed answers (1,125 sat and 1,875 unsat per profile). Arithmetic: 1,000 cases, 2,000 confirmed answers (500 sat per profile). Native mutations: 1,000 cases (979 distinct inputs); registration 2 sat, 412 unsat, 354 unknown, 232 timeout; bridge-atoms 2 sat, 408 unsat, 346 unknown, 244 timeout; Z3 477 sat, 436 unsat, 87 timeout; cvc5 44 sat, 435 unsat, 521 unknown; 792 candidate answers confirmed within 5 s.",
        "quantifier_preparation_confirmation": "The 32 unconfirmed candidate unsat answers are 18 distinct inputs, each byte-identical (SHA-256) to the input at the same index in quant-prep-2fb97bd, which cvc5 --enum-inst confirmed unsat in job 145314. The confirmations are reused; no definite candidate answer remains unconfirmed. Against 2fb97bd, the mutation outcomes differ only in which cases reach the 5 s limit (registration 413/355/230 then, bridge-atoms 410/346/242).",
        "qf_uflia_model_fuzz": "Answers: 2,999 PASS against Z3 and 1 UNKNOWN_INVOLVED (task-0 case-00290: Primo unknown, Z3 sat; the c7bc7c0 baseline also answers unknown in 0.87 s, ff72a12 in 0.85 s). Models: all 1,515 sat models pass Dolmen. The tasks exit 1 because the validator records get-model after the 1,484 unsat answers and 1 unknown answer as solver-error (exit 2, 'get-model requires a current SAT model'), exactly as in 142923 at a6d3ff2; the c7bc7c0 baseline exits 2 on the same unsat input.",
        "qf_uf_boolean_fuzz": "Answers: 11,000/11,000 PASS across 11 shapes against Z3. Models: all 6,805 sat models pass Dolmen; the 4,195 unsat answers give the same get-model exit 2 as above, which accounts for the 10 failed tasks (the model-reconstruction shape has no unsat case).",
        "preservation_qf_uf_sample": "938 files: all non-timing counters match; 937 answers match (541 unsat, 396 sat); PEQ/PEQ013_size8.smt2 (status unsat) is reported as a disagreement because both binaries timed out at 60 s. Rerun twice per binary on node-02, both time out at 60 s, as does Z3. Sum of medians: baseline 594.2 s, candidate 593.7 s.",
        "preservation_qf_uflia": "659 files (path+size manifest prefix 1d752c3ef2f50bc6, as 142925): all answers match (405 sat, 169 unsat); the 85 reported disagreements are files where both binaries time out at 60 s, the same count as 142925. Non-timing counters differ on 286 files (mathsat 233, wisas 50, Certora 3), only in :euf.assignments, :euf.eq-assignments and :euf.diseq-assignments, always higher in the candidate (+1 to +559); every other counter matches, including SAT conflicts, decisions, propagations, solve calls, rebuilds and growths. 142925 at a6d3ff2 had no counter difference. Sum of medians: baseline 6,307.4 s, candidate 6,300.4 s.",
        "preservation_qf_uflia_cause": "The counters count assignment notifications delivered to EUF. 2fb97bd detaches the SAT dispatcher before materializing a new interface equality (solve_component_recipe, materialize), so no view of the atom registry survives term and clause creation; reconnecting delivers the current assignment again. Removing only that detach_dispatcher() call locally restores the baseline counts exactly on three affected mathsat/Wisa files (2,058/1,719/339, 2,386/1,884/502 and 2,199/2,117/82 instead of 2,060, 2,391 and 2,205), with the same answers and SAT conflicts. The difference is repeated notification, not a change in search; the detach was kept.",
        "uf_mutation_fuzz": "4 tasks at ff72a12, 21 seeds each (19 valid, 2 invalid): 3,754 retained mutants (934, 923, 950, 947), 7,205 solver calls (1,771, 1,827, 1,810, 1,797), 0 bug triggers.",
        "uf_compare": "80/80 shards, 7,590 files at the current defaults (sum order, 1 instance per round): solved 1,686 (1 sat, 1,685 unsat), 25 unknown, 5,879 timeouts, PAR2 716,807 (timeout counted as 120 s). 0 wrong answers against :status and 0 disagreements with Z3 or cvc5. Primo alone solves 41 files; the virtual best of Z3 and cvc5 rises from 3,320 to 3,361.",
        "uf_compare_regression": "Against the sum arm of 144606 (fc786f1: 128 instances per round, before the generated-term repair), which solved 1,911 with PAR2 686,644, this run gains 144 files and loses 369, net -225. It is also below M4 (143196: 1,749). Families (now / 144606 sum): Barrett 843 / 946, CLEARSY 12 / 13, induction-by-reflection 3 / 4, grasshopper 220 / 281, misc 5 / 8, sledgehammer 603 / 659, wintersteiger 0 / 0. Both the default of one instance per round and the generated-term repair came in 2fb97bd, whose qualification made no performance claim; 2026-09-15-quantifiers-instances-per-round-attribution-145630 attributes the loss to that default.",
        "uf_compare_unconfirmed": "Reference-less answers: 38 match a declared unsat status; 3 have no status: universalInstance (confirmed earlier by cvc5 enumerative modes) and the two llist2 files x2015_09_10_16_53_56_947_1222396 and x2015_09_10_16_54_01_121_1224387, now unsat at 43 s and 47 s under the default order, still unconfirmed (cvc5 --enum-inst, --full-saturate-quant and Z3 inconclusive at 900 s, jobs 145107-145112). koenigslemma x2015_09_10_16_51_52_445_1059832 times out.",
        "artifacts": "/home/janotmik/primo-quantifiers/results/quant-prep-ff72a12 (gate-summary.json), fuzz-results/qf-uflia-model-gate-145387, fuzz-results/qf-uf-boolean-145388, fuzz-results/uf-mutation-ff72a12, results/merge-preservation-ff72a12-QF_UFLIA, results/merge-preservation-ff72a12-QF_UF-1of8, results/uf-quantifier-compare-145389 (default-summary.json) (SLURM-backed)"
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-14-cli-enum-contracts",
      "date": "2026-09-14",
      "commit": "52394653b5fb9c8c26aa4b424504290e886eec7b",
      "kind": "cli-contract-hardening-and-smoke-gate",
      "scope": "Explicit callback parse failure; documented borrowed storage and bounded compiler-dependent enum coverage. No option/default or solver-algorithm change. Removed unused main preprocessing include and added direct test enum-definition include.",
      "verification": {
        "commands": [
          "make check",
          "make asan-test",
          "make lint",
          "make docs",
          "clang-tidy -p build <all 121 tracked C++ files>",
          "clang-tidy -p build -checks=-*,clang-diagnostic-*,misc-include-cleaner <all 121 tracked C++ files>"
        ],
        "tests": "40 CTest and 170 Python pass; 40 ASan tests pass. After include cleanup, rebuilt both binaries; option-name/preprocessing CLI tests pass in Release and ASan; all 66 enum names accepted and invalid names rejected for all 20 options.",
        "review": "Code review pass: no blocking issues. clang-tidy warnings triaged: CLI11 std::function callback is owned by Option/App, enum-cast paths assume an impossible declaration-mask result. Full diagnostic counts and paths in local review.md. Include-cleaner initially emitted 382 advisories; the actual unused header and new-test direct dependency were fixed, modified-file follow-up clear; existing paired-header/transitive suggestions and variant used by std::get retained."
      },
      "fuzz": {
        "commit": "52394653b5fb9c8c26aa4b424504290e886eec7b",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "seed": 20260914,
        "count": 100,
        "timeout_seconds": 5,
        "command": "python3 scripts/qf_uf_boolean_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--euf-boolean-domain=registration --ref contrib/local/bin/z3 --count 100 --seed 20260914 --timeout 5 --keep-passing --out results/enum-option-contracts/committed-smoke",
        "binaries": {
          "build/primo": {
            "sha256": "1061f81ba01fb15776d7b800a968c7d77bb8a349060cac9107fd0ad3d20e32e4",
            "version": "primo 0.1.0\ngit: 5239465\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07\n"
          },
          "contrib/local/bin/z3": {
            "sha256": "450bffa1b87541409c37cd678b2e7261c5d20912144e5c052fd264b1f3a2077f",
            "version": "Z3 version 5.0.0 - 64 bit\n"
          }
        },
        "answers": {
          "unsat": 39,
          "sat": 61
        },
        "pass": 100,
        "wrong_answers": 0,
        "crash": 0,
        "parser_type_error": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0
      },
      "preliminary": "The same 100-case smoke passed before commit (61 sat, 39 unsat), base c8028c4-dirty; exact initial binary hashes/version in results/enum-option-contracts/smoke-provenance.json. The committed revision was rebuilt and rerun for the gate above.",
      "artifacts": "results/enum-option-contracts: source-review inventory, review.md, full check/sanitizer/lint/docs/static logs, CLI check script/results, initial and committed inputs/summary/provenance.",
      "limitations": "Local smoke is proportional to defensive CLI handling with unchanged accepted inputs and defaults. It is not a solver/theory merge or performance qualification. Enum coverage remains bounded to 0..63 and compiler spelling."
    },
    {
      "id": "2026-09-14-generated-term-preparation-qualification",
      "date": "2026-09-14",
      "commit": "2fb97bd",
      "branch": "quantifiers",
      "kind": "correctness-campaign-and-default-preservation",
      "evidence_status": "complete-with-explicit-coverage-limits",
      "scope": "Fresh exact-candidate qualification of Boolean-domain preparation after atom growth, opaque binders, and default single useful quantifier instance per round. No performance qualification.",
      "metadata": "benchmarks/quantifier-preparation-2fb97bd.json",
      "environment": {
        "host": "CIIRC SLURM compute; per-shard host names retained in run.json",
        "candidate": "Release 2fb97bd, CaDiCaL 3.0.0-7b99c07, SHA256 9626b377f161ae0761d6c801fdc035d54bd19e0837860343bc936403982164c1",
        "references": "Z3 5.1.0; cvc5 1.3.4 f3b21c4; all executable hashes in committed metadata",
        "gate_resources": "1 CPU requested, 2 allocated, 4G and 30 minutes per task; 5 seconds per solver process; array throttle 4 raised to 8",
        "seed": 20260914
      },
      "commands": {
        "gate": "PRIMO_WORKDIR=/home/janotmik/primo-quantifiers PRIMO_GATE_OUT=/home/janotmik/primo-quantifiers/results/quant-prep-2fb97bd PRIMO_UF_CORPUS=/home/janotmik/primo-quantifiers-data/non-incremental/UF PRIMO_EXPECTED_REVISION=2fb97bd sbatch scripts/slurm_quantifier_preparation_gate.sbatch",
        "candidate": "build-slurm-rel/primo --quiet --max-theory-conflicts=1000 --quantifier-max-instances=2000 --euf-boolean-domain=<mode> --quantifier-tuple-order=<order> <input>; omitted batch exercises default 1",
        "references": "contrib/local/bin/z3 <input>; contrib/local/bin/cvc5 <input>",
        "confirmations": "timeout 30 contrib/local/bin/cvc5 --enum-inst <input>; 18 actual mutations, 1 CPU requested/2 allocated, 4G, 15-minute task",
        "preservation": "scripts/slurm_incremental_corpus.sbatch, arrays 0 and 1-4, PRIMO_EXPECTED_REVISION=2fb97bd; full submission arguments in committed metadata. 30-second solver/Dolmen limits, 127-byte stdin chunks; established conflict limits 10000 for QF_UF and 1000 otherwise.",
        "summary": "python3 scripts/summarize_quantifier_preparation_gate.py --root results/quantifier-preparation-fix/quant-prep-2fb97bd --out results/quantifier-preparation-fix/gate-summary.json"
      },
      "jobs": {
        "build_initial": "145247 FAILED 2:0: missing compute-node C++ standard headers; infrastructure failure",
        "build_retry": "145248 COMPLETED 0:0 after helper header-manifest provisioning; clean rebuild and revision/hash checks passed",
        "gate": "145249: all 60 tasks COMPLETED 0:0",
        "confirmation": "145314 COMPLETED 0:0",
        "preservation": "145258_0 and 145263_1..4: all five COMPLETED 0:0"
      },
      "results": {
        "generated": "3000 cases (1215 distinct input hashes), both Boolean modes times six tuple orders: 36000 candidate answers, all reference-confirmed. Per profile: 1125 sat, 1875 unsat. Z3 decides all cases; cvc5: 1125 sat, 946 unsat, 929 unknown.",
        "native_mutations": "1000 cases (979 distinct hashes), both Boolean modes/default sum. Registration: 2 sat, 413 unsat, 355 unknown, 230 timeout. Bridge-atoms: 2 sat, 410 unsat, 346 unknown, 242 timeout. Z3: 477 sat, 436 unsat, 87 timeout; cvc5: 44 sat, 435 unsat, 521 unknown. 794 candidate answers confirmed within 5 seconds.",
        "native_followup": "The other 33 candidate unsat answers concern 18 mutations of one source with unknown declared status. cvc5 --enum-inst confirmed every mutated input unsat (exit 0); no definite candidate answer remains unconfirmed.",
        "arithmetic": "1000 cases (999 distinct hashes), QF_LIA/QF_UFLIA auxiliary lowering, both Boolean modes: each profile 500 sat/500 unsat; both references agree on all cases.",
        "total": "5000 cases, 40000 candidate executions and 10000 initial reference executions. Candidate: 38827 reference-confirmed definite answers including follow-up, 701 unknown, 472 timeout. Zero detected wrong answers, crashes, parser/type errors, unsupported cases or reference disagreements.",
        "preservation": "25/25 hash-pinned real files pass across QF_UF/QF_LIA/QF_LRA/QF_UFLIA/QF_UFLRA; 50 stdin/scoped sessions, 200/200 actual queries: 121 sat, 79 unsat. Dolmen 0.10 directly accepts all 121 SAT query models. Known status/scoped metamorphic oracle; no reference reruns or timing comparison.",
        "local": "make check: 39 CTest and 169 Python tests; final harness follow-up make python-test: 170 tests. make asan-test: 39 tests. make lint and make docs pass. make tidy covers all 120 tracked C++ files without emitted project diagnostic (28 non-user-code warnings suppressed). make include-cleaner: 384 reviewed advisories, not a warning-free scan. Code/efficiency review: no blocking issue."
      },
      "limitations": [
        "Generated cases vary eight targeted shapes and include duplicates; native mutations are original fresh-Boolean wrappers over small single-query seeds, not TypeFuzz. Arithmetic coverage uses fixed divisors and a SAT-only mixed-logic slice, not quantified arithmetic.",
        "Native unknowns/timeouts are not solved cases. No quantified SAT-model validation, full UF-division evaluation, PAR2 or speedup claim. Prior batch-128 timings predate this repair.",
        "One-instance rounds avoid holding the first useful lemma for duplicates; they do not guarantee termination when no useful lemma exists. Bounded larger batches remain an open lead."
      ],
      "artifacts": {
        "local": "results/quantifier-preparation-fix (raw gate, preservation, confirmations, binaries, logs, review, compressed archives)",
        "remote": "/home/janotmik/primo-quantifiers/results/quant-prep-2fb97bd, quant-prep-default-2fb97bd, quant-prep-confirm-2fb97bd",
        "integrity": "Archive SHA256 values and binary identities in benchmarks/quantifier-preparation-2fb97bd.json; summary checks exact shard/profile coverage, input hashes and failures.",
        "audit": "results/quantifier-preparation-fix/final-job-audit.txt: all submitted jobs terminal; failed initial build triaged and replaced by successful retry."
      }
    },
    {
      "id": "2026-09-14-generated-term-preparation-repair",
      "date": "2026-09-14",
      "kind": "correctness-repair-and-default-scheduling-change",
      "base_commit": "c882d3a",
      "evidence_status": "local-verified-followed-by-2fb97bd-slurm-qualification",
      "scope": "Shared generated-atom preparation, opaque quantifier walks, default one useful enumerative instance per round, immediate delivery of queued Skolem lemmas; original targeted generated/metamorphic and arithmetic gates.",
      "design": "docs/euf-boolean-arguments.md; docs/quantifiers.md; docs/open-leads.md",
      "local": {
        "commands": [
          "make check",
          "make docs",
          "ctest --test-dir build --output-on-failure --timeout 120",
          "python3 scripts/quantifier_preparation_gate.py --mode generated --count 16 --solver build/primo --ref contrib/local/bin/z3 --ref contrib/local/bin/cvc5 --timeout 3 --out results/quant-fix-generated-smoke",
          "python3 scripts/quantifier_preparation_gate.py --mode arithmetic --count 24 --solver build/primo --ref contrib/local/bin/z3 --ref contrib/local/bin/cvc5 --timeout 3 --out results/quant-fix-arithmetic-smoke"
        ],
        "checks": "39 CTest and 169 Python tests pass; lint and docs pass. First duplicate-normalization test expected the old batch behavior; now requests 128 explicitly. Branch baseline lint failures repaired (three executable bits, narrowed malformed-input exception handling). All 39 ASan tests pass (74.60 seconds). make tidy passes all 120 tracked C++ files (28 suppressed non-user-code warnings, no emitted project diagnostic); make include-cleaner completes all 120 files: 384 advisories inspected (361 requests for direct includes, 22 paired-header suggestions, one variant suggestion retained because std::get reads a variant). Direct cstddef/utility includes added to the new test; no real unused include identified. Additional later-batch modulo and idempotent-clause tests pass in Release and ASan.",
        "generated": "16 inputs, 12 profiles, 192 candidate answers: 120 unsat and 72 sat; Z3 decides all 16, cvc5 gives 12 definite answers and 4 unknown; no disagreement/error/timeout.",
        "arithmetic": "24 inputs, two profiles, 48 candidate answers: 24 sat and 24 unsat, both references agree on all 24; no error/timeout.",
        "provenance": "Uncommitted candidate on c882d3a. Each gate retains binary hashes, version, seed, exact commands and every input/output in run.json and rows.jsonl. Generated and arithmetic RNG seed 20260914; timeout 3 seconds; local development host.",
        "artifacts": [
          "results/quantifier-preparation-fix",
          "results/quant-fix-generated-smoke",
          "results/quant-fix-arithmetic-smoke"
        ]
      },
      "followup": "Completed in 2026-09-14-generated-term-preparation-qualification; source milestone 2fb97bd, all candidate answers reference-confirmed, artifacts collected and jobs terminal.",
      "limitations": "No full quantified-corpus timing or model qualification. Earlier quantified timings used batch 128 and predate the soundness repair. Native mutation is an original Boolean-wrapper metamorphic gate, not TypeFuzz. Larger batches and no-progress/time-based continuation remain open leads."
    },
    {
      "id": "2026-09-13-quantifiers-tuple-orders-144606",
      "date": "2026-09-13",
      "commit": "fc786f1",
      "branch": "quantifiers",
      "kind": "multi-configuration-comparison",
      "scope": "The six --quantifier-tuple-order values (max, max-colex, sum, leximax, deepening, random) over the SMT-LIB UF division, with instance normalization on and the distinct-instance budget; solved counts, PAR2, uniques, virtual best and correctness against :status, Z3 and cvc5.",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute, 480 single-CPU array tasks (throttle 240, lowered to 214 while fuzz tasks were pending)",
        "solver": "/home/janotmik/primo-quantifiers/build-slurm-rel/primo --quiet --stats --quantifier-tuple-order=<order>, git fc786f1 (solver sources equal to the documenting commit); deepening increment 2, random seed 0, budget 100,000 distinct instances",
        "corpus": "tmp/UF hard links of the 7,590-file division (manifest prefix 38feaaabff90657e)",
        "references": "Z3 5.1.0 and cvc5 1.3.4 answers reused from job 143196 by path; not rerun",
        "timeout": "60 s"
      },
      "jobs": {
        "compare": "144606",
        "confirmations": "145107-145112"
      },
      "commands": {
        "compare": "P='build-slurm-rel/primo --quiet --stats --quantifier-tuple-order'; sbatch --array=0-479%240 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_COMPARE_ROOT=tmp/UF,PRIMO_COMPARE_TIMEOUT=60,PRIMO_COMPARE_SHARDS=80,PRIMO_COMPARE_SOLVERS=\"max=$P=max;max-colex=$P=max-colex;sum=$P=sum;leximax=$P=leximax;deepening=$P=deepening;random=$P=random\" scripts/slurm_uf_quantifier_compare.sbatch",
        "summaries": "summarize_uf_quantifier_compare.py results/uf-quantifier-compare-144606 --candidate <order> --shards 80 --expected-files 7590 --json summary-<order>.json (z3/cvc5 linked from 143196); an ad-hoc cross-order script (uniques, virtual best, greedy portfolio, families, reference-less answers) wrote orders-summary.json",
        "confirmations": "for each llist2 file: sbatch --time=00:20:00 --wrap 'timeout 900 <cmd> <file>' with contrib/local/bin/cvc5 --enum-inst, contrib/local/bin/cvc5 --full-saturate-quant, contrib/local/bin/z3"
      },
      "results": {
        "coverage": "80/80 shards and 7,590 files per order.",
        "solve_counts": "max 1,867 (30 unknown, PAR2 691,797); max-colex 1,891 (32, 689,076); sum 1,911 (30, 686,644); leximax 1,876 (30, 690,473); deepening 1,864 (35, 691,943); random 1,846 (34, 694,509). Every order answers sat on the same 1 file; the rest are unsat. PAR2 counts a timeout as 120 s.",
        "against_max": "files solved only by the order / only by max: max-colex +30 -6; sum +82 -38; leximax +49 -40; deepening +81 -84; random +77 -98.",
        "uniques": "solved by no other order: max 3, max-colex 5, sum 17, leximax 5, deepening 14, random 26.",
        "virtual_best": "all six orders 2,020 (max 1,867); greedy from max: +sum 82 (1,949), +random 40 (1,989), +deepening 21 (2,010), +max-colex 5, +leximax 5. Z3 and cvc5 3,320; with the six orders 3,360.",
        "noise": "max here and primo in 144396 (identical configuration) solved exactly the same 1,867 files. sum against normalization off at 1670dd4 (144396): +92 -75.",
        "families": "files; max, max-colex, sum, leximax, deepening, random; virtual best: 20170428-Barrett 2963; 914 935 946 933 920 902; 996. 20190906-CLEARSY 50; 14 14 13 14 13 14; 14. induction-by-reflection 32; 4 4 4 3 3 2; 4. grasshopper 376; 271 272 281 271 281 281; 287. misc 19; 6 6 8 6 7 5; 8. sledgehammer 4140; 658 660 659 649 640 642; 711. wintersteiger 10; all 0.",
        "correctness": "0 wrong answers against :status and 0 disagreements with Z3 or cvc5 in every order. Reference-less answers: 36 (order, file) unsat answers matching a declared unsat status, and 4 files without status: universalInstance (all orders; confirmed earlier by cvc5 enumerative modes), koenigslemma x2015_09_10_16_51_52_445_1059832 (max, max-colex; still unconfirmed), llist2 x2015_09_10_16_53_56_947_1222396 (deepening, random) and llist2 x2015_09_10_16_54_01_121_1224387 (deepening). Neither llist2 answer is confirmed: at 900 s (jobs 145107-145112), cvc5 --enum-inst and --full-saturate-quant were killed by the timeout on both files, and Z3 was killed on 1222396 and answered unknown on 1224387.",
        "artifacts": "/home/janotmik/primo-quantifiers/results/uf-quantifier-compare-144606 (summary-<order>.json, orders-summary.json), results/llist2-confirm (SLURM-backed)"
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-13-quantifiers-tuple-order-fuzz",
      "date": "2026-09-13",
      "commit": "fc786f1",
      "branch": "quantifiers",
      "kind": "seed-mutation-fuzz-campaign",
      "scope": "Mutation-fuzz gate for the selectable tuple orders (fc786f1): one typefuzz task per non-default order against Z3, answers only. The tuple order changes which instances become lemmas, never their content.",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute",
        "workspace": "/home/janotmik/primo-quantifiers, build-slurm-rel/primo reporting git fc786f1; instance normalization on (default)",
        "fuzzer": "YinYang typefuzz 0.3.0, --keep-logic --hoist-declarations --keep-mutants, 50 iterations per seed, solver timeout 5 s",
        "seeds": "build_fuzz_seed_corpus.py --per-family 3 --max-bytes 20000 over the UF division: 21 seeds, 19 valid per task",
        "reference": "contrib/local/bin/z3 (Z3 5.1.0)"
      },
      "jobs": {
        "max-colex": "144607 (seed 202609160)",
        "sum": "144608 (seed 202609170)",
        "leximax": "144609 (seed 202609180)",
        "deepening": "144610 (seed 202609190)",
        "random": "144611 (seed 202609200)"
      },
      "commands": {
        "fuzz": "for each order: sbatch --array=0 --time=01:00:00 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_CORPUS_ROOT=$HOME/primo-quantifiers-data/non-incremental/UF,PRIMO_FUZZ_YINYANG_WALL_SECONDS=3000,PRIMO_FUZZ_RANDOM_SEED=<seed>,PRIMO_FUZZ_SOLVER_ARGS=--quantifier-tuple-order=<order>,PRIMO_FUZZ_OUT_ROOT=$HOME/primo-quantifiers/fuzz-results/uf-tuple-order-<order>-<seed> scripts/slurm_uf_quantifier_mutation_fuzz.sbatch"
      },
      "results": {
        "per_order": "max-colex 950 mutants, 1,844 solver calls; sum 950, 1,848; leximax 929, 1,856; deepening 950, 1,802; random 930, 1,758. Every task: 0 bug triggers, 19 of 21 seeds valid, the order flag present in the logged solver command.",
        "total": "4,709 retained mutants, 9,108 solver calls, 0 disagreements with Z3.",
        "not_done": "The retained mutants were not classified (Primo against Z3 at 5 s) as the earlier normalization gates were; typefuzz's own comparison is the gate here.",
        "artifacts": "/home/janotmik/primo-quantifiers/fuzz-results/uf-tuple-order-<order>-<seed>/task-0 (SLURM-backed)"
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-13-quantifiers-simplification-ab-144396",
      "date": "2026-09-13",
      "commit": "1670dd4",
      "branch": "quantifiers",
      "kind": "paired-configuration-comparison",
      "scope": "Instance normalization on versus off over the SMT-LIB UF division with the distinct-instance budget (1670dd4), which also carries the pure-theory filter and dispatcher scheduling fixes; compared with 144198 (cec20ce, budget counted per tuple) and the M4 evaluation 143196.",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute, 160 single-CPU array tasks",
        "solver": "/home/janotmik/primo-quantifiers/build-slurm-rel/primo --quiet --stats, git 1670dd4, default budget 100,000 distinct instances",
        "corpus": "tmp/UF hard links of the 7,590-file division (manifest prefix 38feaaabff90657e)",
        "references": "Z3 5.1.0 and cvc5 1.3.4 answers reused from job 143196 by path; not rerun",
        "timeout": "60 s"
      },
      "jobs": {
        "ab": "144396"
      },
      "commands": {
        "ab": "sbatch --array=0-159%160 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_COMPARE_ROOT=tmp/UF,PRIMO_COMPARE_TIMEOUT=60,PRIMO_COMPARE_SHARDS=80,PRIMO_COMPARE_SOLVERS='primo=build-slurm-rel/primo --quiet --stats;primo-nosimp=build-slurm-rel/primo --quiet --stats --no-quantifier-instance-simplification' scripts/slurm_uf_quantifier_compare.sbatch",
        "summaries": "summarize_uf_quantifier_compare.py --candidate primo and --candidate primo-nosimp (z3/cvc5 linked from 143196); summarize_quantifier_instance_counters.py --arms primo primo-nosimp"
      },
      "results": {
        "coverage": "80/80 shards and 7,590 files per arm.",
        "solve_counts": "normalization on 1,867 (1 sat, 1,866 unsat; 32 unknown, 5,691 timeouts); off 1,894 (1 sat, 1,893 unsat; 33 unknown, 5,663 timeouts). cec20ce (144198): on 1,840, off 1,882. M4 (143196): 1,749.",
        "budget_fix_effect": "Against 144198 the on arm gains 27 files and loses none; the off arm gains 12 and loses none. Unknown answers fall from 1,146 and 619 to 32 and 33: runs that stopped at the budget now continue to the timeout.",
        "normalization_effect": "on solves 16 files off does not; off solves 43 files on does not; net -27 for normalization, concentrated in sledgehammer (658 against 685). The remaining gap is in timeouts, not budget exhaustion; its cause (normalization cost, or canonical atoms adding SAT variables and slowing the ground search) is not established.",
        "correctness": "0 wrong answers against :status and 0 disagreements with Z3 or cvc5 in either arm. Reference-less answers: on 30, off 29; the two without declared status are universalInstance (confirmed by cvc5 enumerative modes) and koenigslemma x2015_09_10_16_51_52_445_1059832 (still unconfirmed by any reference).",
        "against_references": "Virtual best of Z3 and cvc5 3,320; with both Primo arms 3,350. Against M4 the on arm gains 166 and loses 48.",
        "par2": "M4 706,277; cec20ce on 694,665, off 690,397; 1670dd4 on 691,760, off 689,143 (timeout counted as 120 s).",
        "families": "M4 / cec20ce on, off / 1670dd4 on, off solved: 20170428-Barrett 907 / 909, 910 / 914, 915 of 2963; 20190906-CLEARSY 13 / 13, 13 / 14, 13 of 50; induction-by-reflection 4 / 4, 4 / 4, 4 of 32; grasshopper 150 / 271, 271 / 271, 271 of 376; misc 5 / 6, 6 / 6, 6 of 19; sledgehammer 670 / 637, 678 / 658, 685 of 4140; wintersteiger 0 in all of 10.",
        "counters_caveat": "Statistics are present only for runs that printed them (on 6,388 rows, off 6,932): most timeouts end without statistics, so the counter totals of this run are not comparable between arms. 144198 remains the counter reference: 53% duplicates with normalization, 32% without.",
        "artifacts": "/home/janotmik/primo-quantifiers/results/uf-quantifier-compare-144396 (summary-primo.json, summary-primo-nosimp.json, counters.json) (SLURM-backed)"
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-13-quantifiers-uf-mutation-fuzz-144397",
      "date": "2026-09-13",
      "commit": "1670dd4",
      "branch": "quantifiers",
      "kind": "seed-mutation-fuzz-campaign",
      "scope": "Mutation-fuzz gate at the distinct-instance budget (1670dd4), which also carries instance normalization, the pure-theory filter fix and the dispatcher scheduling fix: typefuzz on UF seeds against Z3, answers only, then classification of every retained mutant and confirmation of answers Z3 could not decide.",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute",
        "workspace": "/home/janotmik/primo-quantifiers, build-slurm-rel/primo reporting git 1670dd4; instance normalization on (default)",
        "fuzzer": "YinYang typefuzz 0.3.0, --keep-logic --hoist-declarations --keep-mutants, 50 iterations per seed, solver timeout 5 s, random seeds 202609150-202609153",
        "seeds": "build_fuzz_seed_corpus.py --per-family 3 --max-bytes 20000 over the UF division: 21 seeds, 19 valid per task",
        "reference": "contrib/local/bin/z3 (Z3 5.1.0); confirmations with Z3 and contrib/local/bin/cvc5 (cvc5 1.3.4) --enum-inst / --full-saturate-quant"
      },
      "jobs": {
        "fuzz": "144397",
        "classification": "144560",
        "confirmation": "144592"
      },
      "commands": {
        "fuzz": "sbatch --time=01:00:00 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_CORPUS_ROOT=$HOME/primo-quantifiers-data/non-incremental/UF,PRIMO_FUZZ_YINYANG_WALL_SECONDS=3000,PRIMO_FUZZ_RANDOM_SEED=202609150 scripts/slurm_uf_quantifier_mutation_fuzz.sbatch",
        "classification": "sbatch --array=0-31 --time=01:00:00 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_COMPARE_ROOT=fuzz-results/uf-quantifier-mutation-144397,PRIMO_COMPARE_TIMEOUT=5,PRIMO_COMPARE_SHARDS=16,PRIMO_COMPARE_SOLVERS='primo=build-slurm-rel/primo --quiet;z3=contrib/local/bin/z3' scripts/slurm_uf_quantifier_compare.sbatch",
        "confirmation": "uf_long_reference_check.sbatch (scratch, validated) with PRIMO_LONG_CHECK_SECONDS=120 on the one mutant in results/uf-mutant-classify-144397/unconfirmed.txt"
      },
      "results": {
        "fuzz": "7,263 solver calls, 3,784 retained mutants, 0 bug triggers.",
        "classification_coverage": "3,868 files (3,784 mutants, 84 seed copies), 16/16 shards per solver.",
        "mutants": "Z3 gave a definite answer on 913 mutants; Primo answered 290 unsat and 48 sat on those, all agreeing, 523 unknown and 52 timeouts. Both solvers rejected 2,626 ill-formed mutants; Primo rejected 224 more on which Z3 ran to its timeout. Primo wrong answers: 0; disagreements: 0. The sat count is higher than in earlier gates (8 to 15), all agreeing with Z3; the mutants differ (new seed base), and the difference is not attributed to the budget change, which affects only universal enumeration and never the sat verdict.",
        "unconfirmed_unsat": "5 files Z3 did not decide: 4 copies of the universalInstance seed (confirmed earlier by cvc5 enumerative modes) and 1 of its mutants: Z3 timed out at 120 s, and cvc5 --enum-inst and --full-saturate-quant both answered unsat (job 144592).",
        "artifacts": "/home/janotmik/primo-quantifiers/fuzz-results/uf-quantifier-mutation-144397, /home/janotmik/primo-quantifiers/results/uf-mutant-classify-144397 (summary.json, unconfirmed.txt, long-check-4.txt) (SLURM-backed)"
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-13-quantifiers-simplification-ab-144198",
      "date": "2026-09-13",
      "commit": "cec20ce",
      "branch": "quantifiers",
      "kind": "paired-configuration-comparison",
      "scope": "Instance normalization on versus off over the SMT-LIB UF division at the dispatcher scheduling fix (cec20ce), which also carries the pure-theory filter fix; compared with the M4 evaluation (143196) and the pre-fix A/B (144000).",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute, 160 single-CPU array tasks",
        "solver": "/home/janotmik/primo-quantifiers/build-slurm-rel/primo --quiet --stats, git cec20ce, default budget 100,000 instances counted per tuple tried",
        "corpus": "tmp/UF hard links of the 7,590-file division (manifest prefix 38feaaabff90657e)",
        "references": "Z3 5.1.0 and cvc5 1.3.4 answers reused from job 143196 by path; not rerun",
        "timeout": "60 s"
      },
      "jobs": {
        "ab": "144198"
      },
      "commands": {
        "ab": "sbatch --array=0-159%160 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_COMPARE_ROOT=tmp/UF,PRIMO_COMPARE_TIMEOUT=60,PRIMO_COMPARE_SHARDS=80,PRIMO_COMPARE_SOLVERS='primo=build-slurm-rel/primo --quiet --stats;primo-nosimp=build-slurm-rel/primo --quiet --stats --no-quantifier-instance-simplification' scripts/slurm_uf_quantifier_compare.sbatch",
        "summaries": "summarize_uf_quantifier_compare.py --candidate primo and --candidate primo-nosimp (z3/cvc5 linked from 143196); summarize_quantifier_instance_counters.py --arms primo primo-nosimp"
      },
      "results": {
        "coverage": "80/80 shards and 7,590 files per arm.",
        "solve_counts": "normalization on 1,840 (1 sat, 1,839 unsat; 1,146 unknown, 4,604 timeouts); off 1,882 (1 sat, 1,881 unsat; 619 unknown, 5,089 timeouts). M4 (143196, a6d3ff2) 1,749; pre-fix on (144000) 1,668.",
        "correctness": "0 wrong answers against :status and 0 disagreements with Z3 or cvc5 in either arm. Reference-less answers: on 30, off 29, of which all but two carry declared status unsat; the two without status are universalInstance (confirmed by cvc5 enumerative modes) and koenigslemma x2015_09_10_16_51_52_445_1059832 (unconfirmed by any reference, as in 143196).",
        "fixes_effect": "Against M4 the normalization-on arm gains 153 files and loses 62; grasshopper goes from 150 to 271 in both arms. Virtual best of Z3 and cvc5 3,320, with both Primo arms 3,350.",
        "par2": "M4 706,277; on 694,665; off 690,397 (timeout counted as 120 s).",
        "families": "M4/on/off/Z3/cvc5 solved: 20170428-Barrett 907/909/910/1281/1517 of 2963; 20190906-CLEARSY 13/13/13/42/20 of 50; induction-by-reflection 4/4/4/8/8 of 32; grasshopper 150/271/271/362/350 of 376; misc 5/6/6/17/14 of 19; sledgehammer 670/637/678/1045/1245 of 4140; wintersteiger 0/0/0/10/0 of 10.",
        "counters": "on: 263.2M tuples instantiated, 60.2M raw duplicates, 189.4M changed by normalization, 78.5M normalized duplicates, 271k trivial, 132.8M lemmas, 1.06M rounds. off: 203.9M tuples, 64.8M raw duplicates, 254k trivial, 147.5M lemmas, 1.18M rounds. Duplicates are 53% of instantiated tuples with normalization and 32% without.",
        "budget_finding": "Normalization loses 58 files and gains 16. Of the 58, the on arm answered unknown with the whole 100,000-instance budget spent on 53 (median 99% of its tuples normalized duplicates) and timed out on 5; for example sledgehammer/TwoSquares/uf.781811 spent 100,000 tuples on 402 lemmas where the off arm refutes with 676 instances in 0.1 s. Unknown answers with the budget spent: on 1,123 of 1,146, off 595 of 619. The budget counted tuples, so recognized duplicates exhausted it; the follow-up counts distinct instances only.",
        "artifacts": "/home/janotmik/primo-quantifiers/results/uf-quantifier-compare-144198 (summary-primo.json, summary-primo-nosimp.json, counters.json) (SLURM-backed)"
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-13-quantifiers-uf-mutation-fuzz-144199",
      "date": "2026-09-13",
      "commit": "cec20ce",
      "branch": "quantifiers",
      "kind": "seed-mutation-fuzz-campaign",
      "scope": "Mutation-fuzz gate at the dispatcher scheduling fix (cec20ce), which also carries instance normalization (ca5cdaa) and the pure-theory filter fix (b1b2fbe): typefuzz on UF seeds against Z3, answers only, then classification of every retained mutant and confirmation of answers Z3 could not decide.",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute",
        "workspace": "/home/janotmik/primo-quantifiers, build-slurm-rel/primo reporting git cec20ce; instance normalization on (default)",
        "fuzzer": "YinYang typefuzz 0.3.0, --keep-logic --hoist-declarations --keep-mutants, 50 iterations per seed, solver timeout 5 s, random seeds 202609140-202609143",
        "seeds": "build_fuzz_seed_corpus.py --per-family 3 --max-bytes 20000 over the UF division: 21 seeds, 19 valid per task",
        "reference": "contrib/local/bin/z3 (Z3 5.1.0); confirmations with Z3 and contrib/local/bin/cvc5 (cvc5 1.3.4) --enum-inst / --full-saturate-quant"
      },
      "jobs": {
        "fuzz": "144199",
        "classification": "144362",
        "confirmation": "144394"
      },
      "commands": {
        "fuzz": "sbatch --time=01:00:00 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_CORPUS_ROOT=$HOME/primo-quantifiers-data/non-incremental/UF,PRIMO_FUZZ_YINYANG_WALL_SECONDS=3000,PRIMO_FUZZ_RANDOM_SEED=202609140 scripts/slurm_uf_quantifier_mutation_fuzz.sbatch",
        "classification": "sbatch --array=0-31 --time=01:00:00 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_COMPARE_ROOT=fuzz-results/uf-quantifier-mutation-144199,PRIMO_COMPARE_TIMEOUT=5,PRIMO_COMPARE_SHARDS=16,PRIMO_COMPARE_SOLVERS='primo=build-slurm-rel/primo --quiet;z3=contrib/local/bin/z3' scripts/slurm_uf_quantifier_compare.sbatch",
        "confirmation": "uf_long_reference_check.sbatch (scratch, validated) with PRIMO_LONG_CHECK_SECONDS=120 on the seven mutants in results/uf-mutant-classify-144199/unconfirmed.txt"
      },
      "results": {
        "fuzz": "7,321 solver calls, 3,765 retained mutants, 0 bug triggers.",
        "classification_coverage": "3,849 files (3,765 mutants, 84 seed copies), 16/16 shards per solver.",
        "mutants": "Z3 gave a definite answer on 835 mutants; Primo answered 352 unsat and 15 sat on those, all agreeing, 442 unknown and 26 timeouts. Both solvers rejected 2,752 ill-formed mutants; Primo rejected 142 more on which Z3 ran to its timeout. Primo wrong answers: 0; disagreements: 0.",
        "unconfirmed_unsat": "11 files Z3 did not decide: 4 copies of the universalInstance seed (confirmed earlier by cvc5 enumerative modes) and 7 of its mutants: Z3 timed out at 120 s on each, and cvc5 --enum-inst and --full-saturate-quant both answered unsat on all seven (job 144394).",
        "artifacts": "/home/janotmik/primo-quantifiers/fuzz-results/uf-quantifier-mutation-144199, /home/janotmik/primo-quantifiers/results/uf-mutant-classify-144199 (summary.json, unconfirmed.txt, long-check-3.txt) (SLURM-backed)"
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-13-quantifiers-simplification-ab-144000",
      "date": "2026-09-13",
      "commit": "b1b2fbe",
      "branch": "quantifiers",
      "kind": "paired-configuration-comparison",
      "scope": "Instance normalization on versus off (--no-quantifier-instance-simplification) over the SMT-LIB UF division, with the pure-theory filter fix but before the dispatcher scheduling fix (cec20ce). Kept as the before-fix baseline.",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute, 160 single-CPU array tasks",
        "solver": "/home/janotmik/primo-quantifiers/build-slurm-rel/primo --quiet --stats, git b1b2fbe",
        "corpus": "tmp/UF hard links of the 7,590-file division (manifest prefix 38feaaabff90657e)",
        "references": "Z3 5.1.0 and cvc5 1.3.4 answers reused from job 143196 by path (same corpus and timeout); not rerun",
        "timeout": "60 s"
      },
      "jobs": {
        "ab": "144000"
      },
      "commands": {
        "ab": "sbatch --array=0-159%160 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_COMPARE_ROOT=tmp/UF,PRIMO_COMPARE_TIMEOUT=60,PRIMO_COMPARE_SHARDS=80,PRIMO_COMPARE_SOLVERS='primo=build-slurm-rel/primo --quiet --stats;primo-nosimp=build-slurm-rel/primo --quiet --stats --no-quantifier-instance-simplification' scripts/slurm_uf_quantifier_compare.sbatch",
        "summaries": "summarize_uf_quantifier_compare.py (candidate primo and primo-nosimp, z3/cvc5 linked from 143196); summarize_quantifier_instance_counters.py --arms primo primo-nosimp"
      },
      "results": {
        "coverage": "80/80 shards and 7,590 files per arm.",
        "solve_counts": "normalization on 1,668 (1 sat, 1,667 unsat; 1,170 unknown, 4,752 timeouts); off 1,749 (1 sat, 1,748 unsat; 648 unknown, 5,193 timeouts). Off equals the pre-filter-fix M4 count (143196).",
        "correctness": "0 wrong answers against :status and 0 disagreements with Z3 or cvc5 in either arm.",
        "paired": "on solves 18 files off does not; off solves 99 files on does not.",
        "counters": "on: 278.5M instances tried, 61.9M raw duplicates, 201.3M changed by normalization, 80.4M normalized duplicates, 278k trivial, 144.8M lemmas, 1.31M rounds. off: 218.2M instances, 66.9M raw duplicates, 261k trivial, 160.0M lemmas, 1.44M rounds. About 51% of tried instances are duplicates with normalization, 31% without.",
        "reading": "The loss with normalization is the dispatcher scheduling defect fixed in cec20ce: with cheaper, duplicate-free instances the quantifier component interrupted every round before the ground search reached decision-dependent conflicts. This run does not measure normalization on its own and is superseded by the rerun at the fixed commit.",
        "artifacts": "/home/janotmik/primo-quantifiers/results/uf-quantifier-compare-144000 (summary-primo.json, summary-nosimp.json, counters.json) (SLURM-backed)"
      },
      "evidence_status": "superseded"
    },
    {
      "id": "2026-09-12-quantifiers-uf-mutation-fuzz-144001",
      "date": "2026-09-12",
      "commit": "b1b2fbe",
      "branch": "quantifiers",
      "kind": "seed-mutation-fuzz-campaign",
      "scope": "Fresh mutation-fuzz gate for the changed lemma generation (instance normalization and caches, ca5cdaa) with the pure-theory filter fix (b1b2fbe): typefuzz on UF seeds against Z3, answers only, then classification of every retained mutant.",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute",
        "workspace": "/home/janotmik/primo-quantifiers, build-slurm-rel/primo reporting git b1b2fbe; instance simplification on (default)",
        "fuzzer": "YinYang typefuzz 0.3.0, --keep-logic --hoist-declarations --keep-mutants, 50 iterations per seed, solver timeout 5 s, random seeds 202609130-202609133",
        "seeds": "build_fuzz_seed_corpus.py --per-family 3 --max-bytes 20000 over the UF division: 21 seeds, 19 valid per task",
        "reference": "contrib/local/bin/z3 (Z3 5.1.0); confirmations with Z3 and contrib/local/bin/cvc5 (cvc5 1.3.4) --enum-inst / --full-saturate-quant"
      },
      "jobs": {
        "fuzz": "144001",
        "classification": "144164",
        "confirmation": "144196"
      },
      "commands": {
        "fuzz": "sbatch --time=01:00:00 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_CORPUS_ROOT=$HOME/primo-quantifiers-data/non-incremental/UF,PRIMO_FUZZ_YINYANG_WALL_SECONDS=3000,PRIMO_FUZZ_RANDOM_SEED=202609130 scripts/slurm_uf_quantifier_mutation_fuzz.sbatch",
        "classification": "sbatch --array=0-31 --time=01:00:00 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_COMPARE_ROOT=fuzz-results/uf-quantifier-mutation-144001,PRIMO_COMPARE_TIMEOUT=5,PRIMO_COMPARE_SHARDS=16,PRIMO_COMPARE_SOLVERS='primo=build-slurm-rel/primo --quiet;z3=contrib/local/bin/z3' scripts/slurm_uf_quantifier_compare.sbatch",
        "confirmation": "uf_long_reference_check.sbatch (scratch, validated) with PRIMO_LONG_CHECK_SECONDS=120 on the three mutants in results/uf-mutant-classify-144001/unconfirmed.txt"
      },
      "results": {
        "fuzz": "7,354 solver calls, 3,800 retained mutants, 0 bug triggers.",
        "classification_coverage": "3,884 files (3,800 mutants, 84 seed copies), 16/16 shards per solver.",
        "mutants": "Z3 gave a definite answer on 1,026 mutants; Primo answered 414 unsat and 8 sat on those, all agreeing, 577 unknown and 27 timeouts. Both solvers rejected 2,673 ill-formed mutants; Primo rejected 77 more on which Z3 ran to its timeout. Primo wrong answers: 0; disagreements: 0.",
        "unconfirmed_unsat": "7 files Z3 did not decide: 4 copies of the universalInstance seed (confirmed by cvc5 enumerative modes in the earlier gate) and 3 of its mutants: Z3 timed out at 120 s on each, and cvc5 --enum-inst and --full-saturate-quant both answered unsat on all three (job 144196).",
        "superseded": "143836 (same gate at ca5cdaa, pure-theory filter still active): 3,800 mutants, 0 bug triggers, not classified.",
        "artifacts": "/home/janotmik/primo-quantifiers/fuzz-results/uf-quantifier-mutation-144001, /home/janotmik/primo-quantifiers/results/uf-mutant-classify-144001 (summary.json, unconfirmed.txt, long-check-2.txt) (SLURM-backed)"
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-12-quantifiers-instance-redundancy-local",
      "date": "2026-09-12",
      "commit": "ca5cdaa",
      "branch": "quantifiers",
      "kind": "local-smoke-measurement",
      "scope": "First look at quantifier instance redundancy after adding InstanceSimplifier and the raw/canonical instance caches, before any cluster run.",
      "environment": {
        "host": "local workstation, 14 cores, other work running",
        "corpus": "the 30 smallest files of the SMT-LIB UF division",
        "command": "build/primo --stats [--no-quantifier-instance-simplification] FILE under timeout 10"
      },
      "results": {
        "baseline_dedup": "Before this change TermId deduplication removed almost nothing: list2 20,632 instances -> 20,569 lemmas, uf.575042 38,372 -> 38,312, smtlib.993850 3,897 -> 3,895.",
        "set_family": "On the misc set* files normalization found most redundancy: set8 64,051 instances tried, 36,531 simplified duplicates, 1,353 raw duplicates, 28 trivial, 27,473 lemmas (off: 24,806 instances, 868 raw duplicates, 24,807 lemmas in the same 10 s). Enumeration gets through 2-2.6x more tuples per lemma added.",
        "regression_found": "sledgehammer/FFT uf.860560, uf.860500 and uf.860456 went from unsat with 6 instances (off) to unknown after 10,000+ instances (on). Traced to the pure-theory filter on the quantified route, not to the simplifier; see 2026-09-12-quantifiers-pure-filter-diagnosis.",
        "artifacts": "local scratch only (redundancy.txt); superseded by the cluster A/B at b1b2fbe"
      },
      "evidence_status": "superseded"
    },
    {
      "id": "2026-09-12-quantifiers-pure-filter-diagnosis",
      "date": "2026-09-12",
      "commit": "b1b2fbe",
      "branch": "quantifiers",
      "kind": "bug-diagnosis-and-reduction",
      "scope": "Why instance normalization lost refutations on sledgehammer/FFT/uf.860560, and the fix.",
      "environment": {
        "host": "local workstation",
        "defective_binary": "build/primo at ca5cdaa plus a temporary debug print (not committed), kept as scratch primo-filter-bug",
        "reference": "contrib/local/bin/z3"
      },
      "results": {
        "observation": "With normalization on, the six first-round instances were equivalent to the raw ones, yet no EUF conflict arose and the run went unknown; the term pool grew from 47 to 86,685 terms.",
        "isolation": "Asserting the six simplified instances directly: QF_UF unsat and Z3 unsat, but the quantified route unknown with normalization on. Minimal orientation cases (E1, E5) stayed unsat, so orientation alone was not the cause.",
        "cause": "--pure-theory-filter=off restored unsat in 30 instances; with the filter on the route discarded 1,269,246 EUF assignments. The filter presumes a final clause set, and instance lemmas keep adding atom occurrences; normalized instances reuse ground atoms in the other orientation, which made the loss frequent. The QF_UFLIA route was unaffected on the reconstructed problem (unsat with the filter auto and off, current and pre-M1 binaries).",
        "fix": "solve_quantified_uf forces PureTheoryFilterMode::Off, as incremental sessions already do.",
        "reduction": "ddsmt -j 4 --timeout 15 with predicate 'defective binary not unsat in 3 s, same binary with --pure-theory-filter=off unsat, Z3 unsat': 1,408 -> 925 bytes; renamed and saved as benchmarks/regressions/uf_quantified_pure_filter_growth.smt2 (defective unknown with normalization on and off, fixed unsat, Z3 unsat) and a unit test.",
        "impact_on_earlier_evidence": "The M4 UF evaluation (143196, a6d3ff2) ran with the filter active; its answers were all correct but its solve count predates the fix.",
        "superseded_cluster_jobs": "143835 (A/B at ca5cdaa) cancelled; 143836 (UF mutation fuzz at ca5cdaa, 3,800 mutants, 0 bug triggers) superseded by the rerun at b1b2fbe."
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-12-quantifiers-uf-division-compare-143196",
      "date": "2026-09-12",
      "commit": "a6d3ff2",
      "branch": "quantifiers",
      "kind": "full-corpus-reference-comparison",
      "scope": "First evaluation of the quantified UF route (M4: EUF component plus enumerative instantiation) on the whole SMT-LIB UF division, against declared :status, Z3 and cvc5. Solver sources at a6d3ff2 equal 5acd21c.",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute, 240 single-CPU array tasks",
        "solver": "/home/janotmik/primo-quantifiers/build-slurm-rel/primo --quiet, git a6d3ff2, default options (128 instances per round, 100000 instances per solve)",
        "references": "contrib/local/bin/z3 (Z3 5.1.0), contrib/local/bin/cvc5 (cvc5 1.3.4), copied from primo-baseline-7ea99a7; no earlier UF reference results existed",
        "corpus": "sandbox/UF.tar.zst (sha256 2f6e2561fa9c...), extracted to /home/janotmik/primo-quantifiers-data/non-incremental/UF and hard-linked to tmp/UF: 7,590 files, path/size manifest sha256 prefix 38feaaabff90657e; declared status 3,394 unsat, 801 sat, 3,395 unknown",
        "timeout": "60 s"
      },
      "jobs": {
        "compare": "143196 (a first submission, 142921, failed because the corpus root was outside the workspace and was cancelled)"
      },
      "commands": {
        "compare": "sbatch --array=0-239%160 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_COMPARE_ROOT=tmp/UF,PRIMO_COMPARE_TIMEOUT=60 scripts/slurm_uf_quantifier_compare.sbatch (throttle raised to 240 while running)",
        "summary": "python3 scripts/summarize_uf_quantifier_compare.py results/uf-quantifier-compare-143196 --shards 80 --expected-files 7590 --json results/uf-quantifier-compare-143196/summary.json"
      },
      "results": {
        "coverage": "80/80 shards and 7,590/7,590 files for each solver.",
        "solve_counts": "Primo 1,749 (1 sat, 1,748 unsat; 495 unknown, 5,346 timeouts). Z3 2,765 (109 sat, 2,656 unsat; 4,824 timeouts). cvc5 3,154 (1 sat, 3,153 unsat; 641 unknown, 3,795 timeouts). No errors or unsupported for Primo.",
        "par2": "Primo 706,277; Z3 580,843; cvc5 534,091 (timeout counted as 120 s).",
        "families": "Primo/Z3/cvc5 solved: 20170428-Barrett 907/1281/1517 of 2963; 20190906-CLEARSY 13/42/20 of 50; 20201221-induction-by-reflection-schoisswohl 4/8/8 of 32; grasshopper 150/362/350 of 376; misc 5/17/14 of 19; sledgehammer 670/1045/1245 of 4140; wintersteiger 0/10/0 of 10.",
        "correctness": "0 wrong answers against :status, 0 disagreements with Z3 or cvc5, 0 reference conflicts.",
        "reference_less_answers": "Primo solves 31 files neither reference solves (virtual best of Z3 and cvc5 3,320 -> 3,351 with Primo): 29 declared unsat; universalInstance (no status) answered unsat by cvc5 --enum-inst and --full-saturate-quant at 120 s; koenigslemma/x2015_09_10_16_51_52_445_1059832 (no status) is unconfirmed: Z3, cvc5 --enum-inst and cvc5 --full-saturate-quant all time out at 900 s (job 143489), so that one Primo unsat is neither confirmed nor refuted.",
        "unknown_reasons": "471 instance budget reached, 24 no new instance.",
        "reading": "Enumerative instantiation alone reaches 63% of Z3's solves and 55% of cvc5's, with no sat beyond Skolem-covered inputs. The gap is mostly sledgehammer and Barrett unsat problems that references solve with other instantiation techniques, and every sat answer that needs a model.",
        "artifacts": "/home/janotmik/primo-quantifiers/results/uf-quantifier-compare-143196 (per-solver shard CSVs and journals, summary.json, primo-unconfirmed-cvc5.txt, long-check-1.txt) (SLURM-backed)"
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-12-quantifiers-uf-mutation-fuzz-142922",
      "date": "2026-09-12",
      "commit": "a6d3ff2",
      "branch": "quantifiers",
      "kind": "seed-mutation-fuzz-campaign",
      "scope": "Real-seed typefuzz mutation of the quantified UF route (M4) against Z3, answers only, followed by a classification rerun of every retained mutant and a cvc5 confirmation of answers Z3 could not check.",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute",
        "workspace": "/home/janotmik/primo-quantifiers, build-slurm-rel/primo reporting git a6d3ff2",
        "fuzzer": "YinYang typefuzz 0.3.0 (.venv-yinyang from contrib-yinyang), --keep-logic --hoist-declarations --keep-mutants, 50 iterations per seed, solver timeout 5 s",
        "seeds": "scripts/build_fuzz_seed_corpus.py --per-family 3 --max-bytes 20000 over the SMT-LIB UF division: 21 seeds from 7 families; typefuzz reported 19 valid and 2 invalid per task",
        "reference": "contrib/local/bin/z3 (Z3 5.1.0); confirmations with contrib/local/bin/cvc5 (cvc5 1.3.4)"
      },
      "jobs": {
        "fuzz": "142922 (4 tasks, random seeds 202609110-202609113)",
        "classification": "143358 (slurm_uf_quantifier_compare.sbatch over the fuzz output, primo and z3, 16 shards each, 5 s)"
      },
      "commands": {
        "fuzz": "sbatch --time=01:00:00 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_CORPUS_ROOT=$HOME/primo-quantifiers-data/non-incremental/UF,PRIMO_FUZZ_YINYANG_WALL_SECONDS=3000 scripts/slurm_uf_quantifier_mutation_fuzz.sbatch",
        "classification": "sbatch --array=0-31 --time=01:00:00 --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_COMPARE_ROOT=fuzz-results/uf-quantifier-mutation-142922,PRIMO_COMPARE_TIMEOUT=5,PRIMO_COMPARE_SHARDS=16,PRIMO_COMPARE_SOLVERS='primo=build-slurm-rel/primo --quiet;z3=contrib/local/bin/z3' scripts/slurm_uf_quantifier_compare.sbatch; python3 scripts/summarize_uf_quantifier_compare.py results/uf-mutant-classify-142922 --shards 16 --expected-files 3869"
      },
      "results": {
        "fuzz": "All four tasks processed every seed within the wall budget: 7,323 solver calls, 3,785 retained mutants, 0 bug triggers.",
        "classification_coverage": "3,869 files (3,785 mutants and 84 seed copies), 16/16 shards for both solvers.",
        "mutants": "Z3 gave a definite answer on 938 mutants; Primo answered 442 unsat and 4 sat on those, all agreeing (0 disagreements), 472 unknown and 20 timeouts. Both solvers rejected 2,656 mutants as ill-formed. On 159 mutants Primo reported an error while Z3 ran to its timeout: unknown symbols (bound variables moved out of their binder) and argument sort mismatches; Z3 and cvc5 print errors for the same inputs, so these are correct rejections. 27 mutants timed out or were unknown in both.",
        "unconfirmed_unsat": "Primo answered unsat on 9 files where Z3 gave no answer in 5 s: the universalInstance seed (declared :status unknown, 4 copies) and 5 of its mutants. With 60 s, Z3 confirmed 1 and timed out on 8, and default cvc5 answered unknown; cvc5 --enum-inst and cvc5 --full-saturate-quant both answered unsat on all 9.",
        "wrong_answers": "0 wrong answers, 0 crashes.",
        "note": "About 70% of typefuzz mutants of quantified seeds are ill-formed (bound variables used outside their binder, ill-sorted swaps), so the useful case count is the 938 mutants with a Z3 answer, not the raw 3,785.",
        "artifacts": "/home/janotmik/primo-quantifiers/fuzz-results/uf-quantifier-mutation-142922, /home/janotmik/primo-quantifiers/results/uf-mutant-classify-142922 (summary.json, unconfirmed.txt) (SLURM-backed)"
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-12-quantifiers-qf-uflia-preservation-142925",
      "date": "2026-09-12",
      "commit": "a6d3ff2",
      "branch": "quantifiers",
      "kind": "preservation-answers-and-counters",
      "scope": "Quantifier-free preservation for the quantifier milestones: main 605062f against the branch on the full 659-file QF_UFLIA set, answers and non-timing statistics. The production QF_UFLIA path is the N-component driver that M3 extended.",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute, 16 array tasks sharing nodes with other jobs",
        "baseline": "/home/janotmik/primo-quantifiers-base/build-slurm-rel/primo, git 605062f (built from a clean clone of main)",
        "candidate": "/home/janotmik/primo-quantifiers/build-slurm-rel/primo, git a6d3ff2",
        "corpus": "/home/janotmik/primo-quantifiers-data/QF_UFLIA, server-side copy of primo-model-fix/tmp/QF_UFLIA: 659 files, path/size manifest sha256 prefix 1d752c3ef2f50bc6",
        "timeout": "60 s, one repeat"
      },
      "jobs": {
        "preservation": "142925"
      },
      "commands": {
        "preservation": "sbatch --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_BASELINE=$HOME/primo-quantifiers-base/build-slurm-rel/primo,PRIMO_CANDIDATE=$HOME/primo-quantifiers/build-slurm-rel/primo,PRIMO_PRESERVE_ROOT=$HOME/primo-quantifiers-data/QF_UFLIA scripts/slurm_quantifier_qf_preservation.sbatch"
      },
      "results": {
        "answers": "Identical status and answer on all 659 files: 405 sat, 169 unsat, 85 timeouts in both binaries.",
        "statistics": "Non-timing statistics identical on all 659 files.",
        "reading_the_summary": "compare_local_solver_stats.py reports all_answers_match false because it requires status ok; the 85 files it lists as disagreement are exactly the files where both binaries timed out.",
        "runtime": "Not measured as a runtime comparison: shared nodes, one repeat.",
        "artifacts": "/home/janotmik/primo-quantifiers/results/quantifier-qf-preservation-142925 (SLURM-backed)"
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-12-quantifiers-qf-fuzz-gates-142923",
      "date": "2026-09-12",
      "commit": "a6d3ff2",
      "branch": "quantifiers",
      "kind": "fuzz-merge-gate",
      "scope": "Quantifier-free merge gates for the quantifier milestones M1-M4 (new term kinds and caches, depth-stamped frontend scopes, clausifier quantifier atoms, lemma queue in the component driver, route in run_query). Solver sources at a6d3ff2 equal 5acd21c.",
      "environment": {
        "host": "CIIRC SLURM cluster, partition compute",
        "workspace": "/home/janotmik/primo-quantifiers, build-slurm-rel/primo reporting git a6d3ff2, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3 (Z3 5.1.0); Dolmen 0.10 for models",
        "prepare": "slurm_prepare_benchmark_workspace.py --reuse-dependencies --build-via-slurm --jobs 16 --cxx-header-manifest /home/janotmik/primo-cadical-profile/contrib/local/clang-tools-env/cxx-headers/include-paths.txt; contrib/local copied from primo-baseline-7ea99a7 (identical contrib/install_*.py hashes), .venv-build cmake installed on the login node"
      },
      "jobs": {
        "qf_uflia_model_fuzz": "142923",
        "qf_uf_boolean_fuzz": "142924"
      },
      "commands": {
        "qf_uflia_model_fuzz": "sbatch --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_FUZZ_SEED_BASE=202609120 scripts/slurm_qf_uflia_model_fuzz_gate.sbatch (4 tasks x 750, shape mixed, depth 3, timeout 5)",
        "qf_uf_boolean_fuzz": "sbatch --export=ALL,PRIMO_WORKDIR=$HOME/primo-quantifiers,PRIMO_FUZZ_SEED_BASE=202609120 scripts/slurm_qf_uf_boolean_fuzz_gate.sbatch (11 shapes x 1000, timeout 10)"
      },
      "results": {
        "qf_uflia_answers": "3000/3000 PASS against Z3; no wrong answer, crash, timeout or unsupported.",
        "qf_uf_boolean_answers": "11000/11000 PASS across all 11 shapes.",
        "models": "Every sat case passed Dolmen: 1503 (QF_UFLIA) and 6847 (QF_UF Boolean); 0 invalid models.",
        "model_stage_exit": "All tasks except model-reconstruction exit 1 because the model validator records every unsat case as solver-error: 1497 and 4153 rows, each an unsat answer whose (get-model) produced the error 'get-model requires a current SAT model' with exit 2. The baseline main binary 605062f behaves identically on the same input; the error dates from 5bc811b (scoped SMT sessions) on main, after the validator was written. Not caused by the quantifier branch; the validator needs to accept that error after unsat.",
        "artifacts": "/home/janotmik/primo-quantifiers/fuzz-results/qf-uflia-model-gate-142923, /home/janotmik/primo-quantifiers/fuzz-results/qf-uf-boolean-142924 (SLURM-backed)"
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-09-11-incremental-uf-merge-40adb28",
      "build_stamp_note": "The verified executable reports 40adb28-dirty because merge-status documentation edits were pending during make check. src, scripts and tests have no worktree diff; the source tree equals the qualified 7ac555c tree.",
      "date": "2026-09-11",
      "kind": "merge-integration-verification",
      "status": "merged locally into main; verification passed",
      "merge_commit": "40adb289b3c39a571a03ff026404a643dc5ef1f8",
      "parents": [
        "605062f4170d5014f7479dded6d2191899d4a5dc",
        "3a96e86831ce0195c6f47e1e9d32860a3ded236a"
      ],
      "branch": "perf/incremental-uf-atom-scans",
      "branch_tip": "3a96e86831ce0195c6f47e1e9d32860a3ded236a",
      "merge_tree": "ce1efa40e6a8cbbd182afad92288c5d4847e0bf0",
      "exact_branch_tree_preserved": true,
      "qualified_source_commit": "7ac555c",
      "qualified_and_merged_source_tree": "2f6441cf276fe6d2d44defaa524db92fc05a6b49",
      "changes": "No conflict resolution or source edits; update current-status, atom-scan report and open-lead merge status in adjacent documentation commit. Rebuild stays default.",
      "verification": {
        "make_check": "pass: lint, 34 C++/CLI tests, 174 Python tests",
        "make_docs": "pass",
        "git_diff_check": "pass",
        "version": "primo 0.1.0\ngit: 40adb28-dirty\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07\n",
        "local_solver_processes": []
      },
      "qualification": "Identical source tree to 7ac555c: ASAN, focused static scans, 2000 scoped sessions, 25027 native SAT models, default 25-file preservation. No new solver behavior, benchmark rerun or SLURM job.",
      "artifacts": "results/merge-incremental-uf-40adb28",
      "remote_changes": "No push or remote branch mutation in this integration."
    },
    {
      "id": "2026-09-11-opensmt-native-incremental-comparison",
      "date": "2026-09-11",
      "kind": "complete-external-reference-comparison",
      "status": "comparison collected and reviewed; external crashes and incomplete sessions retained as failures",
      "harness_commit": "16abc94",
      "source_changes": "Python orchestration/reference collection only; Primo solver sources remain identical to qualified 7ac555c.",
      "solver": "OpenSMT 2.9.2",
      "solver_sha256": "b7899e9aff299026d3251df7a28f51f56d8bd1e5b0fd7be11bcc72c4f2803a98",
      "command": [
        "contrib/local/bin/opensmt",
        "--pipe"
      ],
      "benchmark_script": "scripts/slurm_opensmt_incremental.sbatch",
      "summary_script": "scripts/summarize_opensmt_incremental.py",
      "jobs": {
        "build": 142851,
        "uf": 142854,
        "lra": 142852
      },
      "host": "node-02.ciircluster",
      "resources": {
        "uf_whole_session_seconds": 30,
        "lra_whole_session_seconds": 600,
        "requested_cpus": 1,
        "memory_gib": 8,
        "uf_tasks_at_once": 4,
        "lra_tasks_at_once": 2
      },
      "corpora": {
        "uf": {
          "archive_sha256": "52c55a17ee15e5c4a0fc723b9605ae42615da34499efc7e5a5e8b2c0ffc26a27",
          "sessions": 1778,
          "queries": 29990,
          "manifest_sha256": "4cc0c9b35b3725ae2893e626f0ee29ca798830462b080a0dea16585bbcc48b85"
        },
        "lra": {
          "manifest": "benchmarks/native-lra-opensmt.json",
          "selection": "Original BMW BMC and induction, indices 0 and 1 in native LRA manifest",
          "sessions": 2,
          "queries": 303
        }
      },
      "opensmt_uf": {
        "sessions": 1778,
        "outcomes": {
          "complete": 1764,
          "error": 4,
          "timeout": 10
        },
        "completed_queries": 29489,
        "partial_queries": 174,
        "partial_definite_answers": 174,
        "partial_unknown_answers": 0,
        "expected_sat_models": 24604,
        "total_par2": 1578.4831675067544,
        "mean_par2": 0.8877858084964872,
        "median_complete_seconds": 0.058532869443297386,
        "max_measured_rss_kib": 1201176,
        "rss_samples": 1778
      },
      "uf_comparison": {
        "primo-assumptions-7ac555c": {
          "sessions": 1778,
          "outcomes": {
            "complete": 1772,
            "unknown": 6
          },
          "completed_queries": 29978,
          "partial_queries": 12,
          "partial_definite_answers": 5,
          "partial_unknown_answers": 7,
          "expected_sat_models": 25027,
          "total_par2": 839.1429135221988,
          "mean_par2": 0.47195889399448754,
          "median_complete_seconds": 0.06839724816381931,
          "max_measured_rss_kib": 925480,
          "rss_samples": 1778
        },
        "z3": {
          "sessions": 1778,
          "outcomes": {
            "complete": 1778
          },
          "completed_queries": 29990,
          "partial_queries": 0,
          "partial_definite_answers": 0,
          "partial_unknown_answers": 0,
          "expected_sat_models": 25035,
          "total_par2": 300.640461480245,
          "mean_par2": 0.16908912344220753,
          "median_complete_seconds": 0.040514715015888214,
          "max_measured_rss_kib": 160132,
          "rss_samples": 1778
        },
        "cvc5": {
          "sessions": 1778,
          "outcomes": {
            "complete": 1768,
            "timeout": 10
          },
          "completed_queries": 29970,
          "partial_queries": 0,
          "partial_definite_answers": 0,
          "partial_unknown_answers": 0,
          "expected_sat_models": 25020,
          "total_par2": 1477.990283396095,
          "mean_par2": 0.8312656262070276,
          "median_complete_seconds": 0.10150773357599974,
          "max_measured_rss_kib": 198896,
          "rss_samples": 1778
        },
        "rebuild": {
          "sessions": 1778,
          "outcomes": {
            "complete": 1775,
            "timeout": 3
          },
          "completed_queries": 29573,
          "partial_queries": 373,
          "partial_definite_answers": 373,
          "partial_unknown_answers": 0,
          "expected_sat_models": 24746,
          "total_par2": 1474.6384359039366,
          "mean_par2": 0.8293804476400094,
          "median_complete_seconds": 0.2911167349666357,
          "max_measured_rss_kib": 1013616,
          "rss_samples": 1778
        }
      },
      "uf_crash_indices": [
        778,
        785,
        824,
        1688
      ],
      "uf_definite_answer_disagreements": 0,
      "uf_crash_triage": "All four SIGSEGV failures reproduce locally with the identical binary and exact pre-crash answer sequences. Primo and Z3 complete these inputs; they belong to the recorded native Primo model gate. Reference errors are never solved cases.",
      "opensmt_lra": {
        "sessions": 2,
        "outcomes": {
          "complete": 1,
          "timeout": 1
        },
        "completed_queries": 101,
        "partial_queries": 111,
        "partial_definite_answers": 111,
        "partial_unknown_answers": 0,
        "expected_sat_models": 0,
        "total_par2": 1364.553895657882,
        "mean_par2": 682.276947828941,
        "median_complete_seconds": 164.5538956578821,
        "max_measured_rss_kib": 794120,
        "rss_samples": 2
      },
      "lra_bmc_seconds": 164.5538956578821,
      "lra_induction_timeout_queries": 111,
      "lra_reference_comparison": "Preserved Primo assumptions: BMC 126.97 s, induction timeout after 95 answers. Rebuild: timeout after 38/53 answers. Recorded Z3: 58/73; cvc5: 69/77. LRA whole-session timeout 600 s, no partial-count speedup claim.",
      "qualification": {
        "primo_uf": "Preserved 7ac555c run: 1772 complete sessions, 29978 queries, 25027 independently validated actual SAT models, job 142793. No new Primo behavior.",
        "opensmt_uf": "29663 definite answers, including partial sessions, match recorded references. No independent OpenSMT SAT-model validation claimed.",
        "lra": "BMC has 101 UNSAT answers; induction times out after 111 matching declared answers. No full induction qualification. Native first-four-query prefixes also match."
      },
      "reference_reuse": "Primo UF 7ac555c timing/model jobs 142774/142793; prior rebuild/assumptions fa2fe5c timing 142665; Z3/cvc5 UF 142464. Primo LRA 04d2e23 and references 142089 reused without retiming.",
      "limitations": [
        "Reference rows are answer comparisons, not independent OpenSMT model validation.",
        "Primo UF model qualification remains the separate recorded 7ac555c run.",
        "Incomplete sessions receive twice the whole-session limit, regardless of partial progress.",
        "Primo has a 10000 theory-conflict/query limit; external references have no matching cap.",
        "Reused runs are not contemporaneous paired measurements."
      ],
      "verification": [
        "make check: 34 C++/CLI and 174 Python pass",
        "make python-test: 174 pass after final summary changes",
        "make lint",
        "make docs",
        "bash -n and slurm_validate_sbatch.py",
        "18 shard solver/version/driver/timeout identities matched",
        "four crashes reproduced locally using identical binary"
      ],
      "review": "Reviewed the new helper, timing error paths, summarizer coverage/ratio rules, full metadata joins and linked docs against unchanged project architecture and prior whole-tree source/static baseline. No new C++/SAT/theory algorithm; ASAN and clang-tidy not rerun for Python/benchmark-only work. All 18 shards retain the exact reference and driver identities; all error rows remain penalties and are locally reproduced.",
      "terminal_audit": {
        "archive_verification": {
          "first-attempt.tar.gz": {
            "gzip_crc": "pass",
            "tar_members": 2844
          },
          "slurm-logs.tar.gz": {
            "gzip_crc": "pass",
            "tar_members": 36
          },
          "completed-uf-bmc.tar.gz": {
            "gzip_crc": "pass",
            "tar_members": 8947
          },
          "completed-lra.tar.gz": {
            "gzip_crc": "pass",
            "tar_members": 17
          }
        },
        "local_solver_processes": [],
        "job_states": {
          "CANCELLED by 50383": 6,
          "CANCELLED": 5,
          "COMPLETED": 41,
          "FAILED": 8
        },
        "job_accounting": "results/opensmt-incremental-67387f3/job-accounting.txt",
        "terminal_job_step_rows": 60,
        "current_reference_arrays": {
          "142852": {
            "task_states": {
              "COMPLETED": 2
            }
          },
          "142854": {
            "task_states": {
              "COMPLETED": 13,
              "FAILED": 3
            }
          }
        },
        "note": "FAILED reference shards retain complete coverage and exit 1 because of recorded OpenSMT crashes; first-attempt cancellations are preserved. No active SLURM jobs remained at collection."
      },
      "metadata": "benchmarks/opensmt-incremental-comparison.json",
      "report": "docs/opensmt-incremental-comparison.md",
      "artifact_root": "results/opensmt-incremental-67387f3",
      "delivery_archive": {
        "path": "results/opensmt-incremental-delivery-16abc94.tar.gz",
        "bytes": 2615716,
        "sha256": "620a344bc6cd2b43bdfddfae98e4cffff80dfb7533b14aed8cd5dbacbf280239",
        "members": 9059,
        "integrity": "gzip CRC and full tar member traversal pass"
      }
    },
    {
      "id": "2026-09-11-opensmt-native-crash-triage",
      "date": "2026-09-11",
      "kind": "external-reference-comparison-triage",
      "candidate": "847a73f",
      "build_job": "142839",
      "benchmark_job": "142840",
      "status": "paused and cancelled after reproducible external reference crash; no wrong-answer observed",
      "solver": "OpenSMT v2.9.2 --pipe",
      "solver_sha256": "b7899e9aff299026d3251df7a28f51f56d8bd1e5b0fd7be11bcc72c4f2803a98",
      "host": "node-02",
      "limits": {
        "uf_session_seconds": 30,
        "lra_session_seconds": 600,
        "memory_gib": 8,
        "requested_cpus": 1
      },
      "input": "incremental/QF_UF/20190906-CLEARSY/0000/00310.smt2",
      "index": 785,
      "outcome": {
        "exit_code": -11,
        "partial_queries": 30,
        "mismatches": 0
      },
      "triage": "Same binary crashes locally at the same query with and without --pipe. This input belongs to the recorded full native Primo model qualification; archived Z3 answers are available. External crash remains an error, never a completed solve. No Primo source changed.",
      "artifacts": "results/opensmt-incremental-67387f3",
      "verification": "make check (34 C++/CLI and 174 Python), make lint, make docs, bash -n and SLURM validator pass. Eight new tests cover coverage, partial answers, post-answer process failure, stderr version capture, continuation and mandatory wrong-answer stop. No C++ source changed; prior whole-tree static/ownership baseline reused; harness and metadata paths reviewed freshly.",
      "followup": "Add explicit external-reference-only error collection to finish counting failures without stopping at the first crash. Preserve default stop behavior, wrong-answer stop, error PAR2 and failing exit. Add child-process tests; retain all first-attempt rows separately."
    },
    {
      "id": "2026-09-11-opensmt-login-provisioning",
      "date": "2026-09-11",
      "kind": "reference-tool-provisioning",
      "candidate": "67387f3",
      "status": "compute-node installer stalled; cancelled before build; login-host binary download support added",
      "job": "142827",
      "command": "slurm_prepare_benchmark_workspace.py --reuse-dependencies --contrib-target contrib-opensmt --build-via-slurm --jobs 4 --require-tool contrib/local/bin/opensmt",
      "evidence": "results/opensmt-incremental-67387f3/prepare.log",
      "diagnosis": "Installer remained in urllib download on compute node; login-node HTTPS request returned HTTP 200. No benchmark was run in this attempt.",
      "local_protocol": "OpenSMT v2.9.2: UF and LRA each return sat/unsat/sat through stdin with and without --pipe; exit 0; results/opensmt-incremental-67387f3/local-protocol.json",
      "change": "Optional --login-contrib-target runs explicit dependency target after sync, before build allocation; check-only stays read-only. Existing behavior unchanged without option.",
      "verification": [
        "5 helper unit tests pass, including provision-before-allocation ordering and shell quoting",
        "make lint pass",
        "make docs pass"
      ],
      "review": "Reviewed helper ownership, failure propagation, check-only path, source identity and shell quoting. C++ source unchanged from the qualified 7ac555c baseline; no fresh C++ static scan or solver fuzz gate needed for this orchestration-only option."
    },
    {
      "id": "2026-09-11-incremental-uf-atom-scans-delivery-7ac555c",
      "date": "2026-09-11",
      "kind": "qualified-artifact-collection-and-final-review",
      "candidate": "7ac555c",
      "status": "accepted opt-in optimization; all required artifacts collected",
      "jobs": [
        "142810",
        "142818"
      ],
      "archives": {
        "parts": [
          {
            "path": "results/uf-atom-scans-605062f/artifacts/part-0.tar.zst",
            "sha256": "69b6f4b2b7b377168b86b7780c4a96d7daabe96d5a52017c5eb61244c8a3e075",
            "bytes": 10877961,
            "members": 10820,
            "sat_model_files": 134,
            "query_contexts": 219,
            "integrity": "checksum/zstd/tar pass"
          },
          {
            "path": "results/uf-atom-scans-605062f/artifacts/part-1.tar.zst",
            "sha256": "55c6acc92af9475b7fc97ba088fc609fbeb457225965071d1185577c42cb922c",
            "bytes": 40972516,
            "members": 55810,
            "sat_model_files": 5872,
            "query_contexts": 7015,
            "integrity": "checksum/zstd/tar pass"
          },
          {
            "path": "results/uf-atom-scans-605062f/artifacts/part-2.tar.zst",
            "sha256": "0668b43ef35a473157a751c7320412bbd8d806b4509a4233ca2fc558f9b64bcf",
            "bytes": 46681187,
            "members": 69726,
            "sat_model_files": 7437,
            "query_contexts": 8862,
            "integrity": "checksum/zstd/tar pass"
          },
          {
            "path": "results/uf-atom-scans-605062f/artifacts/part-3.tar.zst",
            "sha256": "668a4e045b23f3f529b1663c80c93c682016ed9aaddf582cff53fedf5b23f959",
            "bytes": 50784900,
            "members": 62292,
            "sat_model_files": 6614,
            "query_contexts": 7866,
            "integrity": "checksum/zstd/tar pass"
          },
          {
            "path": "results/uf-atom-scans-605062f/artifacts/part-4.tar.zst",
            "sha256": "beec100e726009c7dd423750b1b5ac44737b3840f2e243bfddd90aabe088c6ca",
            "bytes": 36931132,
            "members": 49607,
            "sat_model_files": 5104,
            "query_contexts": 6235,
            "integrity": "checksum/zstd/tar pass"
          },
          {
            "path": "results/uf-atom-scans-605062f/artifacts/part-5.tar.zst",
            "sha256": "aad725d06ecf0c5001ae644f71640a3a7ac3948547baaa24cac8699b1c8b8ba8",
            "bytes": 4087712,
            "members": 122321,
            "sat_model_files": 9432,
            "query_contexts": 16000,
            "integrity": "checksum/zstd/tar pass"
          }
        ],
        "total_bytes": 190335408,
        "native_models": 25027,
        "native_contexts": 29978,
        "binary_sha256": "23bd107c28165d1e54c9e2512e1c0c96daefb3659947dfd5345a894ebf65065f"
      },
      "accounting": "All 120 recorded job/step rows COMPLETED, exit 0:0; results/uf-atom-scans-605062f/job-accounting.txt",
      "review": "No blocking code, ownership, hygiene, documentation or efficiency finding; unchanged source/tests match exact qualified 7ac555c. No default promotion.",
      "metadata": "benchmarks/incremental-uf-atom-scans.json",
      "report": "docs/incremental-uf-atom-scans.md",
      "artifacts": "results/uf-atom-scans-605062f",
      "local_delivery_archive": {
        "path": "results/uf-atom-scans-605062f-delivery.tar.gz",
        "sha256": "02e9c2cd19dc8a43d4dc95cf62fc36a5afc901845ae71cedf9282342008f5418",
        "bytes": 26121876,
        "contents": "local diagnostics/binaries, analysis and submission scripts, collected timing/validation metadata, reviews, logs and pre-commit terminal audit; six raw corpus archives stored separately"
      },
      "terminal_audit": "No active local solver/test/analyzer/fuzzer or SLURM jobs. Temporary qualified checkout removed. Final clean git audit follows the metadata commit."
    },
    {
      "id": "2026-09-11-incremental-uf-atom-scans-qualified-7ac555c",
      "date": "2026-09-11",
      "kind": "final-native-model-qualification",
      "candidate": "7ac555c",
      "status": "correctness and performance qualified as opt-in; artifact transfer pending",
      "job": "142793",
      "qualification": {
        "replayed_sessions": 1778,
        "qualified_complete_sessions": 1772,
        "qualified_queries": 29978,
        "sat_models": 25027,
        "changed_answers": [],
        "failures": [],
        "complete_without_qualification": []
      },
      "identity_checks": "All 16 timing/replay shard binary, manifest, driver hashes and solver arguments match. Every replayed answer equals its timed answer.",
      "validator": "Dolmen with a separate live Z3 reference per query; versions and hashes in per-shard run.json",
      "validation_concurrency": "8 initially; scontrol update JobId=142793 ArrayTaskThrottle=16 after checking spare CPU/memory capacity; one requested CPU (two allocated logical CPUs) and 8G per task unchanged",
      "artifact_collection_jobs": [
        "142810",
        "142818"
      ],
      "metadata": "benchmarks/incremental-uf-atom-scans.json",
      "artifacts": "results/uf-atom-scans-605062f",
      "limitations": [
        "Six incomplete sessions remain unqualified, including earlier SAT responses.",
        "No default-mode promotion; scratch initialization and working-state copies remain open.",
        "Peak RSS increases about 0.7%; no memory-reduction claim.",
        "Full-run regression rows 914 and 1151 remain in the totals; their regressions did not repeat in fresh paired rechecks.",
        "Existing whole-tree static/review baseline reused for unchanged files; fresh scans cover three changed translation units."
      ]
    },
    {
      "id": "2026-09-11-incremental-uf-scan-outlier-rechecks-7ac555c",
      "date": "2026-09-11",
      "kind": "targeted-paired-regression-recheck",
      "candidate": "7ac555c",
      "baseline": "fa2fe5c",
      "job": "142815",
      "motivation": "Full-run rows 914 and 1151 were 51% and 12% slower than their recorded baseline; investigate before accepting the optimization.",
      "profile": "--quiet --stats --incremental-mode=assumptions --max-theory-conflicts=10000; unchanged stdin, 30-second whole-session bound",
      "paired_order": "baseline/candidate, candidate/baseline, baseline/candidate",
      "measurements": [
        {
          "index": 914,
          "seconds": {
            "baseline": [
              0.766266718506813,
              0.7727752681821585,
              0.7791981939226389
            ],
            "candidate": [
              0.6763575915247202,
              0.6804572194814682,
              0.6816522888839245
            ]
          },
          "median_candidate_over_baseline": 0.8805370040919464
        },
        {
          "index": 1151,
          "seconds": {
            "baseline": [
              0.9723394960165024,
              0.9725399669259787,
              0.9644633568823338
            ],
            "candidate": [
              0.8635130412876606,
              0.8501474410295486,
              0.8420787192881107
            ]
          },
          "median_candidate_over_baseline": 0.874331902090214
        }
      ],
      "outcomes": {
        "sessions": 12,
        "complete": 12,
        "unknown": 0,
        "timeout": 0,
        "error": 0,
        "reference_disagreement": 0
      },
      "conclusion": "The apparent regressions do not repeat: paired candidate medians improve about 12% and 13%. Original full-run rows remain unchanged; no precise cause for timing variation is claimed. Model qualification remains the separate native replay.",
      "artifacts": "results/uf-atom-scans-605062f/regression-pair",
      "batch_variant": "slurm_incremental_uf_pair.sbatch with indices=(914 1151) and array=0-1%2; exact variant preserved in artifacts",
      "submission": "regression-pair-submission.json"
    },
    {
      "id": "2026-09-11-incremental-uf-atom-scan-timing-7ac555c",
      "date": "2026-09-11",
      "kind": "paired-and-full-native-uf-timing",
      "status": "timing complete; independent candidate model qualification pending",
      "candidate": "7ac555c",
      "baseline": "fa2fe5c (same solver sources as merged 605062f)",
      "jobs": {
        "paired": "142771",
        "native": "142774",
        "validation": "142793"
      },
      "full_comparison": {
        "baseline": {
          "sessions": 1778,
          "outcomes": {
            "complete": 1772,
            "unknown": 6
          },
          "completed_queries": 29978,
          "partial_queries": 12,
          "partial_definite_answers": 5,
          "partial_unknown_answers": 7,
          "expected_sat_models": 25027,
          "total_par2": 858.4847814496607,
          "mean_par2": 0.4828373348985718,
          "median_complete_seconds": 0.07483524642884731,
          "max_measured_rss_kib": 919232,
          "rss_samples": 1778
        },
        "candidate": {
          "sessions": 1778,
          "outcomes": {
            "complete": 1772,
            "unknown": 6
          },
          "completed_queries": 29978,
          "partial_queries": 12,
          "partial_definite_answers": 5,
          "partial_unknown_answers": 7,
          "expected_sat_models": 25027,
          "total_par2": 839.1429135221988,
          "mean_par2": 0.47195889399448754,
          "median_complete_seconds": 0.06839724816381931,
          "max_measured_rss_kib": 925480,
          "rss_samples": 1778
        },
        "z3": {
          "sessions": 1778,
          "outcomes": {
            "complete": 1778
          },
          "completed_queries": 29990,
          "partial_queries": 0,
          "partial_definite_answers": 0,
          "partial_unknown_answers": 0,
          "expected_sat_models": 25035,
          "total_par2": 300.640461480245,
          "mean_par2": 0.16908912344220753,
          "median_complete_seconds": 0.040514715015888214,
          "max_measured_rss_kib": 160132,
          "rss_samples": 1778
        },
        "lost": [],
        "gained": [],
        "paired_median_candidate_over_baseline": 0.9703345302779738,
        "families": {
          "2018-Goel-hwbench": {
            "baseline": {
              "sessions": 766,
              "outcomes": {
                "complete": 760,
                "unknown": 6
              },
              "completed_queries": 1520,
              "partial_queries": 12,
              "partial_definite_answers": 5,
              "partial_unknown_answers": 7,
              "expected_sat_models": 1062,
              "total_par2": 760.0728838406503,
              "mean_par2": 0.9922622504447132,
              "median_complete_seconds": 0.23188186064362526,
              "max_measured_rss_kib": 919232,
              "rss_samples": 766
            },
            "candidate": {
              "sessions": 766,
              "outcomes": {
                "complete": 760,
                "unknown": 6
              },
              "completed_queries": 1520,
              "partial_queries": 12,
              "partial_definite_answers": 5,
              "partial_unknown_answers": 7,
              "expected_sat_models": 1062,
              "total_par2": 752.1275253929198,
              "mean_par2": 0.9818897198340989,
              "median_complete_seconds": 0.22757850028574467,
              "max_measured_rss_kib": 925480,
              "rss_samples": 766
            }
          },
          "20190906-CLEARSY": {
            "baseline": {
              "sessions": 1012,
              "outcomes": {
                "complete": 1012
              },
              "completed_queries": 28458,
              "partial_queries": 0,
              "partial_definite_answers": 0,
              "partial_unknown_answers": 0,
              "expected_sat_models": 23965,
              "total_par2": 98.41189760901034,
              "mean_par2": 0.09724495811167029,
              "median_complete_seconds": 0.028651274740695953,
              "max_measured_rss_kib": 25520,
              "rss_samples": 1012
            },
            "candidate": {
              "sessions": 1012,
              "outcomes": {
                "complete": 1012
              },
              "completed_queries": 28458,
              "partial_queries": 0,
              "partial_definite_answers": 0,
              "partial_unknown_answers": 0,
              "expected_sat_models": 23965,
              "total_par2": 87.01538812927902,
              "mean_par2": 0.08598358510798322,
              "median_complete_seconds": 0.0275556780397892,
              "max_measured_rss_kib": 26332,
              "rss_samples": 1012
            }
          }
        }
      },
      "paired_comparison": [
        {
          "index": 14,
          "baseline": [
            {
              "seconds": 4.797533357515931,
              "outcome": "complete",
              "maxrss_kib": 925624,
              "prepare_us": 482437,
              "registration_atoms_scanned": null,
              "preparation_atoms_scanned": null,
              "queries": 2,
              "answers_sha256": "9cd32ab88561dc52e7be94a3d4b43a913793544ce434e6d132fd2d615a755a83"
            },
            {
              "seconds": 4.943461744114757,
              "outcome": "complete",
              "maxrss_kib": 922676,
              "prepare_us": 496899,
              "registration_atoms_scanned": null,
              "preparation_atoms_scanned": null,
              "queries": 2,
              "answers_sha256": "9cd32ab88561dc52e7be94a3d4b43a913793544ce434e6d132fd2d615a755a83"
            },
            {
              "seconds": 4.983388481661677,
              "outcome": "complete",
              "maxrss_kib": 925936,
              "prepare_us": 500584,
              "registration_atoms_scanned": null,
              "preparation_atoms_scanned": null,
              "queries": 2,
              "answers_sha256": "9cd32ab88561dc52e7be94a3d4b43a913793544ce434e6d132fd2d615a755a83"
            }
          ],
          "candidate": [
            {
              "seconds": 4.758247649297118,
              "outcome": "complete",
              "maxrss_kib": 923732,
              "prepare_us": 292958,
              "registration_atoms_scanned": 556973,
              "preparation_atoms_scanned": 556973,
              "queries": 2,
              "answers_sha256": "9cd32ab88561dc52e7be94a3d4b43a913793544ce434e6d132fd2d615a755a83"
            },
            {
              "seconds": 4.8020925745368,
              "outcome": "complete",
              "maxrss_kib": 918688,
              "prepare_us": 299558,
              "registration_atoms_scanned": 556973,
              "preparation_atoms_scanned": 556973,
              "queries": 2,
              "answers_sha256": "9cd32ab88561dc52e7be94a3d4b43a913793544ce434e6d132fd2d615a755a83"
            },
            {
              "seconds": 4.820976426824927,
              "outcome": "complete",
              "maxrss_kib": 923800,
              "prepare_us": 292183,
              "registration_atoms_scanned": 556973,
              "preparation_atoms_scanned": 556973,
              "queries": 2,
              "answers_sha256": "9cd32ab88561dc52e7be94a3d4b43a913793544ce434e6d132fd2d615a755a83"
            }
          ],
          "median_candidate_over_baseline": 0.9714027989098414
        },
        {
          "index": 267,
          "baseline": [
            {
              "seconds": 24.591152073815465,
              "outcome": "complete",
              "maxrss_kib": 266548,
              "prepare_us": 81771,
              "registration_atoms_scanned": null,
              "preparation_atoms_scanned": null,
              "queries": 2,
              "answers_sha256": "dbf977a271f707c0b49ce8d9095faa279a514b4c5aa99fad29c2685354c6b1e7"
            },
            {
              "seconds": 23.7573582213372,
              "outcome": "complete",
              "maxrss_kib": 269036,
              "prepare_us": 77920,
              "registration_atoms_scanned": null,
              "preparation_atoms_scanned": null,
              "queries": 2,
              "answers_sha256": "dbf977a271f707c0b49ce8d9095faa279a514b4c5aa99fad29c2685354c6b1e7"
            },
            {
              "seconds": 23.76185149140656,
              "outcome": "complete",
              "maxrss_kib": 269176,
              "prepare_us": 73240,
              "registration_atoms_scanned": null,
              "preparation_atoms_scanned": null,
              "queries": 2,
              "answers_sha256": "dbf977a271f707c0b49ce8d9095faa279a514b4c5aa99fad29c2685354c6b1e7"
            }
          ],
          "candidate": [
            {
              "seconds": 23.946889132261276,
              "outcome": "complete",
              "maxrss_kib": 268544,
              "prepare_us": 43438,
              "registration_atoms_scanned": 52341,
              "preparation_atoms_scanned": 52341,
              "queries": 2,
              "answers_sha256": "dbf977a271f707c0b49ce8d9095faa279a514b4c5aa99fad29c2685354c6b1e7"
            },
            {
              "seconds": 24.069149823859334,
              "outcome": "complete",
              "maxrss_kib": 268932,
              "prepare_us": 43762,
              "registration_atoms_scanned": 52341,
              "preparation_atoms_scanned": 52341,
              "queries": 2,
              "answers_sha256": "dbf977a271f707c0b49ce8d9095faa279a514b4c5aa99fad29c2685354c6b1e7"
            },
            {
              "seconds": 23.01430688239634,
              "outcome": "complete",
              "maxrss_kib": 270728,
              "prepare_us": 46843,
              "registration_atoms_scanned": 52341,
              "preparation_atoms_scanned": 52341,
              "queries": 2,
              "answers_sha256": "dbf977a271f707c0b49ce8d9095faa279a514b4c5aa99fad29c2685354c6b1e7"
            }
          ],
          "median_candidate_over_baseline": 1.007787172683982
        },
        {
          "index": 852,
          "baseline": [
            {
              "seconds": 4.427864156663418,
              "outcome": "complete",
              "maxrss_kib": 24948,
              "prepare_us": 703198,
              "registration_atoms_scanned": null,
              "preparation_atoms_scanned": null,
              "queries": 413,
              "answers_sha256": "0bca42e1ee365f4c34c2dbfe73eb7a984b30b03b039b89497a92fab77f99c1bf"
            },
            {
              "seconds": 4.373648192733526,
              "outcome": "complete",
              "maxrss_kib": 24496,
              "prepare_us": 694448,
              "registration_atoms_scanned": null,
              "preparation_atoms_scanned": null,
              "queries": 413,
              "answers_sha256": "0bca42e1ee365f4c34c2dbfe73eb7a984b30b03b039b89497a92fab77f99c1bf"
            },
            {
              "seconds": 4.3588312696665525,
              "outcome": "complete",
              "maxrss_kib": 24944,
              "prepare_us": 697055,
              "registration_atoms_scanned": null,
              "preparation_atoms_scanned": null,
              "queries": 413,
              "answers_sha256": "0bca42e1ee365f4c34c2dbfe73eb7a984b30b03b039b89497a92fab77f99c1bf"
            }
          ],
          "candidate": [
            {
              "seconds": 3.4447245355695486,
              "outcome": "complete",
              "maxrss_kib": 25448,
              "prepare_us": 11086,
              "registration_atoms_scanned": 2459,
              "preparation_atoms_scanned": 2459,
              "queries": 413,
              "answers_sha256": "0bca42e1ee365f4c34c2dbfe73eb7a984b30b03b039b89497a92fab77f99c1bf"
            },
            {
              "seconds": 3.431068966165185,
              "outcome": "complete",
              "maxrss_kib": 25104,
              "prepare_us": 11155,
              "registration_atoms_scanned": 2459,
              "preparation_atoms_scanned": 2459,
              "queries": 413,
              "answers_sha256": "0bca42e1ee365f4c34c2dbfe73eb7a984b30b03b039b89497a92fab77f99c1bf"
            },
            {
              "seconds": 3.620743051171303,
              "outcome": "complete",
              "maxrss_kib": 25656,
              "prepare_us": 11930,
              "registration_atoms_scanned": 2459,
              "preparation_atoms_scanned": 2459,
              "queries": 413,
              "answers_sha256": "0bca42e1ee365f4c34c2dbfe73eb7a984b30b03b039b89497a92fab77f99c1bf"
            }
          ],
          "median_candidate_over_baseline": 0.787608967107297
        },
        {
          "index": 1688,
          "baseline": [
            {
              "seconds": 0.864034615457058,
              "outcome": "complete",
              "maxrss_kib": 15368,
              "prepare_us": 82455,
              "registration_atoms_scanned": null,
              "preparation_atoms_scanned": null,
              "queries": 373,
              "answers_sha256": "9ac1e6a5bc7f5ad4386fd52636a54cb07642ba8e1ef899f90cf1e3eb464e9218"
            },
            {
              "seconds": 0.8661965578794479,
              "outcome": "complete",
              "maxrss_kib": 15368,
              "prepare_us": 82199,
              "registration_atoms_scanned": null,
              "preparation_atoms_scanned": null,
              "queries": 373,
              "answers_sha256": "9ac1e6a5bc7f5ad4386fd52636a54cb07642ba8e1ef899f90cf1e3eb464e9218"
            },
            {
              "seconds": 0.8680838122963905,
              "outcome": "complete",
              "maxrss_kib": 15368,
              "prepare_us": 82351,
              "registration_atoms_scanned": null,
              "preparation_atoms_scanned": null,
              "queries": 373,
              "answers_sha256": "9ac1e6a5bc7f5ad4386fd52636a54cb07642ba8e1ef899f90cf1e3eb464e9218"
            }
          ],
          "candidate": [
            {
              "seconds": 0.787546519190073,
              "outcome": "complete",
              "maxrss_kib": 15364,
              "prepare_us": 2984,
              "registration_atoms_scanned": 474,
              "preparation_atoms_scanned": 474,
              "queries": 373,
              "answers_sha256": "9ac1e6a5bc7f5ad4386fd52636a54cb07642ba8e1ef899f90cf1e3eb464e9218"
            },
            {
              "seconds": 0.7913167029619217,
              "outcome": "complete",
              "maxrss_kib": 15364,
              "prepare_us": 2973,
              "registration_atoms_scanned": 474,
              "preparation_atoms_scanned": 474,
              "queries": 373,
              "answers_sha256": "9ac1e6a5bc7f5ad4386fd52636a54cb07642ba8e1ef899f90cf1e3eb464e9218"
            },
            {
              "seconds": 0.788117490708828,
              "outcome": "complete",
              "maxrss_kib": 15220,
              "prepare_us": 2933,
              "registration_atoms_scanned": 474,
              "preparation_atoms_scanned": 474,
              "queries": 373,
              "answers_sha256": "9ac1e6a5bc7f5ad4386fd52636a54cb07642ba8e1ef899f90cf1e3eb464e9218"
            }
          ],
          "median_candidate_over_baseline": 0.9098598736506563
        },
        {
          "index": 656,
          "baseline": [
            {
              "seconds": 2.929994383826852,
              "outcome": "unknown",
              "maxrss_kib": 61140,
              "prepare_us": 17220,
              "registration_atoms_scanned": null,
              "preparation_atoms_scanned": null,
              "queries": 2,
              "answers_sha256": "d3e94540fca0ca6dc0f9f9947675280310f7c76dc14148b148a5adcb311bbc92"
            },
            {
              "seconds": 2.9097225554287434,
              "outcome": "unknown",
              "maxrss_kib": 60696,
              "prepare_us": 16786,
              "registration_atoms_scanned": null,
              "preparation_atoms_scanned": null,
              "queries": 2,
              "answers_sha256": "d3e94540fca0ca6dc0f9f9947675280310f7c76dc14148b148a5adcb311bbc92"
            },
            {
              "seconds": 2.822564387694001,
              "outcome": "unknown",
              "maxrss_kib": 61136,
              "prepare_us": 16597,
              "registration_atoms_scanned": null,
              "preparation_atoms_scanned": null,
              "queries": 2,
              "answers_sha256": "d3e94540fca0ca6dc0f9f9947675280310f7c76dc14148b148a5adcb311bbc92"
            }
          ],
          "candidate": [
            {
              "seconds": 3.0650832299143076,
              "outcome": "unknown",
              "maxrss_kib": 61084,
              "prepare_us": 11108,
              "registration_atoms_scanned": 12286,
              "preparation_atoms_scanned": 12286,
              "queries": 2,
              "answers_sha256": "d3e94540fca0ca6dc0f9f9947675280310f7c76dc14148b148a5adcb311bbc92"
            },
            {
              "seconds": 3.3414297942072153,
              "outcome": "unknown",
              "maxrss_kib": 60236,
              "prepare_us": 11069,
              "registration_atoms_scanned": 12286,
              "preparation_atoms_scanned": 12286,
              "queries": 2,
              "answers_sha256": "d3e94540fca0ca6dc0f9f9947675280310f7c76dc14148b148a5adcb311bbc92"
            },
            {
              "seconds": 2.8224077485501766,
              "outcome": "unknown",
              "maxrss_kib": 61612,
              "prepare_us": 10660,
              "registration_atoms_scanned": 12286,
              "preparation_atoms_scanned": 12286,
              "queries": 2,
              "answers_sha256": "d3e94540fca0ca6dc0f9f9947675280310f7c76dc14148b148a5adcb311bbc92"
            }
          ],
          "median_candidate_over_baseline": null
        }
      ],
      "limits": {
        "timing_seconds_per_session": 30,
        "theory_conflicts_per_query": 10000,
        "model_validation_response_seconds": 120,
        "dolmen_seconds": 120
      },
      "references": "Reuse qualified fa2fe5c, Z3 and cvc5 timings; fresh paired baseline runs measure local cluster variability. Validation uses fresh Z3/Dolmen separately.",
      "artifacts": "results/uf-atom-scans-605062f",
      "submissions": [
        "paired-submission.json",
        "native-submission.json",
        "validation-submission.json"
      ],
      "qualification": "All 1778 session rows collected; 1772 complete and the same six resource-limited misses. No lost/gained solved cases or definite-answer disagreements. Complete-session SAT models remain pending independent validation; no final performance qualification yet."
    },
    {
      "id": "2026-09-11-incremental-uf-atom-scan-gate-7ac555c",
      "date": "2026-09-11",
      "kind": "fresh-scoped-gate-and-default-preservation",
      "candidate": "7ac555c",
      "status": "correctness gates passed; performance evaluation pending",
      "jobs": {
        "build": "142754",
        "regressions": "142756",
        "gate": "142757",
        "default_uf": "142762",
        "default_other": "142763"
      },
      "gate": {
        "generated": 1000,
        "native_mutations": 1000,
        "sessions": 2000,
        "pass": 2000,
        "queries": 16000,
        "sat_models": 9432,
        "untriaged_failure": 0,
        "wrong_answer": 0,
        "crash": 0,
        "parser_type_error": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0
      },
      "deterministic_regressions": {
        "ctest": 5,
        "boolean_and_model_seed_sessions": 9,
        "queries": 19,
        "sat_models": 13
      },
      "default_preservation": {
        "files": 25,
        "pass": 25,
        "sessions": 50,
        "queries": 200,
        "sat_models": 121,
        "lost_solves": 0,
        "file_seconds": 16.54029319435358,
        "prior_fa2fe5c_file_seconds": 16.3949088267982
      },
      "profile": "--incremental-mode=assumptions --preprocessing-mode=auto --euf-prop=auto --max-theory-conflicts=10000",
      "generator": "scripts/incremental_uf_gate.py with qf_uf_boolean_fuzz.py; scoped original native-prefix mutations",
      "seed_base": 202649120,
      "shards": "8 x 250; seed offset 250*shard, 0-3 generated and 4-7 native",
      "limits": {
        "solver_reference_response_seconds": 20,
        "dolmen_seconds": 30
      },
      "reference": "contrib/local/bin/z3; exact SHA/version in each gate shard run.json",
      "validator": "contrib/local/bin/dolmen; independently validates each actual SAT model",
      "artifacts": "results/uf-atom-scans-605062f",
      "submissions": [
        "gate-submission.json",
        "default-uf-submission.json",
        "default-other-submission.json"
      ],
      "provenance": {
        "command": [
          "scripts/incremental_uf_gate.py",
          "--kind",
          "generated",
          "--seed",
          "202649120",
          "--count",
          "250",
          "--solver",
          "build-slurm-rel/primo",
          "--solver-arg=--quiet",
          "--solver-arg=--incremental-mode=assumptions",
          "--solver-arg=--max-theory-conflicts=10000",
          "--solver-arg=--preprocessing-mode=auto",
          "--solver-arg=--euf-prop=auto",
          "--ref",
          "contrib/local/bin/z3",
          "--dolmen",
          "contrib/local/bin/dolmen",
          "--expected-git",
          "7ac555c",
          "--timeout",
          "20",
          "--dolmen-timeout",
          "30",
          "--out",
          "/home/janotmik/primo-model-fix/results/uf-scans-gate-7ac555c/shard-0"
        ],
        "version": "primo 0.1.0\ngit: 7ac555c\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07\n",
        "host": "node-02.ciircluster",
        "slurm_job_id": "142758",
        "solver_sha256": "23bd107c28165d1e54c9e2512e1c0c96daefb3659947dfd5345a894ebf65065f",
        "generator_sha256": "710bc0f0f0c73e414d3d3dd9efcb68cd05cefcd09594084904f8c3116c8f0c06",
        "boolean_generator_sha256": "4ff7cd809c0d820dc6fe0012756dabd5dde0ad7564c3c9b126ca99a9b463fdd7",
        "reference": {
          "command": [
            "contrib/local/bin/z3"
          ],
          "sha256": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0",
          "version": "Z3 version 5.1.0 - 64 bit\n"
        },
        "dolmen": {
          "command": "contrib/local/bin/dolmen",
          "sha256": "08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e",
          "version": "0.10\n"
        },
        "native_seeds": {}
      }
    },
    {
      "id": "2026-09-11-incremental-uf-atom-scan-local-7ac555c",
      "date": "2026-09-11",
      "kind": "local-candidate-and-paired-diagnostics",
      "candidate": "7ac555c",
      "baseline": "605062f",
      "lead": 22,
      "status": "preliminary; SLURM and independent candidate model qualification pending",
      "host": "mikolas-ThinkPad-T14s-Gen-5",
      "binary_sha256": "e24dfbbb02cd5501aba6031c423f2bf43de8ddc45d48fdc491f8c14f23901120",
      "manifest_sha256": "4cc0c9b35b3725ae2893e626f0ee29ca798830462b080a0dea16585bbcc48b85",
      "command": [
        "/workspace/results/uf-atom-scans-605062f/primo-candidate",
        "--quiet",
        "--stats",
        "--incremental-mode=assumptions",
        "--max-theory-conflicts=10000"
      ],
      "driver_sha256": "54758754a5c9eeeede314378d2c692c7806f6177b8bcbea2e78742fc9da43853",
      "limits": {
        "wall_seconds_per_session": 120,
        "theory_conflicts_per_query": 10000
      },
      "artifacts": "results/uf-atom-scans-605062f",
      "paired_measurements": [
        {
          "index": 14,
          "measurements": {
            "baseline": [
              {
                "seconds": 3.3634573090821505,
                "prepare_us": 190033,
                "outcome": "complete"
              },
              {
                "seconds": 4.143519122968428,
                "prepare_us": 208978,
                "outcome": "complete"
              },
              {
                "seconds": 4.248584856977686,
                "prepare_us": 208497,
                "outcome": "complete"
              }
            ],
            "candidate": [
              {
                "seconds": 4.3541189500829205,
                "prepare_us": 136940,
                "outcome": "complete"
              },
              {
                "seconds": 4.174879485974088,
                "prepare_us": 127703,
                "outcome": "complete"
              },
              {
                "seconds": 4.0827448890777305,
                "prepare_us": 124229,
                "outcome": "complete"
              }
            ]
          },
          "median_candidate_over_baseline": 1.0075685334313587
        },
        {
          "index": 852,
          "measurements": {
            "baseline": [
              {
                "seconds": 2.108297690981999,
                "prepare_us": 330145,
                "outcome": "complete"
              },
              {
                "seconds": 2.4931617829715833,
                "prepare_us": 391119,
                "outcome": "complete"
              },
              {
                "seconds": 2.4090906579513103,
                "prepare_us": 376557,
                "outcome": "complete"
              }
            ],
            "candidate": [
              {
                "seconds": 2.2565713189542294,
                "prepare_us": 9010,
                "outcome": "complete"
              },
              {
                "seconds": 2.1325446339324117,
                "prepare_us": 8587,
                "outcome": "complete"
              },
              {
                "seconds": 2.0618682339554653,
                "prepare_us": 7959,
                "outcome": "complete"
              }
            ]
          },
          "median_candidate_over_baseline": 0.8852072988178563
        },
        {
          "index": 1688,
          "measurements": {
            "baseline": [
              {
                "seconds": 0.5318257759790868,
                "prepare_us": 48638,
                "outcome": "complete"
              },
              {
                "seconds": 0.620866843033582,
                "prepare_us": 56700,
                "outcome": "complete"
              },
              {
                "seconds": 0.530946688959375,
                "prepare_us": 48002,
                "outcome": "complete"
              }
            ],
            "candidate": [
              {
                "seconds": 0.4944421809632331,
                "prepare_us": 2076,
                "outcome": "complete"
              },
              {
                "seconds": 0.4582715710857883,
                "prepare_us": 1991,
                "outcome": "complete"
              },
              {
                "seconds": 0.47536693303845823,
                "prepare_us": 2112,
                "outcome": "complete"
              }
            ]
          },
          "median_candidate_over_baseline": 0.8938395890332914
        }
      ],
      "initial_candidate_profiles": [
        {
          "index": 14,
          "seconds": 3.3072481700219214,
          "outcome": "complete"
        },
        {
          "index": 267,
          "seconds": 14.247723276959732,
          "outcome": "complete"
        },
        {
          "index": 852,
          "seconds": 1.91615542198997,
          "outcome": "complete"
        },
        {
          "index": 1688,
          "seconds": 0.44435801508370787,
          "outcome": "complete"
        },
        {
          "index": 656,
          "seconds": 1.6695361529709771,
          "outcome": "unknown"
        }
      ],
      "outcomes": {
        "initial_sessions": 5,
        "initial_complete": 4,
        "initial_known_unknown": 1,
        "paired_sessions": 18,
        "paired_complete": 18,
        "wrong_answer": 0,
        "error": 0,
        "timeout": 0,
        "reference_disagreement": 0
      },
      "mechanism": {
        "native_852_baseline_registry_entries_across_checks": 908809,
        "native_852_candidate_registration_roots": 2459,
        "native_852_candidate_preparation_inputs": 2459,
        "native_852_prepare_us_before": 317002,
        "native_852_prepare_us_after": 7306
      },
      "verification": {
        "make_check": "34 C++/CLI and 166 Python tests pass; lint passes",
        "make_asan_test": "34 tests pass",
        "make_docs": "passes",
        "static": "focused clang-tidy/analyzer and advisory include-cleaner pass on 3 changed translation units; pre-existing indirect-header advisories, no new unused include; unchanged whole-tree baseline reviewed at fa2fe5c",
        "review": "no blocking ownership, invariant, layering, hygiene or efficiency finding; raw review and logs retained"
      },
      "limitations": "Local timing variance; no full-corpus or qualified speedup claim. Candidate acceptance pending exact-source SLURM gate and independent SAT models."
    },
    {
      "id": "2026-09-11-incremental-uf-atom-scan-baseline-605062f",
      "date": "2026-09-11",
      "kind": "bounded-local-performance-baseline",
      "commit": "605062f",
      "lead": 22,
      "status": "baseline-only; candidate acceptance pending",
      "evidence_basis": "2026-09-11-native-uf-z3-gap-profiling-8573f60; merged baseline retains identical solver sources",
      "artifacts": "results/uf-atom-scans-605062f",
      "command": [
        "/workspace/results/uf-atom-scans-605062f/primo-baseline",
        "--quiet",
        "--stats",
        "--incremental-mode=assumptions",
        "--max-theory-conflicts=10000"
      ],
      "reproduction": "python3 scripts/profile_native_uf_gaps.py --timing results/uf-native-timing-fa2fe5c --root tmp/native-uf-inputs --manifest tmp/native-uf-inventory/manifest.json --solver results/uf-atom-scans-605062f/primo-baseline --expected-git 605062f --indices 14 267 852 1688 656 --plain --timeout 120 --out OUT",
      "binary_sha256": "1c6f7740fe1c807ca306851da8303695d076cbfccdd1640a92d576d6f9ad354d",
      "manifest_sha256": "4cc0c9b35b3725ae2893e626f0ee29ca798830462b080a0dea16585bbcc48b85",
      "host": "mikolas-ThinkPad-T14s-Gen-5",
      "limits": {
        "wall_seconds_per_session": 120,
        "theory_conflicts_per_query": 10000,
        "model_output": false
      },
      "outcomes": {
        "complete": 4,
        "unknown": 1,
        "timeout": 0,
        "wrong_answer": 0,
        "error": 0,
        "reference_disagreement": 0
      },
      "profiles": [
        {
          "index": 14,
          "outcome": "complete",
          "seconds": 3.15215472294949
        },
        {
          "index": 267,
          "outcome": "complete",
          "seconds": 12.163379564066418
        },
        {
          "index": 852,
          "outcome": "complete",
          "seconds": 2.027634538942948
        },
        {
          "index": 1688,
          "outcome": "complete",
          "seconds": 0.4588246850762516
        },
        {
          "index": 656,
          "outcome": "unknown",
          "seconds": 1.471483465982601
        }
      ],
      "qualification": "Local diagnostics only; original reference timings and model qualification reused as baseline context, not fresh evidence for the candidate."
    },
    {
      "id": "2026-09-11-incremental-smt-and-uf-separate-merges",
      "date": "2026-09-11",
      "kind": "merge-verification-no-new-solver-experiment",
      "base": "9803d1a",
      "merges": [
        {
          "commit": "3169a1c",
          "branch": "feature/incremental-smt-sessions",
          "tip": "5d930be",
          "exact_feature_tree": true,
          "qualified_source": "04d2e23",
          "src_tree": "9c914d7b22c69d6c0950c229935510bc166b1636"
        },
        {
          "commit": "10b69c7",
          "branch": "feature/assumptions-qf-uf",
          "tip": "7a98245",
          "exact_feature_tree": true,
          "qualified_source": "fa2fe5c",
          "src_tree": "9a1b36b13d67fcd00d8843689e8d0e960811cd20"
        }
      ],
      "commands": [
        "git switch main",
        "git merge --no-ff --no-commit feature/incremental-smt-sessions",
        "git diff --cached --exit-code feature/incremental-smt-sessions",
        "CMAKE_BUILD_PARALLEL_LEVEL=4 make check",
        "make docs",
        "git commit (3169a1c)",
        "git merge --no-ff --no-commit feature/assumptions-qf-uf",
        "git diff --cached --exit-code feature/assumptions-qf-uf",
        "CMAKE_BUILD_PARALLEL_LEVEL=4 make check",
        "CMAKE_BUILD_PARALLEL_LEVEL=2 make asan-test",
        "make docs",
        "git commit (10b69c7)",
        "git diff --exit-code HEAD feature/assumptions-qf-uf"
      ],
      "verification": {
        "lra_check": "33 C++/CLI and 156 Python tests pass; lint passes",
        "lra_docs": "make docs passes",
        "uf_check": "34 C++/CLI and 166 Python tests pass; lint passes",
        "uf_asan": "34 tests pass; address sanitizer with leak detection and strict initialization ordering",
        "uf_docs": "make docs passes",
        "review": "No conflict resolutions or source edits. Exact tree and source identity checks pass; prior whole-tree reviews, static scans and correctness qualification remain applicable. Status documentation synchronized after merges."
      },
      "qualification_reused": [
        "2026-09-11-assumptions-lra-qualification",
        "2026-09-11-uf-assumptions-qualified-fa2fe5c"
      ],
      "limits": "No new fuzz, model-validation, benchmark or static-analysis campaign: merged source trees are identical to qualified implementations. Existing incomplete-session limitations remain; no default promotion or new speedup claim.",
      "remote": "git fetch origin failed: Host key verification failed (ssh_askpass missing). Used existing local refs; no host-key settings changed and no push attempted.",
      "artifacts": {
        "directory": "results/incremental-merges-20260911",
        "verification_log_sha256": {
          "lra-check.log": "d50be05be10b3f6cb147eacdb06c151bede44eec46e2c9d6f1fd597b23120519",
          "lra-docs.log": "3b02263943f1ba10b7415c8d780c2b8b2070f6ec35bcf0f31d191169a4888668",
          "uf-asan.log": "ac919e06a58658eaa7c77a2503a1b2cf1f81643da73e04439559c29c09aa5b6b",
          "uf-check.log": "098abd99c407f1226539de19ee1234504dd6021fa33a059e7c3edea73e0e95f6",
          "uf-docs.log": "c3d382b0396dfdb8e8e3e7fd7f65ac190f48bef2f32303e3cdbe32e80362f22f"
        }
      },
      "jobs": {
        "new_slurm_jobs": 0
      }
    },
    {
      "id": "2026-09-11-native-uf-z3-gap-profiling-8573f60",
      "date": "2026-09-11",
      "kind": "qualified-gap-ranking-local-profiling-and-reference-statistics",
      "evidence_status": "diagnostic, no solver changes or new headline performance qualification",
      "commit": "8573f60b7226c1b17300ac0297456c95808ecba8",
      "solver_implementation_identical_to": "fa2fe5c2d03afaf20e5496f2f3e4ced9fd2526ac",
      "benchmark": "Five original native QF_UF sessions selected from the qualified 1778-file archive; indices 14,267,852,1688,656. Original headline timing jobs 142665 and reused Z3 job 142464.",
      "archive_sha256": "52c55a17ee15e5c4a0fc723b9605ae42615da34499efc7e5a5e8b2c0ffc26a27",
      "manifest_sha256": "4cc0c9b35b3725ae2893e626f0ee29ca798830462b080a0dea16585bbcc48b85",
      "host": "mikolas-ThinkPad-T14s-Gen-5",
      "cpu": "Intel Core Ultra 7 155U (reported in /proc/cpuinfo)",
      "platform": "Linux-7.0.0-30-generic-x86_64-with-glibc2.39",
      "profile_binary_sha256": "3300b970330c285dc426f1fcbbd3dfd7b480df07c72aca0143c81ddea8200182",
      "profile_build": "RelWithDebInfo -O2 -g -pg; link -pg; inherited PRIMO_WARNINGS_AS_ERRORS=OFF; static CaDiCaL not compiled with -pg",
      "limits": {
        "wall_seconds_per_process": 120,
        "native_theory_conflicts_per_query": 10000,
        "execution": "serial local profiling; no new SLURM jobs",
        "model_output": false
      },
      "commands": [
        "cmake -S . -B build-gprof-current -DPRIMO_GIT_REVISION_OVERRIDE=8573f60; cmake --build build-gprof-current --target primo -j 4 (existing RelWithDebInfo -O2 -g -pg configuration; predecessor binary preserved)",
        "python3 scripts/profile_native_uf_gaps.py --timing results/uf-native-timing-fa2fe5c --root tmp/native-uf-inputs --manifest tmp/native-uf-inventory/manifest.json --solver build-gprof-current/primo --expected-git 8573f60 --indices 14 267 852 1688 656 --timeout 120 --out results/uf-z3-profile-8573f60/current",
        "python3 scripts/rank_qfuf_gaps.py --native OUT/assumptions.csv --ref OUT/z3.csv --timeout 30 --fast-ref 1 --top 50 --out OUT/ranked.csv (driver exports whole-session eligibility and checks all definite answers first)",
        "Add --reference-stats results/uf-z3-profile-8573f60/z3-5.1.0 and use separate z3-query-stats output to collect read-only per-query Z3 statistics; actual child argv and transformed inputs are retained",
        "For repetitions 1,2,3: run --plain with --indices 852 1688 using the preserved fa2fe5c Release binary, then repeat with --omit-stats, each in its own plain-on/off-N output directory",
        "perf stat -e task-clock -- true (unsupported PMU event; no permission changes)"
      ],
      "profiling_outcomes": {
        "sessions": 5,
        "complete": 4,
        "known_resource_limit_unknown": 1,
        "queries": 792,
        "matching_definite_answers": 791,
        "unknown_answers": 1,
        "timeout": 0,
        "wrong_answer": 0,
        "crash": 0,
        "parser_type_error": 0,
        "unsupported": 0,
        "reference_disagreement": 0
      },
      "reference_stats": {
        "version": "Z3 version 5.1.0 - 64 bit\n",
        "sha256": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0",
        "sessions_per_probe": 5,
        "queries_per_probe": 792,
        "outcome": "all complete and matching",
        "history": "Local installed Z3 was 5.0.0; staged and hash-checked the exact qualified 5.1.0 binary. Initial -st collection exposed final-counter reset/context changes; per-query get-info collection supersedes it. Neither probe replaces reference performance measurements."
      },
      "qualified_gap_distribution": {
        "all": {
          "paired_complete": 1772,
          "median_primo_over_z3": 1.1859369201043817,
          "p90_primo_over_z3": 2.742627327515706,
          "at_least_5x": 51,
          "at_least_10x": 4,
          "primo_seconds": 498.48478144966066,
          "z3_seconds": 290.2482253164053
        },
        "2018-Goel-hwbench": {
          "paired_complete": 760,
          "median_primo_over_z3": 1.055432927251084,
          "p90_primo_over_z3": 1.9738305452045126,
          "at_least_5x": 19,
          "at_least_10x": 4,
          "primo_seconds": 400.0728838406503,
          "z3_seconds": 248.3370626885444
        },
        "20190906-CLEARSY": {
          "paired_complete": 1012,
          "median_primo_over_z3": 1.3586704486623655,
          "p90_primo_over_z3": 3.0039321574926787,
          "at_least_5x": 32,
          "at_least_10x": 0,
          "primo_seconds": 98.41189760901034,
          "z3_seconds": 41.911162627860904
        }
      },
      "findings": [
        "Two large distinct expressions (1051 and 73 operands) expand into 554403 pairs. Adding.5 retains 556973 atoms/1121604 terms for 3560 flat terms. Qualified frontend 3.046s (preprocessing nested 1.861s), solve 0.307s in 4.997s wall. Z3 first-query stats: 1800 created Bool variables and 2118 eliminated variables; counters are not directly interchangeable.",
        "Firewire.5.prop3 spends 18.104/23.456s solving. gprof: apply_assignment 23.29%, SAT propagate 22.44%, merge_classes 15.81% of sampled executable time. 7.50M merge routine calls and 59.83M trail-entry restores. Z3 first-query stats report 22931 eliminated variables; incremental equation elimination is deliberately unsupported in Primo v1.",
        "CLEARSY 0002/00126: 413 structural copies; preparation 0.714s plus fresh state/reconnect 1.140s, approximately 41% of 4.533s. Both Boolean-argument registration and preparation re-scan all retained atoms each query.",
        "Six original rushhour unknown sessions contribute 360 PAR2 seconds; their excess penalties over Z3 explain about 62.7% of the aggregate PAR2 gap. Representative second query stops at 10005 theory conflicts. Raising the limit was not evaluated.",
        "CLI stats on/off: three local pairs on each of two long sessions show no consistent benefit; no output-overhead or speedup claim. The smaller gprof probe has 16 samples and is too coarse for precise percentage ranking."
      ],
      "statistics_output_probe": {
        "852": {
          "on": {
            "seconds": [
              1.8688300140202045,
              2.0003524689236656,
              2.318583987071179
            ],
            "median_seconds": 2.0003524689236656
          },
          "off": {
            "seconds": [
              1.84343855897896,
              2.0572303789667785,
              2.3872920889407396
            ],
            "median_seconds": 2.0572303789667785
          }
        },
        "1688": {
          "on": {
            "seconds": [
              0.3879589269636199,
              0.3790907149668783,
              0.5271423179656267
            ],
            "median_seconds": 0.3879589269636199
          },
          "off": {
            "seconds": [
              0.31685989000834525,
              0.4074848329182714,
              0.4300827259430662
            ],
            "median_seconds": 0.4074848329182714
          }
        },
        "conclusion": "Inconclusive/no consistent benefit from disabling output in three paired local probes; no printing-overhead attribution or speedup claim."
      },
      "limitations": [
        "All headline times are reused qualified SLURM records. Local gprof/reference/plain diagnostic times are not substituted.",
        "gprof percentages are fractions of sampled executable time; shared libraries, instrumentation overhead and inlining limit attribution.",
        "Nested phase times overlap. SAT counters can be cumulative, while working-theory counters are query-local.",
        "Z3 first/final-query counter scopes differ; no direct equivalence between its objects and Primo variables is claimed.",
        "The unknown session remains unqualified. No new model-validation claim is based on the instrumented profiles."
      ],
      "verification": {
        "runner_protocol_tests": "6 pass, including partial answer followed by nonzero exit and timeout",
        "profiling_adapter_tests": "2 pass: read-only insertion preserves strings/comments; reference statistics do not hide process failure or missing data",
        "gprof_runs": "4 complete, 1 known conflict-limited unknown; 791 matching definite answers and 1 unknown; no timeout/crash/disagreement",
        "reference_runs": "Initial final-stats and follow-up per-query probes each complete 5 sessions/792 answers with the exact pinned Z3 binary",
        "plain_runs": "12 complete sessions with matching reference sequences",
        "solver_changes": "none",
        "python_suite": "166 tests pass; final adapter-focused tests pass after review fixes",
        "lint": "make lint passes",
        "docs": "make docs passes",
        "review": "No blocking code, hygiene or documentation finding; review.txt retained in artifacts",
        "adapter_replay": "Final adapter matches all five saved reference inputs/transcripts and 792 answers",
        "final_driver_smoke": "Final reviewed driver completes native index 0 and matches both reference answers"
      },
      "artifacts": {
        "directory": "results/uf-z3-profile-8573f60",
        "archive": "results/uf-z3-profile-8573f60.tar.gz",
        "metadata": "benchmarks/uf-z3-profile-8573f60.json",
        "report": "docs/uf-z3-profiling.md",
        "archive_sha256": "b39f1ba1fc7047c63f043a8cf32b747f5f7637699dcba5a268530bd5a833426f",
        "archive_bytes": 61723058
      },
      "decision": "Profiling complete. Recommend reducing repeated old-atom/scratch work, designing compact distinct support, then sound incremental equation elimination/restoration and reduced structural copying. No solver patch or default promotion is claimed.",
      "terminal_audit": {
        "active_local_solver_profiler_test_processes": 0,
        "active_slurm_jobs": 0,
        "new_slurm_jobs": 0
      }
    },
    {
      "id": "2026-09-11-uf-assumptions-qualified-fa2fe5c",
      "date": "2026-09-11",
      "kind": "exact-candidate-slurm-correctness-native-timing-model-qualification",
      "evidence_status": "qualified for complete sessions; full artifacts collected and verified; opt-in accepted",
      "candidate_commit": "fa2fe5c2d03afaf20e5496f2f3e4ced9fd2526ac",
      "binary_sha256": "05b8f3550e7301bcfe242506781d040f46569eeaad009ca7875b985e72ecb260",
      "archive_sha256": "52c55a17ee15e5c4a0fc723b9605ae42615da34499efc7e5a5e8b2c0ffc26a27",
      "manifest_sha256": "4cc0c9b35b3725ae2893e626f0ee29ca798830462b080a0dea16585bbcc48b85",
      "benchmark": "sandbox/QF_UF.tar.zst: all 1778 original stdin sessions, 29990 queries; 766 Goel and 1012 CLEARSY",
      "jobs": {
        "regressions": "142599",
        "auto_gate": "142601",
        "matrix_gate": "142606",
        "extra_gate": "142611",
        "mixed_gate": "142616",
        "default_uf": "142620",
        "default_other": "142661",
        "timing": "142665",
        "validation": "142666",
        "build": "142598",
        "artifact_collection_attempt": "142729",
        "artifact_collection": "142733"
      },
      "command_metadata": "benchmarks/assumptions-uf-evaluation.json contains exact submission commands, per-shard gate run metadata and per-profile native arguments. Full raw run.json records are in the collected artifact.",
      "commands": [
        "scripts/slurm_prepare_benchmark_workspace.py: clean fa2fe5c worktree, Release build, compute-tool checks and --check-only --no-sync preflight before every submission",
        "scripts/slurm_incremental_uf_regressions.sbatch: five CTest targets, eight Python tests, seven Boolean-argument seeds and two ITE witnesses",
        "scripts/slurm_incremental_uf_gate.sbatch: Auto, matrix, extra Auto; 1000 generated plus 1000 native mutations per invocation; --incremental-mode=assumptions --max-theory-conflicts=10000",
        "scripts/slurm_incremental_gate.sbatch: 1000 default-rebuild mixed-logic sessions with --max-theory-conflicts=10000",
        "scripts/slurm_native_uf_sessions.sbatch: candidate array slots 0,1,4,5,...,60,61; timing concurrency 8, validation concurrency 32; rebuild and assumptions --quiet --stats --max-theory-conflicts=10000",
        "python3 scripts/summarize_native_uf.py --timing results/uf-native-timing-fa2fe5c --validation results/uf-native-validation-fa2fe5c --out tmp/uf-fa-final-summary.json",
        "scripts/slurm_collect_native_uf.sbatch: ten independent archive parts, four concurrent tasks, successful native validation checked before submission"
      ],
      "environment": {
        "build": "Release, fa2fe5c, CaDiCaL 3.0.0-7b99c07",
        "hosts": [
          "node-02.ciircluster",
          "node-03.ciircluster"
        ],
        "python": "3.9.18",
        "reference": "Z3 5.1.0, SHA256 54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0",
        "validator": "Dolmen 0.10, SHA256 08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e",
        "other_timing_reference": "cvc5 1.3.4"
      },
      "resource_limits": {
        "timing": {
          "session_seconds": 30,
          "theory_conflicts_per_query": 10000,
          "memory_gib_per_task": 8,
          "walltime_hours_per_shard": 2,
          "concurrent_tasks": 8,
          "cpus_requested_per_task": 1,
          "logical_cpus_allocated_per_task": 2,
          "solver_processes_per_task": 1,
          "host": "node-02.ciircluster"
        },
        "native_validation": {
          "query_and_reference_seconds": 120,
          "dolmen_seconds": 120,
          "memory_gib_per_task": 8,
          "walltime_hours_per_shard": 2,
          "concurrent_tasks": 32,
          "cpus_requested_per_task": 1,
          "logical_cpus_allocated_per_task": 2,
          "hosts": [
            "node-02.ciircluster",
            "node-03.ciircluster"
          ],
          "excluded_from_timing": true
        },
        "uf_gates": {
          "query_and_reference_seconds": 20,
          "dolmen_seconds": 30,
          "memory_gib_per_task": 4,
          "walltime_hours_per_shard": 1,
          "cases_per_shard": 250
        },
        "artifact_collection": {
          "memory_gib_per_task": 4,
          "walltime_minutes_per_task": 75,
          "compression_threads_per_task": 1,
          "concurrent_tasks": 4,
          "parts": 10,
          "cpus_requested_per_task": 1,
          "logical_cpus_allocated_per_task": 2
        }
      },
      "uf_gates": {
        "generated": 3000,
        "native_mutations": 3000,
        "pass": 6000,
        "queries": 48000,
        "direct_dolmen_sat_models": 28352,
        "wrong_answer": 0,
        "crash": 0,
        "parser_type_error": 0,
        "timeout": 0,
        "unknown": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "invalid_model": 0,
        "seed_bases": {
          "auto": 202639120,
          "matrix": 202649120,
          "extra": 202659120
        },
        "seed_allocation": "Each invocation has eight 250-case shards: first four generated, next four native; shard seed = base + 250 * shard index. Ten pinned native seeds and generator hashes are recorded per run.",
        "profiles": "Auto and Off preprocessing; Online and Conflict propagation in the matrix, Auto schedule in the two Auto campaigns"
      },
      "mixed_gate": {
        "sessions": 1000,
        "pass": 1000,
        "queries": 15000,
        "sat_models": 10000,
        "seed_range": [
          202609100,
          202610099
        ],
        "logics": [
          "QF_UF",
          "QF_LRA",
          "QF_LIA",
          "QF_UFLRA",
          "QF_UFLIA"
        ],
        "query_seconds": 10,
        "dolmen_seconds": 20
      },
      "deterministic_regressions": {
        "ctest_pass": 5,
        "python_pass": 8,
        "seed_and_witness_sessions": 9,
        "queries": 19,
        "sat_models": 13
      },
      "default_preservation": {
        "files": 25,
        "pass": 25,
        "sessions": 50,
        "queries": 200,
        "sat_models": 121,
        "file_seconds": 16.3949088267982,
        "prior_04d2e23_file_seconds": 16.6212056055665,
        "median_candidate_over_prior": 0.9928090050866649,
        "baseline_commit": "04d2e23",
        "lost_solved": 0,
        "limits": "UF conflict limit 10000; other four logics 1000; identical accepted sample options; file timings separate from model replay"
      },
      "native_timing": {
        "rebuild": {
          "sessions": 1778,
          "outcomes": {
            "complete": 1775,
            "timeout": 3
          },
          "completed_queries": 29573,
          "partial_queries": 373,
          "mean_par2": 0.8293804476400094,
          "max_measured_rss_kib": 1013616
        },
        "assumptions": {
          "sessions": 1778,
          "outcomes": {
            "complete": 1772,
            "unknown": 6
          },
          "completed_queries": 29978,
          "partial_queries": 12,
          "mean_par2": 0.4828373348985718,
          "max_measured_rss_kib": 919232
        },
        "z3": {
          "sessions": 1778,
          "outcomes": {
            "complete": 1778
          },
          "completed_queries": 29990,
          "partial_queries": 0,
          "mean_par2": 0.16908912344220753,
          "max_measured_rss_kib": 160132
        },
        "cvc5": {
          "sessions": 1778,
          "outcomes": {
            "complete": 1768,
            "timeout": 10
          },
          "completed_queries": 29970,
          "partial_queries": 0,
          "mean_par2": 0.8312656262070276,
          "max_measured_rss_kib": 198896
        }
      },
      "paired_comparison": {
        "both_complete": 1770,
        "median_speedup": 2.9637770579058045,
        "geomean_speedup": 2.7380900503137977,
        "gains": [
          14,
          852
        ],
        "losses": [
          656,
          659,
          660,
          661,
          662
        ]
      },
      "native_models": {
        "rebuild": {
          "replayed_sessions": 1778,
          "qualified_complete_sessions": 1775,
          "qualified_queries": 29573,
          "sat_models": 24746,
          "changed_answers": [],
          "failures": [],
          "complete_without_qualification": []
        },
        "assumptions": {
          "replayed_sessions": 1778,
          "qualified_complete_sessions": 1772,
          "qualified_queries": 29978,
          "sat_models": 25027,
          "changed_answers": [],
          "failures": [],
          "complete_without_qualification": []
        }
      },
      "correctness": "49773/49773 selected native SAT models pass direct Dolmen; all replay answers match timing and independent query-context Z3 results. Zero wrong answers, crashes, parser/type errors, changed replay answers, reference disagreements, validator errors or missing selected qualification.",
      "reference_timing_reuse": "Z3 and cvc5 original timings from job 142464 are reused unchanged; no new reference performance run. Reference comparison during model validation is correctness-only.",
      "reuse_probe": {
        "rebuild": {
          "index": 852,
          "file": "incremental/QF_UF/20190906-CLEARSY/0002/00126.smt2",
          "seconds": 30.018455805256963,
          "outcome": "timeout",
          "queries": 371,
          "counters": {
            "session.queries": 371,
            "session.frontend-builds": 371
          }
        },
        "assumptions": {
          "index": 852,
          "file": "incremental/QF_UF/20190906-CLEARSY/0002/00126.smt2",
          "seconds": 4.5331408604979515,
          "outcome": "complete",
          "queries": 413,
          "counters": {
            "session.euf-new-boolean-arguments": 0,
            "session.euf-new-prepared-atoms": 1,
            "session.engine-queries": 413,
            "session.theory-state-resets": 413,
            "session.retired-selectors": 453,
            "session.active-selectors": 2,
            "session.retained-terms": 7392,
            "session.active-model-roots": 69,
            "session.retained-atoms": 2459,
            "session.prepared-atoms": 2459,
            "session.euf-flat-terms": 7750,
            "session.euf-flat-definitions": 5892,
            "session.pure-theory-filter": 0,
            "session.sat-preprocessing": 0,
            "session.sat-inprocessing": 0,
            "session.clauses-added": 16280,
            "session.retained-active-clauses": 15135,
            "session.retained-redundant-clauses": 0,
            "session.engine-builds": 1,
            "session.translated-assertions": 2551,
            "session.incremental-assumptions": 1,
            "session.safe-rewrite-pipeline": 1,
            "session.pipeline.lower-extended-terms": 1,
            "session.pipeline.lower-real-equalities": 0,
            "session.queries": 413,
            "session.frontend-builds": 1
          }
        }
      },
      "provenance_audit": {
        "matched_candidate_shards": 32,
        "binary_manifest_options_and_driver_match": true,
        "all_selected_models_qualified": true,
        "collected_binary_manifest_and_original_archive_match": true,
        "all_ten_archive_checksums_and_stream_integrity_pass": true,
        "matched_exact_candidate_uf_gate_shards": 24
      },
      "verification": {
        "check": "34 C++/CLI tests and 164 Python tests pass",
        "asan": "34/34 pass",
        "lint": "pass",
        "docs": "pass",
        "static_analysis": "Whole-tree 110 tracked C++ file tidy and advisory include-cleaner baseline at d96902f, followed by fresh focused scans of both changed C++ files at fa2fe5c; no blocking diagnostics. Existing direct-provider advisories and paired self-includes retained.",
        "review": "Whole-tree code/hygiene/ownership review plus focused insertion and active-model-root reviews; no blocking code findings. Final evidence review confirms same binary, options, driver and manifest across timing/model shards."
      },
      "review": "No blocking code, ownership, hygiene or documentation finding after fixing stale historical qualification status. Whole-tree review inventory and analyzer logs preserved in the delivery evidence archive; final documentation synchronization and provenance join checked.",
      "limitations": [
        "Only complete Primo timing sessions are model-qualified; three rebuild timeouts and six assumptions unknown sessions remain unqualified, including earlier responses.",
        "UNSAT has reference comparison, not proof certification.",
        "Z3 and cvc5 timing records are reused without rerunning references; independent Dolmen validation covers Primo models.",
        "Opt-in acceptance only: assumptions gains two sessions and loses five; default rebuild remains unchanged."
      ],
      "decision": "Accept the new QF_UF assumptions engine as opt-in. Z3 remains faster overall. Two gained and five lost sessions prevent default-promotion claims; lost Goel cases reach the explicit conflict limit. Profiling of the original firewire regression points to preprocessing/search/callback costs, not merely fresh-state copying. Default corpus retains every solved case.",
      "orchestration": "Old successful dependency 142599 expired from scheduler acceptance before later submission. Its completed status and all fresh prerequisites were verified with sacct; remaining default shards were submitted without the expired dependency, then timing depended on the new default job 142661. A transient SSH banner failure was retried after audit; no duplicate campaign was launched.",
      "artifacts": {
        "timing": "results/uf-native-timing-fa2fe5c",
        "validation": "results/uf-native-validation-fa2fe5c",
        "remote_workspace": "/home/janotmik/primo-model-fix",
        "archive_parts": "results/uf-fa2fe5c-artifacts",
        "extracted_provenance": "results/uf-fa2fe5c-preserved",
        "job_logs": "results/uf-fa2fe5c-job-logs.tar.gz",
        "verification_and_submission_records": "results/uf-fa2fe5c-delivery",
        "parts": [
          {
            "path": "results/uf-fa2fe5c-artifacts/default.tar.zst",
            "sha256": "4b9ba04104915ab0fbf094de886bd425bd18ba60f84c9ef0e0dd34cc378caed3",
            "bytes": 3205843
          },
          {
            "path": "results/uf-fa2fe5c-artifacts/gate-auto.tar.zst",
            "sha256": "8f5ca5fbfc12d7f8ce1f5d688c7ed61924c9a90d415cdbb9e923e3ba8e69deab",
            "bytes": 4234123
          },
          {
            "path": "results/uf-fa2fe5c-artifacts/gate-extra.tar.zst",
            "sha256": "bf78f65c8ff77f7920359a3e7fdce8264c55ee5bf310e2c70a56a3631b49c1c7",
            "bytes": 4231814
          },
          {
            "path": "results/uf-fa2fe5c-artifacts/gate-matrix.tar.zst",
            "sha256": "d4de484440e1c2474549cc90f39311fbc4830256a68d2d581b003751899f1bc3",
            "bytes": 4191422
          },
          {
            "path": "results/uf-fa2fe5c-artifacts/gate-mixed.tar.zst",
            "sha256": "e73f289db14cea1c6fa163655fae921e17d26bcf8b753b0185ab0d656b02c1e1",
            "bytes": 1566350
          },
          {
            "path": "results/uf-fa2fe5c-artifacts/inputs-binary.tar.zst",
            "sha256": "14645ce970469d1f319d9e9a971867926db6e9a508d7a0869a9118cabce12567",
            "bytes": 56022894
          },
          {
            "path": "results/uf-fa2fe5c-artifacts/models-assumptions.tar.zst",
            "sha256": "cd78bdaf40d613d99096b8300eae2fc64da19057f1cd173aecbd1e170c49c4b9",
            "bytes": 176117041
          },
          {
            "path": "results/uf-fa2fe5c-artifacts/models-rebuild.tar.zst",
            "sha256": "e23fa2b7c898c0a5e4faf7fee8ff6610bb3200ad6660cb1ca10b28ba45764ff3",
            "bytes": 181996066
          },
          {
            "path": "results/uf-fa2fe5c-artifacts/regressions.tar.zst",
            "sha256": "4e0c6abd026676740902d5d3ca133e702bab5c9e878bc6729bf8a71d1a176c9b",
            "bytes": 8477
          },
          {
            "path": "results/uf-fa2fe5c-artifacts/timing.tar.zst",
            "sha256": "d34fd5f350d714a9445e5e3e4b3ae92c7a0d48b0ab797e911a77f334297bb3e5",
            "bytes": 11002580
          }
        ],
        "parts_total_bytes": 442576610,
        "delivery_bundle": {
          "path": "results/uf-fa2fe5c-delivery.tar.gz",
          "sha256": "99e86c2ea4a9fcc2f253fc7c7bfe5f2b92cb0d8c1c2e42b572dcbeb444218488",
          "bytes": 69589
        },
        "job_logs_sha256": "b075ea631d8bdd8971dc8704a2324b1fd2f9a9e4f183d53600cdf29be21806cd",
        "accounting": {
          "path": "results/uf-fa2fe5c-delivery/slurm-accounting.txt",
          "sha256": "278476e9c79f634db5f7105192793d756a7a2b4f6d9751aa5fa12213bdd0b081"
        }
      },
      "artifact_collection_history": {
        "first_job": "142729",
        "state": "cancelled after 26m44s; incomplete archive is not qualification evidence",
        "reason": "Serial traversal of many query files was too slow for its 45-minute budget. scontrol TimeLimit extension was denied; resubmitted independent bounded archive parts via fresh preflight. Solver outputs were never changed.",
        "replacement_job": "142733",
        "first_archive": "results/uf-fa2fe5c-artifacts.partial.tar.zst",
        "diagnostics": "Read-only process inspection used an overlapping srun step inside the collector allocation. A direct compute-node SSH probe emitted a changed-host-key warning, so subsequent diagnostics used Slurm; no host-key configuration was changed.",
        "replacement_state": "all ten parts completed, downloaded and verified"
      },
      "terminal_audit": {
        "active_slurm_jobs": 0,
        "all_current_solver_build_gate_timing_validation_and_collection_jobs_completed": true,
        "cancelled_collection_attempt": "142729 (superseded by completed array 142733)",
        "accounting_rows": 222,
        "remote_login_solver_processes": 0,
        "local_solver_processes": 0,
        "collected_parts": 10
      }
    },
    {
      "id": "2026-09-11-uf-active-lowered-model-roots",
      "date": "2026-09-11",
      "kind": "fresh-gate-model-failure-and-correctness-fix",
      "evidence_status": "local fix verified; fresh exact-commit SLURM qualification pending",
      "baseline_commit": "d96902f",
      "reproduces_on": "1595948; Auto and Off assumptions; rebuild passes",
      "jobs": {
        "build": 142576,
        "regressions": 142578,
        "failed_uf_gate": 142579,
        "passed_mixed_gate": 142584,
        "default_uf": 142588,
        "default_other": 142589,
        "cancelled_dependent_timing": 142593,
        "cancelled_dependent_validation": 142594
      },
      "binary_sha256": "acfb58a73fb6cad9ad3742fed6c5cd4faee78e1a94c77e0615b83b00cfb899c4",
      "environment": "node-02.ciircluster; Release, CaDiCaL 3.0.0-7b99c07; same pinned QF_UF archive and native seeds as prior run",
      "failed_gate": {
        "seed_base": 202639120,
        "failure_seed": 202639843,
        "attempted_sessions": 1166,
        "pass_sessions": 1165,
        "model_construction_errors": 1,
        "definite_sat_unsat_disagreements": 0,
        "printed_invalid_models": 0,
        "model_error": "component applications disagree at an evaluated tuple for fn0 on query 1; query 0 was provisional before the process error",
        "limits": "250 cases per shard, 20s solver/reference response and 30s Dolmen; stopped remaining shards after failure"
      },
      "mixed_gate": {
        "sessions": 1000,
        "pass": 1000,
        "queries": 15000,
        "sat_models": 10000,
        "seed_range": [
          202609100,
          202610099
        ],
        "logics": [
          "QF_UF",
          "QF_LRA",
          "QF_LIA",
          "QF_UFLRA",
          "QF_UFLIA"
        ],
        "command": "scripts/slurm_incremental_gate.sbatch; default rebuild with --max-theory-conflicts=10000; 10s query/reference and 20s Dolmen"
      },
      "diagnosis": "The original f(ite b a c) application was completed as a separate UF class from lowered f(aux), then both evaluated at the same tuple with conflicting Bool values. The insertion-scan optimization does not cause this; both baseline binaries reproduce the minimized case.",
      "fix": "IncrementalUfEngine retains active lowered roots and scope boundaries and uses those roots for final model construction. Original assertions remain the session model-validation authority. No SAT encoding or theory lemma changed.",
      "witnesses": [
        "bugs/qf-uf-incremental-ite-model/witness.smt2",
        "bugs/qf-uf-incremental-ite-model/generated-witness.smt2"
      ],
      "local_replay": {
        "profiles": [
          "auto",
          "off"
        ],
        "sessions": 4,
        "queries": 24,
        "direct_dolmen_models": 20,
        "pass": 4,
        "command": "scripts/validate_incremental.py on both witnesses, --incremental-mode=assumptions --max-theory-conflicts=10000; query/reference 20s and Dolmen 30s"
      },
      "local_gate": {
        "seed": 202639800,
        "count": 100,
        "pass": 100,
        "queries": 900,
        "sat_models": 650,
        "binary_version": "d96902f-dirty (working fix before this commit)",
        "command": "scripts/incremental_uf_gate.py --kind generated --seed 202639800 --count 100 --expected-git d96902f-dirty --solver build/primo --solver-arg=--quiet --solver-arg=--incremental-mode=assumptions --solver-arg=--max-theory-conflicts=10000 --ref contrib/local/bin/z3 --dolmen contrib/local/bin/dolmen --timeout 20 --dolmen-timeout 30",
        "preliminary_attempt": "An initial invocation expected the clean revision and was rejected before queries; rerun records the actual dirty build version."
      },
      "validator_dependency": "Local Dolmen was absent. Staged the already verified cluster Dolmen 0.10 binary locally, SHA256 08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e; then both local replay profiles pass. The failed missing-tool attempt is retained separately.",
      "verification": "make check: 34 C++/CLI and 164 Python; make asan-test: 34/34; lint/docs pass. Whole-tree 110-file tidy/include baseline at d96902f followed by fresh focused make tidy and include-cleaner on both changed C++ files: no blocking diagnostics, existing direct-provider advisories retained. Ownership and scope-boundary review passed.",
      "artifacts": [
        "results/uf-auto-gate-d96902f",
        "results/uf-mixed-gate-d96902f",
        "results/uf-default-d96902f",
        "results/uf-candidate-d96902f (SLURM preserved binary)",
        "tmp/uf-ite-model-validation-auto-dolmen",
        "tmp/uf-ite-model-validation-off-dolmen",
        "tmp/uf-ite-model-local-gate-fixed",
        "tmp/uf-ite-model-check.log",
        "tmp/uf-ite-model-asan.log",
        "tmp/uf-ite-model-tidy.log",
        "tmp/uf-ite-model-include-cleaner.log"
      ]
    },
    {
      "id": "2026-09-11-uf-model-disequality-insertion-profile",
      "date": "2026-09-11",
      "kind": "model-construction-profile-and-original-invariant-fix",
      "baseline_commit": "1595948",
      "candidate_commit": "this commit; fresh SLURM qualification pending",
      "host": "local workspace",
      "limits": "120 seconds per process, --max-theory-conflicts=10000",
      "command": "RelWithDebInfo gprof build: --quiet --stats --check-model --incremental-mode=assumptions --max-theory-conflicts=10000 < adding.1.prop1_ab_core_max.smt2; gprof primo gmon.out",
      "finding": "Baseline 1,871,013,144 representative calls, 73.81% self samples; check_disequalities 18.25%. Insertion rescans the old vector although each actual merge already checks existing pairs.",
      "change": "Check only the appended disequality after endpoint registration; endpoint registration may process congruence merges, each retaining the original full check. Full scans after actual merges and snapshot/reason behavior unchanged.",
      "mechanism_result": "Same local instrumented probe: representative calls 172,130,838 after fix (10.87x fewer), model disequality checks 86,058,135. Reconstruction timer 14.427s before versus 3.219s after; diagnostic under local build load, not headline timing.",
      "preimplementation_note": "docs/assumption-incremental-uf.md insertion checklist, original invariant-based scan reduction; no new optimized closure algorithm claim.",
      "regression": "2048 insertions without merges require exactly 2048 pair checks; older/new contradictory pairs, eager endpoint congruence, reasons and rollback are checked. Initial test wrongly assumed endpoint registration defers congruence; corrected test and checklist after it exposed the existing eager propagate call.",
      "artifacts": [
        "tmp/uf-profile-model-5",
        "tmp/uf-profile-model-fixed-5",
        "tmp/uf-profile-model-fixed-14",
        "tmp/uf-model-fix-gprof-build.log"
      ],
      "status": "local verification passed; fresh SLURM gates pending; reference timings retained",
      "verification": "make check: 34 C++/CLI and 164 Python tests; make asan-test: 34/34; make lint and make docs pass; make tidy: all 110 tracked C++ files, 25 suppressed external warnings and no owned diagnostics; make include-cleaner: 311 advisory diagnostics, 22 unused-header reports all paired self-includes retained, remaining direct-provider reports inspected. Code/efficiency review found no blocking issue.",
      "verification_artifacts": ["tmp/uf-insertion-check.log", "tmp/uf-insertion-asan-final.log", "tmp/uf-insertion-lint-final.log", "tmp/uf-insertion-docs-final.log", "tmp/uf-insertion-tidy.log", "tmp/uf-insertion-include-cleaner.log", "tmp/assumptions-uf-review.txt"]
    },
    {
      "id": "2026-09-11-assumptions-uf-native-1595948",
      "date": "2026-09-11",
      "kind": "scoped-uf-correctness-native-archive-comparison-and-model-qualification",
      "evidence_status": "baseline timing complete; model qualification incomplete and superseded after profiling",
      "candidate_commit": "1595948",
      "solver_sources_identical_to": "df47b12",
      "candidate_sha256": "6205f9e304518c8c6dace4dae163521d47f0f11bd2c584b223dcdcdccc04037a",
      "archive": "sandbox/QF_UF.tar.zst",
      "archive_sha256": "52c55a17ee15e5c4a0fc723b9605ae42615da34499efc7e5a5e8b2c0ffc26a27",
      "manifest_sha256": "4cc0c9b35b3725ae2893e626f0ee29ca798830462b080a0dea16585bbcc48b85",
      "jobs": {
        "build": 142456,
        "compute_regressions": 142458,
        "auto_gate": 142459,
        "native_timing": 142464,
        "native_validation": 142519,
        "model_retry_120_seconds": 142567
      },
      "environment": {
        "host": "node-02.ciircluster",
        "workspace": "/home/janotmik/primo-model-fix",
        "build": "Release; CaDiCaL 3.0.0-7b99c07",
        "cpu_allocation": "one serial solver per task; request 1 task x 1 CPU; scheduler allocated 2 logical CPUs",
        "timing_resources": "8 GiB per task; 2 hours per shard; 30 seconds per complete session; array 64 shards, concurrency 8",
        "gate_resources": "4 GiB per task; 1 hour; 20 seconds per query/reference; Dolmen 30 seconds; array 8 x 250 sessions"
      },
      "preparation": "scripts/slurm_prepare_benchmark_workspace.py with reuse-dependencies/build-via-slurm and exact-commit check-only before each submission; absolute CMake/CTest from primo-cadical-profile/.venv-build/bin",
      "gate": {
        "generated": 1000,
        "native_mutations": 1000,
        "seed_base": 202629120,
        "pass": 2000,
        "queries": 16000,
        "sat_models": 9458,
        "wrong_answer": 0,
        "crash": 0,
        "parser_type_error": 0,
        "timeout": 0,
        "unknown": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "invalid_model": 0,
        "command": "scripts/slurm_incremental_uf_gate.sbatch with PRIMO_UF_GATE_PROFILE=auto; exact commands and binary/generator/seed/reference/Dolmen hashes in per-shard run.json"
      },
      "compute_regressions": "6 Python harness regressions, 4 CTest matches, 7 tracked Boolean argument seeds (3 Dolmen SAT models): pass",
      "timing_command": "scripts/slurm_native_uf_sessions.sbatch PRIMO_UF_PHASE=timing; 16 shards per profile, interleaved. Original files via stdin. Primo --quiet --stats --max-theory-conflicts=10000 --incremental-mode=rebuild|assumptions; Z3 -in; cvc5 --incremental --lang=smt2.",
      "validation_scheduling": "After timing completed, increased job 142519 ArrayTaskThrottle from 8 to 32 using scontrol; spare node-02/node-03 CPU capacity, unchanged total tasks and per-task limits. No validation concurrent with timing.",
      "validation_command": "same script with PRIMO_UF_PHASE=validate, PRIMO_UF_TIMING pointing at immutable timing results, candidate profile array indices 0,1,4,5,...,60,61; add --check-model and actual per-query get-model; Z3 query-context oracle and independent Dolmen --check-model=true --strict=false --size=1G; query/reference 30 seconds, Dolmen 60 seconds.",
      "timing_summary": {
        "profiles": {
          "rebuild": {
            "sessions": 1778,
            "outcomes": {
              "complete": 1775,
              "timeout": 2,
              "unknown": 1
            },
            "completed_queries": 29573,
            "partial_queries": 380,
            "partial_definite_answers": 379,
            "partial_unknown_answers": 1,
            "expected_sat_models": 24746,
            "total_par2": 1461.9785826765,
            "mean_par2": 0.822260170234252,
            "median_complete_seconds": 0.29063820093870163,
            "max_measured_rss_kib": 1010556,
            "rss_samples": 1778,
            "full_archive_timing": true,
            "families": {
              "2018-Goel-hwbench": {
                "sessions": 766,
                "outcomes": {
                  "complete": 764,
                  "timeout": 1,
                  "unknown": 1
                },
                "completed_queries": 1528,
                "partial_queries": 3,
                "partial_definite_answers": 2,
                "partial_unknown_answers": 1,
                "expected_sat_models": 1066,
                "total_par2": 951.0189492590725,
                "mean_par2": 1.2415390982494419,
                "median_complete_seconds": 0.7776431133970618,
                "max_measured_rss_kib": 1010556,
                "rss_samples": 766
              },
              "20190906-CLEARSY": {
                "sessions": 1012,
                "outcomes": {
                  "complete": 1011,
                  "timeout": 1
                },
                "completed_queries": 28045,
                "partial_queries": 377,
                "partial_definite_answers": 377,
                "partial_unknown_answers": 0,
                "expected_sat_models": 23680,
                "total_par2": 510.95963341742754,
                "mean_par2": 0.5049008235350074,
                "median_complete_seconds": 0.07804745063185692,
                "max_measured_rss_kib": 19536,
                "rss_samples": 1012
              }
            }
          },
          "assumptions": {
            "sessions": 1778,
            "outcomes": {
              "complete": 1772,
              "unknown": 6
            },
            "completed_queries": 29978,
            "partial_queries": 12,
            "partial_definite_answers": 5,
            "partial_unknown_answers": 7,
            "expected_sat_models": 25027,
            "total_par2": 854.1544122211635,
            "mean_par2": 0.4804018066485734,
            "median_complete_seconds": 0.07379723992198706,
            "max_measured_rss_kib": 925120,
            "rss_samples": 1778,
            "full_archive_timing": true,
            "families": {
              "2018-Goel-hwbench": {
                "sessions": 766,
                "outcomes": {
                  "complete": 760,
                  "unknown": 6
                },
                "completed_queries": 1520,
                "partial_queries": 12,
                "partial_definite_answers": 5,
                "partial_unknown_answers": 7,
                "expected_sat_models": 1062,
                "total_par2": 757.7013757005334,
                "mean_par2": 0.9891662868153177,
                "median_complete_seconds": 0.23169634398072958,
                "max_measured_rss_kib": 925120,
                "rss_samples": 766
              },
              "20190906-CLEARSY": {
                "sessions": 1012,
                "outcomes": {
                  "complete": 1012
                },
                "completed_queries": 28458,
                "partial_queries": 0,
                "partial_definite_answers": 0,
                "partial_unknown_answers": 0,
                "expected_sat_models": 23965,
                "total_par2": 96.45303652063012,
                "mean_par2": 0.09530932462512857,
                "median_complete_seconds": 0.028643855825066566,
                "max_measured_rss_kib": 25180,
                "rss_samples": 1012
              }
            }
          },
          "z3": {
            "sessions": 1778,
            "outcomes": {
              "complete": 1778
            },
            "completed_queries": 29990,
            "partial_queries": 0,
            "partial_definite_answers": 0,
            "partial_unknown_answers": 0,
            "expected_sat_models": 25035,
            "total_par2": 300.640461480245,
            "mean_par2": 0.16908912344220753,
            "median_complete_seconds": 0.040514715015888214,
            "max_measured_rss_kib": 160132,
            "rss_samples": 1778,
            "full_archive_timing": true,
            "families": {
              "2018-Goel-hwbench": {
                "sessions": 766,
                "outcomes": {
                  "complete": 766
                },
                "completed_queries": 1532,
                "partial_queries": 0,
                "partial_definite_answers": 0,
                "partial_unknown_answers": 0,
                "expected_sat_models": 1070,
                "total_par2": 258.7292988523841,
                "mean_par2": 0.33776670868457453,
                "median_complete_seconds": 0.21141600981354713,
                "max_measured_rss_kib": 160132,
                "rss_samples": 766
              },
              "20190906-CLEARSY": {
                "sessions": 1012,
                "outcomes": {
                  "complete": 1012
                },
                "completed_queries": 28458,
                "partial_queries": 0,
                "partial_definite_answers": 0,
                "partial_unknown_answers": 0,
                "expected_sat_models": 23965,
                "total_par2": 41.911162627860904,
                "mean_par2": 0.04141419232002066,
                "median_complete_seconds": 0.020115772262215614,
                "max_measured_rss_kib": 33176,
                "rss_samples": 1012
              }
            }
          },
          "cvc5": {
            "sessions": 1778,
            "outcomes": {
              "complete": 1768,
              "timeout": 10
            },
            "completed_queries": 29970,
            "partial_queries": 0,
            "partial_definite_answers": 0,
            "partial_unknown_answers": 0,
            "expected_sat_models": 25020,
            "total_par2": 1477.990283396095,
            "mean_par2": 0.8312656262070276,
            "median_complete_seconds": 0.10150773357599974,
            "max_measured_rss_kib": 198896,
            "rss_samples": 1778,
            "full_archive_timing": true,
            "families": {
              "2018-Goel-hwbench": {
                "sessions": 766,
                "outcomes": {
                  "complete": 756,
                  "timeout": 10
                },
                "completed_queries": 1512,
                "partial_queries": 0,
                "partial_definite_answers": 0,
                "partial_unknown_answers": 0,
                "expected_sat_models": 1055,
                "total_par2": 1342.8579124491662,
                "mean_par2": 1.7530782146855954,
                "median_complete_seconds": 0.41436302103102207,
                "max_measured_rss_kib": 198896,
                "rss_samples": 766
              },
              "20190906-CLEARSY": {
                "sessions": 1012,
                "outcomes": {
                  "complete": 1012
                },
                "completed_queries": 28458,
                "partial_queries": 0,
                "partial_definite_answers": 0,
                "partial_unknown_answers": 0,
                "expected_sat_models": 23965,
                "total_par2": 135.13237094692886,
                "mean_par2": 0.13353001081712337,
                "median_complete_seconds": 0.0307229058817029,
                "max_measured_rss_kib": 27328,
                "rss_samples": 1012
              }
            }
          }
        },
        "reference_disagreements": [],
        "assumptions_vs_rebuild": {
          "gains": [
            14,
            852
          ],
          "losses": [
            656,
            659,
            660,
            661,
            662
          ],
          "both_complete": 1770,
          "median_speedup": 2.951918414487966,
          "geomean_speedup": 2.7412056325579846,
          "largest_regressions": [
            {
              "index": 267,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_firewire_tree.5.prop3_ab_core_max.smt2",
              "rebuild_seconds": 12.015164602547884,
              "assumptions_seconds": 24.69918086193502
            },
            {
              "index": 265,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_firewire_tree.5.prop2_ab_core_max.smt2",
              "rebuild_seconds": 11.965793212875724,
              "assumptions_seconds": 20.436282858252525
            },
            {
              "index": 263,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_firewire_tree.5.prop1_ab_core_max.smt2",
              "rebuild_seconds": 11.9886684268713,
              "assumptions_seconds": 20.127701608464122
            },
            {
              "index": 288,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_frogs.3.prop1_ab_core_max.smt2",
              "rebuild_seconds": 9.797072218731046,
              "assumptions_seconds": 15.3491265270859
            },
            {
              "index": 507,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_needham.4.prop2_ab_core_max.smt2",
              "rebuild_seconds": 3.383192704990506,
              "assumptions_seconds": 6.102023560553789
            },
            {
              "index": 261,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_firewire_tree.4.prop3_ab_core_max.smt2",
              "rebuild_seconds": 3.605221653357148,
              "assumptions_seconds": 6.173826040700078
            },
            {
              "index": 292,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_frogs.5.prop1_ab_core_max.smt2",
              "rebuild_seconds": 4.2192238625139,
              "assumptions_seconds": 6.775162560865283
            },
            {
              "index": 257,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_firewire_tree.4.prop1_ab_core_max.smt2",
              "rebuild_seconds": 3.4660632871091366,
              "assumptions_seconds": 5.582253308966756
            },
            {
              "index": 446,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_loyd.3.prop1_ab_core_max.smt2",
              "rebuild_seconds": 2.0583236943930387,
              "assumptions_seconds": 2.832213193178177
            },
            {
              "index": 170,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_collision.5.prop1_ab_core_max.smt2",
              "rebuild_seconds": 1.9129224214702845,
              "assumptions_seconds": 2.6316556353121996
            },
            {
              "index": 607,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_plc.1.prop2_ab_core_max.smt2",
              "rebuild_seconds": 1.901801485568285,
              "assumptions_seconds": 2.5341963563114405
            },
            {
              "index": 501,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_needham.3.prop3_ab_core_max.smt2",
              "rebuild_seconds": 1.8848996479064226,
              "assumptions_seconds": 2.4809850435703993
            },
            {
              "index": 266,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_firewire_tree.5.prop2_ab_min_max.smt2",
              "rebuild_seconds": 3.749390995129943,
              "assumptions_seconds": 4.283217629417777
            },
            {
              "index": 611,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_plc.3.prop2_ab_core_max.smt2",
              "rebuild_seconds": 2.009757863357663,
              "assumptions_seconds": 2.5367820877581835
            },
            {
              "index": 609,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_plc.2.prop2_ab_core_max.smt2",
              "rebuild_seconds": 1.9616342261433601,
              "assumptions_seconds": 2.463010171428323
            },
            {
              "index": 613,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_plc.4.prop2_ab_core_max.smt2",
              "rebuild_seconds": 2.072370834648609,
              "assumptions_seconds": 2.568578427657485
            },
            {
              "index": 264,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_firewire_tree.5.prop1_ab_min_max.smt2",
              "rebuild_seconds": 4.067480659112334,
              "assumptions_seconds": 4.466124748811126
            },
            {
              "index": 509,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_needham.4.prop3_ab_core_max.smt2",
              "rebuild_seconds": 1.4831640757620335,
              "assumptions_seconds": 1.7428130973130465
            },
            {
              "index": 284,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_frogs.1.prop1_ab_core_max.smt2",
              "rebuild_seconds": 1.7681188602000475,
              "assumptions_seconds": 1.938982579857111
            },
            {
              "index": 491,
              "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_needham.2.prop2_ab_core_max.smt2",
              "rebuild_seconds": 1.278003428131342,
              "assumptions_seconds": 1.4403659738600254
            }
          ]
        },
        "timing_root": "results/uf-native-timing-1595948",
        "validation_root": null
      },
      "artifacts": [
        "results/uf-native-timing-1595948",
        "results/uf-auto-gate-1595948",
        "SLURM results/uf-native-validation-1595948",
        "SLURM results/uf-candidate-1595948/primo",
        "tmp/uf-current-sacct.txt",
        "scripts/summarize_native_uf.py"
      ],
      "limitations": "No completed-session performance qualification until all selected SAT models pass. Timeout/unknown sessions remain unqualified. No default promotion.",
      "validation_result": {
        "original_attempt": {
          "rebuild_pass_sessions": 922,
          "assumptions_pass_sessions": 912,
          "response_timeouts": 8
        },
        "retry_120_pass_sessions": 10,
        "stopped": "Cancelled remaining jobs 142519 and 142567 after profiling a shared model construction bottleneck. No wrong answers or invalid models observed; this is incomplete qualification. Preserve timings and reference rows for the new candidate comparison."
      }
    },
    {
      "id": "2026-09-11-assumptions-uf-local-profile",
      "date": "2026-09-11",
      "kind": "local-profile-of-native-regressions",
      "evidence_status": "diagnostic; no solver change or speed claim",
      "candidate_commit": "1595948",
      "host": "local workspace",
      "build": "RelWithDebInfo -O2 -g -pg; local CaDiCaL; not headline timing binary",
      "command": "cmake -S . -B build-gprof-current -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS=-pg -DCMAKE_EXE_LINKER_FLAGS=-pg -DPRIMO_GIT_REVISION_OVERRIDE=1595948; build target primo; --quiet --stats --incremental-mode=assumptions --max-theory-conflicts=10000 < input; gprof primo gmon.out",
      "resource_limit": "120 seconds per local profile; both completed successfully",
      "instances": [
        {
          "index": 265,
          "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_firewire_tree.5.prop2_ab_core_max.smt2"
        },
        {
          "index": 656,
          "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_rushhour.1.prop1_ab_min_max.smt2"
        }
      ],
      "findings": {
        "firewire_index_265": "Self samples: assignment callback 23.53%, SAT propagate 22.79%, merge_classes 13.73%, restore_trail_entry 5.88%. SLURM first-query solve 14.93s and preprocessing 3.91s; rebuild solve 8.99s/preprocessing 0.70s. Working reset 0.041s. Search and reduced preprocessing are the principal measured regression; batching scratch allocations alone would not remove it.",
        "rushhour_index_656": "Self samples: assignment callback 23.58%, SAT propagate 14.15%, merge_classes 9.43%; second query reaches 10000 theory-conflict limit. Rebuild completes both queries in 8.79s. The opt-in safe pipeline and retained search differ from rebuild; no silent fallback or unsafe preprocessing enabled.",
        "decision": "Accept measured limitations only for opt-in mode; default rebuild unchanged. No new algorithm designed from this profile."
      },
      "profiler_limitation": "perf unavailable: no supported PMU/task-clock event; used gprof instead. Sampling includes instrumented owned code and uninstrumented CaDiCaL samples; call graph timings are diagnostic.",
      "artifacts": [
        "tmp/uf-profile-265",
        "tmp/uf-profile-656",
        "tmp/uf-gprof-build.log"
      ]
    },
    {
      "id": "2026-09-11-assumptions-uf-correctness-and-resource-driver",
      "date": "2026-09-11",
      "kind": "scoped-uf-correctness-default-preservation-and-timing-infrastructure",
      "evidence_status": "correctness gates pass; no timing run completed yet",
      "candidate_commit": "282336d",
      "candidate_sha256": "2164aa63f75d2dcc3e7d9ed73d9043d845732050485f31d0f48cd7e8280a55ba",
      "solver_sources_identical_to": "df47b12",
      "summary_artifact": "benchmarks/assumptions-uf-correctness.json",
      "jobs": {
        "build": 142356,
        "regressions": 142358,
        "auto_gate": 142359,
        "matrix_gate": 142364,
        "default_uf": 142369,
        "default_other": 142370,
        "timing_infrastructure_failure": 142388
      },
      "gates": {
        "auto": {
          "generated": 1000,
          "native_mutations": 1000,
          "queries": 16000,
          "sat_models": 9465,
          "pass": 2000
        },
        "matrix": {
          "generated": 1000,
          "native_mutations": 1000,
          "queries": 16000,
          "sat_models": 9443,
          "pass": 2000
        },
        "wrong_answer": 0,
        "crash": 0,
        "parser_type_error": 0,
        "unknown_timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "invalid_model": 0
      },
      "gate_commands": "scripts/slurm_incremental_uf_gate.sbatch, PRIMO_UF_GATE_PROFILE=auto with seed base 202619120, or matrix with seed base 202609120; eight 250-session shards per invocation, first four generated and remaining four mutate benchmarks/native-uf-incremental-seeds.txt. Exact commands and solver/reference/Dolmen versions and hashes in per-shard run.json.",
      "default_preservation": {
        "files": 25,
        "sessions": 50,
        "queries": 200,
        "sat_models": 121,
        "pass_files": 25,
        "lost_solved": 0,
        "candidate_total_seconds": 16.889311581850052,
        "prior_04d2e23_total_seconds": 16.6212056055665,
        "median_candidate_over_prior": 1.0133743801873143,
        "note": "Separate file-mode timing diagnostics; scoped/Dolmen validation time excluded. UF conflict budget 10000, others 1000, matching prior accepted options."
      },
      "timing_failure": "All 64 timing tasks failed before solver creation: compute nodes lack /usr/bin/time even though the login-node probe succeeded. No reference solver was timed or rerun. Replaced wrapper with direct Linux wait4 resource accounting and bounded process-group termination. Added actual post-answer exit and timeout/resource tests.",
      "artifacts": [
        "results/uf-auto-gate-282336d",
        "results/uf-matrix-gate-282336d",
        "results/uf-default-282336d",
        "results/uf-regressions-282336d",
        "SLURM /home/janotmik/primo-model-fix/results/uf-candidate-282336d/primo",
        "SLURM /home/janotmik/primo-model-fix/slurm_logs/primo-native-uf-142388_*.err",
        "tmp/uf-candidate-282336d-provenance.log"
      ],
      "resources": "Gates: 4 concurrent tasks/array, two arrays, 4 GiB/task, one serial driver, 20s query/reference and 30s Dolmen budget. Timing attempted 8 GiB/task, 30s whole-session limit, but failed before launch. Scheduler reserves two logical CPUs for each one-task/one-CPU request. Python 3.9.18.",
      "verification": "6 focused UF harness tests (including real child reaping/RSS, failed exit and timeout), batch validation, make lint/docs; all solver C++ unchanged."
    },
    {
      "id": "2026-09-11-assumptions-uf-gate-invocation-repair",
      "date": "2026-09-11",
      "kind": "native-parser-and-gate-invocation-check",
      "evidence_status": "full production parser pass; fuzz invocation failed before any query",
      "candidate_commit": "ce91bfb",
      "jobs": {
        "build": 142321,
        "regressions": 142322,
        "inventory": 142323,
        "auto_gate_invocation_failures": 142324,
        "matrix_gate_invocation_failures": 142325
      },
      "parser": {
        "sessions": 1778,
        "queries": 29990,
        "pass": 1778,
        "unsupported": 0,
        "seconds": 294,
        "archive_sha256": "52c55a17ee15e5c4a0fc723b9605ae42615da34499efc7e5a5e8b2c0ffc26a27"
      },
      "regressions": {
        "ctest_pass": 4,
        "boolean_seed_sessions": 7,
        "queries": 7,
        "dolmen_models": 3
      },
      "failure": "All 16 fuzz shards stopped before first query: exit 109, unexpected --euf-propagation flag. Correct flag is --euf-prop. No generated solver result was accepted.",
      "fix": "Correct batch flag and exercise all six supported explicit CLI option combinations in the existing UF CLI regression. Also compare replay query answers with timed answers explicitly, in addition to live reference comparison.",
      "commands": [
        "scripts/slurm_native_uf_inventory.sbatch",
        "scripts/slurm_incremental_uf_regressions.sbatch",
        "scripts/slurm_incremental_uf_gate.sbatch, PRIMO_UF_GATE_PROFILE=auto and matrix"
      ],
      "artifacts": [
        "SLURM /home/janotmik/primo-model-fix/results/uf-inventory-ce91bfb",
        "SLURM /home/janotmik/primo-model-fix/results/uf-regressions-ce91bfb",
        "SLURM /home/janotmik/primo-model-fix/results/uf-auto-gate-ce91bfb",
        "SLURM /home/janotmik/primo-model-fix/results/uf-matrix-gate-ce91bfb",
        "tmp/uf-*-ce91bfb-submission.json"
      ],
      "host": "SLURM node-02 and compute nodes; Python 3.9.18",
      "resources": "Inventory 1 serial parser, 4 GiB allocation, 30s/file, 20min allocation. Gates 4 concurrent shards per array, 4 GiB/task, 20s query/reference and 30s Dolmen budget, 1h allocation. Scheduler allocates two logical CPUs per single-task job.",
      "verification": "Focused six-option CLI regression, batch syntax, make lint/docs, existing C++ source unchanged."
    },
    {
      "id": "2026-09-11-assumptions-uf-harness-portability",
      "date": "2026-09-11",
      "kind": "slurm-preflight-and-harness-repair",
      "evidence_status": "infrastructure failures before solving; no solver qualification",
      "candidate_commit": "df47b12",
      "jobs": {
        "build": 142317,
        "regressions_failed": 142318,
        "inventory_failed": 142319,
        "dependent_gate_cancelled": 142320
      },
      "commands": [
        "scripts/slurm_prepare_benchmark_workspace.py --reuse-dependencies --build-via-slurm --jobs 4 --extra-target primo_smt_session_tests --extra-target primo_sat_backend_tests --extra-target primo_parser_corpus",
        "sbatch --ntasks=1 tmp/uf-candidate-tests.sbatch",
        "sbatch --ntasks=1 scripts/slurm_native_uf_inventory.sbatch"
      ],
      "failures": [
        "ctest not found on compute-node PATH",
        "cluster Python lacks hashlib.file_digest"
      ],
      "fix": "Explicit PRIMO_CTEST in committed regression batch; portable streaming digest; Auto and nondefault option-matrix gates separately reproducible. Solver sources unchanged.",
      "artifacts": [
        "tmp/assumptions-uf-slurm-prepare.log",
        "tmp/uf-regression-submit.log",
        "tmp/uf-inventory-submit.log",
        "SLURM /home/janotmik/primo-model-fix/slurm_logs/primo-uf-session-tests-142318.err",
        "SLURM /home/janotmik/primo-model-fix/slurm_logs/primo-native-uf-inventory-142319.err"
      ],
      "build_result": "142317 COMPLETED, 2m18s, 4 CPUs, max RSS 818036 KiB, df47b12/CaDiCaL 3.0.0 verified. Fresh build reported filesystem clock-skew warnings; all targets compiled/linked from removed build directory.",
      "verification": "4 focused UF harness tests, batch validation, make lint and make docs; no C++ changes since full tests/ASan/static pass."
    },
    {
      "id": "2026-09-11-assumptions-uf-local-development",
      "date": "2026-09-11",
      "kind": "native-uf-baseline-inventory-and-development-smoke",
      "evidence_status": "preliminary-local-only; SLURM qualification pending",
      "base_commit": "5d930be",
      "baseline_binary_revision": "04d2e23",
      "baseline_binary_sha256": "f823de911dbdb008ab89acebebf2fa5e467d24eb45f88fa1fe94f05c600249e8",
      "archive": {
        "archive": "sandbox/QF_UF.tar.zst",
        "archive_sha256": "52c55a17ee15e5c4a0fc723b9605ae42615da34499efc7e5a5e8b2c0ffc26a27",
        "manifest_sha256": "4cc0c9b35b3725ae2893e626f0ee29ca798830462b080a0dea16585bbcc48b85",
        "sessions": 1778,
        "queries": 29990,
        "pushes": 33716,
        "pops": 33716,
        "fresh_status_annotations": 1532,
        "families": {
          "2018-Goel-hwbench": 766,
          "20190906-CLEARSY": 1012
        },
        "reproduce": "python3 scripts/native_uf_sessions.py inventory --archive sandbox/QF_UF.tar.zst --root tmp/native-uf-inputs --manifest tmp/native-uf-inventory/manifest.json",
        "mutation_seeds": "benchmarks/native-uf-incremental-seeds.txt",
        "seed_selection": "Per family sorted by byte size, indices 0,10,25,50,100; exact native prefixes through first check-sat."
      },
      "baseline": [
        {
          "file": "incremental/QF_UF/2018-Goel-hwbench/QF_UF_needham.3.prop1_ab_core_max.smt2",
          "bytes": 381058,
          "sha256": "1176735c2f9f7a2249e5903bea336537f3b5b79f138c938f3bc6ddfd5ab17e10",
          "query_count_lexical": 2,
          "push_count_lexical": 0,
          "pop_count_lexical": 0,
          "check_sat_assuming_lexical": 0,
          "command": [
            "results/assumptions-native-04d2e23/primo",
            "--quiet",
            "--stats",
            "--max-theory-conflicts=10000",
            "tmp/uf-baseline-smoke/case-0.smt2"
          ],
          "status": "done",
          "exit": 0,
          "seconds": 0.33400351309683174,
          "answers": [
            "sat",
            "unsat"
          ]
        },
        {
          "file": "incremental/QF_UF/20190906-CLEARSY/0008/00064.smt2",
          "bytes": 20766,
          "sha256": "8e299a7186e72d30eea7ec448cd9f489fab24f1b292d6497e1a1bd4f007e893d",
          "query_count_lexical": 2,
          "push_count_lexical": 2,
          "pop_count_lexical": 2,
          "check_sat_assuming_lexical": 0,
          "command": [
            "results/assumptions-native-04d2e23/primo",
            "--quiet",
            "--stats",
            "--max-theory-conflicts=10000",
            "tmp/uf-baseline-smoke/case-1.smt2"
          ],
          "status": "done",
          "exit": 0,
          "seconds": 0.010139239951968193,
          "answers": [
            "sat",
            "sat"
          ]
        }
      ],
      "development_smoke": {
        "source": "uncommitted candidate based on 5d930be; not final-commit fuzz evidence",
        "command": "python3 tmp/uf-local-differential.py; incremental_uf_gate.generated(seed), seeds 0..99; build/primo --quiet --incremental-mode=assumptions --check-model versus contrib/local/bin/z3 -in",
        "sessions": 100,
        "pass": 100,
        "wrong_answer": 0,
        "crash": 0,
        "invalid_internal_model": 0,
        "timeout": 0,
        "independent_models": "not run locally; Dolmen is installed on SLURM",
        "timeout_seconds_per_process": 15,
        "artifacts": "tmp/uf-local-differential, tmp/uf-local-differential.log"
      },
      "artifacts": [
        "tmp/uf-baseline-smoke",
        "tmp/native-uf-inventory",
        "tmp/uf-archive-staging.log"
      ],
      "limitations": "Local smoke only. Remote pre-existing UF archives checksum c5cec6881390d2bda18482526b84127f5c13cc7881b02944a7ef5dd1525b46ad differs from requested archive; exact input staged using repository helper.",
      "host": "mikolas-ThinkPad-T14s-Gen-5",
      "native_smoke": {
        "sessions": 10,
        "pass": 10,
        "wrong_answer": 0,
        "crash": 0,
        "invalid_internal_model": 0,
        "timeout": 0,
        "command": "python3 tmp/uf-native-smoke.py; native_prefix + scoped(seed 0..9, mutate=True); build/primo --quiet --incremental-mode=assumptions --max-theory-conflicts=10000 --check-model versus contrib/local/bin/z3 -in",
        "timeout_seconds_per_process": 15,
        "artifacts": "tmp/uf-native-smoke.json and tmp/uf-native-smoke-*.smt2"
      },
      "verification": {
        "cpp_cli": "make check: 34/34 C++/CLI tests, final log tmp/assumptions-uf-check-final.log",
        "asan": "make asan-test: 34/34, including 64 repeated scoped sort/function redeclarations and unknown recovery",
        "python": "make check: 160/160 Python tests",
        "lint": "make lint pass",
        "docs": "make docs pass",
        "review": "tmp/assumptions-uf-review.txt; source ownership, base-state isolation, explanations, visible models, safe configuration and whole tracked-file baseline reviewed. Exact-commit SLURM gate and performance/model qualification remain pending.",
        "static": "make tidy: all 110 tracked non-generated C++ translation units, no owned diagnostics, 25 suppressed external warnings. make include-cleaner: all 110 files, 311 advisory diagnostics comprising paired self-includes and transitive provider reports; no actionable unused header. Logs tmp/assumptions-uf-tidy.log and tmp/assumptions-uf-includes.log."
      }
    },
    {
      "id": "2026-09-11-assumptions-lra-qualification",
      "date": "2026-09-11",
      "kind": "scoped-lra-correctness-default-preservation-and-native-comparison",
      "evidence_status": "accepted-opt-in-bounded-qualification; native BMC complete, induction incomplete",
      "candidate_commit": "04d2e23",
      "candidate_version": "primo 0.1.0\ngit: 04d2e23\nbuild: Release, sanitizers: none\ncadical: cadical-3.0.0-7b99c07\n",
      "candidate_sha256": "f823de911dbdb008ab89acebebf2fa5e467d24eb45f88fa1fe94f05c600249e8",
      "implementation": "Persistent QF_LRA frontend, SAT backend/clausifier/prepared arithmetic; selector scopes; fresh query working theory; no default or QF_UFLRA path change. docs/assumption-incremental-lra.md maps literature, structures, invariants, proof obligations and limitations.",
      "commands": {
        "gate": "scripts/slurm_incremental_lra_gate.sbatch; python3 scripts/incremental_lra_gate.py --kind KIND --seed SEED --count 250 --solver build-slurm-rel/primo --solver-arg=--quiet --solver-arg=--incremental-mode=assumptions --solver-arg=--max-theory-conflicts=10000 --ref contrib/local/bin/z3 --dolmen contrib/local/bin/dolmen --expected-git 04d2e23 --timeout 15 --dolmen-timeout 20 --out OUTPUT; native kind also supplies task-0 and task-1 model-prefix/original.smt2 from results/native-lra-c3ca55f",
        "prefix": "scripts/slurm_assumptions_native_prefix.sbatch; scripts/check_assumptions_native_prefix.py on manifest indices 0..9, --queries 4, --solver-arg=--quiet --solver-arg=--incremental-mode=assumptions --solver-arg=--max-theory-conflicts=10000, --expected-git 04d2e23; actual streamed models checked separately from timing",
        "default": "scripts/slurm_incremental_corpus.sbatch on benchmarks/incremental-parser-real-25.json; QF_UF selected from retry with PRIMO_THEORY_CONFLICT_LIMIT=10000; other logics retain first successful run",
        "timing": "sbatch --ntasks=1 scripts/slurm_assumptions_native_compare.sbatch; each mode uses --quiet --stats --incremental-mode=MODE --max-theory-conflicts=10000; unchanged native stdin, indices 0 and 1, timeout 600"
      },
      "resources_and_jobs": {
        "host": "SLURM compute node (raw host/task provenance in each run)",
        "build_job": "142199",
        "backend_session_regression_job": "142200",
        "gate_array_job": "142201",
        "prefix_array_job": "142202",
        "default_array_job": "142203",
        "default_uf_retry_job": "142221",
        "timing_array_job": "142225",
        "gate": "250 sessions/shard, 4 concurrent tasks, 4 GiB/task, 30 min/task; 1 CPU per task requested, scheduler allocated 2 CPUs per array element, one serial driver",
        "prefix": "4 queries/session, 4 GiB/task, 5 min/task, 30 s/query and Dolmen check",
        "default": "8 GiB/task, 15 min/task, 30 s/query and Dolmen check; UF retry 10000 theory conflicts, other selected logics 1000",
        "timing": "--ntasks=1, --cpus-per-task=1, 8 GiB/task, 12 min allocation, 600 s whole-session solver timeout; scheduler reserved two logical CPUs per element; one serial single-threaded solver process"
      },
      "reference_and_validator": {
        "z3": {
          "version": "Z3 version 5.1.0 - 64 bit",
          "sha256": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0"
        },
        "dolmen": {
          "version": "0.10",
          "sha256": "08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e"
        }
      },
      "gate": {
        "generated_sessions": 1000,
        "native_mutated_sessions": 1000,
        "pass_sessions": 2000,
        "queries": 16000,
        "sat_models_accepted_by_dolmen": 10802,
        "wrong_answer": 0,
        "crash": 0,
        "parser_type_error": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "untriaged_failure": 0,
        "native_seed_precheck": "Both pristine first-query native seeds also passed before each of the four native shards; eight additional UNSAT queries, excluded from generated/mutation counts.",
        "limits": "Native mutation changes numerals and strictness in first-query seeds plus scopes. It does not cover complete native sessions. Auto pipeline is the exact campaign profile; Off has unit and preliminary local smoke coverage."
      },
      "gate_shards": [
        {
          "index": 0,
          "kind": "generated",
          "seed": 202609110,
          "count": 250,
          "job": "142204",
          "generator_sha256": "76337b1b8390bd52396a0cd431efea76eecfa355b845757f4324bd97014cff16",
          "artifact": "results/assumptions-gate-04d2e23/shard-0"
        },
        {
          "index": 1,
          "kind": "generated",
          "seed": 202609360,
          "count": 250,
          "job": "142205",
          "generator_sha256": "76337b1b8390bd52396a0cd431efea76eecfa355b845757f4324bd97014cff16",
          "artifact": "results/assumptions-gate-04d2e23/shard-1"
        },
        {
          "index": 2,
          "kind": "generated",
          "seed": 202609610,
          "count": 250,
          "job": "142206",
          "generator_sha256": "76337b1b8390bd52396a0cd431efea76eecfa355b845757f4324bd97014cff16",
          "artifact": "results/assumptions-gate-04d2e23/shard-2"
        },
        {
          "index": 3,
          "kind": "generated",
          "seed": 202609860,
          "count": 250,
          "job": "142207",
          "generator_sha256": "76337b1b8390bd52396a0cd431efea76eecfa355b845757f4324bd97014cff16",
          "artifact": "results/assumptions-gate-04d2e23/shard-3"
        },
        {
          "index": 4,
          "kind": "native",
          "seed": 202610110,
          "count": 250,
          "job": "142222",
          "generator_sha256": "76337b1b8390bd52396a0cd431efea76eecfa355b845757f4324bd97014cff16",
          "artifact": "results/assumptions-gate-04d2e23/shard-4"
        },
        {
          "index": 5,
          "kind": "native",
          "seed": 202610360,
          "count": 250,
          "job": "142223",
          "generator_sha256": "76337b1b8390bd52396a0cd431efea76eecfa355b845757f4324bd97014cff16",
          "artifact": "results/assumptions-gate-04d2e23/shard-5"
        },
        {
          "index": 6,
          "kind": "native",
          "seed": 202610610,
          "count": 250,
          "job": "142224",
          "generator_sha256": "76337b1b8390bd52396a0cd431efea76eecfa355b845757f4324bd97014cff16",
          "artifact": "results/assumptions-gate-04d2e23/shard-6"
        },
        {
          "index": 7,
          "kind": "native",
          "seed": 202610860,
          "count": 250,
          "job": "142201",
          "generator_sha256": "76337b1b8390bd52396a0cd431efea76eecfa355b845757f4324bd97014cff16",
          "artifact": "results/assumptions-gate-04d2e23/shard-7"
        }
      ],
      "prefix_validation": {
        "manifest": "benchmarks/native-incremental-qf-lra.json",
        "sessions": 10,
        "queries": 40,
        "sat_models_accepted_by_dolmen": 10,
        "qualification": "Only these first-four-query prefixes; answers matched hash-checked native status oracles; no reference reruns."
      },
      "default_preservation": {
        "manifest": "benchmarks/incremental-parser-real-25.json",
        "files": 25,
        "sessions": 50,
        "queries": 200,
        "sat_models_accepted_by_dolmen": 121,
        "lost_solved_cases": 0,
        "current_file_seconds": 16.6212056055665,
        "recorded_file_seconds": 16.221632,
        "current_over_recorded_total_ratio": 1.0246321458634065,
        "largest_per_file_ratio": 1.0893123500179227,
        "interpretation": "Single current measurements against historical timings: total +2.5%, maximum per-file +8.9%; no large regression or solved loss. Not a paired speedup experiment.",
        "initial_uf_resource_limit": "First QF_UF attempt stopped at NEQ/NEQ033_size4.smt2 under the already-known inadequate 1000-conflict cap. Retained as incomplete; retry used established 10000-conflict baseline budget and passed all five files."
      },
      "native_comparison": {
        "selection": [
          0,
          1
        ],
        "family": "hybrid_networks/bmwlin",
        "timeout_seconds": 600,
        "aggregate": {
          "rebuild": {
            "completed_sessions": 0,
            "mean_par2_seconds": 1200,
            "observed_answers": [
              38,
              53
            ]
          },
          "assumptions": {
            "completed_sessions": 1,
            "mean_par2_seconds": 663.4856494050473,
            "observed_answers": [
              101,
              95
            ]
          }
        },
        "interpretation": "Assumptions completes BMC with all 101 source-status-checked UNSAT answers in 126.97 s; rebuild times out at 600 s. Induction remains incomplete in both modes; its partial answers are diagnostic and its SAT models beyond the separately validated prefix are unqualified. No full-induction or full-corpus qualification. The two-session PAR2 includes the prescribed timeout penalty; progress counts are not speedup ratios.",
        "memory_interpretation": "SLURM sampled batch-step MaxRSS, not isolated solver allocations; tasks finish at different query counts. Retained storage has no compaction until reset.",
        "timing_interpretation": "Wall-clock session timing excludes model validation. Per-phase counters sum completed queries only; timed-out query work is missing. Frontend time contains preprocessing and append subphases, which must not be added again."
      },
      "native_rows": [
        {
          "index": 0,
          "mode": "rebuild",
          "outcome": "timeout",
          "seconds": 600.017509996891,
          "observed_answers": 38,
          "observed_sat": 0,
          "observed_unsat": 38,
          "observed_unknown": 0,
          "observed_status_mismatches": 0,
          "par2_seconds": 1200,
          "slurm_batch_maxrss_kib": 602996,
          "artifact": "results/assumptions-native-04d2e23/case-0-rebuild"
        },
        {
          "index": 0,
          "mode": "assumptions",
          "outcome": "pass",
          "seconds": 126.9712988100946,
          "observed_answers": 101,
          "observed_sat": 0,
          "observed_unsat": 101,
          "observed_unknown": 0,
          "observed_status_mismatches": 0,
          "par2_seconds": 126.9712988100946,
          "slurm_batch_maxrss_kib": 1081836,
          "artifact": "results/assumptions-native-04d2e23/case-0-assumptions"
        },
        {
          "index": 1,
          "mode": "rebuild",
          "outcome": "timeout",
          "seconds": 600.0154819916934,
          "observed_answers": 53,
          "observed_sat": 26,
          "observed_unsat": 27,
          "observed_unknown": 0,
          "observed_status_mismatches": 0,
          "par2_seconds": 1200,
          "slurm_batch_maxrss_kib": 458492,
          "artifact": "results/assumptions-native-04d2e23/case-1-rebuild"
        },
        {
          "index": 1,
          "mode": "assumptions",
          "outcome": "timeout",
          "seconds": 600.0415656846017,
          "observed_answers": 95,
          "observed_sat": 47,
          "observed_unsat": 48,
          "observed_unknown": 0,
          "observed_status_mismatches": 0,
          "par2_seconds": 1200,
          "slurm_batch_maxrss_kib": 951960,
          "artifact": "results/assumptions-native-04d2e23/case-1-assumptions"
        }
      ],
      "reused_reference_timings": {
        "source": "benchmarks/native-incremental-qf-lra-comparison-summary.json",
        "rerun": false,
        "z3": {
          "observed_queries": [
            58,
            73
          ],
          "completed_sessions": 0,
          "mean_par2_seconds": 1200
        },
        "cvc5": {
          "observed_queries": [
            69,
            77
          ],
          "completed_sessions": 0,
          "mean_par2_seconds": 1200
        }
      },
      "verification": {
        "check": "make check: 33 C++/CLI tests and 156 Python tests passed, including the harness failure regression",
        "asan": "33 tests passed with ASan/UBSan and leak detection",
        "lint": "make lint passed",
        "docs": "make docs passed",
        "static": "All 110 tracked non-generated .cpp files passed stable per-translation-unit clang-tidy with clang-analyzer-* and advisory misc-include-cleaner. No analyzer/compiler errors or actionable unused includes. Earlier overlapping scans invalidated by source edits were discarded.",
        "review": "Whole-tree non-generated code review, ownership/borrow review, solver-efficiency review and documentation review completed; explicit retention and fresh-theory costs remain documented."
      },
      "local_verification_logs": [
        "tmp/assumptions-final-check.log",
        "tmp/assumptions-asan-verified.log",
        "tmp/assumptions-final-lint.log",
        "tmp/assumptions-final-docs.log",
        "tmp/assumptions-static/summary.json",
        "tmp/assumptions-remote-regression.log"
      ],
      "complete_summary": "benchmarks/assumptions-lra-summary.json",
      "artifacts": {
        "gate": "results/assumptions-gate-04d2e23",
        "prefix": "results/assumptions-prefix-04d2e23",
        "default": "results/assumptions-default-04d2e23",
        "default_retry": "results/assumptions-default-04d2e23-retry",
        "timing": "results/assumptions-native-04d2e23",
        "audit": "tmp/assumptions-correctness-audit.log"
      },
      "collection": "All 2000 session result files and all 16000 query outcomes reconciled with shard summaries; each of 10802 SAT records has a Dolmen command and retained validator output. Ten native prefixes, all selected default shards, both default attempts and all four native timing rows collected. Exact candidate executable preserved locally and remotely under results/assumptions-native-04d2e23/primo.",
      "harness_followup": "Initialize untriaged_failure before incrementing it. A regression injects a post-answer process failure and verifies durable failure metadata and stop-on-first-failure. No changes to generated inputs, solver/reference commands, validation decisions or passing campaign evidence.",
      "final_audit": "tmp/assumptions-final-slurm-audit.log: all jobs terminal, including the initial UF cap failure and passing retry. tmp/assumptions-final-process-audit.log records final local process and remote queue checks.",
      "decision": {
        "decision": "Accept as opt-in; rebuild remains default; no automatic compaction or UFLRA assumption support.",
        "source_relation": "Solver src, CMakeLists.txt and contrib unchanged after candidate 04d2e23. Follow-up contains collected evidence/docs and failure-counter initialization/regression only.",
        "process_audit": "All submitted jobs terminal; full audit in tmp/assumptions-final-slurm-audit.log. Initial UF resource-cap failure retained and superseded by matching-budget retry."
      }
    },
    {
      "id": "2026-09-11-assumptions-lra-development",
      "date": "2026-09-11",
      "kind": "incremental-engine-development-and-local-correctness",
      "evidence_status": "local-preliminary-remote-qualification-pending",
      "base_commit": "cef6b4d",
      "candidate": "uncommitted implementation; local binary banner cef6b4d-dirty",
      "scope": "Opt-in assumption-based QF_LRA with persistent frontend/SAT/preparation, scoped bindings and fresh working theory state; rebuild remains default.",
      "literature": "MathSAT5 TACAS 2013 sections 4.2-4.3; Bjorner-Fazekas CADE 2023 sections 3.2 and 5; docs/papers/ipasir-up.md. Read before implementing; docs/assumption-incremental-lra.md records structures, invariants, operations, complexity, deviations and proof obligations.",
      "local_environment": "Development workstation, C++20 Release and ASan Debug, CaDiCaL 3.0.0-7b99c07; unit executables run by ctest with --timeout 120.",
      "commands": [
        "make check",
        "make asan-test",
        "make lint",
        "make docs",
        "make tidy",
        "make include-cleaner",
        "per-translation-unit clang-tidy -p build -checks=clang-analyzer-*,misc-include-cleaner on all tracked non-generated .cpp files"
      ],
      "local_smoke": [
        {
          "kind": "generated",
          "count": 5,
          "seed": 202609110,
          "preprocessing_mode": "auto",
          "artifact": "tmp/assumptions-generated-smoke",
          "command": {
            "kind": "generated",
            "seed": 202609110,
            "count": 5,
            "solver": "build/primo",
            "solver_arg": [
              "--quiet",
              "--incremental-mode=assumptions",
              "--max-theory-conflicts=10000"
            ],
            "ref": "contrib/local/bin/z3",
            "ref_arg": [],
            "dolmen": "/home/user/.opam/default/bin/dolmen",
            "timeout": 15,
            "dolmen_timeout": 20,
            "expected_git": "cef6b4d-dirty",
            "out": "tmp/assumptions-generated-smoke"
          },
          "solver_sha256": "57f8636eb143588ff70b4d0ed09ee081e126e72a39b67c1fa9d3af38346b5250",
          "summary": {
            "sessions": 5,
            "pass": 5,
            "sat_models": 40,
            "queries": 55,
            "failures": []
          },
          "wrong_answer": 0,
          "crash": 0,
          "parser_type_error": 0,
          "timeout": 0,
          "unsupported": 0,
          "reference_disagreement": 0,
          "independent_validator": "Dolmen direct actual-session SAT models; all reported sat_models passed",
          "limitations": "Dirty local development snapshot; not exact-commit merge evidence or speed measurements."
        },
        {
          "kind": "native",
          "count": 2,
          "seed": 202609110,
          "preprocessing_mode": "auto",
          "artifact": "tmp/assumptions-native-smoke",
          "command": {
            "kind": "native",
            "seed": 202609110,
            "count": 2,
            "solver": "build/primo",
            "solver_arg": [
              "--quiet",
              "--incremental-mode=assumptions",
              "--max-theory-conflicts=10000"
            ],
            "ref": "contrib/local/bin/z3",
            "ref_arg": [],
            "dolmen": "/home/user/.opam/default/bin/dolmen",
            "timeout": 15,
            "dolmen_timeout": 20,
            "expected_git": "cef6b4d-dirty",
            "out": "tmp/assumptions-native-smoke"
          },
          "solver_sha256": "57f8636eb143588ff70b4d0ed09ee081e126e72a39b67c1fa9d3af38346b5250",
          "summary": {
            "sessions": 2,
            "pass": 2,
            "sat_models": 3,
            "queries": 10,
            "failures": []
          },
          "wrong_answer": 0,
          "crash": 0,
          "parser_type_error": 0,
          "timeout": 0,
          "unsupported": 0,
          "reference_disagreement": 0,
          "independent_validator": "Dolmen direct actual-session SAT models; all reported sat_models passed",
          "limitations": "Dirty local development snapshot; not exact-commit merge evidence or speed measurements."
        },
        {
          "kind": "generated",
          "count": 3,
          "seed": 202609210,
          "preprocessing_mode": "off",
          "artifact": "tmp/assumptions-off-smoke",
          "command": {
            "kind": "generated",
            "seed": 202609210,
            "count": 3,
            "solver": "build/primo",
            "solver_arg": [
              "--quiet",
              "--incremental-mode=assumptions",
              "--preprocessing-mode=off",
              "--max-theory-conflicts=10000"
            ],
            "ref": "contrib/local/bin/z3",
            "ref_arg": [],
            "dolmen": "/home/user/.opam/default/bin/dolmen",
            "timeout": 15,
            "dolmen_timeout": 20,
            "expected_git": "cef6b4d-dirty",
            "out": "tmp/assumptions-off-smoke"
          },
          "solver_sha256": "9c2ffc8548891fb3148cd313c295a162bfd96b4004f9e74e65945d891a410be8",
          "summary": {
            "sessions": 3,
            "pass": 3,
            "sat_models": 24,
            "queries": 33,
            "failures": []
          },
          "wrong_answer": 0,
          "crash": 0,
          "parser_type_error": 0,
          "timeout": 0,
          "unsupported": 0,
          "reference_disagreement": 0,
          "independent_validator": "Dolmen direct actual-session SAT models; all reported sat_models passed",
          "limitations": "Dirty local development snapshot; not exact-commit merge evidence or speed measurements."
        }
      ],
      "static_analysis": "Initial multi-file scans overlapped edits and are discarded due to cached inconsistent header sizes. Stable independent per-TU scan completed over all 110 tracked non-generated .cpp files: zero compiler/analyzer errors. Advisory include-cleaner review found only paired self-includes and transitive-provider notices, no non-paired unused includes. Logs: tmp/assumptions-static/summary.json and per-TU logs.",
      "remaining": "Commit candidate, run 1000 generated plus 1000 native mutations on SLURM with reference/Dolmen checks, replay all ten bounded native prefixes, preserve 25-file default sample, compare two native sessions at 600 seconds, collect/summarize artifacts and audit jobs/processes.",
      "verification": {
        "make_check": "pass: 33 C++/CLI tests and 155 Python tests; tmp/assumptions-check-ready.log",
        "make_asan_test": "pass: all 33 tests, leak detection and strict initialization order; tmp/assumptions-asan-verified.log",
        "make_lint": "pass: tmp/assumptions-precommit-lint.log",
        "make_docs": "pass: tmp/assumptions-docs-verified.log",
        "review": "Whole-tree static/lint/build review plus manual changed ownership, borrow/mutation/use, selector proofs, option boundaries, model projection and harness exit/provenance review: no blocking local code issues. Engine still awaits exact-commit SLURM gates and measurements."
      }
    },
    {
      "id": "2026-09-10-native-incremental-qf-lra-reference-diagnostic",
      "date": "2026-09-10",
      "kind": "small-native-incremental-reference-timing-diagnostic",
      "evidence_status": "slurm-diagnostic-complete-all-full-sessions-timeout",
      "commit": "24c3684",
      "slurm": {"build_job": "142088", "array_job": "142089", "artifact": "results/native-lra-comparison-24c3684", "prepare_log": "tmp/native-comparison-prepare.log", "preflight_log": "tmp/native-comparison-preflight.log", "preflight": "24c3684 Release, CaDiCaL 3.0.0-7b99c07; helper --check-only --no-sync uses a clean detached 24c3684 worktree while root documentation is being updated. Z3 and cvc5 presence/version checks pass.", "scheduling": "Submitted six tasks with default throttle four; increased ArrayTaskThrottle to six after observing two necessary reference tasks queued behind the four running tasks. No extra solver invocations; one allocated CPU per solver throughout. Reproduction can submit --array=0-5%6 directly. Concurrent correctness/development timing, not isolated headline timings.", "preserved_binary_sha256": {"primo": "46f4389ca7d5ec5e69b1dec8f0d90a68c7846ec19b95404fc6bf1d6140beb20f", "z3": "54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0", "cvc5": "4a93548398445cf1a774655583f5465b156c26f63f2cdfb94f4728fdf7adde46"}},
      "baseline_commit": "c3ca55f",
      "scope": "User-requested longer-timeout comparison: smallest native BMC/k-induction pair, indices 0 and 1 of benchmarks/native-incremental-qf-lra.json. Untouched input bytes and stdin for all solvers, 600 seconds per full session, one CPU and 8 GiB per task. No production C++ changes.",
      "reference_reuse": "No native hybrid_networks reference result found in the ledger or known result-directory inventory. Run Z3 and cvc5 only on these two files; retain results for later reuse.",
      "command": "scripts/slurm_native_lra_comparison.sbatch: Primo --quiet --max-theory-conflicts=10000; Z3 -in -smt2; cvc5 --incremental --lang=smt2. Six tasks, concurrency four, 12-minute outer task limit. Environment identifies prepared workspace, candidate revision, native root, prior parser artifact and fresh output directory.",
      "oracle": "Reuse prior production parser offsets after input-hash checks and recheck adjacent source status labels. Unknown labels provide no oracle. Independently completed reference sessions will be compared by query index. Nonzero exits and timeout override apparent answers; partial response counts are diagnostic only.",
      "model_validation": "Speed-only development diagnostic, not a full evaluation or default promotion. Prior first-four-query sample is separate evidence; no full-session model qualification claimed.",
      "final_summary": "benchmarks/native-incremental-qf-lra-comparison-summary.json",
      "final_result": "All six sessions reach their 600-second cap. BMC emitted answers (101 total queries): Primo 38, Z3 58, cvc5 69. Induction (202 total): Primo 53, Z3 73, cvc5 77. Zero completed sessions for every solver; mean whole-session PAR2 is 1200s for each. All emitted answers match known source statuses and overlap consistently with each other; no unknown responses, unexpected stdout, stderr errors or observed status mismatches. Timed-out responses are observations, not accepted completed solves or independently qualified reference answers. Previous 120s Primo progress was 18/26 queries; this is a budget comparison, not a solver change.",
      "retention_and_audit": "All six complete task artifact directories collected locally; input and binary hashes match run metadata and remain unchanged. Exact Primo/Z3/cvc5 executables preserved remotely in the result directory. tmp/native-comparison-final-slurm-audit.log: build and all array tasks terminal, queue empty. Diagnostic wrappers exit 0 for recorded timeouts, not as a claim of solving success. Task peak RSS ranges 306224-655724 KiB. All six tasks ran on the same compute host, recorded per row; one CPU each. Local Callgrind/statistics diagnostics ended normally, no local solver/profiler remains active.",
      "verification": "153 Python tests, make lint, make docs, batch syntax and git diff --check pass. New process-runner tests exercise an actual child printing sat then exiting 3, and a child printing sat then timing out. Code review: no blocking new harness issue found; source/oracle identity and process cleanup checked. No fresh clang-tidy/ASan/C++ test rerun: all 110 tracked C++ translation units are unchanged from the previous qualified task, whose 32-test ASan and static evidence is recorded separately. Logs tmp/native-comparison-{python,lint,docs}.log.",
      "local_profile": {
        "artifact": "results/native-lra-local-profile-24c3684",
        "input": "results/native-lra-c3ca55f/task-0/model-prefix/original.smt2; exact original first-four-query BMC prefix",
        "input_sha256": "63f9914d766c3445c78fdb914ce1cd38b96af8b543ef450a52704ca42f02b2c1",
        "binary_sha256": "aaf3f230ce4c2ee6e770cfaef0c73c03eb913f8d2d69acdf756a0bdc94fff511",
        "binary_version": "e079525-dirty Release, CaDiCaL 3.0.0-7b99c07; local development binary from prior parser-probe task, production src unchanged through 24c3684; preserved separately. Diagnostic only, not replacement SLURM evidence.",
        "perf_attempt": "timeout 90s perf record -F 99 -g -- SOLVER --quiet --stats --max-theory-conflicts=10000 < PREFIX; unavailable because perf_event_paranoid=4 (stderr retained). No permission changes attempted.",
        "command": "timeout 90s valgrind --tool=callgrind --callgrind-out-file=ARTIFACT/callgrind.out SOLVER --quiet --stats --max-theory-conflicts=10000 < PREFIX; callgrind_annotate --inclusive=yes --threshold=95 and --inclusive=no --threshold=80",
        "result": "Normal exit, four UNSAT responses; 6,398,039,074 executed instructions. Inclusive Frontend::process_command 45.97%, preprocessing strategy 21.73%, QF_LRA engine 16.91%; exclusive TermBuilder::dispatch 30.46%, CaDiCaL::Internal::next_factor 7.91%. Inclusive figures are not additive categories. This early prefix does not characterize later hard queries.",
        "plain_stats": "Separate timeout 60s SOLVER --quiet --stats --max-theory-conflicts=10000 < PREFIX exits 0 with four UNSAT responses. Four frontend builds. Sum of recorded phase counters: parse 76821us, frontend 296027us, preprocessing 200179us, solve 74400us. Local diagnostic counters, not headline elapsed-time comparison.",
        "scope_shape": "Original standalone command-line scan, checked against production parser query counts: BMC 101 checks and 100/100 transitions containing a positive pop; induction 202 checks and 201/201 transitions containing a positive pop. Maximum consecutive checks without pop is one in both files."
      },
      "limitations": "Two related sessions from one family cannot establish a corpus-wide speed ratio, and all sessions are incomplete. These selected files have only known source statuses; the larger archive also has unknown labels. No solver-state-reuse implementation is part of this task. No full-session model validation or new default/profile qualification."
    },
    {
      "id": "2026-09-10-native-incremental-qf-lra",
      "date": "2026-09-10",
      "kind": "native-incremental-parser-and-bounded-session-validation",
      "evidence_status": "slurm-full-command-parsing-qualified-prefix-model-sample-passed-full-execution-resource-incomplete",
      "baseline_commit": "e079525",
      "commit": "c3ca55f36c8f10b9aa70bda3b3a64fe767c6b2ad",
      "source": "User-provided sandbox/QF_LRA.tar.zst, containing incremental/QF_LRA/hybrid_networks: genuine NuSMV BMC/k-induction command sequences, not wrapped non-incremental formulas. Source header attribution: Alberto Griggio.",
      "archive_sha256": "41865c487e20fedaeb1945b2175df657aff6797dcda95eaf6df7403449c2b323",
      "manifest": "benchmarks/native-incremental-qf-lra.json",
      "inventory": {"files": 10, "bytes": 1594684331, "queries": 1515},
      "scope": "Complete production streaming-parser traversal of all files, separately bounded untouched stdin execution (120s/file, 10000 theory conflicts), and independent Dolmen model checks on the exact first four native queries per file (30s/query and 30s/Dolmen). No term translation/type-checking claim from parser-only results; no full-model qualification from prefix samples.",
      "oracle": "Adjacent original set-info statuses at byte offsets reported by the production parser: 476 SAT, 955 UNSAT, 84 unknown labels. Unknown labels provide no answer oracle; complete runs involving them remain explicitly unverified for those answers. All first-four-query model prefixes have known statuses. No fresh reference calls. Exit status and timeouts override apparent successful answers.",
      "staging": "Safe relative regular-file inventory inspected before extraction into fresh tmp/native-qf-lra.ipGdkx. Existing remote workspaces checked; no native copy found. scripts/slurm_stage_manifest_files.py --root tmp/native-qf-lra.ipGdkx --all-smt2 stages all ten files with compressed transport. Details in ignored tmp/native-qf-lra-stage.log; archive member inventory tmp/qf-lra-native-archive-inventory.txt. Per-file hashes pinned in manifest and checked again by each batch task.",
      "design": "docs/incremental-smt.md: Native QF_LRA archive checks",
      "verification": "Initial new CTest command used the wrong Python CMake variable; fixed to existing PRIMO_PYTHON_EXECUTABLE before successful make check (32 CTest/148 Python) and make asan-test (32/32). Final 151 Python tests, make lint, make docs and batch syntax validation pass. New C++ probe passes configured clang-tidy and include-cleaner without diagnostics. Existing solver/parser C++ sources are unchanged; previous full 109-file static baseline remains recorded separately. Code-review pass: no blocking test-tool issue. Logs tmp/native-lra-check.log, tmp/native-lra-asan.log, tmp/native-lra-tidy.log, tmp/native-lra-includes.log and tmp/native-lra-final-*.log.",
      "command": "sbatch scripts/slurm_native_lra_parser.sbatch with prepared PRIMO_WORKDIR, PRIMO_EXPECTED_REVISION, PRIMO_NATIVE_ROOT=WORKDIR/tmp/native-qf-lra.ipGdkx and fresh PRIMO_NATIVE_OUT; ten tasks, concurrency four, 8 GiB/task, 10-minute outer limit",
      "slurm": {
        "build_job": "142073",
        "array_job": "142075",
        "artifact": "results/native-lra-c3ca55f",
        "prepare_log": "tmp/native-lra-prepare.log",
        "preflight_log": "tmp/native-lra-preflight.log",
        "revision": "c3ca55f",
        "cadical": "cadical-3.0.0-7b99c07",
        "manifest_sha256": "5b7c7bdff861c2d5e496d3ac33ef489651984e19ff317e4de0e4e1316b4be1c0",
        "driver_sha256": "987157025c03cea7fc60d99220af15ac40d8e36d788caa7a6367ca29a250021d",
        "parser_probe_source_sha256": "ae9073c04b97d6991abe77a9c2a7ced244f73981537355e2ab580f1506a2e60f",
        "state": "all tasks terminal; each array task exits 1 because full execution timed out, not because parsing or prefix validation failed",
        "binary_sha256": {"solver": "18eaba4e301866061fdc6fd0424f335b0d169ea93240887dcd5a49cdb777fdae", "parser": "30001c4081a6c968d9b6a3d338e9001bdc188e14993b1924dff0e04aec9adc7b", "dolmen": "08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e"},
        "dolmen": "0.10; independent prefix model validation only",
        "final_summary": "benchmarks/native-incremental-qf-lra-summary.json",
        "final_counts": {"files": 10, "bytes": 1594684331, "commands_parsed": 325456, "queries_parsed": 1515, "parser_errors": 0, "unsupported_commands": 0, "full_sessions_completed": 0, "full_session_timeouts": 10, "observed_decisive_answers_before_timeout": 165, "observed_known_status_disagreements": 0, "prefix_queries_passed": 40, "prefix_direct_dolmen_models_passed": 10},
        "retention": "Complete task-level parser/session/prefix artifacts collected locally under results/native-lra-c3ca55f. Summary generation checks input identities, declared-status counts, prefix query/model results, and unchanged source/binary hashes across all ten tasks. Exact solver and parser executables retained remotely in the result directory; raw artifacts remain ignored, manifest and condensed summary are committed.",
        "final_audit": "tmp/native-lra-final-slurm-audit.log: all ten array tasks terminal FAILED 1:0 due to the strict full-session timeout gate; queue empty. Build job 142073 completed successfully. No reference solver runs or performance claim."
      },
      "limitations": "Complete command parsing is distinct from term/type validation and complete solving. All ten native full sessions exceeded the 120-second budget; their 165 decisive answers are partial observations, not accepted completed executions. Model validation covers only the first four original queries per file. No performance promotion or full-corpus model-validation claim."
    },
    {
      "id": "2026-09-10-incremental-parser-real-corpus",
      "date": "2026-09-10",
      "kind": "standalone-real-corpus-streaming-and-scoped-session-correctness",
      "evidence_status": "slurm-qualified-real-formula-streaming-and-scoping-sample",
      "baseline_commit": "938ad80",
      "commit": "e5a634d0c539b3ef7025e39dfa2dae64294fbafb",
      "solver_source_commit": "15f4929; unchanged src/CMake/contrib in the test-driver commit",
      "manifest": "benchmarks/incremental-parser-real-25.json",
      "selection": "25 files, five per logic, from the prior 20/logic preservation manifest. Require known SMT-LIB status agreeing with a successful recorded Primo result; include SAT/UNSAT and prioritize distinct families. Input and historical result hashes are pinned. Not native incremental files or full-corpus qualification.",
      "oracle": "SMT-LIB declared statuses plus elementary scoped transformations. Hash-matched historical Primo answers corroborate the base status; no fresh reference calls and no new independent UNSAT proof. Actual SAT session models require direct Dolmen acceptance against each active declaration/assertion context.",
      "scope": "Each source is tested as an ordinary file, a 127-byte-chunked stdin session, and a seven-query nested-scope/redeclaration session. Eight streamed queries per file. Query answers remain provisional until clean exit. No solver/parser implementation change or speed claim.",
      "local_smoke": {
        "host": "local development workspace",
        "command": "python3 scripts/check_incremental_corpus.py --manifest tmp/incremental-real-smoke-manifest.json --root sandbox/non-incremental/QF_LRA --logic QF_LRA --solver build/primo --expected-git 15f4929 --timeout 20 --dolmen-timeout 20 --out results/incremental-real-local-smoke",
        "selection": "first QF_LRA entry from the committed manifest: DTP-Scheduling/constraints-tempo-matrix6x6.pddl.smt2",
        "artifact": "results/incremental-real-local-smoke",
        "result": {"files_passed": 1, "stdin_sessions_passed": 2, "query_answers_checked": 8, "direct_dolmen_models_passed": 7, "wrong_answer": 0, "crash": 0, "timeout": 0, "unsupported": 0},
        "provenance": "Solver 15f4929; current uncommitted test-driver diff. Preliminary local smoke only. Exact binary identity and commands retained in run.json."
      },
      "verification": "make check passes 31 CTest and 147 Python tests (tmp/incremental-real-check.log), including recorded answer/count mismatches and post-answer crashes. Budget override follow-up: make lint, 147 Python tests, make docs and batch validation pass. Code-review pass: no blocking issue in the test-driver changes. No C++ changes: previous 109-file tidy/include-cleaner and 31-test ASan evidence remains applicable to identical solver sources; no redundant C++ scan launched. Committed-revision SLURM gate complete under the explicitly recorded per-logic budgets.",
      "command": "sbatch scripts/slurm_incremental_corpus.sbatch with prepared PRIMO_WORKDIR, PRIMO_EXPECTED_REVISION=e5a634d, PRIMO_CORPUS_OUT=WORKDIR/results/incremental-real-e5a634d and the five PRIMO_*_ROOT corpus paths; five tasks, concurrency two, 30-second solver/query and Dolmen budgets, 1000 theory-conflict limit, 127-byte writes",
      "slurm": {
        "build_job": "142040",
        "array_job": "142042",
        "artifact": "results/incremental-real-e5a634d",
        "prepare_log": "tmp/incremental-real-remote-prepare.log",
        "preflight_log": "tmp/incremental-real-preflight.log",
        "revision": "e5a634d",
        "cadical": "cadical-3.0.0-7b99c07",
        "binary_sha256": "54939a5d7d827f0eb6489533c5ee4ff0ca70bb7ad0a4f107c72b7b3e979238e8",
        "dolmen": "0.10; SHA256 08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e; --check-model=true --strict=false --size=1G",
        "manifest_sha256": "18aa6e5a8a413e77474dcf1ef340e79d7f25f915873caeb73860c985f4e9e249",
        "driver_sha256": "95e9936afdddf427ce6888ef10240817f4af1f01779ebcb49c9702fb299553b1",
        "validator_sha256": "a3c0449a163b65cf680fef4274f2012fe69d88e4df0de4a66da58f138e638d01",
        "input_preflight": "25/25 existing remote files hash-match the manifest and have supported command shapes; total 6447240 bytes, maximum 2035752 bytes. No corpus transfer or reference setup required.",
        "first_attempt_result": {"files_completed": 21, "files_resource_unknown": 1, "files_not_reached": 3, "streamed_queries_passed": 168, "direct_dolmen_models_passed": 117, "wrong_answer": 0, "crash": 0, "timeout": 0, "unexpected_parser_type_error": 0, "invalid_models": 0},
        "triage": "Four logic shards complete (20 files). QF_UF passes its first file then stops at the ordinary file baseline for NEQ/NEQ033_size4.smt2: stdout unknown, exit 0, stderr theory conflict limit reached. The recorded prior run used 1143 theory conflicts, exceeding this gate's 1000 limit. This is a test resource limit before stdin testing, not a parser/model failure. Add an explicit budget override and retry only QF_UF; retain all first-attempt artifacts.",
        "local_budget_probe": "timeout 20s build/primo --quiet --stats --max-theory-conflicts=10000 results/incremental-real-e5a634d/QF_UF/case-001/original.smt2; local 938ad80-dirty version stamp, solver sources identical to 15f4929; stdout unsat, exit 0, 1143 theory conflicts. Logs tmp/incremental-real-uf-budget-probe.stdout and .stderr. Diagnostic only, not replacement SLURM qualification.",
        "retry": {
          "commit": "25eb7df",
          "build_job": "142048",
          "job": "142051_0",
          "artifact": "results/incremental-real-25eb7df-retry/QF_UF",
          "binary_sha256": "905107b523400385f17dd80cf7b924be0b3b7c11e4683ee9d01062f1fd519e77",
          "prepare_log": "tmp/incremental-real-retry-prepare.log",
          "preflight_log": "tmp/incremental-real-retry-preflight.log",
          "command": "same batch wrapper with --array=0, PRIMO_EXPECTED_REVISION=25eb7df, PRIMO_THEORY_CONFLICT_LIMIT=10000 and a fresh PRIMO_CORPUS_OUT; all other solver/validator options unchanged",
          "result": {"files_passed": 5, "sessions_passed": 10, "streamed_queries_passed": 40, "direct_dolmen_models_passed": 11, "wrong_answer": 0, "crash": 0, "unknown": 0, "timeout": 0, "unexpected_parser_type_error": 0, "invalid_models": 0},
          "source_relation": "src, CMakeLists.txt and contrib identical between e5a634d and 25eb7df; only test budget configuration and documentation changed. Four successful original logic shards retained without rerunning. No performance claim across resource profiles."
        },
        "final_summary": "benchmarks/incremental-parser-real-summary.json; selected final rows consist of QF_UF retry only plus the four original successful logic shards, without double-counting the initial UF SAT row",
        "final_counts": {"files": 25, "base_sat": 16, "base_unsat": 9, "streamed_sessions": 50, "streamed_queries": 200, "sat_queries_and_direct_dolmen_models": 121, "unsat_queries": 79, "wrong_answer": 0, "crash": 0, "timeout": 0, "unknown": 0, "unsupported": 0, "unexpected_parser_type_error": 0, "invalid_models": 0, "missing": 0},
        "retention": "Full query-level artifacts collected locally. Each selected input hash and query count/order/expected answer checked when producing the committed per-logic/per-family summary. Exact candidate executables preserved remotely at results/incremental-real-e5a634d/primo and results/incremental-real-25eb7df-retry/primo before later workspace rebuilds.",
        "final_audit": "tmp/incremental-real-final-slurm-audit.log: all submitted jobs terminal; initial UF task fails on the explicitly triaged resource cap, all other tasks and retry complete with exit 0. Queue empty. No local solver/validator job remains.",
        "state": "all first-attempt and UF-retry jobs terminal; selected final coverage passes"
      }
    },
    {
      "id": "2026-09-10-attribute-validation-repair",
      "date": "2026-09-10",
      "baseline_commit": "ab01f2f",
      "commit": "15f49296a7d109354767fc01aaa562831cea9613",
      "kind": "parser-attribute-correctness-repair",
      "evidence_status": "slurm-qualified-attribute-repair",
      "scope": "Fix both P2 findings from 2026-09-10-online-parser: validate single metadata/option attribute values and nonempty annotation attribute sequences. Generic SMT-LIB 2.7 Sections 3.4/3.6 syntax only; predefined attribute semantics unchanged. No SAT/theory/preprocessing changes or performance claim.",
      "design": "docs/lexical-conformance.md: Attribute-validation repair checklist; allocation-free linear top-level attribute scan, no retained AST borrow, opaque list values.",
      "local_verification": "Final CMAKE_BUILD_PARALLEL_LEVEL=2 make check on 15f4929: 31 CTest and 143 Python tests pass (tmp/attribute-fix-committed-check.log). CMAKE_BUILD_PARALLEL_LEVEL=2 make asan-test on identical C++ sources: 31/31 pass (tmp/attribute-fix-asan.log). Initial new-test range-loop warning and generator executable-bit lint failure fixed before successful reruns.",
      "local_gate": {
        "commit": "ab01f2f plus the source diff committed with this entry",
        "host": "local development workspace",
        "generator": "scripts/generate_attribute_cases.py",
        "seed": 20260911,
        "count": 200,
        "timeout_seconds": 5,
        "commands": [
          "python3 scripts/generate_attribute_cases.py --count 200 --seed 20260911 > tmp/attribute-cases.json",
          "python3 scripts/check_smtlib_lexical_conformance.py --cases tmp/attribute-cases.json --only primo dolmen --out results/attribute-grammar-local",
          "python3 scripts/check_smtlib_lexical_conformance.py --cases benchmarks/lexical-conformance/online-review-cases.json --only primo --out results/attribute-regression-local"
        ],
        "reference_command": "dolmen --input=smt2.6 --strict=true INPUT; independent syntax validation, not an answer oracle",
        "result": {"primo_valid_answer_pass": 100, "primo_invalid_rejected": 100, "dolmen_valid_accepted": 100, "dolmen_invalid_rejected": 100, "original_regressions_rejected": 2, "wrong_answer": 0, "crash": 0, "unexpected_parser_type_error": 0, "timeout": 0, "unsupported": 0, "reference_disagreement": 0},
        "artifacts": ["results/attribute-grammar-local", "results/attribute-regression-local"],
        "artifact_status": "ignored raw logs with per-input outputs, result rows and binary identity; preliminary dirty-worktree evidence, not current-commit qualification"
      },
      "review": "Code review and solver-efficiency review: no new blocking issue. Validation is allocation-free and linear only in the top-level attribute sequence, with constant-time value-category queries and no scan of nested metadata. Focused configured clang-tidy and misc-include-cleaner pass on all five changed C++ translation units; one suppressed external warning, no owned diagnostics (tmp/attribute-tidy.log, tmp/attribute-include.log). make lint and make docs pass. Batch scripts validate. Whole-tree review uses the tracked-file baseline plus fresh full static scans; no warning-free baseline claim.",
      "remote_qualification": {
        "host": "prepared SLURM compute allocation; private connection details retained in ignored local preparation/preflight logs",
        "jobs": {"build": "141997", "correctness_gate": "141999", "static_array": "142000"},
        "prepare_log": "tmp/attribute-fix-remote-prepare.log",
        "preflight_logs": ["tmp/attribute-gate-preflight.log", "tmp/attribute-static-preflight.log"],
        "revision": "15f4929",
        "cadical": "cadical-3.0.0-7b99c07",
        "command": "sbatch scripts/slurm_online_parser_gate.sbatch with PRIMO_WORKDIR, PRIMO_EXPECTED_REVISION=15f4929, PRIMO_ONLINE_OUT=WORKDIR/results/attribute-fix-15f4929, PRIMO_RECORDED_REFERENCES=WORKDIR/results/lexical-policy-8e9dc59/policy/results.json",
        "artifact": "results/attribute-fix-15f4929",
        "binary_sha256": "6d45f563e81fb0015ffd67558dbeacfdfcfa141e08bcf0db941d658d37ae3004",
        "generator_sha256": "7487d891283ec35e45a9de75f988ba53de7fbe82a1bf0df3d6f1f5c1ede05480",
        "attribute_cases_sha256": "19aaa703c0a3a94b6ad95731f2d3491ca02cf9c775f022142ff4bc1c5ef47cf4",
        "harness_sha256": "4a48ed4af097c14cd22c6c9cefeeffc96ba13bcf00023b25e110c18b2298df8c",
        "dolmen": "0.10; SHA256 08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e",
        "fixed_policy_result": {"valid_answer_pass": 34, "invalid_rejected": 15, "extension_pass": 4, "diagnostic_rejected": 1, "diagnostic_accepted": 1},
        "result": {"generated_attribute_cases_passed": 200, "original_regressions_rejected": 2, "generated_sessions_passed": 1000, "generated_answers_checked": 2000, "matched_recorded_reference_results": 2000, "live_chunking_seeds_passed": 100, "live_query_answers_checked": 400, "malformed_eof_rejections_checked": 300, "malformed_attribute_rejections_checked": 300, "direct_dolmen_model_pass": 1, "wrong_answer": 0, "crash": 0, "timeout": 0, "unexpected_parser_type_error": 0, "unsupported": 0, "reference_disagreement": 0},
        "reference_reuse": "1000 alias sessions at seed 20260910; exactly two saved Z3/cvc5 rows per generated case with successful exits, answer-pass classification, matching input SHA256 and answer sequence. No reference solver reruns. Versions/hashes retained in benchmarks/lexical-conformance/repair-summary.json. New attribute cases at seed 20260911 independently syntax-checked with Dolmen, not used as an answer oracle. Five-second per-process timeout, max-theory-conflicts=1000.",
        "static_command": "sbatch scripts/slurm_lexical_static_resume.sbatch with PRIMO_STATIC_START=0, PRIMO_EXPECTED_REVISION=15f4929 and fresh PRIMO_STATIC_BASE=WORKDIR/results/attribute-fix-15f4929-static",
        "static_manifest": "109 tracked non-generated C++ translation units; sorted git ls-files '*.cpp'; SHA256 e531af8026a37a42574ab98c4484097c20ec26d87c80220906051b7d5d1d4309",
        "static_artifact": "results/attribute-fix-15f4929-static",
        "static_result": "Configured clang-tidy and include-cleaner both complete on exactly 109/109 tracked C++ files; sorted completion journals equal the source manifest. No errors or diagnostics in the five changed translation units. Configured tidy retains the previous tactic.cpp:69 shared_ptr control-block leak advisory and 25 suppressed external warnings. All 307 include-cleaner warning lines exactly match the prior e24dfcd scan, including 23 paired self-includes retained, 283 existing direct-provider reports and the lexer ranges::binary_search false positive with <algorithm> already included. No warning-free baseline claim.",
        "artifact_retention": "Complete gate and per-file static logs collected locally. Gate result rows retain each input and both validator outputs; input and binary hashes checked. Live completion journal is exactly seeds 0-99. Final binary hash check passes. Source/tests/scripts remain identical to 15f4929; adjacent evidence commit changes documentation only.",
        "final_audit": "tmp/attribute-final-slurm-audit.log: build, gate and all four static tasks COMPLETED with exit 0:0; queue empty. Local process audit finds no Primo, CTest, typefuzz, YinYang or clang-tidy survivor.",
        "state": "all qualification jobs completed successfully"
      },
      "limitations": "No complete SMT-LIB conformance or performance claim; predefined attribute semantics remain unchanged. Historical review findings in earlier entries describe their revisions, not the repaired candidate. Existing whole-tree static advisories remain explicitly recorded."
    },
    {
      "id": "2026-09-10-online-parser",
      "date": "2026-09-10",
      "baseline_commit": "f464fa1",
      "commit": "e24dfcde0a32f8cbf1bff1ce93d5f80ccd0c6333",
      "kind": "parser-review-and-direct-stdin-integration",
      "evidence_status": "slurm-qualified-streaming-integration-with-open-attribute-review-findings",
      "design": "docs/incremental-smt.md and docs/lexical-conformance.md",
      "scope": "Persistent stream-backed lexer, one-command explicit-stack parser with no eager lookahead, owned parsed-command session overload, CLI stdin/file wiring, removal of the redundant CommandReader. No SAT/theory/preprocessing algorithm change. Streaming parse wall time includes input waits; no speed claim.",
      "review_findings": "Removed eager lookahead past closing parenthesis and raw command framing/copy/reparse. Prevented self-borrow invalidation by deleting copy/move of the new persistent parser. Two separately OPEN pre-existing attribute-validation gaps reproduced on 8e9dc59 and current candidate: bare keyword metadata values and malformed annotation attributes accepted. Original fixtures benchmarks/lexical-conformance/online-review-cases.json; not approved policy extensions and not described as passing conformance.",
      "diagnostic_command": "python3 scripts/check_smtlib_lexical_conformance.py --cases benchmarks/lexical-conformance/online-review-cases.json --only primo --out results/online-parser-review-diagnostics",
      "diagnostic_summary": "2 invalid-accepted, exit 1 as required; no wrong answer claim for valid input. Previous binary version plus both SAT responses saved in tmp/online-parser-baseline-diagnostics.log; bounded tiny baseline probes only, no reference reruns.",
      "smoke_command": "python3 scripts/check_smtlib_lexical_conformance.py --policy --mutations 100 --seed 20260910 --only primo --out results/online-parser-local-smoke",
      "smoke_summary": {"generated_sessions": 100, "generated_answers": 200, "fixed_valid_pass": 34, "fixed_invalid_rejected": 15, "extension_pass": 4, "diagnostic_cases": 2, "wrong_answer": 0, "crash": 0, "timeout": 0, "unknown": 0, "unexpected_parser_type_error": 0, "exit_code": 0},
      "smoke_provenance": "Preliminary dirty-tree development binary; exact command/version/binary hash in results/online-parser-local-smoke/run.json. Five-second per invocation timeout; original alias/binder/scope generator, seed 20260910. Superseded for qualification by the clean-commit 1000-session remote gate below, using hash-matched recorded Z3/cvc5 answers rather than rerunning references.",
      "verification": {
        "check": "make check: 31 CTest plus 140 Python pass; tmp/online-parser-check-final.log",
        "asan": "make asan-test: 31/31 pass; tmp/online-parser-asan-v2.log",
        "development_test_correction": "First check/ASan attempt failed only the new absolute-offset assertion: expected 19 instead of correct 20. Corrected test and reran both gates; no sanitizer report.",
        "review": "Repository code-review and efficiency-review passes inspect ownership, stream liveness, category preservation, session overload error behavior and statistics. Local configured tidy on seven changed implementation/test translation units has no source diagnostic. Include-cleaner has only the existing ranges::binary_search/<algorithm> false positive. Completed whole-source results below; no new blocking streaming-code finding, with the two pre-existing attribute-validation findings explicitly open. Logs tmp/online-parser-{tidy,includes}.log and tmp/online-parser-efficiency.txt.",
        "lint_docs": "make lint and make docs pass, including after the final source/header changes; tmp/online-parser-lint.log, tmp/online-parser-docs-final.log. Both batch scripts pass slurm_validate_sbatch.py and bash -n."
      },
      "slurm": {
        "build_job": "141960 COMPLETED 0:0 in 2m08s",
        "gate_job": "141961 COMPLETED 0:0 in 29s",
        "static_job": "141962_0-3; all COMPLETED 0:0; elapsed 3m45s, 5m34s, 9m48s, 5m11s",
        "host": "requested CIIRC jump-host route, existing prepared Primo workspace",
        "prepare_command": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config SSH_CONFIG --remote REMOTE --remote-dir WORKDIR --reuse-dependencies --build-via-slurm --jobs 4 --cmake VERIFIED_CMAKE --cxx-header-manifest VERIFIED_HEADERS --require-tool contrib/local/bin/dolmen; exact deployment paths in ignored tmp/online-parser-remote-prepare.log",
        "preflight": "Same preparation helper --check-only --no-sync immediately before each sbatch; intended e24dfcd and CaDiCaL 3.0.0-7b99c07 confirmed. tmp/online-parser-{gate,static}-preflight.log. No source sync or rebuild outside the helper.",
        "gate_command": "PRIMO_WORKDIR=WORKDIR PRIMO_EXPECTED_REVISION=e24dfcd PRIMO_ONLINE_OUT=WORKDIR/results/online-parser-e24dfcd PRIMO_RECORDED_REFERENCES=WORKDIR/results/lexical-policy-8e9dc59/policy/results.json sbatch scripts/slurm_online_parser_gate.sbatch (environment forwarded using --export=ALL,...)",
        "static_command": "PRIMO_WORKDIR=WORKDIR PRIMO_EXPECTED_REVISION=e24dfcd PRIMO_STATIC_BASE=WORKDIR/results/online-parser-e24dfcd-static PRIMO_STATIC_START=0 sbatch scripts/slurm_lexical_static_resume.sbatch (environment forwarded using --export=ALL,...)",
        "static_manifest": "108 tracked non-generated C++ translation units, git ls-files '*.cpp' sorted under LC_ALL=C; copied to static/sources.txt before submission",
        "gate_artifact": "results/online-parser-e24dfcd",
        "static_artifact": "results/online-parser-e24dfcd-static",
        "candidate_sha256": "d8fe59739159351ded3b5ee7aa5c199747efd2aed899934a8dd667831820f17e",
        "cases_sha256": "9cb1209a885409fc357893bf7e5dab81d01ffec0e617beb36a6fb9a45da371cb",
        "harness_sha256": "4a48ed4af097c14cd22c6c9cefeeffc96ba13bcf00023b25e110c18b2298df8c",
        "gate_result": {"generated_sessions": 1000, "answers_per_solver": 2000, "matched_recorded_reference_results": 2000, "fixed_valid_pass": 34, "fixed_invalid_rejected": 15, "extension_pass": 4, "diagnostic_cases": 2, "live_chunking_seeds_passed": 100, "live_query_answers_checked": 400, "malformed_eof_rejections_checked": 300, "direct_dolmen_models_passed": 1, "wrong_answer": 0, "crash": 0, "timeout": 0, "unknown": 0, "unexpected_parser_type_error": 0, "reference_disagreement": 0},
        "reference_reuse": "Exactly two saved Z3/cvc5 rows per generated case, with successful exits, answer-pass classification, matching input SHA256 and answer sequence. No reference calls rerun. Reference binary versions/hashes retained in benchmarks/lexical-conformance/repair-summary.json and the 2026-09-10-lexical-policy-repair ledger entry. Matching generator seed 20260910; policy runner uses five-second per-process timeout.",
        "artifact_retention": "Complete gate output collected locally: policy/run.json and results.json; reference-replay.json; live-completed.txt (seeds 0-99); model/summary.csv (solver and Dolmen exit 0, direct pass); version.txt and binary-before.sha256. Final hash check succeeds. Raw artifacts remain ignored; exact condensed provenance is retained here.",
        "static_result": "Both configured clang-tidy and include-cleaner cover exactly 108/108 tracked C++ translation units. Sorted completion journals equal the manifest and git ls-files '*.cpp'. No errors. Configured tidy: one previously recorded tactic.cpp:69 shared_ptr control-block leak advisory in unchanged code; 25 suppressed external warnings. Include-cleaner: 307 advisories, including 23 paired self-includes retained and 283 direct-provider reports in unchanged translation units. The only advisory in the seven changed translation units is the existing ranges::binary_search false positive despite direct <algorithm> inclusion. No warning-free whole-tree claim.",
        "final_audit": "tmp/online-parser-final-slurm-audit.log; all submitted jobs terminal, none left active. Local process audit finds no solver, CTest or analyzer process. Complete static per-file logs collected locally. Source/tests/scripts/build files remain identical to e24dfcd; the adjacent handoff commit only updates documentation/evidence.",
        "state": "all qualification jobs completed"
      },
      "remote_gate_script": "scripts/slurm_online_parser_gate.sbatch: 1000 generated sessions, hash-matched saved references, 100 live-pipe chunking seeds, malformed EOF cases and a direct Dolmen model check. Whole-source scans use scripts/slurm_lexical_static_resume.sbatch separately.",
      "limitations": "No full-corpus performance claim or assertion of complete parser conformance. Open metadata/annotation validation findings are explicitly triaged separately from this stream integration. Raw artifacts are ignored local/remote results; this ledger and diagnostic fixtures retain reproducibility."
    },
    {
      "id": "2026-09-10-remove-unused-antlr",
      "date": "2026-09-10",
      "kind": "unused-build-dependency-removal",
      "baseline_commit": "8e9dc59",
      "commit": "6e4ff80380d44d47f8407d2fc744d82895534286",
      "evidence_status": "qualified-local-replay-against-recorded-slurm-references",
      "scope": "Remove unused ANTLR runtime discovery/linkage/public definition, generated parser/visitor sources, dormant grammar and installer. Update required dependencies, source-archive instructions, remote dependency checks and static-review source discovery. Cached third-party installations are retained; tracked removed files remain recoverable from Git. Owned parser/solver C++ sources are byte-identical to 8e9dc59.",
      "verification": "CMAKE_BUILD_PARALLEL_LEVEL=2 make check: 31 CTest and 140 Python tests pass (tmp/lexical-no-antlr-check.log). CMAKE_BUILD_PARALLEL_LEVEL=2 make asan-test: 31/31 pass (tmp/lexical-no-antlr-asan.log). make docs passes (tmp/lexical-no-antlr-docs-final.log). Batch-script validation passes. No ANTLR references in build/compile_commands.json or Primo/SMT-LIB link commands; libprimo_smtlib.a contains only ast, command_reader, commands, lexer, parser and printer objects. Final review caught a missing dollar in Makefile CPP_FORMAT_FILES introduced by the removal, which made clang-format read no filenames; corrected in the adjacent qualification commit. make -n lint confirms shell filename expansion, actual make lint passes (tmp/lexical-handoff-lint-fixed.log), and final make check again passes all 31 CTest/140 Python tests (tmp/lexical-handoff-check-final.log).",
      "replay_command": "python3 scripts/check_smtlib_lexical_conformance.py --policy --mutations 1000 --seed 20260910 --only primo --out results/lexical-policy-6e4ff80",
      "artifact": "results/lexical-policy-6e4ff80",
      "artifact_status": "Local-only raw artifacts; condensed current/reference identities and summary committed in benchmarks/lexical-conformance/repair-summary.json. Normative historical matrix/summary are unchanged.",
      "host": "local development workspace",
      "timeout_seconds": 5,
      "primo_sha256": "6472fb7592624c8246c2c57a96caf86efe46bdbdceff360972fc7d3abe0078d0",
      "replay_summary": {"generated_sessions": 1000, "generated_answers": 2000, "matched_recorded_reference_results": 2000, "valid_fixed_pass": 34, "invalid_fixed_rejected": 15, "extension_pass": 4, "diagnostic_cases": 2, "wrong_answer": 0, "crash": 0, "timeout": 0, "unknown": 0, "unexpected_parser_type_error": 0, "exit_code": 0},
      "reference_reuse": "Join each generated candidate row to the two Z3/cvc5 rows in results/lexical-policy-8e9dc59/policy/results.json by case ID. Require exactly two matches, identical input_sha256 and answers, reference returncode=0 and outcome=answer-pass, candidate outcome=answer-pass. All 1000 sessions satisfy this; tmp/lexical-reference-replay-verification.json. Same generator/script hash and seed 20260910; no new reference execution. Both runs retain actual byte-preserving input files.",
      "final_model_command": "python3 scripts/validate_model.py --solver build/primo --solver-arg=--quiet --solver-arg=--check-model --solver-arg=--max-theory-conflicts=1000 --expect-sat --require-dolmen-pass --out results/lexical-policy-6e4ff80-model benchmarks/smoke/quoted_names_model.smt2",
      "final_model_summary": "One SAT model passes Dolmen directly; no fallback, error or timeout.",
      "source_equivalence": "git diff --name-only 8e9dc59 6e4ff80 -- src tests/unit ':(exclude)src/smtlib/antlr' is empty. Whole-source static evidence at 8e9dc59 applies to identical owned C++ sources; only unused generated parser files were removed."
    },
    {
      "id": "2026-09-10-lexical-policy-repair",
      "date": "2026-09-10",
      "kind": "parser-symbol-identity-and-compatibility-repair",
      "baseline_commit": "b65ff98",
      "commit": "8e9dc59a16754be54981f8b1fced29f6bd2a723e",
      "evidence_status": "slurm-backed-parser-fuzz-model-and-static-qualified",
      "scope": "Typed lexical categories and canonical names across parser, binders, definitions, scopes and model serialization. User-selected comma/backslash/control-character and last-duplicate-let compatibility; reserved words and leading-zero numerals remain rejected. Explicit internal-symbol ownership prevents canonicalized user names being hidden from models or mistaken for internal interface/proxy symbols. No theory-combination algorithm or dedicated QF_UFLRA strategy change.",
      "design": "docs/lexical-conformance.md",
      "local_runs": [
        {
          "command": "python3 scripts/check_smtlib_lexical_conformance.py --only primo --out results/lexical-fix-initial",
          "artifact": "results/lexical-fix-initial",
          "status": "preliminary-dirty-tree-before-internal-ownership-metadata",
          "summary": "34 valid passes; 15 invalid rejected; four intentionally accepted extensions; two diagnostic cases. No crash/timeout/wrong answer. Normative audit exits 1 by design, before policy-aware classification was added."
        },
        {
          "command": "python3 scripts/check_smtlib_lexical_conformance.py --policy --mutations 100 --only primo z3 cvc5 dolmen --out results/lexical-fix-smoke",
          "artifact": "results/lexical-fix-smoke",
          "status": "preliminary-local-dirty-tree-after-internal-ownership-metadata",
          "generator": "Original deterministic alias/binder/scope mutation templates in the audit driver",
          "seed": 0,
          "count": 100,
          "timeout_seconds": 5,
          "summary": "All 100 generated sessions pass Primo, Z3 and cvc5 (200 answers per solver); Dolmen accepts all generated inputs. Fixed Primo corpus: 34 valid passes, 15 rejections, four extension passes and two diagnostic outcomes. Zero crashes/timeouts/wrong answers on generated cases; fixed reference nonconformance remains classified separately. Exact profile versions/commands/hashes in run.json.",
          "host": "local development workspace"
        },
        {
          "command": "python3 scripts/validate_model.py --solver build/primo --solver-arg=--quiet --solver-arg=--check-model --solver-arg=--max-theory-conflicts=1000 --require-dolmen-pass --expect-sat --out results/lexical-fix-model --timeout 10 --dolmen-timeout 15 benchmarks/smoke/quoted_names_model.smt2",
          "artifact": "results/lexical-fix-model",
          "status": "preliminary-local-dirty-tree",
          "summary": "One SAT model passes Dolmen directly, no fallback. Covers empty/numeric/reserved/internal-looking names and parameter-name collision with x0. No invalid model/timeout/error."
        }
      ],
      "verification": {
        "check": "make check: 31 CTest and 139 Python tests pass; tmp/lexical-fix-check-v3.log. Earlier check/final logs preceded internal-symbol metadata or the last generator-only changes.",
        "asan": "CMAKE_BUILD_PARALLEL_LEVEL=2 make asan-test: 31/31 pass; tmp/lexical-fix-asan-final.log. Earlier tmp/lexical-fix-asan.log also passes but precedes internal metadata. Subsequent C++ edits add/remove direct includes only.",
        "lint": "make lint; tmp/lexical-fix-lint.log",
        "docs": "make docs; tmp/lexical-fix-docs.log",
        "review": "All-project change-impact/efficiency index and C++ self-review: token/category ownership and iterative copies, journal replay, name identity, internal-symbol classification, model parameter freshness, extension versus normative oracle and binary provenance. No solver algorithm change or performance claim. Focused local scans and completed whole-source SLURM scans find no new blocking issue. Final build-file review corrected the missing Makefile shell-expansion dollar introduced during ANTLR removal; actual lint and make check pass again. Obsolete generated-parser exclusion removed from code-review skill and skill-creator quick_validate passes.",
        "hygiene": "Removed dead Frontend::has_head helper and unused theory-combination string include; added direct provider includes. Reserved vocabulary uses allocation-free binary search. Local include-cleaner misidentifies ranges::binary_search despite the correct <algorithm> include; do not add implementation-specific libstdc++ headers."
      },
      "remote_gate": "scripts/slurm_lexical_policy_gate.sbatch: 1000 generated sessions across five logics against Z3/cvc5, fixed policy corpus, direct Dolmen model regression, then whole-source static review. Clean archived 8e9dc59; solver/model phases passed before the static phase reached the allocation limit. No solver or reference reruns in the static continuation.",
      "slurm": {
        "host": "ssh -J janotmik@data.ciirc.cvut.cz janotmik@10.35.125.63; alias primo-model-slurm in tmp/primo-model-slurm-ssh-config",
        "workdir": "/home/janotmik/primo-model-fix",
        "setup_attempt": "141928 CANCELLED after inspection found preparation trying to install missing .venv-build/bin/cmake via pip. No solver comparison executed. Reused known working CMake/header paths for retry; tmp/lexical-fix-remote-prepare.log.",
        "build_job": "141929 COMPLETED; clean 8e9dc59 binary with CaDiCaL 3.0.0-7b99c07",
        "prepare_command": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --no-sync --reuse-dependencies --build-via-slurm --jobs 4 --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --cxx-header-manifest /home/janotmik/primo-cadical-profile/contrib/local/clang-tools-env/cxx-headers/include-paths.txt --require-tool contrib/local/bin/z3 --require-tool contrib/local/bin/cvc5 --require-tool contrib/local/bin/dolmen",
        "prepare_log": "tmp/lexical-fix-remote-prepare-v2.log; source archive already staged from clean 8e9dc59 by the first attempt",
        "gate_job": "141930 TIMEOUT after 15m18s; answer comparison and direct model validation completed successfully before the static phase timed out. Attempted scontrol TimeLimit extension was denied; no result inferred from incomplete static output.",
        "gate_command": "sbatch --parsable --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_EXPECTED_REVISION=8e9dc59,PRIMO_LEXICAL_OUT=/home/janotmik/primo-model-fix/results/lexical-policy-8e9dc59 scripts/slurm_lexical_policy_gate.sbatch",
        "preflight": "Repository preparation helper --check-only --no-sync before submission; tmp/lexical-fix-remote-preflight.log. Static continuation uses --local-dir /tmp/primo-lexical-static-preflight.Oglbp8 (clean detached 8e9dc59), with the same remote workspace and required tools; tmp/lexical-static-resume-preflight-final.log.",
        "artifact": "results/lexical-policy-8e9dc59",
        "artifact_status": "Raw inputs, comparison/model output and static logs retained remotely under workdir and collected locally. Condensed results and exact binary/input/harness hashes committed in benchmarks/lexical-conformance/repair-summary.json; historical normative matrix unchanged.",
        "comparison_command": "python3 scripts/check_smtlib_lexical_conformance.py --policy --mutations 1000 --seed 20260910 --only primo z3 cvc5 --primo build-slurm-rel/primo --source-commit 8e9dc59 --out results/lexical-policy-8e9dc59/policy",
        "comparison_summary": {"generated_sessions": 1000, "generated_answers_per_solver": 2000, "generated_profiles": 3, "seed": 20260910, "timeout_seconds": 5, "wrong_answer": 0, "crash": 0, "unexpected_parser_type_error": 0, "timeout": 0, "unknown": 0, "unsupported": 0, "reference_disagreement": 0, "exit_code": 0},
        "fixed_summary": "Primo: 34 valid passes, 15 required invalid rejections, four policy extensions pass, two diagnostics. Reference fixed-case nonconformance retained separately, not mistaken for generated-case failures. Exact commands, versions and hashes in policy/run.json.",
        "model_summary": "One tricky-name SAT model passes Dolmen directly; model/summary.json. No fallback or model error.",
        "static_continuation_job": "141931_0-3; all COMPLETED 0:0 on node-02. Elapsed per task: 8m49s, 4m47s, 3m24s, 7m09s.",
        "static_continuation_command": "sbatch --parsable --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_STATIC_BASE=/home/janotmik/primo-model-fix/results/lexical-policy-8e9dc59/static,PRIMO_STATIC_START=0,PRIMO_EXPECTED_REVISION=8e9dc59 tmp/lexical-static-resume.sbatch",
        "static_script": "scripts/slurm_lexical_static_resume.sbatch copied to remote tmp/lexical-static-resume.sbatch after local slurm_validate_sbatch.py validation. Four tasks request one CPU/4G/20min each (cluster allocates two CPUs per task); per-file diagnostics and completion journals survive allocation expiry. START=0 because the original multi-file invocation buffered final diagnostics: apparent progress through 71 files was not a durable clean verdict. Same 109 tracked non-generated translation units, including tests, as the original scan.",
        "static_result": "Both configured clang-tidy and advisory include-cleaner cover exactly 109/109 files: sorted completion journals equal the source manifest, which equals git ls-files '*.cpp' in the final ANTLR-free tree. No errors. Configured tidy: one existing tactic.cpp:69 shared_ptr control-block leak advisory, same source as 5bc811b and previously recorded there; owning Goal::data_ and Data shared_ptr fields inspected, no new blocking finding. 25 suppressed external warnings. Include-cleaner: 307 advisories, comprising 23 paired self-includes retained, 283 direct-provider reports in unchanged translation units, and the known ranges::binary_search false positive in lexer.cpp despite its direct <algorithm> include. No warning-free whole-tree claim. Among the 15 changed implementation/test translation units, only that known false positive remains.",
        "static_artifact": "results/lexical-policy-8e9dc59/static/resume-{0,1,2,3}; complete per-file logs and journals collected locally",
        "final_accounting": "tmp/lexical-final-slurm-audit.log; no qualification jobs remain active"
      },
      "limitations": "Compatibility policy is not full Z3 emulation or strict SMT-LIB conformance. Duplicate definition parameters remain rejected; UTF-8 validity is not separately checked. Printed extension-bearing names need a compatible external parser. Original audit matrix remains historical, not overwritten."
    },
    {
      "id": "2026-09-10-lexical-conformance-audit",
      "date": "2026-09-10",
      "kind": "standard-derived-parser-corner-case-reference-comparison",
      "evidence_status": "local-only-known-correctness-failures",
      "commit": "9f20f58073270ea02bd90475127e053d1723c3a5",
      "source_state": "Release binary rebuilt from unchanged solver sources at 9f20f58 before the audit. Only new diagnostic fixtures/harness/tests were present during the final run. Subsequent changes are documentation and evidence, not a parser fix.",
      "host": "local development workspace",
      "job": null,
      "command": "python3 scripts/check_smtlib_lexical_conformance.py --out results/lexical-conformance-9f20f58-final",
      "artifact": "results/lexical-conformance-9f20f58-final",
      "artifact_status": "Raw inputs, stdout/stderr and run/results/summary JSON are local-only; original fixtures, matrix and condensed provenance/summary are committed under benchmarks/lexical-conformance/.",
      "design": "docs/lexical-conformance.md",
      "provenance": "benchmarks/lexical-conformance/summary.json records exact profile commands, versions and executable hashes, plus fixture and harness hashes. Raw run.json retains full version output and worktree status. All executable hashes remained unchanged during the final audit.",
      "primo_binary_sha256": "ad9c3d4bf3eb26c6367cec1aacbcebab2173f6cd46ebeac2f23ceec8d4a27a5f",
      "cases_sha256": "9cb1209a885409fc357893bf7e5dab81d01ffec0e617beb36a6fb9a45da371cb",
      "script_sha256": "ace9131b325ac4fd5f91e7a0f55ba81a698fb81e3034147344200a69922dba84",
      "scope": "55 original deterministic fixtures: 34 valid, 19 invalid, 2 diagnostic-only; seven profiles and 385 file-input executions. Five-second timeout per invocation. No random generator or seed, performance measurement, model validation, interactive liveness test or SLURM workload.",
      "profiles": ["Primo 9f20f58", "Z3 5.0.0", "cvc5 1.3.4 f3b21c4", "cvc5 1.3.4 strict", "Yices 2.7.0", "OpenSMT 2.9.2", "Dolmen 0.10 strict parser/type checker only"],
      "summary": {
        "primo": {"answer_pass": 21, "valid_rejected": 11, "wrong_answer": 2, "invalid_rejected": 3, "invalid_accepted": 15, "inconclusive": 1, "diagnostic_accepted": 2},
        "reference_valid_answer_passes_out_of_34": {"z3": 32, "cvc5": 32, "cvc5-strict": 33, "yices": 32, "opensmt": 31},
        "dolmen": {"valid_accepted": 34, "invalid_rejected": 17, "invalid_accepted": 2, "diagnostic_accepted": 1, "diagnostic_rejected": 1},
        "crashes_all_profiles": 0,
        "timeouts_all_profiles": 0,
        "audit_exit_code": 1
      },
      "triage": "alias_let_shadow and alias_let_shadow_reverse return SAT in Primo and UNSAT in every reference solver. Raw quoted names break required identity equivalence. Other lexical failures include invalid simple/quoted characters and CR-only comments. All reference solvers reject the valid CR comment while Dolmen accepts it; all profiles accept the invalid duplicate-let case. Thus reference voting is not a conformance oracle. OpenSMT has one malformed response prefix, not a wrong Boolean answer. Primo's bare option keyword case is unsupported/inconclusive, not a proven syntax rejection. See committed matrix for every profile/outcome.",
      "oracle": "SMT-LIB 2.7 release 2026-03-27, Sections 3.1-3.3, 3.6.1-3.6.2 and scoped-command rules. Constructs tested are common to 2.6/2.7. Duplicate define-fun parameters and solver-reserved .17 are diagnostic-only; the let distinctness rule is not transferred to definition parameters without justification.",
      "preliminary_runs": [
        {"artifact": "results/lexical-conformance-9f20f58", "command": "python3 scripts/check_smtlib_lexical_conformance.py --out results/lexical-conformance-9f20f58", "status": "superseded-diagnostic", "reason": "Initial duplicate-parameter oracle was unjustified; moved to diagnostic-only. Unsupported nonzero responses needed inconclusive classification rather than process-error."},
        {"artifact": "results/lexical-conformance-9f20f58-v2", "command": "python3 scripts/check_smtlib_lexical_conformance.py --out results/lexical-conformance-9f20f58-v2", "status": "superseded-diagnostic", "reason": "Corrected classifications, then repeated after explicit subprocess check=False hygiene. Final run is the cited evidence."}
      ],
      "online_coverage": "Pinned cvc5 f9e5d3c312d9476763dc0afa85ac637da5907d99 and Dolmen 5c9161a691872cee9ed0c58fe820a8b0b9e485ab parser cases inspected for categories; jSMTLIB SMTTests documentation/inventory at 90ce411e7521b9f1f1338a3e2081ca3061547969 inspected, not executed. URLs and scope in docs/lexical-conformance.md. No external tests or grammars copied.",
      "fbk_parser_inspection": {
        "page": "https://es-static.fbk.eu/people/griggio/misc/smtlib2parser.html",
        "archive": "https://es-static.fbk.eu/people/griggio/misc/downloads/smtlib2parser-1.4.tar.gz",
        "sha256": "bade58ffe2d4c04e2e4a59f1aaa2ddcaf7353559e74f5b4d920a75bc5aaaca6e",
        "local_directory": "/tmp/primo-parser-reference.YJHisL",
        "scope": "Read README, Flex lexer, Bison single-command entry, scanner/FILE stream wrapper, parser callback interface and abstract-parser outer loop. No Yices backend code inspected or executed; archive not built; no live-pipe test; no implementation copied.",
        "findings": "Useful canonical quoted-symbol identity and retained-scanner single-command interface. Stale string escapes and permissive quoted characters/numerals/comments prevent using this 2010-2013 code as a current conformance oracle. Inspection only."
      },
      "verification": {
        "build": "make build; tmp/lexical-audit-build.log",
        "check": "make check: 31 CTest and 137 Python tests pass, including five new classifier tests; tmp/lexical-audit-check.log",
        "lint": "make lint and git diff --check; tmp/lexical-audit-lint.log",
        "docs": "make docs; tmp/lexical-audit-docs-final.log",
        "review": "Diagnostic harness, fixtures and documentation self-review: explicit oracle, original inputs, byte-preserving evidence, all query answers required, errors checked before answers, crashes/nonzero failures not silently accepted as syntax rejection. Solver correctness blockers intentionally recorded, not fixed or waived.",
        "not_rerun": "No C++ or solver behavior changes: ASan, clang-tidy/include-cleaner and solver fuzz gates not rerun for this diagnostic-only addition. Earlier baseline gates do not clear the newly exposed bugs. Fresh ASan and focused fuzzing remain required for the future parser fix."
      },
      "conclusion": "Audit complete; parser correctness remains blocked. Fix category-preserving symbol canonicalization across lookup, binders, definitions, scopes and printing, plus lexical strictness; then add round-trip/live-input regressions and fresh behavior-focused qualification before merge or performance promotion."
    },
    {
      "id": "2026-09-09-incremental-smt-sessions",
      "date": "2026-09-09",
      "baseline_commit": "9803d1a",
      "kind": "incremental-session-implementation-and-qualification",
      "evidence_status": "slurm-backed-rebuild-baseline-with-measured-overhead",
      "commit": "5bc811b",
      "source_state": "Clean committed source snapshot; qualification preflight uses detached /tmp/primo-incremental-qualified-5bc811b while adjacent benchmark/documentation artifacts are prepared on the feature branch.",
      "handoff_verification": "Final make check passes 31 CTest and 132 Python tests; make lint and strict make docs pass. Logs tmp/incremental-handoff-{check,lint,docs}.log. ASan 31/31 and whole-tree static scans cover identical implementation sources at 5bc811b; subsequent edits only docs, skill routing and qualification artifacts. Both new batch scripts pass slurm_validate_sbatch.py; model-validation skill passes skill-creator quick_validate.py using the docs venv. Final SLURM accounting and frozen binary hashes retained in tmp/incremental-final-slurm-audit.log; no qualification jobs remain active.",
      "design": "docs/incremental-smt.md",
      "scope": "Interactive and file-based scoped commands, declarations/definitions, fresh solver per query, lexical macro binding, per-query independent model validation. Dedicated QF_UFLRA algorithm unchanged.",
      "local_verification": {
        "check": "make check: 31 CTest and 132 Python tests; tmp/incremental-check.log",
        "asan": "make asan-test: 31 CTest passed; tmp/incremental-asan.log",
        "lint": "make lint; tmp/incremental-lint.log",
        "docs": "make docs; tmp/incremental-docs.log",
        "focused_tidy": "Seven implementation translation units; no owned-code diagnostics, four suppressed external diagnostics; tmp/incremental-tidy.log",
        "include_review": "Eight translation units, direct-provider advisories addressed; tmp/incremental-includes.log",
        "review": "Local whole-project code/efficiency/documentation review plus whole-tree static scan; journal is authoritative, all query generations isolated, no callback or theory algorithm change. Parameterized definition validation deliberately replays declaration prefixes; quadratic behavior with many definitions remains a documented limitation. No change-specific blocking static finding. Single-query framing cost measured and retained explicitly, not described as zero-overhead."
      },
      "development_runs": [
        {
          "command": "python3 scripts/validate_incremental.py --solver build/primo --solver-arg=--quiet --solver-arg=--max-theory-conflicts=1000 --count 5 --out tmp/incremental-model-smoke-1",
          "status": "rejected-harness-attempt",
          "triage": "Dolmen exit 125: response filename extension .response unsupported; fixed to .rsmt2. Not an invalid model or solver disagreement."
        },
        {
          "command": "python3 scripts/validate_incremental.py --solver build/primo --solver-arg=--quiet --solver-arg=--max-theory-conflicts=1000 --count 5 --out tmp/incremental-model-smoke-2",
          "status": "preliminary-local-only",
          "summary": "5 sessions, 75 reference-matched queries, 50 direct Dolmen SAT models; precedes lexical-binding fix."
        },
        {
          "command": "python3 scripts/validate_incremental.py --solver build/primo --solver-arg=--quiet --solver-arg=--max-theory-conflicts=1000 --count 5 --out tmp/incremental-model-smoke-final benchmarks/smoke/incremental/lexical_definitions.smt2 benchmarks/smoke/incremental/monotone_scopes.smt2",
          "status": "preliminary-local-only",
          "summary": "Five generated sessions (seeds 0-4, all five logics) plus two scoped regressions: all 80 answers match and 53 SAT models pass Dolmen. Pre-commit binary hash, commands, per-query contexts and results retained under artifact directory; not substituted for the clean-commit SLURM gate.",
          "solver_timeout_seconds": 10,
          "dolmen_timeout_seconds": 20,
          "reference": "contrib/local/bin/z3",
          "host": "local development workspace",
          "artifact": "tmp/incremental-model-smoke-final"
        }
      ],
      "correctness_finding": "Pre-fix default CLI returned SAT for global a, f(v)=a, not a, and let a=true in f(false). Lexical definition-scope base fixes this to UNSAT; nested caller/parameter restoration regression retained in benchmarks/smoke/incremental/lexical_definitions.smt2.",
      "remote_access": "Default SSH used a different local account home and failed host verification. Resolved by explicitly selecting existing trusted known_hosts and identity for both requested hops; strict host verification retained.",
      "slurm": {
        "host": "requested CIIRC jump-host route",
        "workdir": "/home/janotmik/primo-model-fix",
        "prepare_command": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir /workspace --ssh-config /tmp/primo-incremental-ssh.conf --remote primo-incremental-slurm --remote-dir /home/janotmik/primo-model-fix --reuse-dependencies --build-via-slurm --jobs 4 --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --cxx-header-manifest /home/janotmik/primo-cadical-profile/contrib/local/clang-tools-env/cxx-headers/include-paths.txt --require-tool contrib/local/bin/dolmen --require-tool contrib/local/bin/z3",
        "build_job": "141590",
        "build_log": "tmp/incremental-prepare.log",
        "fuzz_job": "141595_0-3",
        "fuzz_script": "scripts/slurm_incremental_gate.sbatch",
        "fuzz_command": "sbatch --nodelist=node-02 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_EXPECTED_REVISION=5bc811b,PRIMO_INCREMENTAL_OUT=/home/janotmik/primo-model-fix/results/incremental-5bc811b/fuzz scripts/slurm_incremental_gate.sbatch",
        "fuzz_configuration": "1000 sessions; four 250-session shards; seeds 202609100 through 202610099; default profile --quiet plus mandatory --check-model; 10s solver/reference and 20s Dolmen per query; fresh interactive model output validated against scoped snapshots; Z3 answer reference",
        "fuzz_artifact": "results/incremental-5bc811b/fuzz",
        "artifact_retention": "Preservation timing/model output, static logs, profiles and fuzz summary/run JSON collected locally. Full per-query generated fuzz artifacts remain under the same relative root on /home/janotmik/primo-model-fix; large results are not committed. Fixed manifests, paired aggregate/family summary, scripts and this ledger are committed.",
        "tools": "Z3 5.1.0, Dolmen 0.10, CaDiCaL 3.0.0-7b99c07; tool versions and candidate identity recorded by workspace preflight and run JSON.",
        "fuzz_result": {
          "job_state": "four tasks COMPLETED 0:0; 4m08s-4m09s each",
          "sessions_passed": 1000,
          "query_answers_matched": 15000,
          "sat_models_dolmen_passed": 10000,
          "unsat_answers_matched": 5000,
          "wrong_answer": 0,
          "crash": 0,
          "parser_type_error": 0,
          "timeout": 0,
          "unsupported": 0,
          "reference_disagreement": 0,
          "coverage": "200 sessions per logic; generated scope/declaration/definition and lexical-binding coverage, not a full-corpus evaluation"
        },
        "candidate_sha256": "b9c781c9ba17f60098f0c4c92ba9172643d5659bc3254e39d2b8aae13fc1a25e",
        "candidate_archive": "results/incremental-5bc811b/bin/primo",
        "baseline_sha256": "8458276454c6e59bbf0d90bb43d06d3f2d7a48a099efc7549e5a5645222c3de6",
        "static_job": "141599",
        "static_script": "scripts/slurm_typed_model_static_review.sbatch",
        "static_artifact": "results/incremental-5bc811b/static",
        "static_command": "sbatch --nodelist=node-02 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_EXPECTED_GIT=5bc811b,PRIMO_REVIEW_OUT_DIR=/home/janotmik/primo-model-fix/results/incremental-5bc811b/static scripts/slurm_typed_model_static_review.sbatch",
        "static_result": "COMPLETED 0:0 in 23m23s. Both scans cover exactly 109/109 tracked non-generated C++ files; no diagnostics in changed files. Configured tidy: one existing tactic.cpp:69 shared_ptr control-block leak advisory (unchanged source, owning shared_ptr members inspected), 25 suppressed external warnings. Include-cleaner: 321 advisories, including 23 paired self-includes retained and 298 existing missing-direct-provider reports. No claim of a warning-free whole-tree baseline.",
        "preflight": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir /tmp/primo-incremental-qualified-5bc811b --ssh-config /tmp/primo-incremental-ssh.conf --remote primo-incremental-slurm --remote-dir /home/janotmik/primo-model-fix --check-only --no-sync --require-tool contrib/local/bin/dolmen --require-tool contrib/local/bin/z3 immediately before each sbatch. Logs tmp/incremental-{gate,static,timing,replay,profile,profile-retry}-preflight.log. Strict host checking retained on both requested SSH hops."
      },
      "preservation_selection": {
        "manifests": "benchmarks/incremental-preservation-{qf_uf,qf_lia,qf_lra,qf_uflra,qf_uflia}.txt",
        "count": "20 per logic, 100 total",
        "policy": "From prior candidate round-0 answers.csv rows: successful decisive, no wrong flag, runtime in [0.1,3] seconds. Per-family SHA256(path) ordering, round-robin sorted families until 20. Source four-logic records: n-way-2413397/preservation-v2; UFLIA: n-way-linear-b883d6f/full659. Selection precedes new timing measurements.",
        "baseline": "Archived b883d6f binary at results/n-way-linear-b883d6f/bin/primo. git diff --exit-code b883d6f 9803d1a -- src CMakeLists.txt contrib confirms identical branch-point implementation/build sources; 9803d1a only changed documentation.",
        "script": "scripts/slurm_incremental_preservation.sbatch",
        "limits": "two alternating baseline/candidate rounds; 10s per input; model replay separate after all timing tasks; 30s model and 30s Dolmen; candidate --quiet --stats",
        "reference_policy": "No reference timing reruns; fresh reference calls restricted to incremental correctness queries. Preservation compares the branch-point-equivalent archived Primo binary and declared statuses."
      },
      "preservation_result": {
        "timing_job": "141604_0-4; all COMPLETED 0:0 on node-03, sequential array %1, separate node from static review",
        "model_job": "141617_0-4; all COMPLETED 0:0 on node-03, afterok:141604, no model replay concurrent with timing",
        "artifact": "results/incremental-5bc811b/preservation",
        "committed_summary": "benchmarks/incremental-preservation-summary.json",
        "summary_command": "python3 scripts/summarize_component_pairs.py results/incremental-5bc811b/preservation/LOGIC --expected-count 20; run for each of QF_UF,QF_LIA,QF_LRA,QF_UFLRA,QF_UFLIA, retain paired-summary.json including families",
        "node_provenance": "node-0.txt reconstructed from sacct -j 141604 --format=JobID,State,ExitCode,NodeList -n, all node-03. The committed batch script now records hostname directly for future runs.",
        "submission": "scripts/slurm_incremental_preservation.sbatch copied to remote tmp/slurm_incremental_preservation.sbatch after local validator passed. sbatch --array=0-4%1 --nodelist=node-03 for PRIMO_PHASE=benchmark; separate sbatch --array=0-4%5 --dependency=afterok:141604 --nodelist=node-03 for PRIMO_PHASE=replay. All script environment paths recorded below; exported with --export=ALL,...",
        "environment": {
          "PRIMO_WORKDIR": "/home/janotmik/primo-model-fix",
          "PRIMO_PRESERVATION_OUT": "/home/janotmik/primo-model-fix/results/incremental-5bc811b/preservation",
          "PRIMO_CANDIDATE": "/home/janotmik/primo-model-fix/results/incremental-5bc811b/bin/primo",
          "PRIMO_CANDIDATE_REVISION": "5bc811b",
          "PRIMO_BASELINE": "/home/janotmik/primo-model-fix/results/n-way-linear-b883d6f/bin/primo",
          "PRIMO_BASELINE_REVISION": "b883d6f",
          "PRIMO_MANIFEST_ROOT": "/home/janotmik/primo-model-fix/tmp/incremental-preservation-manifests",
          "PRIMO_UF_ROOT": "/home/janotmik/primo-cadical-profile/tmp/QF_UF",
          "PRIMO_LIA_ROOT": "/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_LIA",
          "PRIMO_LRA_ROOT": "/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_LRA",
          "PRIMO_UFLRA_ROOT": "/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_UFLRA",
          "PRIMO_UFLIA_ROOT": "/home/janotmik/primo-model-fix/tmp/QF_UFLIA"
        },
        "executions_per_binary": 200,
        "solved_per_binary": 200,
        "timeout": 0,
        "error": 0,
        "unsupported": 0,
        "wrong_answer": 0,
        "disagreement": 0,
        "lost_solved": 0,
        "baseline_par2_sum_seconds": 116.696055,
        "candidate_par2_sum_seconds": 117.565734,
        "runtime_and_par2_ratio": 1.007452514,
        "logic_ratios": {"QF_UF": 1.012990, "QF_LIA": 1.005053, "QF_LRA": 1.007624, "QF_UFLRA": 1.013555, "QF_UFLIA": 0.996693},
        "counter_check": "All shared non-time.* counters match for every paired execution. New session.* counters excluded from shared-key comparison; timing counters compared separately, not used as end-to-end performance evidence.",
        "dolmen_expected": 122,
        "dolmen_pass": 122,
        "dolmen_by_logic": {"QF_UF": 8, "QF_LIA": 28, "QF_LRA": 28, "QF_UFLRA": 24, "QF_UFLIA": 34},
        "coverage": "All ten model-validation/coverage.json files complete with expected_sat == dolmen_pass, no missing rows, inputs_and_binary_unchanged true.",
        "decision": "Retain as the functional rebuild baseline with explicit measured overhead, not as a performance win or strict preservation/default-promotion claim. The existing 1.01 comparator reports needs-triage for UF and UFLRA; raw verdicts are preserved. Profiling attributes the largest added cost on the selected Goel input to command framing, not search. Goel family +5.7%, cpachecker-induction +1.5%, selected Certora -1.0%; every family retains solved counts. This fixed 100-input sample does not establish full-corpus or definition-heavy performance."
      },
      "profiling": {
        "input": "2018-Goel-hwbench/QF_UF_frogs.1.prop1_ab_br_max.smt2",
        "input_sha256": "bfb3748e4f7f3a55771036d2307e05e70bad8ce5f6bfb0c0c031123c098c1101",
        "local_attempt": "perf record -o tmp/incremental-reader-perf.data -F997 --call-graph dwarf -- ./build/primo --quiet --max-theory-conflicts=10000 tmp/QF_UF/2018-Goel-hwbench/QF_UF_frogs.1.prop1_ab_br_max.smt2; exit255, perf_event_paranoid=4 prohibits sampling. Log tmp/incremental-reader-perf.log; host settings unchanged.",
        "stalled_attempt": "141625 cancelled after process inspection found valgrind waiting on debuginfod-find with zero solver CPU. Artifacts results/incremental-5bc811b/profile contain no usable solver profile. No timing evidence derived from this attempt.",
        "job": "141635; COMPLETED 0:0, node-03, 1m19s",
        "script": "scripts/slurm_incremental_profile.sbatch; one CPU, 4G, 10min; DEBUGINFOD_URLS empty disables compute-node symbol downloads",
        "artifact": "results/incremental-5bc811b/profile-no-debuginfod",
        "command": "valgrind --tool=callgrind --callgrind-out-file=OUT/ARM.callgrind SOLVER --quiet --max-theory-conflicts=10000 /home/janotmik/primo-cadical-profile/tmp/QF_UF/2018-Goel-hwbench/QF_UF_frogs.1.prop1_ab_br_max.smt2; baseline and candidate archived binaries listed above; callgrind_annotate --inclusive=yes --threshold=99 OUT/ARM.callgrind, plus local --inclusive=no summary",
        "baseline_instructions": 3472976129,
        "candidate_instructions": 3781902957,
        "candidate_command_reader_inclusive": 180675423,
        "candidate_command_reader_exclusive": 154452357,
        "baseline_euf_engine_inclusive": 1271667240,
        "candidate_euf_engine_inclusive": 1270105266,
        "native_pair_deltas_seconds": [0.065479, 0.058458],
        "analysis": "Added boundary scan is 4.8% of candidate instructions and the largest identifiable added cost; both binaries still spend most instructions in existing parse/translate/solve/allocation work. Session command lifecycle and changed allocation order contribute as well. Instruction fractions are not wall-time attribution. Boundary scanning followed by ordinary parsing is deliberately retained for this baseline; unifying streaming lexing is future parser work with its own pipe/ASan/fuzz obligations. No SAT/theory performance code added in response to a protocol cost."
      },
      "remaining_limitations": ["No persistent solver or tactic-state reuse", "No full incremental-corpus or default-promotion campaign", "Definition-prefix replay can be quadratic; definition-heavy performance not established", "Measured single-query framing overhead remains; not a zero-regression result"],
      "pending": []
    },
    {
      "id": "2026-09-09-linear-component-selection",
      "final_verification": "Fresh handoff make check passes29CTest+128Python;make lint and make docs pass;ASan29/29 passed on same changedC++source. Logs tmp/n-way-linear-handoff-{check,lint,docs}.log and tmp/n-way-linear-asan.log. All source hashes in210staticreviewrows match localtrackedfiles. Fresh paired/reference/model audits pass forquick25/full659. Final squeue empty;frozenbaseline/candidate andquickmanifest hashes unchanged. No further solver source changes afterb883d6f.",
      "date": "2026-09-09",
      "commit": "b883d6f",
      "baseline_commit": "2413397",
      "kind": "overhead-removal-qualification",
      "evidence_status": "accepted-slurm-backed",
      "scope": "Remove ordinary coordinator ordered candidate sets while preserving current care-first lexicographic minimum disagreement. No legacy-order restoration, new theory algorithm or option change. QF_UFLRA paths and model_based_combination.* unchanged.",
      "design": "docs/n-way-combination-migration.md: Linear ordinary-decision selection",
      "local_verification": {
        "check": "29 CTest +128 Python passed; tmp/n-way-linear-final-check.log",
        "asan": "29/29 passed; tmp/n-way-linear-asan.log",
        "lint": "passed; tmp/n-way-linear-lint.log",
        "docs": "passed; tmp/n-way-linear-docs.log",
        "focused_tidy": "three changed C++ files passed; only two suppressed non-user warnings; tmp/n-way-linear-focused-tidy.log",
        "tests": "2325 exact old-policy comparisons over all three-term partitions across2/3/4 components and3 care patterns;50,000 agreeing/reversed care visits;care precedence;duplicate normalization;late invalid entry;spanning fallback;existing432 coordinator+432real-SAT oracles retained.",
        "review": "Focused manual soundness/lifetime/order/hygiene review; no new clauses, no borrow across mutation, no inter-epoch caches, component participant filtering preserved. Whole-tree automated static baseline scan pending. Fresh whole-tree static/includes scan completed;no blocking change-specific findings. Existing shared_ptr analyzer warning and transitive-provider advisories retained explicitly."
      },
      "build": {
        "job": "140602",
        "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir /workspace --ssh-config tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --reuse-dependencies --build-via-slurm --jobs 4 --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --cxx-header-manifest /home/janotmik/primo-cadical-profile/contrib/local/clang-tools-env/cxx-headers/include-paths.txt --require-tool contrib/local/bin/dolmen --require-tool contrib/local/bin/z3",
        "log": "tmp/n-way-linear-prepare.log",
        "dependencies": "Reuse installed dependencies; no reference rebuild or broad reference-solver rerun."
      },
      "preflight": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir /workspace --ssh-config tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --check-only --no-sync --require-tool contrib/local/bin/dolmen --require-tool contrib/local/bin/z3",
      "artifact_root": "results/n-way-linear-b883d6f",
      "reference_policy": "Reference executions limited to fresh correctness gates and their seed prechecks; corpus timing reuses recorded hash-matched Z3/cvc5 results without launching either.",
      "profile_basis": "2026-09-09-certora-migration-diagnosis;job140601;existing241 profile found30.6m ordered insert-position searches and15.3m tree lookups. New run qualification must not substitute historical241 models.",
      "static_batch_script": "#!/usr/bin/env bash\n# Bounded whole-tree tidy and advisory include review on the prepared snapshot.\n#SBATCH --job-name=primo-linear-static\n#SBATCH --nodes=1\n#SBATCH --ntasks=1\n#SBATCH --cpus-per-task=4\n#SBATCH --mem=12G\n#SBATCH --time=00:25:00\n#SBATCH --output=slurm_logs/%x-%j.out\n#SBATCH --error=slurm_logs/%x-%j.err\nset -euo pipefail\ncd \"${PRIMO_WORKDIR:?}\"\nexport PATH=\"$PWD/contrib/local/clang-tools-env/bin:$PATH\"\n./build-slurm-rel/primo --version | grep -Fx \"git: ${PRIMO_EXPECTED_GIT:?}\"\npython3 - <<'PY'\nimport concurrent.futures\nimport hashlib\nimport json\nimport os\nimport subprocess\nimport time\nfrom pathlib import Path\n\nout = Path(os.environ[\"PRIMO_REVIEW_OUT_DIR\"])\nout.mkdir(parents=True, exist_ok=False)\nsources = sorted(path for folder in (Path(\"src\"), Path(\"tests\"))\n                 for path in folder.rglob(\"*.cpp\") if \"antlr\" not in path.parts)\nheaders = Path(\"contrib/local/clang-tools-env/cxx-headers/include-paths.txt\").read_text().splitlines()\nassert sources and headers and all(Path(path).is_dir() for path in headers)\narguments = [argument for path in headers for argument in (\"--extra-arg=-isystem\", \"--extra-arg=\" + path)]\ndef scan(item):\n    index, source, mode = item\n    command = [\"clang-tidy\", \"-p\", \"build-slurm-rel\", *arguments]\n    if mode == \"includes\":\n        command += [\"-checks=-*,clang-diagnostic-*,misc-include-cleaner\"]\n    command.append(str(source))\n    start = time.monotonic()\n    log = f\"{mode}-{index:03d}.log\"\n    with (out / log).open(\"w\") as stream:\n        result = subprocess.run(command, stdout=stream, stderr=subprocess.STDOUT, timeout=600)\n    return {\"file\": str(source), \"mode\": mode,\n            \"source_sha256\": hashlib.sha256(source.read_bytes()).hexdigest(),\n            \"exit\": result.returncode, \"seconds\": time.monotonic()-start, \"log\": log}\nrows = []\nwith concurrent.futures.ThreadPoolExecutor(max_workers=4) as pool:\n    futures = [pool.submit(scan, (index, source, mode)) for mode in (\"tidy\", \"includes\")\n               for index, source in enumerate(sources)]\n    for future in concurrent.futures.as_completed(futures):\n        row = future.result()\n        rows.append(row)\n        with (out / \"progress.jsonl\").open(\"a\") as stream:\n            stream.write(json.dumps(row) + \"\\n\")\n        print(row[\"mode\"], row[\"file\"], row[\"exit\"], flush=True)\n(out / \"summary.json\").write_text(json.dumps(rows, indent=2))\nassert len(rows) == 2 * len(sources) and all(row[\"exit\"] == 0 for row in rows)\nPY\n",
      "binary_sha256": "8458276454c6e59bbf0d90bb43d06d3f2d7a48a099efc7549e5a5645222c3de6",
      "baseline_sha256": "962fd9a208a3b3537b8100df34286b930f038192dfa9fb4be7b00ada98ef72c7",
      "fuzz": {
        "job": "140603",
        "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir /workspace --ssh-config tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --check-only --no-sync --require-tool contrib/local/bin/dolmen --require-tool contrib/local/bin/z3 > tmp/n-way-linear-fuzz-preflight.log 2>&1 && ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --array=0-3,32-35%8 --nodes=1 --ntasks=1 --nodelist=node-02 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_EXPECTED_GIT=b883d6f,PRIMO_CAMPAIGN_SEED=202609090,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-linear-b883d6f/fuzz scripts/slurm_component_migration_fuzz.sbatch'",
        "count": 4000,
        "shape": "mixed",
        "depth": 3,
        "seed_base": 202609090,
        "profiles": "profile0/default auto:3000;profile8/auto online disabled:1000",
        "solver_timeout_seconds": 5,
        "validator_timeout_seconds": 5,
        "reference": "contrib/local/bin/z3",
        "models": "Dolmen direct --strict=false; same profile forwarded.",
        "artifact": "results/n-way-linear-b883d6f/fuzz",
        "summary": {
          "answer_pass": 4000,
          "dolmen_pass": 2032,
          "not_sat": 1968,
          "wrong_answer": 0,
          "crash": 0,
          "parser_type_error": 0,
          "timeout": 0,
          "unsupported": 0,
          "reference_disagreement": 0,
          "profiles": {
            "default": {
              "answer_pass": 3000,
              "dolmen_pass": 1529,
              "not_sat": 1471
            },
            "online_off": {
              "answer_pass": 1000,
              "dolmen_pass": 503,
              "not_sat": 497
            }
          }
        },
        "state": "COMPLETED0:0 all8tasks"
      },
      "mutation": {
        "job": "140612",
        "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir /workspace --ssh-config tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --check-only --no-sync --require-tool contrib/local/bin/dolmen --require-tool contrib/local/bin/z3 > tmp/n-way-linear-mutation-preflight.log 2>&1 && ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --array=0,8%2 --nodes=1 --ntasks=1 --nodelist=node-02 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_EXPECTED_GIT=b883d6f,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-linear-b883d6f/mutation,PRIMO_CORPUS_ROOT=/home/janotmik/primo-model-fix/tmp/QF_UFLIA,PRIMO_MUTATION_SECONDS=300 scripts/slurm_component_migration_mutation.sbatch'",
        "profiles": [
          0,
          8
        ],
        "mutator": "seeded_opfuzz.py,model_linear_ops.txt",
        "seed": 202609503,
        "seconds_per_profile": 300,
        "iterations": 100,
        "timeout": 5,
        "seed_timeout": 60,
        "seed_selection": "build_fuzz_seed_corpus.py QF_UFLIA --per-family2 --max-bytes200000;actualmaxlimit2MB withoversizefamilytriage",
        "reference": "z3 model_validate=true plus status-aware check_solver_seed_corpus.py",
        "models": "Original seeds and all retained mutants, independent direct Dolmen, internal --check-model; profile forwarded.",
        "artifact": "results/n-way-linear-b883d6f/mutation",
        "state": "FAILED1:0 bothtasks due resource rows; default12:16,online-off12:21",
        "summary": {
          "retained_mutants": 1435,
          "answer_pass": 1398,
          "answer_resource_incomplete": 37,
          "dolmen_pass": 951,
          "not_sat": 447,
          "model_solver_timeout": 37,
          "wrong_answer": 0,
          "crash": 0,
          "parser_type_error": 0,
          "invalid_model": 0,
          "reference_disagreement": 0,
          "saved_bug_files": 0,
          "profiles": {
            "default": {
              "retained": 717,
              "answer_pass": 700,
              "timeout": 17,
              "dolmen_pass": 476,
              "not_sat": 224
            },
            "online_off": {
              "retained": 718,
              "answer_pass": 698,
              "timeout": 20,
              "dolmen_pass": 475,
              "not_sat": 223
            }
          },
          "original_seeds": {
            "executions": 16,
            "answer_pass": 14,
            "timeout": 2,
            "dolmen_pass": 4,
            "not_sat": 10,
            "model_timeout": 2
          }
        },
        "resource_triage": "classify_mutation_resources.py accepts only resource-incomplete outcomes for all8answer/model CSVs; neitherbugdirectorycontainsfiles. Defaultmutant resource17:ours124timeout everycase,16ref124timeout+1refSAT0. Onlineoff20:ours124timeout everycase,17ref124timeout+2refSAT0+1refUNSAT0. Bothoriginalseedtimeouts are Certora72658_63104dadde9c6026353f_70, referenceSAT;60s originalanswer/model budgets. Keeprawfailedgate statuses, do notcallallmutantspassed. Fresh4000generatedmerge/campaign gate clean;these supplementalresource-only rows arenotcorrectnesscounterexamples."
      },
      "static": {
        "job": "140611",
        "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir /workspace --ssh-config tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --check-only --no-sync --require-tool contrib/local/bin/dolmen --require-tool contrib/local/bin/z3 > tmp/n-way-linear-static-preflight.log 2>&1 && ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --nodelist=node-02 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_EXPECTED_GIT=b883d6f,PRIMO_REVIEW_OUT_DIR=/home/janotmik/primo-model-fix/results/n-way-linear-b883d6f/static tmp/n-way-linear-static.sbatch'",
        "artifact": "results/n-way-linear-b883d6f/static",
        "scope": "all tracked non-generated C++ src/tests; four workers; both fullconfiguredtidy and advisoryinclude-cleaner",
        "state": "COMPLETED0:0",
        "summary": "105/105trackednon-generatedC++files ineachof2modes,210zeroexits;allsourcehashesmatchlocalb883d6f. Fulltidy onlyexistingtactic.cpp:69 shared_ptr control-block leak warning (unchangedsource;RAIIownershipreview). Includeadvisory:23unused-headerreportsallpairedself-includes retained, existingmissingdirect-providerreports;noactualnewunusedinclude. Not claimed warning-free."
      },
      "quick": {
        "job": "140614",
        "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir /workspace --ssh-config tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --check-only --no-sync --require-tool contrib/local/bin/dolmen --require-tool contrib/local/bin/z3 > tmp/n-way-linear-quick-preflight.log 2>&1 && ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --array=0-4%5 --nodes=1 --ntasks=1 --hint=nomultithread --nodelist=node-04 --time=00:15:00 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_EXPECTED_GIT=b883d6f,PRIMO_BASELINE_GIT=2413397,PRIMO_BASELINE_SOLVER=/home/janotmik/primo-model-fix/results/n-way-2413397/bin/primo,PRIMO_CANDIDATE_SOLVER=/home/janotmik/primo-model-fix/results/n-way-linear-b883d6f/bin/primo,PRIMO_COMPARE_SHARDS=5,PRIMO_COMPARE_TIMEOUT=60,PRIMO_COMPARE_ROOT=/home/janotmik/primo-model-fix/tmp/QF_UFLIA,PRIMO_COMPARE_MANIFEST=/home/janotmik/primo-model-fix/tmp/n-way-linear-quick25.txt,PRIMO_COMPARE_OUT_ROOT=/home/janotmik/primo-model-fix/results/n-way-linear-b883d6f/quick25 scripts/slurm_component_migration_compare.sbatch'",
        "artifact": "results/n-way-linear-b883d6f/quick25",
        "manifest": "tmp/n-way-linear-quick25.txt",
        "scope": "Previous20 family-balanced cases+4watchlist+Certora47;25unique,5shards,2roundsreversedpairedordering,node04,60s.",
        "model_jobs": [
          {
            "round": 0,
            "job": "140685",
            "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir /workspace --ssh-config tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --check-only --no-sync --require-tool contrib/local/bin/dolmen --require-tool contrib/local/bin/z3 > tmp/n-way-linear-quick-model-0-preflight.log 2>&1 && ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-linear-quick-model-0 --array=0-4%5 --nodes=1 --ntasks=1 --nodelist=node-02 --time=00:10:00 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-linear-b883d6f/quick25/round-0/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'"
          },
          {
            "round": 1,
            "job": "140684",
            "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir /workspace --ssh-config tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --check-only --no-sync --require-tool contrib/local/bin/dolmen --require-tool contrib/local/bin/z3 > tmp/n-way-linear-quick-model-1-preflight.log 2>&1 && ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-linear-quick-model-1 --array=0-4%5 --nodes=1 --ntasks=1 --nodelist=node-02 --time=00:10:00 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-linear-b883d6f/quick25/round-1/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'"
          }
        ],
        "summary": {
          "aggregate": {
            "baseline": {
              "error": 0,
              "par2": 337.967028,
              "rows": 50,
              "sat": 26,
              "solved": 48,
              "timeout": 2,
              "unknown": 0,
              "unsat": 22,
              "unsupported": 0,
              "wrong_answer": 0
            },
            "baseline_common_seconds": 97.967028,
            "candidate": {
              "error": 0,
              "par2": 318.458894,
              "rows": 50,
              "sat": 26,
              "solved": 48,
              "timeout": 2,
              "unknown": 0,
              "unsat": 22,
              "unsupported": 0,
              "wrong_answer": 0
            },
            "candidate_common_seconds": 78.458894,
            "common_runtime_ratio": 0.8008704112163125,
            "common_solved": 48,
            "disagreements": [],
            "gained": [],
            "lost": [],
            "par2_ratio": 0.9422779964204081
          },
          "expected_unique_inputs": 25,
          "families": {
            "20230314-Jaroslav-Bendik-Certora": {
              "baseline": {
                "error": 0,
                "par2": 319.667718,
                "rows": 8,
                "sat": 6,
                "solved": 6,
                "timeout": 2,
                "unknown": 0,
                "unsat": 0,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "baseline_common_seconds": 79.66771800000001,
              "candidate": {
                "error": 0,
                "par2": 300.819957,
                "rows": 8,
                "sat": 6,
                "solved": 6,
                "timeout": 2,
                "unknown": 0,
                "unsat": 0,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "candidate_common_seconds": 60.819957,
              "common_runtime_ratio": 0.7634203480009305,
              "common_solved": 6,
              "disagreements": [],
              "gained": [],
              "lost": [],
              "par2_ratio": 0.94103952342163
            },
            "TwoSquares": {
              "baseline": {
                "error": 0,
                "par2": 0.061684,
                "rows": 8,
                "sat": 4,
                "solved": 8,
                "timeout": 0,
                "unknown": 0,
                "unsat": 4,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "baseline_common_seconds": 0.061684,
              "candidate": {
                "error": 0,
                "par2": 0.060842,
                "rows": 8,
                "sat": 4,
                "solved": 8,
                "timeout": 0,
                "unknown": 0,
                "unsat": 4,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "candidate_common_seconds": 0.060842,
              "common_runtime_ratio": 0.9863497827637636,
              "common_solved": 8,
              "disagreements": [],
              "gained": [],
              "lost": [],
              "par2_ratio": 0.9863497827637636
            },
            "mathsat": {
              "baseline": {
                "error": 0,
                "par2": 12.865699,
                "rows": 22,
                "sat": 8,
                "solved": 22,
                "timeout": 0,
                "unknown": 0,
                "unsat": 14,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "baseline_common_seconds": 12.865699,
              "candidate": {
                "error": 0,
                "par2": 12.569699,
                "rows": 22,
                "sat": 8,
                "solved": 22,
                "timeout": 0,
                "unknown": 0,
                "unsat": 14,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "candidate_common_seconds": 12.569699,
              "common_runtime_ratio": 0.9769930883662055,
              "common_solved": 22,
              "disagreements": [],
              "gained": [],
              "lost": [],
              "par2_ratio": 0.9769930883662055
            },
            "wisas": {
              "baseline": {
                "error": 0,
                "par2": 5.371927,
                "rows": 12,
                "sat": 8,
                "solved": 12,
                "timeout": 0,
                "unknown": 0,
                "unsat": 4,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "baseline_common_seconds": 5.371927,
              "candidate": {
                "error": 0,
                "par2": 5.008396,
                "rows": 12,
                "sat": 8,
                "solved": 12,
                "timeout": 0,
                "unknown": 0,
                "unsat": 4,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "candidate_common_seconds": 5.008396,
              "common_runtime_ratio": 0.9323276358744265,
              "common_solved": 12,
              "disagreements": [],
              "gained": [],
              "lost": [],
              "par2_ratio": 0.9323276358744265
            }
          },
          "identities": {
            "baseline": [
              "962fd9a208a3b3537b8100df34286b930f038192dfa9fb4be7b00ada98ef72c7"
            ],
            "candidate": [
              "8458276454c6e59bbf0d90bb43d06d3f2d7a48a099efc7549e5a5645222c3de6"
            ]
          },
          "note": "Timing only; independent SAT-model coverage and recorded-reference joins are separate acceptance gates. Any lost solve requires three paired reruns; loss in at least two blocks acceptance.",
          "ratio_limit": 1.01,
          "rounds": [
            {
              "baseline": {
                "error": 0,
                "par2": 169.04116,
                "rows": 25,
                "sat": 13,
                "solved": 24,
                "timeout": 1,
                "unknown": 0,
                "unsat": 11,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "baseline_common_seconds": 49.04116,
              "candidate": {
                "error": 0,
                "par2": 159.219294,
                "rows": 25,
                "sat": 13,
                "solved": 24,
                "timeout": 1,
                "unknown": 0,
                "unsat": 11,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "candidate_common_seconds": 39.219294,
              "common_runtime_ratio": 0.7997219886315903,
              "common_solved": 24,
              "disagreements": [],
              "gained": [],
              "lost": [],
              "par2_ratio": 0.9418966008042065
            },
            {
              "baseline": {
                "error": 0,
                "par2": 168.925868,
                "rows": 25,
                "sat": 13,
                "solved": 24,
                "timeout": 1,
                "unknown": 0,
                "unsat": 11,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "baseline_common_seconds": 48.925868,
              "candidate": {
                "error": 0,
                "par2": 159.2396,
                "rows": 25,
                "sat": 13,
                "solved": 24,
                "timeout": 1,
                "unknown": 0,
                "unsat": 11,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "candidate_common_seconds": 39.2396,
              "common_runtime_ratio": 0.8020215400164183,
              "common_solved": 24,
              "disagreements": [],
              "gained": [],
              "lost": [],
              "par2_ratio": 0.9426596523393326
            }
          ],
          "timeout": 60,
          "timing_status": "pass"
        },
        "search": {
          "paired_solved_executions": 48,
          "counter_comparisons": 17760,
          "families": {
            "20230314-Jaroslav-Bendik-Certora": 6,
            "TwoSquares": 8,
            "mathsat": 22,
            "wisas": 12
          },
          "differences": [],
          "note": "Exact aggregate-counter comparison, not an equality-by-equality trace proof; new visit counters and all timings excluded."
        },
        "models": {
          "expected_sat": 26,
          "dolmen_pass": 26,
          "missing": 0,
          "errors": 0,
          "invalid": 0,
          "changed_answers": 0,
          "solver_resource": 0,
          "validator_resource": 0,
          "unsupported": 0,
          "coverage": "10/10 complete, unchanged inputs/binaries, fully_validated bothrounds"
        },
        "references": "24 decisive recorded reference agreements +1candidate timeout perround; no gaps/wrong/disagreement; no referenceexecuted",
        "certora47": {
          "old_seconds": [
            33.765391,
            33.575001
          ],
          "new_seconds": [
            24.434378,
            24.511896
          ],
          "old_reconciliation_us": [
            22627744,
            22825579
          ],
          "new_reconciliation_us": [
            14047747,
            14160493
          ],
          "unchanged_search": "429interface decisions,105SAT conflicts,788729SAT decisions,114456pivots,15157074care visits",
          "new_counters": {
            "care_pair_agreements": 15151107,
            "spanning_pair_checks": 240294
          }
        },
        "committed_manifest": "benchmarks/component-linear-quick-25.txt (same bytes as submitted tmp/n-way-linear-quick25.txt)",
        "manifest_content": "20230314-Jaroslav-Bendik-Certora/65782_cd31513fdcd15701933b_6_QF_UFLIA.smt2\n20230314-Jaroslav-Bendik-Certora/940_590f27b1c3c800d3243e_30_QF_UFLIA.smt2\nTwoSquares/smtlib.598294.smt2\nTwoSquares/smtlib.606727.smt2\nTwoSquares/smtlib.688318.smt2\nTwoSquares/smtlib.769286.smt2\nmathsat/EufLaArithmetic/hard/hard4.smt2\nmathsat/EufLaArithmetic/medium/medium12.smt2\nmathsat/Hash/hash_sat_03_03.smt2\nmathsat/Hash/hash_sat_09_05.smt2\nmathsat/Hash/hash_uns_03_03.smt2\nmathsat/Hash/hash_uns_03_18.smt2\nmathsat/Wisa/xs-05-06-2-2-5-1.smt2\nmathsat/Wisa/xs-06-07-4-5-4-2.smt2\nmathsat/Wisa/xs-07-11-1-1-1-1.smt2\nmathsat/Wisa/xs-15-09-3-5-5-3.smt2\nwisas/xs_11_21.smt2\nwisas/xs_27_37.smt2\nwisas/xs_5_5.smt2\nwisas/xs_7_7.smt2\nmathsat/EufLaArithmetic/medium/medium11.smt2\nwisas/xs_33_33.smt2\nwisas/xs_40_40.smt2\n20230314-Jaroslav-Bendik-Certora/3106_1c933134166dbad31f79_40_QF_UFLIA.smt2\n20230314-Jaroslav-Bendik-Certora/39657_2866defdd1f2434b69ab_47_QF_UFLIA.smt2\n"
      },
      "profile": {
        "job": "140619",
        "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir /workspace --ssh-config tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --check-only --no-sync --require-tool contrib/local/bin/dolmen --require-tool contrib/local/bin/z3 > tmp/n-way-linear-profile-preflight.log 2>&1 && ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --nodes=1 --ntasks=1 --nodelist=node-03 --hint=nomultithread --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_EXPECTED_GIT=b883d6f,PRIMO_PROFILE_OUT=/home/janotmik/primo-model-fix/results/n-way-linear-b883d6f/profile-certora47,PRIMO_PROFILE_CMAKE=/home/janotmik/primo-cadical-profile/.venv-build/bin/cmake,PRIMO_CXX_HEADER_MANIFEST=/home/janotmik/primo-cadical-profile/contrib/local/clang-tools-env/cxx-headers/include-paths.txt,PRIMO_PROFILE_INPUT=/home/janotmik/primo-model-fix/tmp/QF_UFLIA/20230314-Jaroslav-Bendik-Certora/39657_2866defdd1f2434b69ab_47_QF_UFLIA.smt2 scripts/slurm_component_profile.sbatch'",
        "artifact": "results/n-way-linear-b883d6f/profile-certora47",
        "scope": "Separate gprof build and5 diagnostic runs ofCertora47;not headline timing;scriptbudget60s/run",
        "state": "COMPLETED0:0,05:30",
        "binary_sha256": "59485e55ad77011f58706667f4c23cc5889874485f6dbdffdfa514f2db68804a",
        "input_sha256": "c68e77db3bc6cd15daebe8fcffb9d445bca654c6b2fcc47a8b65d27c3074e182",
        "findings": "All five instrumented runs exactly match every candidate non-timing counter on Certora47. Ordered tuple-set insert-position/find functions absent from flatprofile (previous30.6m/15.3m calls perrun). Remaining hotspots:EUFcare diagnostics12.44%,LIAcheck10.55%,careintrosort5.42%,linearconsider5.32%,Rationalmultiply5.13%. Scope_for15,490,654calls/run vsold26,675,507. Sampled self77.83s over5runs, not comparable to uninstrumentedwall."
      },
      "full": {
        "job": "140620",
        "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir /workspace --ssh-config tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --check-only --no-sync --require-tool contrib/local/bin/dolmen --require-tool contrib/local/bin/z3 > tmp/n-way-linear-full-preflight.log 2>&1 && ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --array=0-63%64 --nodes=1 --ntasks=1 --hint=nomultithread --exclude=node-01,node-02,node-03,amd-1,amd-2,dgx-2,dgx-3,dgx-4,dgx-5,gpu-1,gpu-2,gpu-3,gpu-4 --time=00:30:00 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_EXPECTED_GIT=b883d6f,PRIMO_BASELINE_GIT=2413397,PRIMO_BASELINE_SOLVER=/home/janotmik/primo-model-fix/results/n-way-2413397/bin/primo,PRIMO_CANDIDATE_SOLVER=/home/janotmik/primo-model-fix/results/n-way-linear-b883d6f/bin/primo,PRIMO_COMPARE_SHARDS=64,PRIMO_COMPARE_TIMEOUT=60,PRIMO_COMPARE_ROOT=/home/janotmik/primo-model-fix/tmp/QF_UFLIA,PRIMO_COMPARE_OUT_ROOT=/home/janotmik/primo-model-fix/results/n-way-linear-b883d6f/full659 scripts/slurm_component_migration_compare.sbatch'",
        "artifact": "results/n-way-linear-b883d6f/full659",
        "scope": "Entire659-input QF_UFLIA,64shards,2reversed-orderpairedrounds,60s/input,physicalCPUhint;timingnodes04..09 isolatedfrommodel/static/fuzz02 andprofile03.",
        "model_jobs": [
          {
            "round": 0,
            "job": "140696",
            "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir /workspace --ssh-config tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --check-only --no-sync --require-tool contrib/local/bin/dolmen --require-tool contrib/local/bin/z3 > tmp/n-way-linear-full-model-0-preflight.log 2>&1 && ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-linear-full-model-0 --array=0-63%8 --nodes=1 --ntasks=1 --nodelist=node-02 --dependency=afterok:140620 --time=00:15:00 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-linear-b883d6f/full659/round-0/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'"
          },
          {
            "round": 1,
            "job": "140697",
            "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --local-dir /workspace --ssh-config tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --check-only --no-sync --require-tool contrib/local/bin/dolmen --require-tool contrib/local/bin/z3 > tmp/n-way-linear-full-model-1-preflight.log 2>&1 && ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-linear-full-model-1 --array=0-63%8 --nodes=1 --ntasks=1 --nodelist=node-02 --dependency=afterok:140620 --time=00:15:00 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-linear-b883d6f/full659/round-1/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'"
          }
        ],
        "summary": {
          "aggregate": {
            "baseline": {
              "error": 0,
              "par2": 22726.665184,
              "rows": 1318,
              "sat": 810,
              "solved": 1150,
              "timeout": 168,
              "unknown": 0,
              "unsat": 340,
              "unsupported": 0,
              "wrong_answer": 0
            },
            "baseline_common_seconds": 2566.665184,
            "candidate": {
              "error": 0,
              "par2": 22655.783937,
              "rows": 1318,
              "sat": 810,
              "solved": 1150,
              "timeout": 168,
              "unknown": 0,
              "unsat": 340,
              "unsupported": 0,
              "wrong_answer": 0
            },
            "candidate_common_seconds": 2495.783937,
            "common_runtime_ratio": 0.9723839137874869,
            "common_solved": 1150,
            "disagreements": [],
            "gained": [],
            "lost": [],
            "par2_ratio": 0.9968811417589809
          },
          "expected_unique_inputs": 659,
          "families": {
            "20230314-Jaroslav-Bendik-Certora": {
              "baseline": {
                "error": 0,
                "par2": 17113.285966,
                "rows": 152,
                "sat": 10,
                "solved": 12,
                "timeout": 140,
                "unknown": 0,
                "unsat": 2,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "baseline_common_seconds": 313.285966,
              "candidate": {
                "error": 0,
                "par2": 17081.426709,
                "rows": 152,
                "sat": 10,
                "solved": 12,
                "timeout": 140,
                "unknown": 0,
                "unsat": 2,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "candidate_common_seconds": 281.426709,
              "common_runtime_ratio": 0.8983061469149883,
              "common_solved": 12,
              "disagreements": [],
              "gained": [],
              "lost": [],
              "par2_ratio": 0.9981383319916878
            },
            "TwoSquares": {
              "baseline": {
                "error": 0,
                "par2": 0.901495,
                "rows": 42,
                "sat": 10,
                "solved": 42,
                "timeout": 0,
                "unknown": 0,
                "unsat": 32,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "baseline_common_seconds": 0.901495,
              "candidate": {
                "error": 0,
                "par2": 0.8931290000000001,
                "rows": 42,
                "sat": 10,
                "solved": 42,
                "timeout": 0,
                "unknown": 0,
                "unsat": 32,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "candidate_common_seconds": 0.8931290000000001,
              "common_runtime_ratio": 0.9907198597884626,
              "common_solved": 42,
              "disagreements": [],
              "gained": [],
              "lost": [],
              "par2_ratio": 0.9907198597884626
            },
            "mathsat": {
              "baseline": {
                "error": 0,
                "par2": 4841.170104,
                "rows": 908,
                "sat": 626,
                "solved": 882,
                "timeout": 26,
                "unknown": 0,
                "unsat": 256,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "baseline_common_seconds": 1721.170104,
              "candidate": {
                "error": 0,
                "par2": 4817.790844,
                "rows": 908,
                "sat": 626,
                "solved": 882,
                "timeout": 26,
                "unknown": 0,
                "unsat": 256,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "candidate_common_seconds": 1697.7908439999999,
              "common_runtime_ratio": 0.9864166476365893,
              "common_solved": 882,
              "disagreements": [],
              "gained": [],
              "lost": [],
              "par2_ratio": 0.9951707418872386
            },
            "wisas": {
              "baseline": {
                "error": 0,
                "par2": 771.307619,
                "rows": 216,
                "sat": 164,
                "solved": 214,
                "timeout": 2,
                "unknown": 0,
                "unsat": 50,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "baseline_common_seconds": 531.307619,
              "candidate": {
                "error": 0,
                "par2": 755.673255,
                "rows": 216,
                "sat": 164,
                "solved": 214,
                "timeout": 2,
                "unknown": 0,
                "unsat": 50,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "candidate_common_seconds": 515.673255,
              "common_runtime_ratio": 0.9705738004860043,
              "common_solved": 214,
              "disagreements": [],
              "gained": [],
              "lost": [],
              "par2_ratio": 0.9797300537232214
            }
          },
          "identities": {
            "baseline": [
              "962fd9a208a3b3537b8100df34286b930f038192dfa9fb4be7b00ada98ef72c7"
            ],
            "candidate": [
              "8458276454c6e59bbf0d90bb43d06d3f2d7a48a099efc7549e5a5645222c3de6"
            ]
          },
          "note": "Timing only; independent SAT-model coverage and recorded-reference joins are separate acceptance gates. Any lost solve requires three paired reruns; loss in at least two blocks acceptance.",
          "ratio_limit": 1.01,
          "rounds": [
            {
              "baseline": {
                "error": 0,
                "par2": 11365.674374,
                "rows": 659,
                "sat": 405,
                "solved": 575,
                "timeout": 84,
                "unknown": 0,
                "unsat": 170,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "baseline_common_seconds": 1285.674374,
              "candidate": {
                "error": 0,
                "par2": 11337.404847,
                "rows": 659,
                "sat": 405,
                "solved": 575,
                "timeout": 84,
                "unknown": 0,
                "unsat": 170,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "candidate_common_seconds": 1257.404847,
              "common_runtime_ratio": 0.9780119075469728,
              "common_solved": 575,
              "disagreements": [],
              "gained": [],
              "lost": [],
              "par2_ratio": 0.9975127277036311
            },
            {
              "baseline": {
                "error": 0,
                "par2": 11360.99081,
                "rows": 659,
                "sat": 405,
                "solved": 575,
                "timeout": 84,
                "unknown": 0,
                "unsat": 170,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "baseline_common_seconds": 1280.99081,
              "candidate": {
                "error": 0,
                "par2": 11318.37909,
                "rows": 659,
                "sat": 405,
                "solved": 575,
                "timeout": 84,
                "unknown": 0,
                "unsat": 170,
                "unsupported": 0,
                "wrong_answer": 0
              },
              "candidate_common_seconds": 1238.37909,
              "common_runtime_ratio": 0.9667353429334906,
              "common_solved": 575,
              "disagreements": [],
              "gained": [],
              "lost": [],
              "par2_ratio": 0.9962492954432731
            }
          ],
          "timeout": 60,
          "timing_status": "pass"
        },
        "search": {
          "paired_solved_executions": 1150,
          "counter_comparisons": 425500,
          "families": {
            "20230314-Jaroslav-Bendik-Certora": 12,
            "TwoSquares": 42,
            "mathsat": 882,
            "wisas": 214
          },
          "differences": [],
          "note": "Exact aggregate-counter comparison, not an equality-by-equality trace proof; new visit counters and all timings excluded."
        },
        "state": "COMPLETED0:0 all64tasks",
        "distribution": {
          "executions": 1150,
          "baseline": {
            "median_seconds": 0.2270025,
            "p95_nearest_rank_seconds": 13.761416,
            "max_seconds": 58.283423
          },
          "candidate": {
            "median_seconds": 0.218176,
            "p95_nearest_rank_seconds": 13.305529,
            "max_seconds": 57.219299
          },
          "paired_ratio_median": 0.9706655358918883,
          "paired_ratio_geomean": 0.968163808236873,
          "both_at_least_100ms": {
            "count": 860,
            "paired_ratio_geomean": 0.9627505842634726
          },
          "regressions_over_10pct_baseline_at_least_1s": [
            [
              1,
              "mathsat/EufLaArithmetic/hard/hard13.smt2",
              2.386767,
              2.674958,
              1.120745342968124
            ],
            [
              1,
              "mathsat/EufLaArithmetic/hard/hard15.smt2",
              3.240187,
              3.814442,
              1.177228968574962
            ]
          ],
          "improvements_over_10pct_baseline_at_least_1s": [
            [
              0,
              "20230314-Jaroslav-Bendik-Certora/39657_2866defdd1f2434b69ab_47_QF_UFLIA.smt2",
              35.433517,
              26.638193,
              0.7517795368718267
            ],
            [
              1,
              "mathsat/EufLaArithmetic/medium/medium9.smt2",
              1.249523,
              1.118036,
              0.8947702443252346
            ],
            [
              1,
              "wisas/xs_18_38.smt2",
              29.500644,
              25.405076,
              0.8611702171654286
            ],
            [
              1,
              "wisas/xs_40_40.smt2",
              1.126202,
              0.95817,
              0.8507976366584326
            ],
            [
              1,
              "20230314-Jaroslav-Bendik-Certora/39657_2866defdd1f2434b69ab_47_QF_UFLIA.smt2",
              36.050354,
              26.514294,
              0.7354794352366137
            ],
            [
              1,
              "mathsat/EufLaArithmetic/hard/hard12.smt2",
              2.238246,
              1.95981,
              0.875600805273415
            ],
            [
              1,
              "mathsat/EufLaArithmetic/hard/hard14.smt2",
              3.559372,
              2.895483,
              0.8134814231274505
            ],
            [
              1,
              "mathsat/EufLaArithmetic/medium/medium11.smt2",
              2.065059,
              1.814053,
              0.8784509304576769
            ],
            [
              1,
              "wisas/xs_35_45.smt2",
              1.009749,
              0.810954,
              0.8031243408015258
            ],
            [
              1,
              "wisas/xs_17_37.smt2",
              13.761416,
              12.350924,
              0.8975038615212271
            ]
          ]
        },
        "references": "Bothrounds575decisive recordedreferenceagreements+84candidateunsolved;zero wronganswer/reference-disagreement/no-decisive-reference;no references executed. Commands:join_recorded_reference_answers.py candidate --reference results/full-revalidation-287b743/real/QF_UFLIA/z3 --reference results/full-revalidation-287b743/real/QF_UFLIA/cvc5; audits tmp/n-way-linear-full-reference-{0,1}.json.",
        "certora47": {
          "old_seconds": [
            35.433517,
            36.050354
          ],
          "new_seconds": [
            26.638193,
            26.514294
          ],
          "old_reconciliation_us": [
            23188092,
            23583456
          ],
          "new_reconciliation_us": [
            14546561,
            14521873
          ],
          "same_search_as_quick": true
        },
        "models": {
          "expected_sat": 810,
          "dolmen_pass": 810,
          "missing": 0,
          "invalid": 0,
          "changed_answers": 0,
          "solver_errors": 0,
          "solver_timeouts_unknowns": 0,
          "validator_timeouts": 0,
          "unsupported": 0,
          "coverage": "128/128 complete;fully_validated405/405 eachround;parentartifact/input/binaryhashes verified."
        }
      },
      "artifact_storage": "SLURM-backed raw corpus/fuzz/mutation/model artifacts and frozen binaries retained under results/n-way-linear-b883d6f. Local timing,model,static and profile artifacts collected; local fuzz/mutation copies contain summaries, raw generated inputs remain onSLURM.",
      "search_audit_script": "#!/usr/bin/env python3\n\"\"\"Read-only comparison of existing non-timing solver counters on paired solves.\"\"\"\nimport json\nimport sys\nfrom collections import Counter\nfrom pathlib import Path\n\nsys.path.insert(0, str(Path(__file__).resolve().parents[1] / \"scripts\"))\nfrom summarize_component_pairs import load_arm, solved\n\nroot = Path(sys.argv[1])\nexcluded = {\":combination.model.care-pair-agreements\", \":combination.model.spanning-pair-checks\"}\nchecked = 0\ncomparisons = 0\ndifferences = []\nfamilies = Counter()\nfor round_number in range(2):\n    old, _ = load_arm(root / f\"round-{round_number}\" / \"baseline\")\n    new, _ = load_arm(root / f\"round-{round_number}\" / \"candidate\")\n    assert old.keys() == new.keys()\n    for name in sorted(old):\n        if not (solved(old[name]) and solved(new[name])):\n            continue\n        checked += 1\n        families[old[name][\"family\"]] += 1\n        keys = {key for row in (old[name], new[name]) for key in row\n                if key.startswith(\":\") and not key.startswith(\":time.\")} - excluded\n        changed = {}\n        for key in sorted(keys):\n            before = old[name].get(key) or \"0\"\n            after = new[name].get(key) or \"0\"\n            comparisons += 1\n            if before != after:\n                changed[key] = [before, after]\n        if changed:\n            differences.append({\"round\": round_number, \"file\": name, \"counters\": changed})\nprint(json.dumps({\"paired_solved_executions\": checked, \"counter_comparisons\": comparisons,\n                  \"families\": families, \"differences\": differences,\n                  \"note\": \"Exact aggregate-counter comparison, not an equality-by-equality trace proof; new visit counters and all timings excluded.\"}, indent=2))\nraise SystemExit(bool(differences))\n",
      "reproduction": "Build/freeze b883d6f using recorded preparation command. Copy committed benchmarks/component-linear-quick-25.txt to recorded tmp manifest path (or override PRIMO_COMPARE_MANIFEST to committed path). Validate static batch embedded here with slurm_validate_sbatch.py before copying/submitting; other jobs use committed scripts. Run embedded read-only search audit as tmp/n-way-linear-search-audit.py ROOT after summarize_component_pairs.py ROOT --expected-count25/659. Keep independentSATreplay separate; joinrecordedreferenceswithrecordedcommand.",
      "verdict": "Accepted order-equivalent overhead removal. Same575/659solves bothversions/bothrounds,84timeoutseachround,noanswerdisagreements/errors/unsupported/wronganswers/lostsolves;commonruntime-2.7616%,PAR2-0.3119%;everyfamilyaggregatefaster,not everyindividualexecution.425500existingnon-timingcountersmatch over1150common-solvedpairs;not an equality-by-equalitytraceproof.836/836quick+fullSATmodels independently accepted.4000generatedinputs pass;1435supplementalrealmutants have1398pass/37resource-incomplete,rawfailedmutationgate retained. QF_UFLRA sourcepathsunchanged;no freshfive-logicreevaluationclaimed.",
      "documentation_review": "No blocking findings after distinguishing original2413397five-logic qualification from b883d6fQFUFLIA-onlyoverhead qualification. Localdesignstatesexactkeyorder,proof,invariants,ownership,linearcomplexity,newcollection-ownedstats,andretainedlimitations. Earlierprofilinguseddiagnostically,notasfreshmodelvalidation."
    },
    {"id":"2026-09-09-certora-migration-diagnosis","date":"2026-09-09","commit":"2413397","baseline_commit":"287b743","kind":"read-only-regression-diagnosis","evidence_status":"current-diagnostic","job":"140601","artifact":"results/n-way-2413397/profile-certora47-140601","command":"ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --nodelist=node-04 --hint=nomultithread --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix tmp/n-way-certora47-profile.sbatch'","batch_script":"#!/usr/bin/env bash\n# Diagnostic only: reuse the frozen instrumented candidate, not a timing result.\n#SBATCH --job-name=primo-certora47-profile\n#SBATCH --nodes=1\n#SBATCH --ntasks=1\n#SBATCH --cpus-per-task=1\n#SBATCH --mem=8G\n#SBATCH --time=00:04:00\n#SBATCH --output=slurm_logs/%x-%j.out\n#SBATCH --error=slurm_logs/%x-%j.err\nset -euo pipefail\ncd \"${PRIMO_WORKDIR:?}\"\nBIN=\"$PRIMO_WORKDIR/results/n-way-2413397/profile-wisas40/build/primo\"\nINPUT=\"$PRIMO_WORKDIR/tmp/QF_UFLIA/20230314-Jaroslav-Bendik-Certora/39657_2866defdd1f2434b69ab_47_QF_UFLIA.smt2\"\nOUT=\"$PRIMO_WORKDIR/results/n-way-2413397/profile-certora47-$SLURM_JOB_ID\"\nmkdir \"$OUT\"\ncp \"$0\" \"$OUT/job.sbatch\"\ncd \"$OUT\"\nhostname > node.txt\n\"$BIN\" --version > version.txt\ngrep -Fx 'git: 2413397-profile' version.txt\nsha256sum \"$BIN\" \"$INPUT\" > inputs-binary.sha256\nTIMEFORMAT='wall=%R user=%U sys=%S'\n{ time timeout 150 \"$BIN\" --quiet --stats \"$INPUT\" > solver.stdout 2> solver.stderr; } \\\n  2> resources.txt\ntest -s gmon.out\ngrep -Fx sat solver.stdout\ngprof -b -p \"$BIN\" gmon.out > flat-profile.txt\ngprof -b -q \"$BIN\" gmon.out > call-graph.txt\n","scope":"One bounded gprof run on the existing2413397-profile instrumented binary, no rebuild, no source/option modification, no reference run; diagnose the one Certora common-solved regression dominating family overhead.","recorded_timing":"Job137972 Certora common totals72.301020 ->88.635538s (+22.5924%). Input39657_2866defdd1f2434b69ab_47 contributes16.200835s of16.334518s additional time (99.1816%):round0 28.207481 ->35.746284,round1 30.061273 ->38.723305.","recorded_search":"Same deterministic counters in both rounds per binary:interface decisions423 ->429,SAT conflicts87 ->105,SAT decisions778104 ->788729,pivots110595 ->114456,care-pair visits14945709 ->15157074. Model reconciliation15.797149 ->23.414635s and16.387214 ->25.004475s; SAT time decreases8.371444 ->7.855089s and9.140567 ->8.618148s.","code_findings":"Old coordinator filters non-disagreeing care pairs before adding them to ordered candidates and uses unordered membership tables; new ComponentModelCoordinator inserts all care pairs into two ordered std::sets, validates scopes and stable-partitions sorted candidates. Old spanning-care edges precede appended nonspanning care disagreements; new globally sorted care edges can change first ordinary split. Thus search order is not preserved. First actual divergent choice has not been traced; phase totals do not isolate one helper's cost. Old EUF mutate calls returned default FixedPoint; new capability=false skips this no-op, so mutation counter423 ->0 does not mean an effective repair algorithm was removed.","failed_setup_attempts":[{"job":"140599","exit":"1:0","elapsed_seconds":5,"reason":"Wrong corpus root, stopped at sha256sum before solver workload; corrected against full659 provenance."},{"job":"140600","exit":"127:0","elapsed_seconds":1,"reason":"/usr/bin/time absent on node04, stopped before solver workload; replaced with Bash built-in time."}],"state":"COMPLETED0:0","profile":{"job":"140601","host":"node-04","elapsed_allocation_seconds":50,"solver_wall_seconds":45.894,"solver_user_seconds":45.621,"answer":"sat","exit_code":0,"timeout":0,"error":0,"binary_sha256":"37dee46aefceb0184d386f9b0bcb013f2a1f102206444b8310c01a88659ca867","input_sha256":"c68e77db3bc6cd15daebe8fcffb9d445bca654c6b2fcc47a8b65d27c3074e182","sampled_self_seconds":20.79,"top_functions":{"ordered tuple-set insertion position":"30,627,441 calls;13.76% sampled self","EUF care-pair diagnostics":"430 calls;9.43%","LiaComponentAdapter::check":"430 calls;7.70%","ordered tuple-set find":"15,338,103 calls;5.19%","care-pair introsort":"860 calls;4.95%","partition-map at":"68,550,882 calls;4.91%","TheoryCombinationPlan::scope_for":"26,675,507 calls;4.23%"},"search_matches_uninstrumented_candidate":"429 interface decisions,105 SAT conflicts,788729 SAT decisions,114456 LRA pivots,15157074 care-pair visits; exact same counts as both uninstrumented rounds.","limitations":"One candidate-only diagnostic profile, not a timing comparison or new model qualification. Instrumentation perturbs time; sampled self totals do not equal wall time. Input's uninstrumented candidate SAT models already passed Dolmen in both recorded full659 rounds."},"conclusion":"Recorded phases plus profile identify avoidable ordered-container/scope-processing overhead in model reconciliation, not a uniform Certora slowdown or merely model-printing cost. Search counters independently prove execution diverged. Coordinator source changes candidate tie/order by globally sorting care pairs instead of keeping spanning candidates first; this is a plausible cause of divergence but first actual differing equality has not been traced or isolated by an A/B intervention. No solver source change made. Follow-up should isolate overhead removal from restoring legacy split priority; modularity does not require either overhead or heuristic drift."},
    {
      "id": "2026-09-08-n-component-preservation-four-logics",
      "qualification_completed_date": "2026-09-09",
      "final_verification": "Fresh final read-only audits of sample20,watchlist4,full659 and all four preservation artifacts validate hashes/options/paired nodes/coverage and both1% aggregate limits. Raw UF/LIA/LRA reports retain needs-triage for original losses; all six focused artifact groups separately pass the exact-three-pair/no-repeated-loss audit. Model audit confirms23405 direct Dolmen passes and1600 complete unchanged-hash coverage records. make check29 CTest+128 Python, make asan-test29/29, whole-source clang-tidy/include review and prior code/efficiency review remain valid for unchanged solver sources. Final make lint/make docs and git diff --check pass; logs tmp/n-way-final-check.log,tmp/n-way-hygiene-asan.log,tmp/n-way-final-qualification-{lint,docs}.log. Final documentation review synchronizes completed gate checklist, family regressions and reference/resource limitations without overclaiming independent UNSAT validation. Final results here supersede chronological running/submitted checkpoints retained below.",
      "final_model_audit_command": "python3 - <<'PY'\nimport json,sys\nfrom pathlib import Path\nsys.path.insert(0,'scripts')\nfrom summarize_model_campaign import load_run\nbase=Path('results/n-way-2413397')\ntotal=0\nfor logic,count,path in [('QF_UF',7503,base/'preservation-v2/QF_UF'),('QF_LIA',13306,base/'preservation-v2/QF_LIA'),('QF_LRA',1753,base/'preservation-v2/QF_LRA'),('QF_UFLRA',1284,base/'preservation-v2/QF_UFLRA'),('QF_UFLIA',659,base/'full659')]:\n models=[];coverage=0\n for r in (0,1):\n  root=path/f'round-{r}/candidate';s,_=load_run(root,count,60)\n  assert s['models']['fully_validated'],(logic,r,s['models'])\n  files=list(root.glob('shard-*/model-validation/coverage.json'));coverage+=len(files)\n  assert len(files)==s['complete_shards']\n  for p in files:\n   c=json.loads(p.read_text());assert c['status']=='complete' and c['inputs_and_binary_unchanged'] and c['expected_sat']==c['dolmen_pass'] and not c['missing'],p\n  models.append(s['sat']);total+=s['sat']\n print(logic,models,'coverage',coverage)\nprint('TOTAL_MODELS',total)\nPY",
      "lia_preservation_completed": {"timing_job":"138134","model_jobs":["138232","138245"],"state":"all512 timing and1024 replay tasks COMPLETED0:0","artifact":"results/n-way-2413397/preservation-v2/QF_LIA","aggregate":{"baseline":{"error":0,"par2":941603.044333,"rows":26612,"sat":12925,"solved":19404,"timeout":5705,"unknown":1503,"unsat":6479,"unsupported":0,"wrong_answer":0},"baseline_common_seconds":75944.682412,"candidate":{"error":0,"par2":940437.614321,"rows":26612,"sat":12929,"solved":19417,"timeout":5694,"unknown":1501,"unsat":6488,"unsupported":0,"wrong_answer":0},"candidate_common_seconds":75574.525688,"common_runtime_ratio":0.9951259691627664,"common_solved":19392,"disagreements":[],"gained":["round-0:nec-smt/large/checkpass_pwd/prp-35-43.smt2","round-0:nec-smt/large/checkpass_pwd/prp-28-42.smt2","round-0:nec-smt/large/bftpd_login/prp-13-50.smt2","round-0:nec-smt/large/checkpass_pwd/prp-44-43.smt2","round-0:nec-smt/large/checkpass/prp-50-50.smt2","round-0:nec-smt/large/checkpass_pwd/prp-46-42.smt2","round-0:20220307-SMPT/Referendum-PT-0500/RC-05.smt2","round-0:nec-smt/large/getoption_group/prp-77-50.smt2","round-0:nec-smt/large/checkpass_pwd/prp-16-42.smt2","round-0:nec-smt/large/getoption_directories/prp-10-50.smt2","round-0:20220307-SMPT/SharedMemory-PT-000050/RF-14.smt2","round-0:nec-smt/large/checkpass_pwd/prp-26-44.smt2","round-0:nec-smt/large/checkpass_pwd/prp-30-42.smt2","round-0:nec-smt/large/checkpass_pwd/prp-32-41.smt2","round-1:nec-smt/large/checkpass_pwd/prp-35-44.smt2","round-1:nec-smt/large/bftpd_login/prp-13-50.smt2","round-1:nec-smt/large/checkpass_pwd/prp-44-43.smt2","round-1:nec-smt/large/getoption_group/prp-54-46.smt2","round-1:nec-smt/large/bftpd_login/prp-18-50.smt2","round-1:nec-smt/large/checkpass/prp-50-50.smt2","round-1:nec-smt/large/checkpass_pwd/prp-46-42.smt2","round-1:nec-smt/large/getoption_group/prp-81-49.smt2","round-1:nec-smt/large/checkpass_pwd/prp-16-42.smt2","round-1:tropical-matrix/constraint-916807.smt2","round-1:nec-smt/large/checkpass_pwd/prp-32-41.smt2"],"lost":["round-0:nec-smt/large/checkpass_pwd/prp-48-43.smt2","round-0:nec-smt/large/checkpass_pwd/prp-29-41.smt2","round-0:nec-smt/large/getoption_directories/prp-10-49.smt2","round-0:nec-smt/large/checkpass_pwd/prp-24-42.smt2","round-0:nec-smt/large/checkpass_pwd/prp-25-41.smt2","round-0:nec-smt/large/checkpass_pwd/prp-30-41.smt2","round-1:nec-smt/large/checkpass_pwd/prp-41-42.smt2","round-1:nec-smt/large/checkpass_pwd/prp-43-42.smt2","round-1:nec-smt/large/checkpass_pwd/prp-13-42.smt2","round-1:nec-smt/large/checkpass_pwd/prp-18-43.smt2","round-1:nec-smt/large/checkpass_pwd/prp-20-41.smt2","round-1:2019-ezsmt/Labyrinth/SCC/0143-labyrinth-14-0.smt2"],"par2_ratio":0.9987622915845333},"rounds":[{"baseline":{"error":0,"par2":471469.60599,"rows":13306,"sat":6455,"solved":9694,"timeout":2861,"unknown":751,"unsat":3239,"unsupported":0,"wrong_answer":0},"baseline_common_seconds":37677.782527,"candidate":{"error":0,"par2":470805.817914,"rows":13306,"sat":6460,"solved":9702,"timeout":2853,"unknown":751,"unsat":3242,"unsupported":0,"wrong_answer":0},"candidate_common_seconds":37504.198874,"common_runtime_ratio":0.9953929440280724,"common_solved":9688,"disagreements":[],"gained":["nec-smt/large/checkpass_pwd/prp-35-43.smt2","nec-smt/large/checkpass_pwd/prp-28-42.smt2","nec-smt/large/bftpd_login/prp-13-50.smt2","nec-smt/large/checkpass_pwd/prp-44-43.smt2","nec-smt/large/checkpass/prp-50-50.smt2","nec-smt/large/checkpass_pwd/prp-46-42.smt2","20220307-SMPT/Referendum-PT-0500/RC-05.smt2","nec-smt/large/getoption_group/prp-77-50.smt2","nec-smt/large/checkpass_pwd/prp-16-42.smt2","nec-smt/large/getoption_directories/prp-10-50.smt2","20220307-SMPT/SharedMemory-PT-000050/RF-14.smt2","nec-smt/large/checkpass_pwd/prp-26-44.smt2","nec-smt/large/checkpass_pwd/prp-30-42.smt2","nec-smt/large/checkpass_pwd/prp-32-41.smt2"],"lost":["nec-smt/large/checkpass_pwd/prp-48-43.smt2","nec-smt/large/checkpass_pwd/prp-29-41.smt2","nec-smt/large/getoption_directories/prp-10-49.smt2","nec-smt/large/checkpass_pwd/prp-24-42.smt2","nec-smt/large/checkpass_pwd/prp-25-41.smt2","nec-smt/large/checkpass_pwd/prp-30-41.smt2"],"par2_ratio":0.9985920872362363},{"baseline":{"error":0,"par2":470133.438343,"rows":13306,"sat":6470,"solved":9710,"timeout":2844,"unknown":752,"unsat":3240,"unsupported":0,"wrong_answer":0},"baseline_common_seconds":38266.899885,"candidate":{"error":0,"par2":469631.796407,"rows":13306,"sat":6469,"solved":9715,"timeout":2841,"unknown":750,"unsat":3246,"unsupported":0,"wrong_answer":0},"candidate_common_seconds":38070.326814,"common_runtime_ratio":0.9948631043645881,"common_solved":9704,"disagreements":[],"gained":["nec-smt/large/checkpass_pwd/prp-35-44.smt2","nec-smt/large/bftpd_login/prp-13-50.smt2","nec-smt/large/checkpass_pwd/prp-44-43.smt2","nec-smt/large/getoption_group/prp-54-46.smt2","nec-smt/large/bftpd_login/prp-18-50.smt2","nec-smt/large/checkpass/prp-50-50.smt2","nec-smt/large/checkpass_pwd/prp-46-42.smt2","nec-smt/large/getoption_group/prp-81-49.smt2","nec-smt/large/checkpass_pwd/prp-16-42.smt2","tropical-matrix/constraint-916807.smt2","nec-smt/large/checkpass_pwd/prp-32-41.smt2"],"lost":["nec-smt/large/checkpass_pwd/prp-41-42.smt2","nec-smt/large/checkpass_pwd/prp-43-42.smt2","nec-smt/large/checkpass_pwd/prp-13-42.smt2","nec-smt/large/checkpass_pwd/prp-18-43.smt2","nec-smt/large/checkpass_pwd/prp-20-41.smt2","2019-ezsmt/Labyrinth/SCC/0143-labyrinth-14-0.smt2"],"par2_ratio":0.9989329796711162}],"families":{"20180326-Bromberger":{"solved":[660,660],"par2_ratio":0.9999988330369942,"common_runtime_ratio":0.9993372347299364},"2019-cmodelsdiff":{"solved":[264,264],"par2_ratio":1.0015084348580998,"common_runtime_ratio":1.006258223932186},"2019-ezsmt":{"solved":[214,213],"par2_ratio":1.0155683351386968,"common_runtime_ratio":1.0122317039058526},"20210219-Dartagnan":{"solved":[190,190],"par2_ratio":1.0008820921652528,"common_runtime_ratio":1.007736044414559},"20220307-SMPT":{"solved":[11550,11552],"par2_ratio":0.9959051841582041,"common_runtime_ratio":1.002163133059864},"20230321-UltimateAutomizerSvcomp2023":{"solved":[0,0],"par2_ratio":1,"common_runtime_ratio":null},"20231117-c_inference":{"solved":[48,48],"par2_ratio":1.0002678714234665,"common_runtime_ratio":1.0034867588063456},"Averest":{"solved":[38,38],"par2_ratio":1.003387828838601,"common_runtime_ratio":1.003387828838601},"CAV_2009_benchmarks":{"solved":[702,702],"par2_ratio":1.0000306882032481,"common_runtime_ratio":1.005584955394767},"CIRC":{"solved":[64,64],"par2_ratio":0.999952649556196,"common_runtime_ratio":0.9964596884380231},"RTCL":{"solved":[4,4],"par2_ratio":1.0025033427870749,"common_runtime_ratio":1.0025033427870749},"RWS":{"solved":[18,18],"par2_ratio":0.9998441610366448,"common_runtime_ratio":0.9940182937801119},"arctic-matrix":{"solved":[28,28],"par2_ratio":1.0003981028992346,"common_runtime_ratio":1.0143013715022111},"bofill-scheduling":{"solved":[1296,1296],"par2_ratio":1.0014328879322396,"common_runtime_ratio":1.0024582331082612},"calypto":{"solved":[70,70],"par2_ratio":1.0000212078000381,"common_runtime_ratio":1.0017447979454561},"check":{"solved":[8,8],"par2_ratio":0.9999986712149715,"common_runtime_ratio":0.9953721166400694},"convert":{"solved":[360,360],"par2_ratio":0.9999965025491095,"common_runtime_ratio":0.999448792517387},"cut_lemmas":{"solved":[136,136],"par2_ratio":1.0005623210331147,"common_runtime_ratio":1.0046530400421356},"dillig":{"solved":[270,270],"par2_ratio":1.0000597800283557,"common_runtime_ratio":1.0058875444113669},"fft":{"solved":[8,8],"par2_ratio":1.0000065001863911,"common_runtime_ratio":1.0106219523978668},"mathsat":{"solved":[242,242],"par2_ratio":1.0039682132281211,"common_runtime_ratio":1.0039682132281211},"miplib2003":{"solved":[14,14],"par2_ratio":1.0001313264042513,"common_runtime_ratio":1.0175965342589004},"nec-smt":{"solved":[2540,2551],"par2_ratio":0.9973203131100222,"common_runtime_ratio":0.992049397380656},"pb2010":{"solved":[66,66],"par2_ratio":1.0000394862148194,"common_runtime_ratio":1.0016238423120931},"pidgeons":{"solved":[38,38],"par2_ratio":1.0052910929891636,"common_runtime_ratio":1.0052910929891636},"prime-cone":{"solved":[74,74],"par2_ratio":0.9960874304516659,"common_runtime_ratio":0.9960874304516659},"rings":{"solved":[52,52],"par2_ratio":1.0000051943435702,"common_runtime_ratio":1.000955167316225},"rings_preprocessed":{"solved":[146,146],"par2_ratio":1.0000008733784915,"common_runtime_ratio":1.000270587261868},"slacks":{"solved":[232,232],"par2_ratio":1.0000032074737224,"common_runtime_ratio":1.0014046184674281},"tightrhombus":{"solved":[16,16],"par2_ratio":0.999999769377647,"common_runtime_ratio":0.9983586628714717},"tropical-matrix":{"solved":[46,47],"par2_ratio":0.9972561936613533,"common_runtime_ratio":1.0075704633269476},"wisa":{"solved":[10,10],"par2_ratio":1.0019407565315905,"common_runtime_ratio":1.0019407565315905}},"models":"12929/12929 successful candidate SAT rows direct Dolmen PASS (6460+6469);1024 complete coverage files, unchanged input/binary hashes. Eleven additional successful SAT follow-up rows also validated.","reference_join":"Rounds0/1:9507/9516 decisive hash-matched recorded Z3 agreements;195/199 no-decisive-reference rows, all known Z3 timeouts. All32 cancelled/incomplete cvc5 shards skipped, no reference rerun. Gap SAT69/70 independently model-validated. Gap UNSAT126/129:124/127 match declared status; same two undeclared inputs agree with historical and both frozen-baseline runs only, not independently UNSAT-confirmed.","lost_solve_gate":"Twelve unique original losses (six each round) exactly equal the union of the three committed manifests. Each received exactly three paired reruns; only prp-48-43 and prp-24-42 lose once, none at least twice. Resource-inconclusive pairs retained, not described as recovered solves.25 gained and12 lost executions remain in raw timing audit, whose needs-triage status is resolved by separate follow-up evidence.","verdict":"Per-logic preservation accepted:PAR2-0.124%, common runtime-0.487%,13 net additional solved executions. No wrong answer, error, unsupported or paired disagreement. Unknown1503 baseline/1501 candidate and5705/5694 timeouts remain explicitly unsolved with PAR2 penalties. No claim of uniform family improvement:2019-ezsmt common+1.22%,arctic-matrix+1.43%,miplib2003+1.76%,tiny FFT+1.06%.","audits":"tmp/n-way-preservation-QF_LIA-summary.json; tmp/n-way-preservation-QF_LIA-reference-{0,1}.json; loss summaries and coverage assertions."},
      "final_replay_dependency_audit": "Batch12/13 dry and fresh apply found0 eligible tasks and changed no state; final read-only scan after all source completion likewise found0 pending replay tasks. Logs tmp/n-way-replay-release-QF_LIA-{batch12,batch13,final}-dry.jsonl and batch12/13.jsonl. Final squeue empty; sacct verifies512 timing and1024 model tasks COMPLETED0:0.",
      "five_logic_acceptance": "All five per-logic PAR2 and common-runtime limits are within1%. Reuse full659 as UFLIA leg. Every original lost input across UF/LRA/LIA has exactly three paired follow-ups, none loses in at least two. All23405 successful candidate SAT rows in the two-round five-logic suite pass direct Dolmen;1600 complete coverage files with unchanged input/binary hashes. This is preservation qualification with explicit reference-timeout/undeclared-UNSAT and fuzz-resource limitations, not universal independent UNSAT certification or uniform family speedup. Source remains exactly2413397; later commits contain harness/docs/evidence only.",
      "replay_release_batch11": "Read-only scan and fresh apply both found0 eligible pending tasks; no state changed. Logs tmp/n-way-replay-release-QF_LIA-batch11{-dry,}.jsonl. Remaining replay dependencies corresponded to still-running source tasks.",
      "replay_release_batch10": "Dry scan found6 eligible pending tasks; fresh apply verified/released8 as source work completed. Same helper and limits, logs tmp/n-way-replay-release-QF_LIA-batch10{-dry,}.jsonl.",
      "lia_later3_model_completed": "Job140538_2 COMPLETED0:0 in1:03; only successful candidate SAT row in third loss batch passes direct Dolmen. Complete coverage, expected_sat=dolmen_pass=1, unchanged input/binary hashes. All11 successful SAT rows across the twelve-input LIA follow-up set are now independently validated.",
      "replay_release_batch9": "Dry scan found10 eligible pending tasks; fresh apply released6 still pending while others progressed. Same verified helper and unchanged limits. Logs tmp/n-way-replay-release-QF_LIA-batch9{-dry,}.jsonl.",
      "lia_later3_model_submission": {"job":"140538","command":"ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-model-lia-later3 --array=2 --nodes=1 --ntasks=1 --nodelist=node-02 --time=00:05:00 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-2413397/loss-reruns/QF_LIA-later3/round-2/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'","artifact":"results/n-way-2413397/loss-reruns/QF_LIA-later3/round-2/candidate/shard-2/model-validation","note":"Only successful candidate SAT row in third follow-up batch. Single node02 task,5-minute allocation, solver90s/Dolmen30s8G; fresh preflight tmp/n-way-lia-later3-model-preflight.log."},
      "lia_later3_rerun_completed": {"job":"140491","artifact":"results/n-way-2413397/loss-reruns/QF_LIA-later3","both_arms":"1/9 solved:1 SAT,8 timeout","loss_counts":{},"wrong_disagreement_error":0,"verdict":"No repeated differential loss; predominantly resource-inconclusive. Labyrinth0143 and prp-20-41 time out on both binaries in all three pairs. Only round2 prp-25-41 solves on both (baseline59.963285s,candidate59.323237s); its one successful candidate SAT row requires direct Dolmen replay. All late printed answers remain timeouts, not solves.","audit":"tmp/n-way-lia-later3-summary.json"},
      "replay_release_batch8": "Dry scan found8 eligible pending replay tasks; fresh apply verified/released16 as more source shards completed. Logs tmp/n-way-replay-release-QF_LIA-batch8{-dry,}.jsonl; unchanged helper, frozen identities and job limits.",
      "lia_round0_timing_completed": {"rows_per_arm":13306,"baseline":{"solved":9694,"sat":6455,"unsat":3239,"timeout":2861,"unknown":751},"candidate":{"solved":9702,"sat":6460,"unsat":3242,"timeout":2853,"unknown":751},"par2":[471469.605990,470805.817914],"par2_ratio":0.9985920872362363,"common_seconds":[37677.782527,37504.198874],"common_runtime_ratio":0.9953929440280724,"wrong_error_unsupported_disagreement":0,"note":"Single completed round only, not the combined acceptance verdict.751 node-limit unknowns per arm remain explicit and receive PAR2 timeout penalty. Both arms complete512 shards. All six round0 lost inputs already assigned focused reruns across immutable manifests; round1 still running."},
      "replay_release_batch7": "Dry scan and fresh apply verified/released6 eligible pending LIA replay tasks. Logs tmp/n-way-replay-release-QF_LIA-batch7{-dry,}.jsonl; same helper, frozen identities and limits, no reference/timing rerun.",
      "lia_later3_submission": {"job":"140491","command":"ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --array=0-2%3 --hint=nomultithread --exclude=node-01,node-02,amd-1,amd-2,dgx-2,dgx-3,dgx-4,dgx-5,gpu-1,gpu-2,gpu-3,gpu-4 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_COMPARE_SHARDS=3,PRIMO_COMPARE_OUT_ROOT=/home/janotmik/primo-model-fix/results/n-way-2413397/loss-reruns/QF_LIA-later3,PRIMO_COMPARE_ROOT=/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_LIA,PRIMO_COMPARE_MANIFEST=/home/janotmik/primo-model-fix/benchmarks/component-migration-qf-lia-later-losses-3.txt,PRIMO_BASELINE_SOLVER=/home/janotmik/primo-model-fix/results/full-revalidation-287b743/bin/primo,PRIMO_CANDIDATE_SOLVER=/home/janotmik/primo-model-fix/results/n-way-2413397/bin/primo,PRIMO_BASELINE_GIT=287b743,PRIMO_EXPECTED_GIT=2413397,PRIMO_COMPARE_TIMEOUT=60 scripts/slurm_component_loss_rerun.sbatch'","artifact":"results/n-way-2413397/loss-reruns/QF_LIA-later3","state":"submitted","note":"Exactly three pairs each for third immutable three-input loss manifest0304d6f, concurrency3. Fresh preflight tmp/n-way-lia-later3-preflight.log. Frozen60s default-profile binaries, no reference execution."},
      "lia_round0_reference_gaps": "195 decisive candidate answers lack recorded reference corroboration:69 SAT,126 UNSAT, all recorded Z3 timeouts. SAT rows remain covered by independent replay.124 UNSAT rows match declared status; two have no declared status:20220307-SMPT/RwMutex-PT-r0010w2000/RC-04.smt2 and2019-cmodelsdiff/wireRouting/wire.12.x.12.b.5.a.20_unsat.data.smt2. Both agree with historical Primo and both frozen-baseline rounds (RC-04 23.352976/23.476504/23.400603s; wire30.946574/28.274099/26.757548s), but this is not independent UNSAT validation. Nine SAT gaps lack declared status and require Dolmen, not filename inference. Full lists and hashes retained by recorded-reference audit.",
      "replay_release_batch6": "Dry scan and fresh apply verified/released2 eligible pending LIA replay tasks. Same committed helper, unchanged limits; logs tmp/n-way-replay-release-QF_LIA-batch6{-dry,}.jsonl. No new timing/reference run.",
      "lia_later3_loss_snapshot": "Three further observed losses: round0 checkpass_pwd/prp-25-41 SAT58.615160s; round1 2019-ezsmt/Labyrinth/SCC/0143-labyrinth-14-0 SAT55.684653s and checkpass_pwd/prp-20-41 SAT56.519211s. Candidate exceeds60s in each; two print sat after the deadline and remain timeouts. Frozen third manifest benchmarks/component-migration-qf-lia-later-losses-3.txt; prior nine inputs are not rerun.",
      "lia_round0_reference_snapshot": "All13306 candidate timing rows complete:9702 solved,9507 hash-matched recorded Z3 agreements,195 no-decisive-reference and3604 unsolved. All32 historical cvc5 shards were cancelled/incomplete and are explicitly skipped, not treated as usable complete evidence. No wrong answer or reference disagreement. Final paired aggregate and gap classification remain pending; no reference solver rerun.",
      "lia_additional3_rerun_completed": {"job":"140442","artifact":"results/n-way-2413397/loss-reruns/QF_LIA-additional3","baseline":"1/9 solved:1 SAT,8 timeout","candidate":"1/9 solved:1 UNSAT,8 timeout","loss_counts":{"nec-smt/large/checkpass_pwd/prp-24-42.smt2":1},"gained":"round2 getoption_directories/prp-10-49 UNSAT","wrong_disagreement_error":0,"verdict":"No input reaches2/3 repeated differential losses, but predominantly resource-inconclusive: prp-18-43 times out on both binaries in every pair. No common solved pair and no successful candidate SAT row. Late printed answers remain timeouts, not solves. No model jobs needed for these outcomes. Original losses and all resources retained; final main-corpus limits still required.","audit":"tmp/n-way-lia-additional3-summary.json"},
      "replay_release_batch5": "Dry scan found6 eligible pending replay tasks; fresh apply verified/released10 as more source shards completed. Same helper, hashes and unchanged limits; logs tmp/n-way-replay-release-QF_LIA-batch5{-dry,}.jsonl. No new timing/reference runs.",
      "lia_additional3_submission": {"job":"140442","command":"ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --array=0-2%3 --hint=nomultithread --exclude=node-01,node-02,amd-1,amd-2,dgx-2,dgx-3,dgx-4,dgx-5,gpu-1,gpu-2,gpu-3,gpu-4 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_COMPARE_SHARDS=3,PRIMO_COMPARE_OUT_ROOT=/home/janotmik/primo-model-fix/results/n-way-2413397/loss-reruns/QF_LIA-additional3,PRIMO_COMPARE_ROOT=/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_LIA,PRIMO_COMPARE_MANIFEST=/home/janotmik/primo-model-fix/benchmarks/component-migration-qf-lia-additional-losses-3.txt,PRIMO_BASELINE_SOLVER=/home/janotmik/primo-model-fix/results/full-revalidation-287b743/bin/primo,PRIMO_CANDIDATE_SOLVER=/home/janotmik/primo-model-fix/results/n-way-2413397/bin/primo,PRIMO_BASELINE_GIT=287b743,PRIMO_EXPECTED_GIT=2413397,PRIMO_COMPARE_TIMEOUT=60 scripts/slurm_component_loss_rerun.sbatch'","artifact":"results/n-way-2413397/loss-reruns/QF_LIA-additional3","state":"submitted","note":"Three inputs, exactly three paired60s reruns each, same-node reversed ordering and unchanged frozen binaries/options. Fresh preflight tmp/n-way-lia-additional3-preflight.log; manifest605b049. No references run."},
      "lia_observed6_models_completed": "Jobs140376,140394,140398 validate all10 successful candidate SAT rerun rows:3+3+4 direct Dolmen passes,10 complete coverage files, unchanged input/binary hashes. All18 timing rows per arm remain retained, including4 candidate timeouts; no SAT-model jobs allocated for UNSAT or timed-out rows.",
      "replay_release_batch4": "Dry scan found19 pending eligible LIA replay tasks; fresh apply released9 still eligible pending tasks, others had progressed naturally. Same verified helper and unchanged job limits. Logs tmp/n-way-replay-release-QF_LIA-batch4{-dry,}.jsonl; no timing/reference reruns.",
      "lia_additional3_loss_snapshot": "Later durable rows reveal three additional losses, excluded from the live six-input manifest: round0 checkpass_pwd/prp-24-42 SAT58.414888s and getoption_directories/prp-10-49 UNSAT57.039937s; round1 checkpass_pwd/prp-18-43 SAT59.361697s. Candidate exceeds60s on all three (prp-18-43 prints sat after deadline and remains timeout). New immutable manifest benchmarks/component-migration-qf-lia-additional-losses-3.txt; exactly three paired follow-ups required, not a whole-corpus rerun.",
      "lia_loss_model_submissions": [{"round":0,"job":"140376","command":"ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-model-lia-loss-0 --array=0-2%3 --nodes=1 --ntasks=1 --nodelist=node-02 --time=00:05:00 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-2413397/loss-reruns/QF_LIA-observed6/round-0/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'"},{"round":1,"job":"140394","command":"ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-model-lia-loss-1 --array=0-2%3 --nodes=1 --ntasks=1 --nodelist=node-02 --time=00:05:00 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-2413397/loss-reruns/QF_LIA-observed6/round-1/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'"},{"round":2,"job":"140398","command":"ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-model-lia-loss-2 --array=0-2,4%4 --nodes=1 --ntasks=1 --nodelist=node-02 --time=00:05:00 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-2413397/loss-reruns/QF_LIA-observed6/round-2/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'"}],
      "lia_observed6_rerun_completed": {"job":"140274","artifact":"results/n-way-2413397/loss-reruns/QF_LIA-observed6","baseline":"14/18 solved:9 SAT,5 UNSAT,4 timeout","candidate":"14/18 solved:10 SAT,4 UNSAT,4 timeout","loss_counts":{"nec-smt/large/checkpass_pwd/prp-48-43.smt2":1},"gained":"round2 prp-43-42 SAT","wrong_disagreement_error":0,"verdict":"Exactly three pairs per input; no input reaches2/3 repeated losses. The four candidate timeouts remain explicit, including one timeout row that printed sat but missed the deadline and is not a solved SAT row. Separate replay required for10 successful candidate SAT rows. Main corpus still running; additional losses remain possible.","audit":"tmp/n-way-lia-loss-summary.json"},
      "lra_preservation_completed": {
        "timing_job": "138208", "model_jobs": ["138279", "138290"], "loss_jobs": ["139704", "140171"], "loss_model_jobs": ["139787", "139793"],
        "artifact": "results/n-way-2413397/preservation-v2/QF_LRA",
        "models": "1864/1864 candidate SAT rows direct Dolmen PASS (931+933);128 complete coverage files, unchanged input/binary hashes. Two additional SAT follow-up rows also pass.",
        "loss_followups": "Exactly three paired reruns for each of four original lost inputs. Labyrinth and Canberra each lose once, Gulwani zero times. Additional Collatz job140171 has both binaries time out in all three pairs: no repeated differential loss, but no reproduced decisive answer either. Preserve all resource outcomes; no pointless model jobs for Collatz. Audit tmp/n-way-lra-additional-loss-summary.json.",
        "reference_join": "After collecting all eight existing cvc5 artifact shards (no solver execution), rounds0/1 have1412/1415 decisive reference agreements,220/211 candidate unsolved and121/127 no-decisive-reference rows. Both recorded references timed out on every gap. Gap SAT counts74/75 are independently model-validated; gap UNSAT counts47/52 all agree with declared status but lack decisive reference corroboration. Two SAT inputs per round lack declared status and are covered by Dolmen. Two round0 UNSAT gains also lack a decisive frozen-baseline answer; do not describe all gaps as baseline-confirmed. Hash-joined details in tmp/n-way-preservation-QF_LRA-reference-{0,1}.json, reproducible with scripts/join_recorded_reference_answers.py.",
        "family_caveats": "Common runtime DTP-Scheduling+1.87%,sc+1.30%,tiny check+1.09%; other families within1% or faster. LassoRanker+0.12%,2019-ezsmt-0.57%. Limits apply per logic, not per family; these are not hidden as uniform speedups.",
        "verdict": "Per-logic PAR2+0.112% and common runtime+0.089% meet1% bounds. No input loses in at least two of three paired follow-ups; every candidate SAT model validated. Accepted preservation evidence with explicit recorded-reference timeout limitations, not universal independent UNSAT confirmation. Raw original four losses and three gains remain in the timing artifact."
      },
      "replay_release_batch3": "Read-only scan verified86 pending LIA replay tasks; fresh --release verification released86. Same committed helper, frozen hashes and budgets, unchanged job throttles. Logs tmp/n-way-replay-release-QF_LIA-batch3{-dry,}.jsonl. No timing/reference reruns or source sync.",
      "lia_loss_submission": {"job":"140274","command":"ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --array=0-5%4 --hint=nomultithread --exclude=node-01,node-02,amd-1,amd-2,dgx-2,dgx-3,dgx-4,dgx-5,gpu-1,gpu-2,gpu-3,gpu-4 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_COMPARE_SHARDS=6,PRIMO_COMPARE_OUT_ROOT=/home/janotmik/primo-model-fix/results/n-way-2413397/loss-reruns/QF_LIA-observed6,PRIMO_COMPARE_ROOT=/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_LIA,PRIMO_COMPARE_MANIFEST=/home/janotmik/primo-model-fix/benchmarks/component-migration-qf-lia-observed-losses-6.txt,PRIMO_BASELINE_SOLVER=/home/janotmik/primo-model-fix/results/full-revalidation-287b743/bin/primo,PRIMO_CANDIDATE_SOLVER=/home/janotmik/primo-model-fix/results/n-way-2413397/bin/primo,PRIMO_BASELINE_GIT=287b743,PRIMO_EXPECTED_GIT=2413397,PRIMO_COMPARE_TIMEOUT=60 scripts/slurm_component_loss_rerun.sbatch'","state":"submitted","artifact":"results/n-way-2413397/loss-reruns/QF_LIA-observed6","manifest":"benchmarks/component-migration-qf-lia-observed-losses-6.txt","note":"Six immutable observed losses; exactly three paired reruns per input, concurrency four. Fresh preflight tmp/n-way-lia-loss-preflight.log. SAT outcomes require separate direct Dolmen replay."},
      "final_local_check": "Fresh make check passed:29 CTest tests and128 Python tests; tmp/n-way-final-check.log. No solver source changes since frozen2413397.",
      "documentation_critic": "Reviewed migration surface against75d5177 (branch merge base with main4090250) and current code/evidence. High stale claims fixed: model-interpretation.md said current QF_UFLIA still called build_typed_model, while component_solver.cpp calls assemble_component_model; modular-theory-combination.md still called overlapping N-way scopes future work, while TheoryCombinationPlan and3/4-component production-driver tests implement them. Marked legacy ModelBasedCombinationCoordinator/IncrementalTheorySolver descriptions explicitly and synchronized architecture.md. The earlier model-redesign evidence is now clearly historical for the new adapter. No full-qualification claim while LIA and final LRA follow-up/model gates remain open. git diff2413397 over src,CMakeLists.txt,tests/unit is empty: current solver sources match the frozen evaluated candidate.",
      "lra_additional_loss_submission": {"job":"140171","command":"ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --hint=nomultithread --exclude=node-01,node-02,amd-1,amd-2,dgx-2,dgx-3,dgx-4,dgx-5,gpu-1,gpu-2,gpu-3,gpu-4 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_COMPARE_SHARDS=1,PRIMO_COMPARE_OUT_ROOT=/home/janotmik/primo-model-fix/results/n-way-2413397/loss-reruns/QF_LRA-additional1,PRIMO_COMPARE_ROOT=/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_LRA,PRIMO_COMPARE_MANIFEST=/home/janotmik/primo-model-fix/benchmarks/component-migration-qf-lra-additional-loss-1.txt,PRIMO_BASELINE_SOLVER=/home/janotmik/primo-model-fix/results/full-revalidation-287b743/bin/primo,PRIMO_CANDIDATE_SOLVER=/home/janotmik/primo-model-fix/results/n-way-2413397/bin/primo,PRIMO_BASELINE_GIT=287b743,PRIMO_EXPECTED_GIT=2413397,PRIMO_COMPARE_TIMEOUT=60 scripts/slurm_component_loss_rerun.sbatch'","state":"submitted","artifact":"results/n-way-2413397/loss-reruns/QF_LRA-additional1","note":"Only additional Collatz input, baseline UNSAT57.219294s vs candidate timeout in round0. Exactly3 pairs60s; fresh preflight, frozen hashes, existing single-node loss-rerun script. Manifest committed3bab269."},
      "lia_observed_loss_snapshot": "Six observed losses, all candidate60s timeout in nec-smt/large/checkpass_pwd: round0 prp-29-41 SAT58.818376s, prp-30-41 SAT59.234517s, prp-48-43 UNSAT59.700585s; round1 prp-13-42 SAT58.631829s, prp-41-42 UNSAT59.126281s, prp-43-42 SAT57.214787s. Snapshot compares matching durable rows only and does not claim final corpus coverage. Frozen six-input manifest benchmarks/component-migration-qf-lia-observed-losses-6.txt prepares3-pair follow-ups; later losses will be added separately, never by editing a live manifest.",
      "lra_full_timing_completed": {"job": "138208", "artifact": "results/n-way-2413397/preservation-v2/QF_LRA", "combined_baseline": {"rows": 3506,"solved": 3076,"sat": 1864,"unsat": 1212,"timeout": 430}, "combined_candidate": {"rows": 3506,"solved": 3075,"sat": 1864,"unsat": 1211,"timeout": 431}, "combined_par2": [65618.207733,65691.574681], "par2_ratio": 1.0011180882644422, "combined_common_seconds": [13786.055975,13798.351002], "common_runtime_ratio": 1.0008918451384716, "wrong_error_unsupported_disagreement": 0, "lost_executions": 4, "gained_executions": 3, "verdict": "Aggregate1% limits pass; three observed losses already have no repeated-loss threshold violation, one additional Collatz loss still needs3 pairs. All candidate SAT validation and final reference join remain required. No headline completion claim yet.", "audit": "tmp/n-way-preservation-QF_LRA-summary.json", "additional_manifest": "benchmarks/component-migration-qf-lra-additional-loss-1.txt"},
      "replay_release_batch2": "Second read-only scan found192 additional eligible LIA replay tasks; fresh --release checks found200 and released all200, within unchanged limits. LRA scan/release had0 eligible tasks and made no changes. Logs tmp/n-way-replay-release-QF_{LIA,LRA}-batch2{,-dry}.jsonl, same committed helper and exact commands as batch1 except fresh log filenames. No timing or reference run repeated.",
      "lra_observed3_models_completed": "Jobs139787/139793 validate the only two candidate SAT rows (Labyrinth shard0, rounds0 and2). Both direct Dolmen PASS; complete coverage and unchanged hashes. Other rerun rows are UNSAT or explicit timeout, not missing SAT-model checks. No model jobs were allocated for the UNSAT cases or the timeout-only round1.",
      "lra_observed3_rerun_completed": {"job": "139704", "artifact": "results/n-way-2413397/loss-reruns/QF_LRA-observed3", "baseline": "9/9 solved:3 SAT,6 UNSAT", "candidate": "7/9 solved:2 SAT,5 UNSAT,2 timeout", "losses_per_input": {"Labyrinth0165": 1,"Canberra7-phase": 1,"GulwaniJainKoskinen5-phase": 0}, "wrong_disagreement_error": 0, "verdict": "No input reaches2/3 repeated losses. Preserve the two candidate timeout outcomes; not all rerun pairs pass. Full-corpus aggregate criteria and additional later-discovered losses remain separate.", "audit": "tmp/n-way-lra-loss-summary.json; summarize_component_pairs.py --loss-reruns --expected-count 3", "additional_loss": "Final round0 collection also finds LassoRanker/Ultimate/Collatz.bpl_Iteration1_Loop_5-phaseTemplate.smt2. It was not in the earlier completed-row snapshot; collect all additional losses from final round1 before another focused manifest."},
      "lra_loss_model_jobs": [{"round":0,"job":"139787","command":"ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-model-lra-loss-0 --array=0 --nodes=1 --ntasks=1 --nodelist=node-02 --time=00:05:00 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-2413397/loss-reruns/QF_LRA-observed3/round-0/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'"},{"round":2,"job":"139793","command":"ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-model-lra-loss-2 --array=0 --nodes=1 --ntasks=1 --nodelist=node-02 --time=00:05:00 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-2413397/loss-reruns/QF_LRA-observed3/round-2/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'"}],
      "lra_loss_rerun_submission": {"job":"139704","command":"ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --array=0-2%3 --hint=nomultithread --exclude=node-01,node-02,amd-1,amd-2,dgx-2,dgx-3,dgx-4,dgx-5,gpu-1,gpu-2,gpu-3,gpu-4 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_COMPARE_SHARDS=3,PRIMO_COMPARE_OUT_ROOT=/home/janotmik/primo-model-fix/results/n-way-2413397/loss-reruns/QF_LRA-observed3,PRIMO_COMPARE_ROOT=/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_LRA,PRIMO_COMPARE_MANIFEST=/home/janotmik/primo-model-fix/benchmarks/component-migration-qf-lra-observed-losses-3.txt,PRIMO_BASELINE_SOLVER=/home/janotmik/primo-model-fix/results/full-revalidation-287b743/bin/primo,PRIMO_CANDIDATE_SOLVER=/home/janotmik/primo-model-fix/results/n-way-2413397/bin/primo,PRIMO_BASELINE_GIT=287b743,PRIMO_EXPECTED_GIT=2413397,PRIMO_COMPARE_TIMEOUT=60 scripts/slurm_component_loss_rerun.sbatch'","state":"submitted","artifact":"results/n-way-2413397/loss-reruns/QF_LRA-observed3","manifest":"benchmarks/component-migration-qf-lra-observed-losses-3.txt","note":"Three shards, one input each, concurrency3; exactly3 pairs per input,60s,10-minute task cap, same frozen binaries and defaultquiet/stats. Fresh preflight including Dolmen. Only new manifest copied; batch script unchanged at3c86592. Labyrinth baseline SAT, two LassoRanker baselines UNSAT; candidate SAT rerun rows require separate replay after timing."},
      "lra_observed_loss_followup": "Three observed completed-row losses trigger the same three-pair procedure before the full LRA array finishes: round0 LassoRanker/SV-COMP/GulwaniJainKoskinen-2009PLDI-Fig1_true-termination.c_Iteration1_Lasso_5-phaseTemplate.smt2 baseline57.461944s; round0 LassoRanker/Ultimate/Canberra.bpl_Iteration1_Lasso_7-phaseTemplate.smt2 baseline58.285775s; round1 2019-ezsmt/Labyrinth/SCC_Strong/0165-labyrinth-13-0.smt2 baseline59.184745s. Candidate timed out60s. Frozen manifest benchmarks/component-migration-qf-lra-observed-losses-3.txt, one input per shard; any further loss found on full collection requires its own follow-up rather than editing a manifest being read by running jobs.",
      "replay_release_commands": {"QF_LIA":"ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && python3 - --root results/n-way-2413397/preservation-v2/QF_LIA --timing-job 138134 --replay-job 138232 --replay-job 138245 --baseline-sha256 5a671d47882f555f3522c92b7b6c05a76c3bbdfde6ec2cb714b69e76c519b3f7 --candidate-sha256 962fd9a208a3b3537b8100df34286b930f038192dfa9fb4be7b00ada98ef72c7 --release' < scripts/slurm_release_completed_replays.py > tmp/n-way-replay-release-QF_LIA-applied.jsonl","QF_LRA":"ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && python3 - --root results/n-way-2413397/preservation-v2/QF_LRA --timing-job 138208 --replay-job 138279 --replay-job 138290 --baseline-sha256 5a671d47882f555f3522c92b7b6c05a76c3bbdfde6ec2cb714b69e76c519b3f7 --candidate-sha256 962fd9a208a3b3537b8100df34286b930f038192dfa9fb4be7b00ada98ef72c7 --release' < scripts/slurm_release_completed_replays.py > tmp/n-way-replay-release-QF_LRA-applied.jsonl"},
      "verified_replay_releases": "Helper commit2a67f47 executed remotely from reviewed local stdin (no workspace source synchronization/rebuild). QF_LIA dry-run279 eligible tasks; the subsequent fresh --release verification found295 and released exactly295 pending tasks across138232/138245. QF_LRA dry-run8 eligible, followed by --release for138279/138290. Parameters: --root results/n-way-2413397/preservation-v2/LOGIC --timing-job138134(LIA) or138208(LRA), corresponding --replay-job IDs, exact frozen baseline/candidate SHA256s; default60s and --quiet --stats. Logs tmp/n-way-replay-release-QF_{LIA,LRA}-{dry,applied}.jsonl. squeue confirmed8+8 LIA replay tasks running only on node-02 after release, within unchanged12G/task limits. Timing jobs, still-running source indices, binary identities and reference records unchanged.",
      "stronger_provenance_reaudit": "After adding cross-round input-hash/options validation, reran the read-only pair auditor on sample20, watchlist4, full659, QF_UFLRA and QF_UF. All provenance checks pass; first four timing gates pass and QF_UF retains its original lost row, independently resolved by3-pair audit. Fresh local reports tmp/n-way-stronger-audit-{sample20,watchlist4,full659,QF_UFLRA,QF_UF}.json. No benchmark or reference run repeated.",
      "replay_release_verification": "All128 Python tests, make lint, make docs and diff checks pass; tmp/n-way-replay-release-{tests,lint,docs}.log. Initial lint caught the new Python entry point missing its executable bit, corrected before use/commit. Pilot138232_30 completed0:0 after verified dependency release. New helper dry run is read-only; release remains explicit. C++ and benchmark binaries are untouched; no need to repeat solver fuzzing for this scheduler-only operation.",
      "stale_replay_dependency_diagnostic": "sacct reports138134_30 and138134_100 COMPLETED0:0, while scontrol shows138232_30 PENDING Reason=Dependency with aftercorr:138134_*(unfulfilled). There were146 completed timing tasks but only33 completed round0 replay tasks and no active replay on node-02. Verified all four shard30 provenance/CSV files, exact frozen binary hashes, unchanged inputs,60s/options and successful source accounting; cleared Dependency only for138232_30 as a pilot. New dry-run-first scripts/slurm_release_completed_replays.py automates only this verified release, with tests for failed/running sources, incomplete/mismatched artifacts, wrong run/binary/input identity, budgets/options and row coverage. No source rebuild or new job required.",
      "uf_loss_resolved": {"job": "139188_0", "state": "COMPLETED 00:05:18", "artifact": "results/n-way-2413397/loss-reruns/QF_UF", "baseline_seconds": [51.087665,53.151651,52.490883], "candidate_seconds": [51.201729,52.334974,54.905401], "outcomes": "All6 runs UNSAT, exit0, no timeout/wrong/disagreement;0/3 repeated losses. Matches hashed recorded Z3 UNSAT8.899249s. No SAT produced, so no unnecessary model replay job.", "audit": "python3 scripts/summarize_component_pairs.py results/n-way-2413397/loss-reruns/QF_UF --expected-count 1 --loss-reruns; tmp/n-way-uf-loss-summary.json reports no-repeated-loss", "qualification": "QF_UF full-corpus1% aggregate limits pass and its only original lost solve does not recur in3 pairs. Focused common runtime+1.09% is diagnostic, not a replacement for the full-corpus aggregate criterion. Keep original gained/lost rows immutable; no claim that every family or input is faster."},
      "loss_auditor_verification": "summarize_component_pairs.py --loss-reruns validates exactly3 pairs and reports per-input losses with threshold2. Tests cover0/1/2 losses, missing third round, process errors, both arms changing input hashes, and both arms changing profile options between rounds. Cross-round hash/options checks also strengthen the ordinary2-round auditor. All126 Python tests, lint, docs and diff checks pass; logs tmp/n-way-loss-audit-{tests,lint,docs}.log. No C++ change; whole-tree static/ASan evidence remains applicable. No new reference solver was executed.",
      "uf_full_completed_pending_loss_triage": {
        "timing_job": "138199", "model_jobs": ["138257", "138268"], "state": "all384 array tasks complete; focused loss rerun pending",
        "artifact": "results/n-way-2413397/preservation-v2/QF_UF",
        "baseline_solved_per_round": [7494, 7496], "candidate_solved_per_round": [7495, 7495],
        "combined_baseline_and_candidate": {"rows": 15006, "solved": 14990, "sat": 6284, "unsat": 8706, "timeout": 16},
        "combined_par2": [9665.593199, 9706.352955], "par2_ratio": 1.0042169947731936,
        "combined_common_seconds": [7689.734998, 7726.823838], "common_runtime_ratio": 1.004823162307888,
        "wrong_error_unsupported_disagreement": 0,
        "lost": "round1 PEQ/PEQ002_size8.smt2", "gained": "round0 QG-classification/qg7/iso_icl_nogen_sk001.smt2",
        "family_common_ratios": {"Goel": 1.0077742673189733, "NEQ": 0.9858856680406406, "PEQ": 1.0450082651560757, "QG": 1.0017612336073825, "SEQ": 1.0446218076864529},
        "models": "6284/6284 SAT rows direct Dolmen PASS,256 complete coverages and unchanged hashes; fully_validated asserted for both rounds.",
        "reference_join": "Both rounds7485 decisive agreements,8 candidate unsolved,10 no-decisive-reference. The10 are all UNSAT matching recorded Primo and declared status; both recorded reference runs timed out at60s on every one. No reference rerun or relabeling as decisive evidence.",
        "reference_timeout_inputs": ["PEQ/PEQ004_size8.smt2", "PEQ/PEQ004_size9.smt2", "NEQ/NEQ048_size8.smt2", "PEQ/PEQ014_size11.smt2", "PEQ/PEQ016_size6.smt2", "NEQ/NEQ048_size9.smt2", "PEQ/PEQ016_size7.smt2", "SEQ/SEQ010_size8.smt2", "SEQ/SEQ026_size7.smt2", "SEQ/SEQ038_size8.smt2"],
        "verdict": "Aggregate1% limits pass, but raw timing verdict remains needs-triage until3-pair lost-solve follow-up. Family PEQ/SEQ common runtimes regress about4.5%, disclosed; no universal speedup claim.",
        "audits": "tmp/n-way-preservation-QF_UF-summary.json; tmp/n-way-preservation-QF_UF-reference-{0,1}.json."
      },
      "uf_loss_rerun_submission": {"job":"139188","state":"running","node":"node-07","artifact":"results/n-way-2413397/loss-reruns/QF_UF","command":"ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --hint=nomultithread --exclude=node-01,node-02,amd-1,amd-2,dgx-2,dgx-3,dgx-4,dgx-5,gpu-1,gpu-2,gpu-3,gpu-4 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_COMPARE_SHARDS=1,PRIMO_COMPARE_OUT_ROOT=/home/janotmik/primo-model-fix/results/n-way-2413397/loss-reruns/QF_UF,PRIMO_COMPARE_ROOT=/home/janotmik/primo-cadical-profile/tmp/QF_UF,PRIMO_COMPARE_MANIFEST=/home/janotmik/primo-model-fix/benchmarks/component-migration-qf-uf-lost-1.txt,PRIMO_BASELINE_SOLVER=/home/janotmik/primo-model-fix/results/full-revalidation-287b743/bin/primo,PRIMO_CANDIDATE_SOLVER=/home/janotmik/primo-model-fix/results/n-way-2413397/bin/primo,PRIMO_BASELINE_GIT=287b743,PRIMO_EXPECTED_GIT=2413397,PRIMO_COMPARE_TIMEOUT=60 scripts/slurm_component_loss_rerun.sbatch'","harness_commit":"3c86592","solver_commit":"2413397","baseline_commit":"287b743","note":"Only newly generated batch script and one-input manifest copied; active job scripts and solver binaries untouched. Fresh preflight; allocation verified one node/task,2 logical CPUs to avoid SMT sibling sharing. Exactly3 paired60s repetitions. No reference solver. Any SAT replay will remain separate."},
      "loss_rerun_harness": "scripts/slurm_component_loss_rerun.sbatch requires an explicit manifest and performs exactly three alternating baseline/candidate pairs with unchanged budgets/options. Python regression executes the shell against a recording harness and checks all6 invocations, arm order, revisions, budgets, profile forwarding and output paths. All125 Python tests, lint, docs, sbatch validator/bash -n and diff checks pass; logs tmp/n-way-loss-rerun-{tests,lint,docs}.log. C++ and active job scripts are untouched. Prepared manifest benchmarks/component-migration-qf-uf-lost-1.txt contains PEQ/PEQ002_size8.smt2: baseline round0 timed out, round1 UNSAT55.858201s; candidate timed out in round1. This triggers the prescribed3-pair check, not a wrong-answer finding.",
      "single_node_allocation_probe": "After fresh preflight, sbatch --test-only --array=0 --nodes=1 --ntasks=1 --nodelist=node-03,node-04 scripts/slurm_component_migration_compare.sbatch returned a hypothetical allocation using2 logical processors on node-04 only. The explicit bound selects one listed node rather than rejecting the argument combination; documentation corrected accordingly. This was --test-only, no solver job or benchmark run was submitted (printed hypothetical139049).",
      "uflra_completed": {
        "timing_job": "138217", "model_jobs": ["138309", "138336"], "state": "all192 array tasks completed",
        "artifact": "results/n-way-2413397/preservation-v2/QF_UFLRA",
        "rows_per_round": 1284, "baseline_and_candidate_per_round": {"solved": 1270, "sat": 759, "unsat": 511, "timeout": 14},
        "lost_gained_wrong_error_unsupported_disagreement": 0,
        "combined_par2": [4840.601122, 4851.360375], "par2_ratio": 1.0022227100991858,
        "combined_common_seconds": [1480.601122, 1491.360375], "common_runtime_ratio": 1.0072668140258236,
        "family_common_runtime_ratios": {"FFT": 1.0046424522075623, "cpachecker-bmc-svcomp14": 0.9996983817318369, "cpachecker-induction-svcomp14": 1.0078159357517937, "mathsat": 1.00284945714775},
        "models": "1518/1518 candidate SAT rows direct Dolmen PASS;128 complete coverage files, all input/binary hashes unchanged. Both rounds759 models. No resource replay failures.",
        "reference_join": "Both rounds1265 decisive recorded-reference agreements,14 candidate unsolved,5 recorded-reference timeouts. Five answers agree with declared status and frozen Primo baseline; two SAT answers independently model-validated. Three UNSAT answers have no decisive reference, explicitly inconclusive rather than relabeled as reference agreements. See named rows below.",
        "verdict": "Performance-preservation1% thresholds pass with no lost solve; all SAT models validated. Recorded-reference comparison retains5 known timeout limitations per round. No source edit to either frozen QF_UFLRA route and no reference rerun.",
        "audits": "tmp/n-way-preservation-QF_UFLRA-summary.json; tmp/n-way-preservation-QF_UFLRA-reference-{0,1}.json; scripts/summarize_model_campaign.py load_run fully_validated asserted for both rounds."
      },
      "uflra_reference_inconclusives": "Round0 has1265 hash-matched decisive reference agreements,14 candidate unsolved and5 no-decisive-reference rows. Both recorded Z3/cvc5 runs timed out at60s on all five; records and hashes are present, not lost artifacts. cpachecker-induction-svcomp14 Problem07_{00,10,50}_true are UNSAT; Problem07_60_false and Problem08_60_false are SAT. Candidate and frozen Primo baseline agree with each input's declared status. SAT rows remain subject to mandatory independent Dolmen replay; the three UNSAT rows are declared-status/baseline-supported, not independently reference-confirmed. No redundant rerun of known reference timeouts; retain the join's incomplete classification rather than claiming universal reference agreement.",
      "throttle_update": "After early rows showed no paired disagreements/invalid models, another sinfo/squeue inspection showed spare homogeneous CPU capacity. scontrol update JobId=138134 ArrayTaskThrottle=128 and JobId=138208 ArrayTaskThrottle=24. Same jobs, inputs, frozen binaries, per-task single-node/core allocations and timeout budgets; no additional runs or reference work. Maximum timing concurrency168 physical cores leaves capacity within node-03..09 (196 physical cores); node-02 stays reserved for validation. Initial commands below retain original64/8 throttles as submitted provenance.",
      "allocation_followup": "Both checked-in serial batch harnesses now declare --nodes=1 and --ntasks=1. A Python regression locks these directives. All124 Python tests, make lint, make docs, sbatch validator, bash -n and git diff --check pass; logs tmp/n-way-single-task-{tests,lint,docs}.log. Existing submitted jobs already carry equivalent CLI limits; solver binaries and running jobs are unchanged. Pre-commit code review: no blocking issue in the allocation-only change; whole-source static/ASan evidence remains valid for unchanged C++.",
      "date": "2026-09-08",
      "commit": "2413397",
      "baseline_commit": "287b743",
      "kind": "paired-cross-logic-preservation",
      "evidence_status": "current",
      "artifact": "results/n-way-2413397/preservation-v2",
      "environment": {
        "host": "CIIRC SLURM via requested SSH jump route",
        "timing_nodes": "node-03 through node-09; explicitly one node and one task per allocation, no SMT sibling sharing",
        "validation_node": "node-02",
        "timeout_seconds": 60,
        "rounds": 2,
        "solver_options": [
          "--quiet",
          "--stats"
        ],
        "baseline_sha256": "5a671d47882f555f3522c92b7b6c05a76c3bbdfde6ec2cb714b69e76c519b3f7",
        "candidate_sha256": "962fd9a208a3b3537b8100df34286b930f038192dfa9fb4be7b00ada98ef72c7"
      },
      "jobs": [
        {
          "logic": "QF_LIA",
          "shards": 512,
          "conc": 64,
          "root": "/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_LIA",
          "timing": "138134",
          "command": "ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-pres-QF_LIA --array=0-511%64 --time=02:15:00 --nodes=1 --ntasks=1 --hint=nomultithread --exclude=node-01,node-02,amd-1,amd-2,dgx-2,dgx-3,dgx-4,dgx-5,gpu-1,gpu-2,gpu-3,gpu-4 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_COMPARE_SHARDS=512,PRIMO_COMPARE_OUT_ROOT=/home/janotmik/primo-model-fix/results/n-way-2413397/preservation-v2/QF_LIA,PRIMO_COMPARE_ROOT=/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_LIA,PRIMO_BASELINE_SOLVER=/home/janotmik/primo-model-fix/results/full-revalidation-287b743/bin/primo,PRIMO_CANDIDATE_SOLVER=/home/janotmik/primo-model-fix/results/n-way-2413397/bin/primo,PRIMO_BASELINE_GIT=287b743,PRIMO_EXPECTED_GIT=2413397,PRIMO_COMPARE_TIMEOUT=60 scripts/slurm_component_migration_compare.sbatch'",
          "model_0": "138232",
          "model_command_0": "ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-model-QF_LIA-0 --array=0-511%8 --nodes=1 --ntasks=1 --nodelist=node-02 --dependency=aftercorr:138134 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-2413397/preservation-v2/QF_LIA/round-0/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'",
          "model_1": "138245",
          "model_command_1": "ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-model-QF_LIA-1 --array=0-511%8 --nodes=1 --ntasks=1 --nodelist=node-02 --dependency=aftercorr:138134 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-2413397/preservation-v2/QF_LIA/round-1/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'"
        },
        {
          "logic": "QF_UF",
          "shards": 128,
          "conc": 8,
          "root": "/home/janotmik/primo-cadical-profile/tmp/QF_UF",
          "timing": "138199",
          "command": "ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-pres-QF_UF --array=0-127%8 --time=02:15:00 --nodes=1 --ntasks=1 --hint=nomultithread --exclude=node-01,node-02,amd-1,amd-2,dgx-2,dgx-3,dgx-4,dgx-5,gpu-1,gpu-2,gpu-3,gpu-4 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_COMPARE_SHARDS=128,PRIMO_COMPARE_OUT_ROOT=/home/janotmik/primo-model-fix/results/n-way-2413397/preservation-v2/QF_UF,PRIMO_COMPARE_ROOT=/home/janotmik/primo-cadical-profile/tmp/QF_UF,PRIMO_BASELINE_SOLVER=/home/janotmik/primo-model-fix/results/full-revalidation-287b743/bin/primo,PRIMO_CANDIDATE_SOLVER=/home/janotmik/primo-model-fix/results/n-way-2413397/bin/primo,PRIMO_BASELINE_GIT=287b743,PRIMO_EXPECTED_GIT=2413397,PRIMO_COMPARE_TIMEOUT=60 scripts/slurm_component_migration_compare.sbatch'",
          "model_0": "138257",
          "model_command_0": "ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-model-QF_UF-0 --array=0-127%8 --nodes=1 --ntasks=1 --nodelist=node-02 --dependency=aftercorr:138199 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-2413397/preservation-v2/QF_UF/round-0/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'",
          "model_1": "138268",
          "model_command_1": "ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-model-QF_UF-1 --array=0-127%8 --nodes=1 --ntasks=1 --nodelist=node-02 --dependency=aftercorr:138199 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-2413397/preservation-v2/QF_UF/round-1/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'"
        },
        {
          "logic": "QF_LRA",
          "shards": 64,
          "conc": 8,
          "root": "/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_LRA",
          "timing": "138208",
          "command": "ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-pres-QF_LRA --array=0-63%8 --time=02:15:00 --nodes=1 --ntasks=1 --hint=nomultithread --exclude=node-01,node-02,amd-1,amd-2,dgx-2,dgx-3,dgx-4,dgx-5,gpu-1,gpu-2,gpu-3,gpu-4 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_COMPARE_SHARDS=64,PRIMO_COMPARE_OUT_ROOT=/home/janotmik/primo-model-fix/results/n-way-2413397/preservation-v2/QF_LRA,PRIMO_COMPARE_ROOT=/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_LRA,PRIMO_BASELINE_SOLVER=/home/janotmik/primo-model-fix/results/full-revalidation-287b743/bin/primo,PRIMO_CANDIDATE_SOLVER=/home/janotmik/primo-model-fix/results/n-way-2413397/bin/primo,PRIMO_BASELINE_GIT=287b743,PRIMO_EXPECTED_GIT=2413397,PRIMO_COMPARE_TIMEOUT=60 scripts/slurm_component_migration_compare.sbatch'",
          "model_0": "138279",
          "model_command_0": "ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-model-QF_LRA-0 --array=0-63%8 --nodes=1 --ntasks=1 --nodelist=node-02 --dependency=aftercorr:138208 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-2413397/preservation-v2/QF_LRA/round-0/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'",
          "model_1": "138290",
          "model_command_1": "ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-model-QF_LRA-1 --array=0-63%8 --nodes=1 --ntasks=1 --nodelist=node-02 --dependency=aftercorr:138208 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-2413397/preservation-v2/QF_LRA/round-1/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'"
        },
        {
          "logic": "QF_UFLRA",
          "shards": 64,
          "conc": 8,
          "root": "/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_UFLRA",
          "timing": "138217",
          "command": "ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-pres-QF_UFLRA --array=0-63%8 --time=02:15:00 --nodes=1 --ntasks=1 --hint=nomultithread --exclude=node-01,node-02,amd-1,amd-2,dgx-2,dgx-3,dgx-4,dgx-5,gpu-1,gpu-2,gpu-3,gpu-4 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_COMPARE_SHARDS=64,PRIMO_COMPARE_OUT_ROOT=/home/janotmik/primo-model-fix/results/n-way-2413397/preservation-v2/QF_UFLRA,PRIMO_COMPARE_ROOT=/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_UFLRA,PRIMO_BASELINE_SOLVER=/home/janotmik/primo-model-fix/results/full-revalidation-287b743/bin/primo,PRIMO_CANDIDATE_SOLVER=/home/janotmik/primo-model-fix/results/n-way-2413397/bin/primo,PRIMO_BASELINE_GIT=287b743,PRIMO_EXPECTED_GIT=2413397,PRIMO_COMPARE_TIMEOUT=60 scripts/slurm_component_migration_compare.sbatch'",
          "model_0": "138309",
          "model_command_0": "ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-model-QF_UFLRA-0 --array=0-63%8 --nodes=1 --ntasks=1 --nodelist=node-02 --dependency=aftercorr:138217 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-2413397/preservation-v2/QF_UFLRA/round-0/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'",
          "model_1": "138336",
          "model_command_1": "ssh -F tmp/primo-model-slurm-ssh-config primo-model-slurm 'cd /home/janotmik/primo-model-fix && sbatch --parsable --job-name=primo-model-QF_UFLRA-1 --array=0-63%8 --nodes=1 --ntasks=1 --nodelist=node-02 --dependency=aftercorr:138217 --export=ALL,PRIMO_WORKDIR=/home/janotmik/primo-model-fix,PRIMO_PHASE=replay,PRIMO_CAMPAIGN_OUT=/home/janotmik/primo-model-fix/results/n-way-2413397/preservation-v2/QF_UFLRA/round-1/candidate,PRIMO_MODEL_TIMEOUT=90,PRIMO_DOLMEN_TIMEOUT=30,PRIMO_DOLMEN_SIZE=8G scripts/slurm_real_corpus_validation.sbatch'"
        }
      ],
      "allocation_rationale": "Idle homogeneous CPU nodes checked immediately before submission. QF_LIA has 13306 inputs and dominates cost: 512 small shards with at most 64 concurrent one-core tasks; the other three logic arrays each cap at 8. Each timing task has 8G and 2h15m; maximum LIA shard 26 inputs permits four 60s arms within this bound. Replay arrays cap at 8 each, share node-02 with 12G per task, and start only after the corresponding timing shard completes both rounds. No reference solver is launched. Existing full659 is the QF_UFLIA preservation leg and is not rerun.",
      "rejected_submission": {
        "job": "138105",
        "artifact": "results/n-way-2413397/preservation/QF_LIA",
        "state": "cancelled immediately after allocation audit",
        "reason": "An eligibility list was incorrectly expressed with --nodelist, reserving all seven nodes per task. scontrol showed NumNodes=7/NumTasks=7. Cancelled all array tasks within the first minute; retained partial artifacts are rejected evidence. Replacement uses --nodes=1 --ntasks=1 and exclusion of non-timing nodes, with a fresh artifact directory and fresh preflight."
      },
      "acceptance": "Pending complete paired timing, lost-solve reruns if needed, hash-matched recorded-reference joins, and direct Dolmen replay of every candidate SAT row. No completed five-logic claim."
    },
    {
      "id": "2026-09-08-n-component-final-hygiene-candidate",
      "full659_completed": {
        "state": "paired timing and independent model/reference gates pass",
        "timing_job": "137972", "model_jobs": ["138009", "138010"],
        "artifact": "results/n-way-2413397/full659",
        "baseline_solved_per_round": [571, 571], "candidate_solved_per_round": [574, 575],
        "aggregate_baseline": {"rows": 1318, "solved": 1142, "sat": 806, "unsat": 336, "timeout": 176, "par2": 23309.092340},
        "aggregate_candidate": {"rows": 1318, "solved": 1149, "sat": 810, "unsat": 339, "timeout": 169, "par2": 22808.494721},
        "par2_ratio": 0.9785235044034323,
        "common_seconds": [2189.092340, 2139.664572], "common_runtime_ratio": 0.9774208848586077,
        "lost_wrong_error_unsupported_disagreement": 0,
        "model_coverage": "810/810 candidate SAT rows direct Dolmen PASS; 64/64 coverage files complete, unchanged binary/input hashes. Replay separate from timing, solver90s/Dolmen30s/8G.",
        "reference_join": "574 and 575 decisive answers agree with hash-matched recorded z3/cvc5. No reference solver launched.",
        "families": {"Certora": "common runtime +22.5924% (72.301020 -> 88.635538s), 8 -> 12 solved executions, PAR2 ratio0.98640988", "TwoSquares": "42 -> 42 solved executions, common runtime ratio0.99337614", "mathsat": "882 -> 882 solved executions, common runtime ratio0.97887804, PAR2 ratio0.99236109", "wisas": "210 -> 213 solved executions, common runtime ratio0.91838721, PAR2 ratio0.78709111"},
        "gains": "Both rounds: wisas/xs_22_42, Certora65782_cd31513fdcd15701933b_8 and39657_2866defdd1f2434b69ab_48; round1 additionally wisas/xs_23_43. Last gain is near-cutoff variation, not four robust gains.",
        "audits": "tmp/n-way-full659-summary.json; tmp/n-way-full659-reference-{0,1}.json; per-shard model-validation/coverage.json",
        "qualification": "Full QF_UFLIA acceptance passes aggregate1% limits with no lost-solve reruns needed. Certora common-solved regression disclosed, not a uniform speedup. Remaining four logic preservation gates are separate and pending; do not repeat659 as another suite leg. This final record supersedes preliminary and submitted statuses below."
      },
      "full659_round0_preliminary": {"timing_job": "137972", "state": "round0 complete; round1 and model replay pending", "baseline": "571/659 solved:403 SAT,168 UNSAT,88 timeout", "candidate": "574/659 solved:405 SAT,169 UNSAT,85 timeout", "errors_unsupported_wrong_disagreements_lost": 0, "par2": "11657.390364 -> 11444.011729 (ratio0.98169585)", "common_solved_seconds": "1097.390364 -> 1078.503509 (ratio0.98278930)", "gained": ["wisas/xs_22_42.smt2", "20230314-Jaroslav-Bendik-Certora/65782_cd31513fdcd15701933b_8_QF_UFLIA.smt2", "20230314-Jaroslav-Bendik-Certora/39657_2866defdd1f2434b69ab_48_QF_UFLIA.smt2"], "reference_join": "574 agree with hash-matched recorded z3/cvc5;85 candidate unsolved. tmp/n-way-full659-reference-0.json. No reference executable launched.", "limitation": "Not the final paired verdict. Both orderings and all selected SAT replays still required."},
      "full659_replay_dependency_update": {"jobs": ["138009", "138010"], "command": "scontrol update JobId=138009 Dependency=aftercorr:137972; same for 138010", "reason": "Replay each corresponding shard only after its own two baseline/candidate timing rounds complete, without waiting for the slowest other shard. Node-02 remains separate from timing nodes; matching 0-31 indices preserve provenance and coverage. scontrol confirmed aftercorr dependencies."},
      "mutation_supplement_completed": {"job": "138012_1", "artifact": "results/n-way-2413397/mutation-supplement/profile-14/task-1", "state": "finished-resource-incomplete", "mutants": 10, "answer_pass_unsat": 5, "answer_timeout": 5, "model_unsat": 5, "model_solver_timeout": 5, "original_seed_timeouts": 2, "wrong_answer": 0, "invalid_models": 0, "saved_bug_files": 0, "verdict": "Closes absent Certora mutation-family coverage for profile14, without counting timeout-only checks as passes. Across the main matrix and this supplement: 2817 retained mutants, 2453 decisive answer agreements,364 answer-resource rows; 1514 direct Dolmen SAT models,941 UNSAT model replays,362 solver-timeout model replays. No saved bug files in either main or supplement artifact tree."},
      "full659_jobs": {"timing": "137972", "candidate_model_round0": "138009", "candidate_model_round1": "138010", "state": "submitted", "artifact": "results/n-way-2413397/full659", "command": "slurm_component_migration_compare.sbatch array 0-31%32, 32 shards over all 659 QF_UFLIA files, --hint=nomultithread, eligible homogeneous CPU nodes excluding validation node-02/profiling node-04 and GPU/AMD nodes; retained 287b743/2413397 binaries, --quiet --stats, 60s cap, two reversed-order rounds. Separate replay arrays 0-31%16 on node-02, afterany:137972, 90s model/30s Dolmen/8G. Fresh preflight before each sbatch.", "acceptance": "No timing/model/reference verdict until all shards and joins complete. No reference solver launched by timing/replay jobs."},
      "option_mutation_completed": {"job": "137549", "state": "finished-resource-incomplete", "profiles_including_default": 16, "mutants": 2807, "answer_pass": 2448, "answer_resource_incomplete": 359, "direct_dolmen_sat_pass": 1514, "model_unsat": 936, "model_solver_timeout": 357, "wrong_answer": 0, "invalid_models": 0, "crash_parser_type_error": 0, "reference_disagreement": 0, "original_seed_rows": 128, "original_answers": "94 PASS,34 timeout", "original_models": "24 Dolmen PASS,70 UNSAT,34 timeout", "triage": "All 64 original/mutant answer/model summaries contain only decisive checks and explicit resources. Two answer-incomplete inputs in profile14 produced decisive validated models on replay; separate counts intentionally retained. Wall budgets caused partial iteration coverage in several nondefault profiles. Mutation filenames truncate TwoSquares input stems at the second dot, so do not infer its absence from full seed-stem matching.", "coverage_gap": "Profile14 (basic, model guidance off, online off) retained no Certora mutant before wall cap; supplement submitted. Other profiles retain mutants from every family. Bounded campaign/timeout rows are not unconditional passes."},
      "option_mutation_supplement": {"job": "138012_1", "state": "submitted", "artifact": "results/n-way-2413397/mutation-supplement/profile-14", "command": "slurm_typed_model_mutation_gate.sbatch array=1 (basic), PRIMO_EXTRA_SOLVER_ARGS='--no-qf-uflia-model-combination --no-qf-uflia-online-components'; only original Certora 65782_cd31513fdcd15701933b_6 and 72658_63104dadde9c6026353f_70 seeds copied from profile14 seed artifact to new seeds directory. Seeded OpFuzz 202609501, 5 iterations per seed, 120s mutation wall budget, 5s solver/Dolmen, resource-only continuation retaining final failure status. Node-02,4G; fresh preflight. Targets missing mutation-family coverage only."},
      "wisas_profile_completed": {"job": "137967", "state": "COMPLETED", "artifact": "results/n-way-2413397/profile-wisas40", "command": "Five gprof-instrumented --quiet --stats runs of wisas/xs_40_40.smt2; gprof -b -p and -b -q over five gmon.out files", "results": "3.39 sampled self seconds total. Rational multiplication 6.49%; UfliaLiaComponent::assign 6.19% (910275 calls, includes inlined execution work); euf_care_pair_diagnostics 4.42%; scope_for 1.77% (1644915 calls); tuple tree insertion 1.47% (1725530 calls); ComponentDispatcher::notify_assignment 1.77%. Full flat/call graph and source hashes retained.", "interpretation": "Existing arithmetic/EUF costs remain substantial. New routing and pair-validation/ordering are concrete optimization targets; candidate-only gprof does not attribute every sampled cycle to the regression. No optimization implemented or instrumented timing presented as a headline speedup."},
      "watchlist4_completed": {"timing_job": "137579", "model_jobs": ["137585", "137589"], "artifact": "results/n-way-2413397/watchlist4", "manifest": "benchmarks/qf_uflia-full-consensus-gap-profile-4.txt", "command": "Same paired 4-shard node-03 comparison as sample, 60s cap, two reversed-order rounds; separate node-02 model replays, 90s solver/30s Dolmen/8G. Fresh preflight before all submissions.", "results": "Both arms 4/4 solved each round, 3 SAT/1 UNSAT; zero timeout/error/unsupported/wrong/disagreement/lost solves. Combined seconds/PAR2 17.189551 -> 17.114484 (ratio 0.99563299). All 6/6 candidate SAT replay rows pass Dolmen; both rounds' 4 answers agree with hash-matched recorded z3/cvc5 records.", "families": "Common runtime ratios: Certora 0.99006, mathsat 0.93516, wisas 1.08930. Aggregate gate passes; repeated wisas regression requires profiling. Despite this historical manifest's name, these inputs are all solved by the retained baseline, not current timeouts.", "local_audits": "tmp/n-way-watchlist4-summary.json and tmp/n-way-watchlist4-reference-{0,1}.json"},
      "wisas_profile_job": {"id": "137967", "state": "submitted", "script": "scripts/slurm_component_profile.sbatch", "artifact": "results/n-way-2413397/profile-wisas40", "node": "node-04", "command": "Separate Release -pg -g -fno-omit-frame-pointer build, CMake git override 2413397-profile, 4 CPUs/8G; five capped runs of wisas/xs_40_40.smt2 with --quiet --stats, gprof flat and call graph. Matching C++ header snapshot; source hashes recorded. No retained binary changed.", "motivation": "Paired watchlist shows identical SAT decisions (51261), propagations (362574), and combination rounds (143), but reconciliation 275842 -> 344365us in round0. Growth timer 10633 -> 104821us is not directly comparable because new scope includes callback rebuild. Local perf stat -e cycles:u -- true failed: perf_event_paranoid=4. Profile before solver optimization; no profiler-based mechanism claim yet."},
      "sample20_completed": {"timing_job": "137558", "model_jobs": ["137562", "137563"], "artifact": "results/n-way-2413397/sample20", "command": "summarize_component_pairs.py results/n-way-2413397/sample20 --expected-count 20; join_recorded_reference_answers.py for each candidate round with recorded QF_UFLIA/z3 and QF_UFLIA/cvc5 roots", "results": "Each round: both arms 19/20 solved (9 SAT,10 UNSAT), 1 timeout, zero errors/unsupported/wrong/disagreements/lost solves. Across two rounds PAR2 253.200211 -> 253.209270 (ratio 1.00003578); common-solved seconds 13.200211 -> 13.209270 (ratio 1.00068628). Meets 1% aggregate gates. All 18/18 candidate SAT replay rows pass Dolmen; all eight coverage shards complete and inputs/binaries unchanged. Both rounds' 19 decisive answers agree with hash-matched recorded references; no new reference solver invoked.", "families": "Two-round common runtime ratios: Certora 0.97766, TwoSquares 0.99417, mathsat 0.99627, wisas 1.04890 (1.858306 -> 1.949177s). Family increase retained as a watch item; sample aggregate passes, no full-corpus claim.", "local_audits": "tmp/n-way-sample20-summary.json; tmp/n-way-sample20-reference-{0,1}.json", "verdict": "Advance to four-case watchlist, not full promotion."},
      "sample20_jobs": {"timing": "137558", "candidate_model_round0": "137562", "candidate_model_round1": "137563", "state": "submitted", "artifact": "results/n-way-2413397/sample20", "manifest": "benchmarks/qf_uflia-smtlib-representative-20.txt", "command": "slurm_component_migration_compare.sbatch array 0-3%4, 4 shards, pinned node-03, frozen baseline 287b743 and candidate 2413397, --quiet --stats, 60s cap, two rounds with reversed arm order. Separate slurm_real_corpus_validation.sbatch replay arrays 0-3%4 for each candidate round, afterany:137558, node-02, model timeout 90s, Dolmen timeout 30s, size 8G, --check-model and --expect-sat via replay driver.", "separation": "Timing node-03 is separate from option fuzz/model validation node-02. No reference solver launched by timing/replay jobs. Replays verify timing provenance and select every successful candidate SAT row; failed or missing timing shards cannot qualify.", "preflight": "Local sbatch validator/bash -n; fresh clean 2413397 --check-only --no-sync before each of three submissions, with Dolmen executable/version check for replay."},
      "default_mutation_completed": {"job": "137543_0", "state": "finished-resource-incomplete", "artifact": "results/n-way-2413397/mutation-resource/profile-0/task-3", "seeds": "8/8 processed, all four families, zero rejected seeds", "mutants": 718, "answer_pass": 700, "answer_timeout_incomplete": 18, "dolmen_sat_pass": 476, "unsat": 224, "model_solver_timeout": 18, "wrong_answer": 0, "invalid_model": 0, "crash_parser_type_error": 0, "reference_disagreement": 0, "saved_bug_files": 0, "triage": "Both final answer and model CSVs pass the resource-only classifier. Original seed check retains 7 PASS plus one known baseline timeout; original models 2 Dolmen PASS, 5 UNSAT, 1 timeout. Incomplete rows are not passes; no unclassified correctness failure remains."},
      "option_mutation_job": {"id": "137549", "state": "submitted", "array": "1-15%8", "driver_commit": "70c79d9", "candidate_commit": "2413397", "artifact": "results/n-way-2413397/mutation-resource/profile-{1..15}", "command": "Same resource-collecting gate, explicit PRIMO_MUTATION_ITERATIONS=20, PRIMO_MUTATION_SECONDS=180, PRIMO_MUTATION_SEED_TIMEOUT=5, solver and Dolmen 5s. Modes auto/off/basic/strong x no-model/no-online bits, excluding completed default. OpFuzz seed 202609500+mode-task, all eight real seeds retained; exact profile forwarded through answers and independent models. Fresh preflight before sbatch; no reference-corpus sweep."},
      "generated_completed_results": {"job": "137478", "answer_shards": 64, "model_shards": 64, "inputs": 18000, "pass": 17996, "unknown": 3, "timeout": 1, "wrong_answers": 0, "crashes": 0, "parser_type_errors": 0, "reference_disagreements": 0, "dolmen_sat_pass": 9134, "unsat": 8862, "invalid_models": 0, "regression_checks": "96/96 PASS", "default_profile": "3000/3000 answer PASS, 1474 direct Dolmen SAT passes, 1526 UNSAT", "triage": "Same four resource outcomes as 4c8341c campaign, same files/profiles and unchanged solver operations. Not counted as passes. Strict aggregate incomplete; no correctness failures."},
      "resource_collection_job": {"id": "137543_0", "state": "submitted", "driver_commit": "70c79d9", "candidate_commit": "2413397", "artifact": "results/n-way-2413397/mutation-resource/profile-0", "command": "Same seeded OpFuzz gate as 137487, but PRIMO_MUTATION_SEED_TIMEOUT=5 and explicit PRIMO_MUTATION_COLLECT_RESOURCES=1. Exact 70c79d9 harness files copied to remote scripts after prior jobs ended; no solver binary changed. Seed 202609503, 100 iterations/seed, 600s mutation wall cap, 5s solver/Dolmen. Original and mutant comparisons plus direct Dolmen models; failed resource statuses retained. Preflight before sbatch confirmed frozen candidate and reference tools."},
      "date": "2026-09-08",
      "kind": "architecture-migration-qualification",
      "commit": "2413397",
      "parent_evidence": ["2026-09-08-n-component-migration", "2026-09-08-n-component-mutation-harness-triage"],
      "evidence_status": "in-progress-not-qualified",
      "scope": "Include-only solver cleanup after e042e92/4c8341c, direct plan exception header, corrected OpFuzz qualification harness. No solver operation, schedule or default changed by this milestone.",
      "environment": "CIIRC SLURM via ssh -J janotmik@data.ciirc.cvut.cz janotmik@10.35.125.63; /home/janotmik/primo-model-fix; GCC 11.4.1 with matching preprovisioned C++ header snapshot",
      "candidate": {"binary": "/home/janotmik/primo-model-fix/results/n-way-2413397/bin/primo", "sha256": "962fd9a208a3b3537b8100df34286b930f038192dfa9fb4be7b00ada98ef72c7", "version": "primo 0.1.0; git 2413397; Release, no sanitizers; cadical-3.0.0-7b99c07", "build_job": "137477", "build_command": "slurm_prepare_benchmark_workspace.py --local-dir /workspace --ssh-config tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --reuse-dependencies --build-via-slurm --jobs 4 --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --cxx-header-manifest /home/janotmik/primo-cadical-profile/contrib/local/clang-tools-env/cxx-headers/include-paths.txt", "build_state": "COMPLETED", "build_log": "tmp/n-way-prepare-2413397.log", "build_warning": "Shared filesystem clock skew warnings on fresh build, all targets/version/preflight pass; no stale incremental objects reused."},
      "baseline": {"commit": "287b743", "binary": "/home/janotmik/primo-model-fix/results/full-revalidation-287b743/bin/primo", "sha256": "5a671d47882f555f3522c92b7b6c05a76c3bbdfde6ec2cb714b69e76c519b3f7", "verified_unchanged": true},
      "verification": "make check: 29/29 CTest, 115/115 Python; make asan-test: 29/29, 52.73s; make lint/docs and sbatch validator/bash -n pass. Whole-source static/advisory review is recorded in parent triage; include cleanup rebuilt/tested. Efficiency snapshot finds no new hot-path operation in cleanup. Logs tmp/n-way-hygiene-{check,asan,lint,docs}.log and tmp/n-way-hygiene-efficiency.txt.",
      "jobs": {
        "137478": {"state": "submitted", "script": "scripts/slurm_component_migration_fuzz.sbatch", "array": "0-63%8", "artifact": "results/n-way-2413397/generated", "command": "Same 18000-case, 16-profile generated gate as parent migration entry; seed base 202609080, mixed depth 3, solver/reference/Dolmen 5s, explicit Dolmen size 1G, strict original regression seeds, exact candidate git check. Reference z3 (5.1.0) for newly generated inputs, not corpus reference sweeps."},
        "137487_0": {"state": "submitted", "script": "scripts/slurm_component_migration_mutation.sbatch", "artifact": "results/n-way-2413397/mutation-opfuzz/profile-0", "command": "Default profile, 8 smallest-per-family real QF_UFLIA seeds, seeded OpFuzz seed 202609503 with scripts/fuzz_configs/model_linear_ops.txt, 100 iterations/seed, 600s wall budget, original seed timeout 60s, mutants 5s. Primo --quiet --check-model --preprocessing-mode=auto; z3 model_validate=true, status-aware original/mutant comparison and independent Dolmen model validation."}
      },
      "submission_preflight": "Fresh slurm_prepare_benchmark_workspace.py --local-dir /workspace/tmp/n-way-candidate-2413397 --check-only --no-sync with specified SSH/workspace before each sbatch, required z3/dolmen checks; local validator and bash -n. Candidate binary preserved before any later rebuild.",
      "remaining": "Real-seed option matrix, paired sample20/watchlist4/full659/five-logic timing and separate replay of every candidate real-corpus SAT; reference-corpus records reused. No performance or full-qualification claim yet."
      ,"seed_resource_followup": {"job": "137487_0", "state": "FAILED before mutation", "results": "7/8 original seeds PASS, Certora 72658_63104dadde9c6026353f_70 times out at 60s. Recorded frozen baseline shard-10/answers.csv also reports timeout (61.074227s) for this exact path; no new reference run was needed to establish the prior limitation.", "harness_change": "Explicit resource-only continuation collects mutation evidence while retaining original nonzero stage result; errors/disagreements/bad inputs/models still stop. Original status checked; inherited mutant status ignored only for mutant comparison. Added classifier, shell and status-metadata regression tests. make python-test: 121 pass, make lint/docs pass."}
    },
    {
      "id": "2026-09-08-n-component-mutation-harness-triage",
      "date": "2026-09-08",
      "kind": "qualification-harness-triage",
      "commit": "4c8341c; solver sources e042e92",
      "driver_commit": "4f4784d plus recorded OpFuzz wrapper revision",
      "environment": "CIIRC SLURM via ssh -J janotmik@data.ciirc.cvut.cz janotmik@10.35.125.63; /home/janotmik/primo-model-fix",
      "evidence_status": "in-progress-not-qualified",
      "jobs": {
        "137473_0": {"state": "FAILED", "artifact": "results/n-way-4c8341c/mutation-linear/profile-0", "command": "slurm_component_migration_mutation.sbatch, profile 0, typefuzz with benchmarks/fuzz-configs/qf_lia_typefuzz.txt, seed 202609180, 100 iterations on each of 8 seeds from all four UFLIA families; Primo --quiet --preprocessing-mode=auto; reference z3 model_validate=true; solver and Dolmen timeout 5s, Dolmen size 1G", "results": {"mutants": 800, "models_pass": 190, "unsat": 341, "solver_error": 252, "solver_timeout": 14, "input_nonconforming": 3, "invalid_models": 0}, "verdict": "Rejected harness configuration: generative replacements still make literal coefficients nonlinear and introduce unbound variables/type errors. Not valid-input qualification coverage."},
        "137475": {"state": "COMPLETED", "script": "scripts/slurm_component_mutant_triage.sbatch", "artifact": "results/n-way-4c8341c/mutation-linear/input-triage", "command": "Dolmen input-only --strict=true --size=1G INPUT, timeout 10s, on all 252 solver-error and 3 input-nonconforming rows", "results": "255/255 independently rejected with Dolmen exit 4. No accepted input, timeout or resource failure in this triage. Per-input hashes, commands and full output retained."},
        "137476_0": {"state": "FAILED", "artifact": "results/n-way-4c8341c/mutation-opfuzz/profile-0", "command": "slurm_component_migration_mutation.sbatch with seeded OpFuzz and model_linear_ops.txt; default profile; intended seed 202609503, 100 iterations/seed, solver timeout 5s", "results": "Original-seed precheck: 7 PASS, 1 candidate timeout versus reference SAT; stopped before generating any mutant. No correctness disagreement. Qualification remains incomplete.", "next_step": "Separate original-seed budget (60s) from short mutant budget (5s), retaining strict fail-closed checks. Do not silently omit the slow seed or count it as a pass."},
        "137381": {"state": "CANCELLED after full clang-tidy completed", "artifact": "results/n-way-4c8341c/static", "results": "All 105 tracked non-generated C++ files scanned with clang-tidy. One owned warning in unchanged src/smt/tactic.cpp:69: analyzer claims shared_ptr allocation leak. Manual ownership inspection finds Data/data_ retain and release it, no cycle; ASan leak checks pass. Treat as analyzer false positive, no suppression added. Serial include scan was cancelled after requested time extension was denied; completed separately in 137474."},
        "137474": {"state": "COMPLETED", "script": "scripts/slurm_component_include_review.sbatch", "artifact": "results/n-way-4c8341c/includes-parallel", "results": "All 105 C++ files completed advisory misc-include-cleaner. Paired self-includes preserved; direct-header suggestions through public headers reviewed. Three actual unused includes in migrated solver_engines.cpp (limits, component_dispatcher.hpp, component_model_coordinator.hpp) removed in subsequent hygiene milestone. No include-scan errors."}
      },
      "submission_preflight": "Each submission followed clean 4c8341c worktree slurm_prepare_benchmark_workspace.py --check-only --no-sync, binary/CaDiCaL identity checks, local sbatch validation and bash -n. Harness scripts copied to remote tmp before submission.",
      "limitations": "No performance run or new full reference sweep launched. Generated 18000-case results remain in the main migration entry; all real-corpus paired timing and separate candidate SAT replay gates remain pending. This entry does not promote the migration."
    },
    {
      "id": "2026-09-08-n-component-migration",
      "date": "2026-09-08",
      "kind": "architecture-migration-qualification",
      "commit": "4c8341c (solver sources identical to e042e92)",
      "gate_driver_commit": "48e782e",
      "candidate": {"binary": "/home/janotmik/primo-model-fix/results/n-way-4c8341c/bin/primo", "sha256": "617a5ddee1278d7c3f5e183c15a0b6c31505661b982eb088d7c55aeaf182904c", "version": "primo 0.1.0; git 4c8341c; Release, no sanitizers; cadical-3.0.0-7b99c07", "build_job": "137373", "build_state": "COMPLETED", "build_elapsed": "00:02:10", "build_node": "node-02", "build_command": "slurm_prepare_benchmark_workspace.py --reuse-dependencies --build-via-slurm --jobs 4 --cxx-header-manifest /home/janotmik/primo-cadical-profile/contrib/local/clang-tools-env/cxx-headers/include-paths.txt (same SSH/workspace/CMake arguments as failed attempt)", "build_log": "tmp/n-way-prepare-with-headers.log", "warning": "Shared filesystem/node clock skew warnings during a clean build; all targets completed, binary/version preflight passed. No incremental object reuse."},
      "jobs": {"static": {"id": "137381", "state": "submitted", "script": "scripts/slurm_typed_model_static_review.sbatch", "artifact": "results/n-way-4c8341c/static"}, "generated": {"id": "137383", "state": "submitted", "script": "scripts/slurm_component_migration_fuzz.sbatch (48e782e, copied to remote tmp)", "array": "0-63%8", "count": 18000, "seed_base": 202609080, "profiles": "auto/off/basic/strong x model on/off x online on/off; default 3000, every other profile 1000", "command": "qf_uflia_fuzz.py --solver build-slurm-rel/primo --solver-arg=--quiet PROFILE_ARGS --ref z3 --count {750 default shard,250 other shard} --seed 202609080+TASK --timeout 5 --shape mixed --depth 3; validate_model.py with identical profile, --require-dolmen-pass --timeout 5 --dolmen-timeout 5 --dolmen-arg=--strict=false (explicit default size 1G); strict tracked regression/smoke seeds on the first shard of each profile", "artifact": "results/n-way-4c8341c/generated"}},
      "submission_preflight": "Before each sbatch: slurm_prepare_benchmark_workspace.py --local-dir /workspace/tmp/n-way-candidate-4c8341c --ssh-config /workspace/tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --check-only --no-sync; generated gate additionally checks z3 and dolmen executables. Confirmed candidate git/CaDiCaL. Batch scripts validated locally before transfer/submission.",
      "generated_results": {"complete_answer_shards": 64, "complete_model_shards": 64, "inputs": 18000, "answer_pass": 17996, "wrong_answer": 0, "crash": 0, "parser_type_error": 0, "reference_disagreement": 0, "unknown": 3, "timeout": 1, "sat_models_direct_dolmen_pass": 9134, "unsat_no_model_expected": 8862, "invalid_models": 0, "deterministic_seed_checks": "96/96 PASS: six tracked regression/smoke inputs under each of 16 profiles", "default_profile": "3000/3000 answer PASS; 1474 SAT models pass Dolmen, 1526 UNSAT", "inconclusive_triage": "Profiles 4,6,8 contain three UNKNOWNs: case-00064 (profile4/task19), case-00094 (profile6/task24), case-00136 (profile8/task32). Local bounded source-identical replays with the exact profile plus --stats reproduce integer branch-and-bound node limit, not an internal/model error. Profile6/task25 case-00092 times out at 5s on SLURM and reaches the same node limit with a 12s local diagnostic cap. Four rows remain unvalidated, not passes. Candidate campaign correctness has no wrong answer; aggregate strict gate is incomplete on those resource rows.", "local_artifacts": "results/n-way-4c8341c/generated (CSV/metadata/bug snapshots); results/n-way-4c8341c/inconclusive (four original inputs); tmp/n-way-unknown-{64,94,136}.log and tmp/n-way-timeout-92.log (bounded local diagnostics, not benchmark evidence)"},
      "mutation_attempts": [{"job": "137455", "profile": 0, "state": "FAILED", "evidence_status": "rejected-harness-configuration", "artifact": "results/n-way-4c8341c/mutation/profile-0", "seed": 202609180, "generator": "YinYang typefuzz 0.3.0, stock unrestricted configuration, 20 iterations per seed", "seeds": "8 real seeds: two smallest in each of four QF_UFLIA families (Certora, TwoSquares, mathsat, wisas), 77.7KB total", "mutants": 160, "models": {"pass": 21, "not_sat": 29, "solver_error": 109, "solver_timeout": 1}, "triage": "Stock mutation introduced forbidden/nonlinear operations despite retaining set-logic QF_UFLIA: 66 nonconstant div rejections, 10 nonconstant mod rejections, 30 nonliteral multiplication rejections. The remaining two unbound ?v_0 inputs and one ill-typed ITE were independently rejected by Z3 (errors followed by sat, process exit 1, NOT passes). No model conclusion is drawn for these malformed/out-of-fragment mutants. Fix the missing linear-integer mutation configuration and rerun before performance.", "fix": "Forward existing benchmarks/fuzz-configs/qf_lia_typefuzz.txt via --config in the QF_UFLIA mutation gate; profile wrapper raises iterations to 100 and supports a separately versioned gate-script path. Shell forwarding regression passes."}],
      "evidence_status": "in-progress-not-qualified",
      "scope": "N-component production QF_UFLIA driver, incremental dispatcher and checked fragment assembly; dedicated and experimental-generic QF_UFLRA sources frozen. Exact-candidate generated/profile/mutation correctness gates precede paired sample20, watchlist4, full659 and five-logic preservation measurements. Reuse existing reference-corpus records; independent Dolmen replay remains separate from speed.",
      "baseline": {"commit": "287b743", "binary": "/home/janotmik/primo-model-fix/results/full-revalidation-287b743/bin/primo", "sha256": "5a671d47882f555f3522c92b7b6c05a76c3bbdfde6ec2cb714b69e76c519b3f7", "parent_run": "2026-09-07-full-revalidation-287b743"},
      "environment": {"host": "CIIRC SLURM via ssh -J janotmik@data.ciirc.cvut.cz janotmik@10.35.125.63", "workspace": "/home/janotmik/primo-model-fix", "compiler": "GCC 11.4.1; compute nodes lack standard C++ development headers; matching pre-provisioned compiler header snapshot available"},
      "verification": {"local": "make check: 29/29 CTests and 111/111 Python tests before candidate commit; make lint and make docs pass. make asan-test final rerun: 29/29 in 51.85s. Focused clang-tidy: no owned-code warnings; advisory include scan has direct-header suggestions through paired public headers, no unused include finding. Whole-tree static review pending on SLURM.", "lifetime_regression": "Initial connected-candidate ASan run found stack-use-after-return: OnlineEufPropagator borrowed reset-local options. Adapter-owned configuration now outlives the callback; callback is destroyed before preparation/configuration mutation. Existing evaluated-argument test reproduces the issue under ASan and passes after the fix.", "n_component_tests": "432 independently enumerated three/four-component cycle/order/policy cases through CaDiCaL/coordinator, plus 432 cases through production driver under guided/complete and online/offline modes with model export. Negative fragment tests cover stale tokens, missing/shared inconsistent bindings, native-value conflicts, fractional Int and duplicate evaluated function tuples.", "frozen_boundary": "Byte comparison of the legacy callback region and QF_UFLRA engine tail against 75d5177 passed; only the obsolete QF_UFLIA shared-variable helper was removed."},
      "build_attempts": [{"job": "137366", "commit": "e042e92", "state": "FAILED", "elapsed": "00:00:11", "node": "node-02", "resources": "srun: 4 CPU, 8G, 30min", "diagnostic": "GCC could not locate string/vector/memory headers. No solver binary or benchmark result produced. Retry will use the matching pre-provisioned GCC 11 header snapshot through the tested workspace helper.", "command": "slurm_prepare_benchmark_workspace.py --ssh-config /workspace/tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --cmake /home/janotmik/primo-cadical-profile/.venv-build/bin/cmake --reuse-dependencies --build-via-slurm --jobs 4"}],
      "artifacts": {"local_build_log": "tmp/n-way-prepare-e042e92.log", "candidate_design": "docs/n-way-combination-migration.md", "paired_script": "scripts/slurm_component_migration_compare.sbatch"},
      "remaining": "Successful clean SLURM build, whole-tree static review, deterministic regression seeds, generated and real-seed mutation profiles, all staged paired measurements, independent SAT replay, analysis and final evidence commits. No acceptance or performance claim."
    },
    {
      "id": "2026-09-07-dolmen-memory-and-internal-checker-investigation",
      "date": "2026-09-07",
      "kind": "saved-model-correctness-diagnostic",
      "commit": "287b743 (preserved campaign binary; no solver changes)",
      "parent_run": "2026-09-07-full-revalidation-287b743",
      "evidence_status": "slurm-complete-diagnostic",
      "scope": "Investigate all 14 initial non-pass SAT models, without rerunning Primo or references; determine whether the model or independent validator resource limit caused rejection. Also inspect and probe the internal model evaluator.",
      "environment": {"job": "136143", "initial_failed_job": "136128", "workspace": "/home/janotmik/primo-model-fix", "resources": "14 tasks, throttle 4, one CPU/12G each, 15min task bound; each checker command bounded by timeout --signal=TERM --kill-after=5s 150s", "dolmen": "0.10 SHA256 08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e", "preflight": "slurm_prepare_benchmark_workspace.py --local-dir /workspace/tmp/full-revalidation-287b743 --ssh-config /workspace/tmp/primo-model-slurm-ssh-config --remote primo-model-slurm --remote-dir /home/janotmik/primo-model-fix --check-only --no-sync --require-tool contrib/local/bin/dolmen; confirmed git 287b743 and cadical-3.0.0-7b99c07 immediately before each submission"},
      "commands": ["Enumerate every non-pass row in real/{QF_LIA,QF_UFLRA}/primo/shard-*/model-validation/models/summary.csv; select saved problem and response by the row's zero-based five-digit artifact prefix", "dolmen --strict=false --size=8G --check-model=true --response SAVED.rsmt2 SAVED.smt2", "For RF-00.smt2 and the cpachecker input, repeat that command with --size=1G and also run dolmen --strict=false --size=1G SAVED.smt2 without a response", "ctest --test-dir build-asan -R '^primo_model_tests$' --output-on-failure --timeout 120", "c++ -std=c++20 -I src -isystem contrib/local/include tmp/internal-model-checker-probe.cpp build/libprimo_terms.a build/libprimo_util.a contrib/local/lib/libgmpxx.a contrib/local/lib/libgmp.a -o tmp/internal-model-checker-probe; timeout 10s tmp/internal-model-checker-probe"],
      "results": {"direct_dolmen_pass": 14, "model_errors": 0, "timeouts": 0, "all_saved_identities_unchanged": true, "raised_limit_total_process_seconds": 154.936, "max_child_rss_kib": 1586352, "controls": "Known-good x=1 model passes; deliberately false x=0 model for assertion x=1 exits 6. At 1G, RF-00 model checking reproduces Out_of_space/exit125 in 10.548s while input-only checking passes; the exact same model passes at 8G in 10.742s. The cpachecker model check and input-only check both exit2 at 1G, then the unchanged model passes at 8G in 17.454s. The checker timeout is identical in both controlled arms. Do not equate Dolmen's internal memory accounting with process RSS.", "classification_bug": "The shared validator treats any nonzero input-only exit as input-nonconforming, including resource exhaustion. Otherwise it falls through to a Real-constant-only Z3 fallback; the Int models have no extracted Real assignments, so fallback is unavailable and the outcome becomes model-error without a semantic refutation. Diagnostic investigation only: this harness bug has not been fixed.", "internal_checker": "All 14 original rows used --quiet --check-model with model production/get-model and returned SAT/exit0. solver_session.cpp retains original typed assertion roots before preprocessing; finalize_model evaluates all roots against the frozen typed interpretation and throws on false, then serializes. It does not reparse printed output. Both trivial-preprocessing and ordinary solver SAT routes call finalize_model. Existing model_tests cover exact arithmetic, Boolean false/true truth-table results, UF tuples/defaults, missing symbols, malformed models, lazy ITEs and serializer examples; focused ASan rerun passes. Additional temporary production-evaluator probe checks y=f(x+1)+1 for x and f(x+1) in [-10,10], with y offsets -1/0/+1: 441 true cases accepted and 882 false cases rejected; the historical x=2,y=1,f(3)=4 model also evaluates false. This is not an end-to-end session fault-injection test; none was found in the current suite.", "failed_initial_attempt": "136128: all 14 tasks stopped because /usr/bin/time is absent on compute nodes. No model conclusion drawn from this attempt. The replacement uses standard-library getrusage; 136143 completes all 14 tasks. Original attempts and logs retained.", "combined_parent_coverage": "11662 original direct passes plus 14 direct passes on unchanged saved models = all 11676 selected SAT rows independently validated. Original coverage.json files and raw labels remain untouched; the default aggregate helper does not automatically join this separately identified diagnostic. No performance promotion or UNSAT certification follows."},
      "artifacts": {"local": "results/full-revalidation-287b743/dolmen-resource-investigation-136143", "remote": "/home/janotmik/primo-model-fix/results/full-revalidation-287b743/dolmen-resource-investigation-136143", "contents": "Per-case diagnostic.json records exact commands, input/model/reference hashes and sizes before/after, exits, durations and child RSS highwater; stdout/stderr and positive/negative controls retained", "batch_script": "tmp/dolmen-resource-investigation.sbatch (local and remote tmp); SHA256 989418d3129de4a6c20bf18c4723c59470289f13156229cd6dbb971a16138c4a; locally validated with slurm_validate_sbatch.py, bash -n and Python compile", "internal_probe": "tmp/internal-model-checker-probe.cpp (local diagnostic, not a permanent regression); SHA256 6bee9156031251c3b6b0c78704b2b127136fdcdb5c194b0ed4f942f6c2870875"}
    },
    {
      "id": "2026-09-07-full-revalidation-287b743",
      "date": "2026-09-07",
      "kind": "full-supported-logic-revalidation-with-independent-sat-replay",
      "commit": "287b743",
      "report_driver_commit": "56716f3",
      "evidence_status": "pending",
      "scope": "User-requested complete revalidation after the model migration: local checks, generated/profile/mutation correctness gates, whole-tree static review, every available real SMT-LIB input in five supported logics against Primo/Z3/cvc5, then independent Dolmen replay of every successful Primo SAT row. No performance promotion is claimed while correctness coverage is pending or incomplete.",
      "environment": {
        "host": "CIIRC SLURM via ssh -J janotmik@data.ciirc.cvut.cz janotmik@10.35.125.63",
        "workspace": "/home/janotmik/primo-model-fix",
        "build": "Release; Python 3.9.18; CaDiCaL cadical-3.0.0-7b99c07",
        "binary": "results/full-revalidation-287b743/bin/primo",
        "binary_sha256": "5a671d47882f555f3522c92b7b6c05a76c3bbdfde6ec2cb714b69e76c519b3f7",
        "references": {"z3": "5.1.0, SHA256 54bae839dd54e262edac6f755fc99659ce2a121301faff20a3e3b94478dcead0", "cvc5": "1.3.4 git f3b21c4, SHA256 4a93548398445cf1a774655583f5465b156c26f63f2cdfb94f4728fdf7adde46", "dolmen": "0.10, SHA256 08b5fc3b17fb7eb54cb82141e9cabaf01039c686b2ac2512363344fbf23c052e"},
        "source_note": "src, CMakeLists.txt and tests/unit are identical to 315b792; subsequent changes concern skills, documentation and Python validation/reporting workflows. The campaign binary is preserved separately from the mutable build output.",
        "preparation": "slurm_prepare_benchmark_workspace.py --local-dir /workspace/tmp/full-revalidation-287b743 --remote-dir /home/janotmik/primo-model-fix --reuse-dependencies --jobs 4; --check-only --no-sync against that clean snapshot immediately before every sbatch. Batch scripts validated locally with slurm_validate_sbatch.py. Existing full corpora reused read-only; complete 659-file QF_UFLIA staged with slurm_stage_manifest_files.py --root tmp/QF_UFLIA --all-smt2."
      },
      "local_verification": {
        "make_check": "PASS: 28 CTest plus 107 Python tests after both reporting helpers were checked; lint passes",
        "make_asan_test": "PASS: 28 CTest, leak detection and strict initialization order enabled; no subsequent C++ changes",
        "make_docs": "PASS",
        "skill_validator": "PASS using .venv-docs/bin/python and skill-creator quick_validate.py",
        "logs": ["tmp/full-revalidation-local-asan.log", "tmp/full-revalidation-legacy-summary-check.log", "tmp/full-revalidation-legacy-summary-docs.log"]
      },
      "jobs": {
        "cluster_replay_smoke": "134845",
        "cross_logic": "134866",
        "lra_reconstruction": "134871",
        "uflia_profiles": "134876",
        "uflra_and_finite_domain": "134881",
        "uflra_no_reconciliation": "134885",
        "cite_hoisting": "134890",
        "whole_tree_static": "134894",
        "mutation_mathsat": "134895",
        "mutation_uf": "134899",
        "mutation_uflra_regression": "134905",
        "mutation_uflra_real": "134910",
        "mutation_lra": "134918",
        "mutation_mathsat_no_combination": "134922",
        "lra_semantic_followup": "134930",
        "deterministic_compositions_and_saved_bugs": "134953",
        "saved_bug_model_followup": "134971",
        "model_replay": {"QF_UF": "134963", "QF_LIA": "134964", "QF_LRA": "134965", "QF_UFLRA": "134966", "QF_UFLIA": "134968"},
        "timing": {
          "QF_UF": {"primo": "134933", "z3": "134934", "cvc5": "134935"},
          "QF_LIA": {"primo": "134937", "z3": "134938", "cvc5": "134939"},
          "QF_LRA": {"primo": "134940", "z3": "134941", "cvc5": "134943"},
          "QF_UFLRA": {"primo": "134944", "z3": "134945", "cvc5": "134946"},
          "QF_UFLIA": {"primo": "134948", "z3": "134949", "cvc5": "134950"}
        }
      },
      "gate_configuration": {
        "common": "PRIMO_WORKDIR=/home/janotmik/primo-model-fix, PRIMO_EXPECTED_GIT=287b743, fresh PRIMO_FUZZ_OUT_DIR=results/full-revalidation-287b743/GROUP. Repository batch scripts provide exact commands; options reach both differential checking and Dolmen model validation. Answer reference Z3, with cvc5 additionally in UFLRA/finite-domain and composition gates; independent models require direct Dolmen 0.10 acceptance.",
        "cross": "slurm_typed_cross_logic_model_gate.sbatch, 24 tasks x 750, seeds 202609400..423, four preprocessing modes off/basic/strong/auto, six generator families, 5s solver/reference/Dolmen budgets, --check-model",
        "lra-reconstruction": "slurm_typed_lra_reconstruction_gate.sbatch, 7 x 1000, seeds 202609700..706, four modes plus explicit monotone variants",
        "uflia": "slurm_typed_uflia_model_gate.sbatch, 8 x 375, seeds 202609300..307, four modes with combination on/off, plus 72 witness/profile checks",
        "uflra": "slurm_qf_uflra_fuzz_gate.sbatch, 4 x (750 general + 125 finite UF + 125 finite UFLRA), PRIMO_FUZZ_SEED_BASE=202609800, PRIMO_FUZZ_SOLVER_ARGS=--check-model",
        "uflra-no-reconciliation": "cross-logic script tasks 16..19, PRIMO_FUZZ_SOLVER_ARGS=--no-qf-uflra-model-reconciliation, 3000 cases",
        "cite": "slurm_cite_hoisting_fuzz_gate.sbatch, 1000 generated cases and reduced allocation-boundary ITE witness",
        "mutations": "slurm_typed_model_mutation_gate.sbatch, four modes per group, PRIMO_MUTATION_TOOL=opfuzz, deterministic seeds 202609500..503, 20 iterations, 120s generation budget, 5s process budget except LRA 20s; recheck all retained mutants against Z3 and validate printed SAT models with Dolmen. Seed groups: tmp/typed-model-mathsat-seeds, benchmarks/seeds/qf_uf, benchmarks/seeds/qf_uflra, tmp/typed-model-uflra-seeds, tmp/selected/tmp/typed-model-lra-seeds, then MathSAT again with PRIMO_EXTRA_SOLVER_ARGS=--no-qf-uflia-model-combination.",
        "lra-semantic": "slurm_typed_lra_semantic_model_gate.sbatch, array 8..11 after cross gate, PRIMO_REVALIDATE_CASE_ROOT=results/full-revalidation-287b743/cross. Explicitly separate semantic replay with Dolmen forced QF_NRA for FuzzSMT linear-grammar exceptions; not strict QF_LRA input-conformance evidence.",
        "static": "slurm_typed_model_static_review.sbatch, all 99 non-generated C++ translation units, default clang-tidy and advisory misc-include-cleaner; staged build-compiler headers, clang-tidy 18.1.8",
        "compositions": "tactic_composition_matrix.py --solver ./build-slurm-rel/primo --refs z3 cvc5 --repeat 2; then check_solver_seed_corpus.py --seeds bugs and validate_model.py on every tracked bugs/**/*.smt2 with --quiet --check-model, 10s budgets and required direct Dolmen. Locally written/validated tmp/full-revalidation-compositions.sbatch."
      },
      "corpora": {
        "QF_UF": {"count": 7503, "root": "/home/janotmik/primo-cadical-profile/tmp/QF_UF", "primo_shards": 64, "primo_concurrency": 16, "reference_shards": 32, "reference_concurrency": 8},
        "QF_LIA": {"count": 13306, "root": "/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_LIA", "primo_shards": 80, "primo_concurrency": 80, "reference_shards": 32, "reference_concurrency": 32},
        "QF_LRA": {"count": 1753, "root": "/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_LRA", "primo_shards": 16, "primo_concurrency": 16, "reference_shards": 8, "reference_concurrency": 8},
        "QF_UFLRA": {"count": 1284, "root": "/home/janotmik/primo-cadical-profile/sandbox/non-incremental/QF_UFLRA", "primo_shards": 16, "primo_concurrency": 8, "reference_shards": 8, "reference_concurrency": 4},
        "QF_UFLIA": {"count": 659, "root": "/home/janotmik/primo-model-fix/tmp/QF_UFLIA", "primo_shards": 16, "primo_concurrency": 8, "reference_shards": 8, "reference_concurrency": 4}
      },
      "real_corpus_configuration": "slurm_real_corpus_validation.sbatch, PRIMO_PHASE=benchmark, PRIMO_TIMEOUT=60, PRIMO_CAMPAIGN_OUT=results/full-revalidation-287b743/real/LOGIC/SOLVER, PRIMO_CORPUS_ROOT as listed, PRIMO_SHARDS as listed, PRIMO_CAMPAIGN_ID=full-revalidation-287b743-LOGIC-SOLVER. Primo uses preserved binary plus --quiet and expected git 287b743; reference solvers use contrib/local/bin/{z3,cvc5} without additional arguments. 1 CPU/4G per task, 4h wall limit. Timing arrays depend afterany on every correctness/static/composition job. All timing jobs finish before any post-benchmark model replay starts. Each shard records exact input hashes, binary hash/version, arguments and commands in provenance.json.",
      "model_replay_configuration": "Same slurm_real_corpus_validation.sbatch and Primo shard counts, with all replay shards allowed concurrently: UF 64, LIA 80, LRA/UFLRA/UFLIA 16 each, 192 CPUs maximum across this separate stage. PRIMO_PHASE=replay, PRIMO_CAMPAIGN_OUT=results/full-revalidation-287b743/real/LOGIC/primo, PRIMO_MODEL_TIMEOUT=90, PRIMO_DOLMEN_TIMEOUT=30, Dolmen --strict=false with direct acceptance required. Each array depends afterany on all 15 timing arrays, not just its own logic. Solver profile and binary are read from the timing provenance, with model production and --check-model added; SAT-to-UNSAT is an answer-changed failure. Resources/unknown/unsupported or missing rows leave coverage incomplete. Default attempt directory model-validation, immutable original timing/PAR2.",
      "artifacts": {"remote": "/home/janotmik/primo-model-fix/results/full-revalidation-287b743", "local": "results/full-revalidation-287b743", "submission_logs": "tmp/full-revalidation-{jobs,timing-jobs,replay-jobs}.tsv and matching *-preflight.log", "retention": "Large inputs, solver logs and model output retained remotely; summaries and provenance collected locally. Run-log and committed drivers reproduce the workflow."},
      "results": {
        "status": "All scheduled jobs terminal. Original replay has 11662 direct passes and 14 validator memory failures; linked 2026-09-07-dolmen-memory-and-internal-checker-investigation validates all 14 unchanged saved models directly. Combined SAT-model coverage is 11676/11676. Raw original coverage remains unchanged and does not automatically join the diagnostic. Reference LIA cvc5 arm was cancelled; no performance promotion claimed.",
        "model_replay_status_check": {"date": "2026-09-07", "jobs": ["134963", "134964", "134965", "134966", "134968"], "selected": 11676, "processed": 11676, "direct_dolmen_pass": 11662, "missing": 0, "QF_UF": {"pass": 3142, "expected": 3142}, "QF_LIA": {"pass": 6426, "expected": 6439, "validator_memory_failures": 13}, "QF_LRA": {"pass": 933, "expected": 933}, "QF_UFLIA": {"pass": 403, "expected": 403}, "QF_UFLRA": {"pass": 758, "expected": 759, "validator_memory_failures": 1}, "raw_outcomes": {"pass": 11662, "model-error": 13, "input-nonconforming": 1}, "triage": "Read all 14 non-pass rows and their Dolmen stdout/stderr, without rerunning solvers. All 13 QF_LIA rows are 20220307-SMPT/FamilyReunion-PT-L00400M0040C020P020G001 inputs and report Memory limit reached or Dolmen_loop.Alarm.Out_of_space during parsing. The QF_UFLRA cpachecker-induction.Problem08_60_false-unreach-call.c.smt2 row also reports Memory limit reached, not an input grammar diagnostic. Thus the raw harness labels are misleading: these are incomplete validator-resource outcomes, not confirmed invalid models or confirmed input nonconformance. Raw artifacts remain unchanged. No SAT-to-UNSAT change, solver error or solver timeout appears in the replay rows. No cluster jobs remain active; no new jobs submitted during this status check.", "remaining": "Correct resource-failure classification and validate only the 14 outstanding cases with adequate validator memory; preserve original timing and replay evidence.", "artifacts": "results/full-revalidation-287b743/real/LOGIC/primo/shard-N/model-validation/{coverage.json,models/summary.csv,models/*.dolmen.stderr}; local aggregate tmp/full-revalidation-real-progress.json"},
        "reference_cancellation": {"date": "2026-09-07", "reason": "User requested cancellation of redundant reference reruns; prior reference evidence should have been audited before scheduling. Solver-only changes do not invalidate recorded reference answers for identical inputs.", "command": "scancel 134939", "scope": "Only the remaining cvc5 QF_LIA timing array; all 32 active tasks received cancellation. cvc5 QF_LRA array 134943 had already completed all eight tasks before cancellation. Z3 and the other reference arrays had also finished.", "retention": "No artifacts deleted or timing results overwritten. Partial cvc5 LIA journals and provenance remain under results/full-revalidation-287b743/real/QF_LIA/cvc5; this arm is incomplete, not a full fresh reference run. Historical reference reuse still requires input identity checks and compatible measurement conditions for timing comparisons.", "model_replay": "Existing Dolmen replay arrays 134963, 134964, 134965, 134966 and 134968 retained. Their afterany dependencies release after cancellation cleanup; no replacement jobs or dependency bypass submitted."},
        "primo_timing": {
          "qualification": "All 24505 inputs processed on the preserved 287b743 binary; timing complete, model qualification still pending. One CPU per process, 60s timeout, --quiet and otherwise default options. 20551 decisive solves, 3203 wall-clock timeouts, 751 branch-and-bound node-limit unknowns, zero wrong answers, execution errors or unsupported results. Every shard has complete matching input provenance.",
          "expected_sat_replays": 11676,
          "sat_replay_cost_basis": {"sat_process_seconds": 24503.795, "all_primo_process_seconds": 258375.689, "sat_fraction_percent": 9.485, "selected_sat_without_declared_status": 296, "qualification": "Summed recorded process wall times, not PAR2 or measured CPU utilization. This estimates search replay cost only; model production, independent checking and artifact I/O remain to be measured. All 296 SAT rows lacking declared status are included in expected replay coverage."},
          "QF_UF": {"files": 7503, "solved": 7497, "sat": 3142, "unsat": 4355, "timeout": 6, "unknown": 0, "par2": 4625.251642},
          "QF_LIA": {"files": 13306, "solved": 9674, "sat": 6439, "unsat": 3235, "timeout": 2881, "unknown": 751, "par2": 473009.368936},
          "QF_LRA": {"files": 1753, "solved": 1539, "sat": 933, "unsat": 606, "timeout": 214, "unknown": 0, "par2": 32717.672678},
          "QF_UFLRA": {"files": 1284, "solved": 1270, "sat": 759, "unsat": 511, "timeout": 14, "unknown": 0, "par2": 2426.869028},
          "QF_UFLIA": {"files": 659, "solved": 571, "sat": 403, "unsat": 168, "timeout": 88, "unknown": 0, "par2": 11655.521338},
          "historical_context": "Against documented same-timeout previous Primo results: UF 7496 -> 7497; LIA 9660 -> 9674; LRA 1531 -> 1539; UFLRA 1270 -> 1270; UFLIA 571 -> 571. These are contextual solve counts, not a controlled paired performance claim; historical input hashes and identical scheduling are not established. LIA raw historical accounting is independently recomputed above."
        },
        "reporting_followup": "56716f3 fixes live reporting only: read journals until atomic complete provenance makes the CSV authoritative; classify unreadable journal lines as explicit incomplete coverage instead of aborting all progress; count timeout-terminated unknown output only as timeout. One transient JSON read failure was observed during concurrent writes; an immediate full journal rescan found no persistent malformed complete line. Solver runs and immutable timing artifacts were not changed. Fresh make check (28 CTest, 106 Python tests, lint) and make docs pass; logs tmp/full-revalidation-live-summary-{check,docs}.log.",
        "legacy_summary_followup": "a786151 corrects summarize_benchmark_shards.py: status=ok/answer=unknown is unsolved for totals, family counts, PAR2, paired runtime sets and gains/losses; unknown has its own count. A deterministic pre-fix probe credited one 0.1s unknown as one solve/PAR2 0.1; the corrected helper reports zero solves/PAR2 10 at a 5s budget. Regression covers families and both comparison directions. Fresh make check (28 CTest, 107 Python tests, lint) and make docs pass. This campaign already uses the strict model-campaign joiner, so its raw runs and totals are unaffected. Benchmarking skill now carries the counting rule; AGENTS.md is not expanded.",
        "historical_lia_context": {"evidence_status": "historical", "commit": "d8462db", "job": "133466", "artifact": "/home/janotmik/primo-cadical-profile/results/qf-lia-cite-full/cite", "rows": 13306, "timeout_seconds": 60, "solved": 9660, "sat": 6428, "unsat": 3232, "unknown": 751, "timeout": 2895, "wrong": 0, "par2": 474909.730737, "qualification": "Recomputed from all 80 existing CSV shards using strict decisive-answer accounting, not status=ok alone. Historical input content hashes are unavailable; this is previous-result context, not a freshly paired causal performance comparison. Derived per-family summaries and CSV checksums are retained in results/full-revalidation-287b743/historical-qf-lia-cite.json. The old off arm has 9061 solves, 751 unknowns, 3494 timeouts and PAR2 531258.719174."},
        "generated_gates": {
          "case_profile_runs": 36000,
          "answer_pass": 35807,
          "answer_timeout": 191,
          "answer_unknown_involved": 2,
          "cross_logic_models": {"pass": 11252, "not_sat": 4795, "input_nonconforming": 1761, "solver_timeout": 190, "solver_unknown": 2},
          "lra_reconstruction": {"answer_pass": 7000, "dolmen_sat_pass": 7000},
          "uflia": {"answer_pass": 3000, "dolmen_sat_pass": 1488, "witness_pass": 72},
          "uflra": {"general_answer_pass": 3000, "finite_uf_answer_pass": 500, "finite_uflra_answer_pass": 500, "general_dolmen_sat_pass": 1747, "finite_uflra_dolmen_sat_pass": 252},
          "uflra_no_reconciliation": {"answer_pass": 3000, "dolmen_sat_pass": 1713},
          "cite": {"answer_pass": 1000, "regression_pass": 1},
          "qualification": "No wrong answer, crash, parser/type rejection by Primo, model error or decisive reference disagreement. Four strict cross-logic LRA tasks fail for generator/input grammar exceptions; semantic follow-up below is explicitly separate. Resource rows are not counted as passes. Counts are case/profile executions, not a claim that all generated terms are unique across option variants."
        },
        "lra_semantic_followup": {"inputs": 3000, "dolmen_sat_pass": 2561, "not_sat": 330, "solver_timeout": 109, "invalid_model": 0, "qualification": "All four tasks completed 0:0. Dolmen forced QF_NRA validates identical assertions; this is semantic model evidence, not strict QF_LRA grammar conformance. These replay rows overlap the cross-logic corpus and are not added as new generated cases."},
        "mutations": {"retained": 4140, "answer_pass": 4135, "solver_timeout": 5, "dolmen_sat_pass": 2502, "saved_unclassified_bug_files": 0, "qualification": "Three MathSAT tasks have exit 1 solely for five timeout rows (two with default combination, three with combination disabled); all references on these rows return UNSAT. Other tasks complete with no disagreement, crash or invalid model. Original seed models add 76 SAT Dolmen passes, separately from mutant counts."},
        "compositions": {"profiles": 11, "cases": 11, "answer_rows": 174, "repeats": 2, "failures": 0, "inconclusive": 0, "dolmen_sat_pass": 48},
        "static": {"state": "COMPLETED 0:0", "elapsed": "00:19:50", "files": 99, "blocking_findings": 0, "analyzer": "Same one NewDeleteLeaks warning at tactic.cpp:69 as prior scan. Reinspection confirms make_shared ownership retained by Goal::data_ -> Data::assertions, with no release or ownership cycle; leak-enabled ASan passes. No suppression or source rewrite added.", "include_advisories": "23 unused-header suggestions are all paired implementation/public-header self-includes, deliberately retained. 180 missing-direct-header style advisories match the documented baseline. No remaining non-paired unused header or new compiler error."},
        "cluster_replay_smoke": "134845 COMPLETED 0:0: 17 workflow Python tests, two timed UFLIA smoke inputs (one SAT, one UNSAT), selected SAT replay directly accepted by Dolmen",
        "saved_bug_triage": "134953 completed the deterministic composition matrix, then its raw saved-bug comparator reported nine PASS and one INCOMPLETE: witness-unvalued-constant.smt2 requests get-model without :produce-models true, so Primo exits 2 with 'get-model requires :produce-models true' while permissive Z3 answers SAT. This is a historical command-sequence defect, not an invalid model. The failed raw attempt is retained. Followup 134971 uses the shared command adapter on all ten witnesses: seven SAT models directly pass Dolmen, three UNSAT, COMPLETED 0:0. Historical inputs remain unchanged. Timing dependencies include both jobs."
      }
    },
    {
      "id": "2026-09-07-model-replay-workflow-smoke",
      "date": "2026-09-07",
      "kind": "local-validation-workflow-smoke",
      "commit": "candidate workflow based on e65910b; no solver C++ changes",
      "evidence_status": "diagnostic",
      "environment": {"host": "local development workspace", "validator": "Dolmen 0.10", "timeout_seconds": 5},
      "commands": ["PATH=contrib/local/bin:$PATH python3 scripts/benchmark_model_replay.py benchmark --root benchmarks/smoke/qf_uflia --solver ./build/primo --solver-arg=--quiet --solver-arg=--max-theory-conflicts=1000 --run-id=local-workflow-smoke --timeout 5 --out results/model-replay-workflow-smoke", "PATH=contrib/local/bin:$PATH python3 scripts/benchmark_model_replay.py replay --out results/model-replay-workflow-smoke --model-timeout 5 --dolmen-timeout 5 --dolmen-arg=--strict=false"],
      "results": {"inputs": 2, "sat": 1, "unsat": 1, "selected_sat": 1, "dolmen_pass": 1, "invalid_model": 0, "changed_answer": 0, "timeout": 0, "error": 0},
      "artifacts": "results/model-replay-workflow-smoke; provenance.json records exact binary hash/version and both input hashes, model-validation records the parent hash, selected manifest, validator hash and coverage",
      "notes": "Tests phase separation and real Dolmen integration on two tracked smoke files, not real-corpus or performance evidence. Subsequent workflow-only changes add end-of-replay identity verification and complete-shard artifact verification. Fresh full-corpus and generated gates are required for the user's broader revalidation request."
    },
    {
      "id": "2026-09-07-typed-model-closing-gates-315b792",
      "date": "2026-09-07",
      "kind": "committed-binary-closing-correctness-gates",
      "commit": "315b792",
      "evidence_status": "current",
      "environment": {"host": "CIIRC SLURM cluster", "build": "Release", "cadical": "cadical-3.0.0-7b99c07", "jobs": {"uflia": "134792", "uflra": "134797", "include_recheck": "134802"}, "states": "All tasks COMPLETED, exit 0:0", "elapsed": "QF_UFLIA tasks 24-26 seconds; QF_UFLRA tasks 59 seconds; include recheck 11 seconds"},
      "source_scope": "Since the full model migration 8ff9991, solver changes are only four removed unused includes and one direct core/model.hpp include in 315b792. No algorithm, declaration, test or CMake behavior changed. Broad cross-logic and mutation evidence remains applicable; these gates verify the exact closing binary.",
      "commands": {
        "prepare": "scripts/slurm_prepare_benchmark_workspace.py --local-dir . --reuse-dependencies --jobs 4 with clean 315b792; --check-only --no-sync immediately before each sbatch; exact binary git and CaDiCaL confirmed",
        "uflia": "sbatch scripts/slurm_typed_uflia_model_gate.sbatch with PRIMO_EXPECTED_GIT=315b792 and PRIMO_FUZZ_OUT_DIR=results/typed-uflia-315b792; defaults: 375/task, seeds 202609300..307, mixed/depth 3, preprocessing off/basic/strong/auto with combination on/off, --check-model, 5s solver/reference/Dolmen timeouts",
        "uflra": "sbatch --array=0-3%4 --time=00:10:00 scripts/slurm_qf_uflra_fuzz_gate.sbatch with PRIMO_FUZZ_SEED_BASE=202609800, PRIMO_FUZZ_SOLVER_ARGS=--check-model, PRIMO_FUZZ_OUT_DIR=results/typed-uflra-315b792; 750 general, 125 finite UF and 125 finite UFLRA per task, 5s answer timeout, 10s model/Dolmen timeouts",
        "include_recheck": "Locally written and slurm_validate_sbatch.py-validated tmp/typed-model-include-followup.sbatch: clang-tidy -p build-slurm-rel -checks='-*,clang-diagnostic-*,misc-include-cleaner' HEADER_ARGS src/smt/solver_engines.cpp src/smtlib/printer.cpp; same staged header roots as full scan, fail if any warning/error diagnostic remains"
      },
      "references": {"answers": "Z3 5.1.0; required QF_UFLRA gate also cvc5", "models": "Dolmen --require-dolmen-pass --strict=false; no fallback passes", "include_check": "clang-tidy 18.1.8"},
      "results": {
        "uflia": {"generated": 3000, "answer_pass": 3000, "dolmen_pass": 1488, "not_sat": 1512, "witness_pass": 72},
        "uflra": {"general_answer_pass": 3000, "finite_uf_answer_pass": 500, "finite_uflra_answer_pass": 500, "general_dolmen_pass": 1747, "finite_uflra_dolmen_pass": 252},
        "aggregate": {"generated_case_profile_runs": 7000, "answer_pass": 7000, "dolmen_pass": 3487, "witness_pass": 72, "wrong_answer": 0, "invalid_model": 0, "crash": 0, "parser_or_type_error": 0, "unsupported": 0, "unknown": 0, "timeout": 0, "reference_disagreement": 0},
        "include_recheck": "Both changed translation units pass with zero warnings/errors; the previously documented unrelated whole-tree advisories are not claimed fixed"
      },
      "artifacts": ["results/typed-uflia-315b792", "results/typed-uflra-315b792", "results/typed-includes-315b792", "tmp/typed-315b792-prepare.log", "tmp/typed-315b792-preflight.log", "tmp/typed-315b792-uflra-preflight.log", "tmp/typed-315b792-includes-preflight.log"],
      "notes": "Complete artifacts collected before acceptance. Local make check, make asan-test, make lint and make docs for this include-only patch are recorded with the static-review entry. The end-to-end model redesign acceptance criteria are met; no performance/PAR2 claim. Resource-only exceptions in broader generated/mutation gates remain separately recorded, not erased by these clean reruns."
    },
    {
      "id": "2026-09-07-typed-model-whole-tree-static-134747",
      "date": "2026-09-07",
      "kind": "whole-tree-static-review",
      "commit": "3a2dd40",
      "driver_commit": "60f7bbe",
      "evidence_status": "current",
      "environment": {"host": "CIIRC SLURM cluster", "job": "134747", "state": "COMPLETED", "exit_code": "0:0", "elapsed": "00:19:47", "max_rss_kib": 513704, "cpus": 2, "memory": "4G", "wall_limit": "00:30:00", "tool": "clang-tidy 18.1.8", "build": "Release compile database and staged build-compiler C/C++ search roots"},
      "commands": {"submit": "Repository helper --check-only --no-sync against clean 3a2dd40 immediately before sbatch; locally validated scripts/slurm_typed_model_static_review.sbatch from 60f7bbe copied separately as tmp/typed-static-final.sbatch; PRIMO_EXPECTED_GIT=3a2dd40", "analysis": "clang-tidy -p build-slurm-rel HEADER_ARGS src/main.cpp compiler probe; clang-tidy -p build-slurm-rel HEADER_ARGS ALL_99_SOURCES; then clang-tidy -p build-slurm-rel -checks='-*,clang-diagnostic-*,misc-include-cleaner' HEADER_ARGS ALL_99_SOURCES", "scope": "All 99 tracked non-generated .cpp files; exact sources.txt collected. Manual review scope also includes tracked headers, scripts, tests, docs, skills and build metadata; no generated parser or dependency source review claimed."},
      "results": {
        "compiler_probe": "PASS, one suppressed non-user warning",
        "tidy": "All 99 files analyzed; no compiler errors. One owned NewDeleteLeaks diagnostic in Goal::Goal(vector<TermId>), src/smt/tactic.cpp:69; 20 non-user warnings suppressed by clang-tidy.",
        "ownership_adjudication": "The flagged make_shared allocation is moved into Data::assertions, and that Data is owned by Goal::data_. Both are shared_ptr, with no ownership release or reference cycle; default destruction releases the retained allocation. The analyzer stops at constructor exit and misidentifies retained ownership as a leak. No suppression or ownership rewrite added. Existing lifetime tests and leak-enabled ASan pass.",
        "include_cleaner": "208 advisory diagnostics: 27 unused-header and 181 missing-direct-header. Of the unused headers, 23 are paired .cpp/.hpp self-includes retained deliberately. Four genuinely unused includes are removed in the closing hygiene patch: sstream, variant and incremental_congruence_closure.hpp from solver_engines.cpp; core/sort.hpp from smtlib/printer.cpp. The same patch adds core/model.hpp directly for ModelError.",
        "remaining_advisories": "180 missing-direct-include suggestions remain outside the changed model code, largely types already provided by each implementation's paired public header, plus standard/POSIX header spelling and transitive-include style suggestions. These are explicitly retained as non-blocking baseline include-style debt, not reported as a warning-free whole-tree baseline. No remaining non-paired unused include was found."
      },
      "artifacts": ["results/typed-static-final-3a2dd40/compiler-probe.log", "results/typed-static-final-3a2dd40/tidy.log", "results/typed-static-final-3a2dd40/include-cleaner.log", "results/typed-static-final-3a2dd40/sources.txt", "results/typed-static-final-3a2dd40/compiler-search.txt"],
      "prior_diagnostic": "Job 134697 never analyzed sources: -checks='-*,clang-diagnostic-*' enables no actual clang-tidy check and the probe exited with 'no checks enabled'. Driver 60f7bbe uses default checks for the probe; local src/main.cpp probe also passes. An attempted time-limit extension of 134747 was denied; the original 30-minute allocation nevertheless completed successfully.",
      "local_cleanup_verification": {"make_check": "PASS: 28 CTest (6.69s), 94 Python tests, lint", "make_asan_test": "PASS: 28 CTest (48.06s), detect_leaks=1:strict_init_order=1", "make_docs": "PASS", "logs": ["tmp/typed-include-cleanup-check.log", "tmp/typed-include-cleanup-asan.log", "tmp/typed-include-cleanup-docs.log"]},
      "notes": "Code review: no blocking soundness/ownership finding. This is review evidence, not fuzz evidence or a performance measurement. The include-only cleanup receives a focused include-check and committed-binary gate follow-up; no algorithmic source change is involved."
    },
    {
      "id": "2026-09-07-typed-model-final-mutation-3a2dd40",
      "date": "2026-09-07",
      "kind": "slurm-model-generated-and-real-seed-mutation-acceptance",
      "commit": "3a2dd40",
      "solver_implementation_commit": "8ff9991",
      "evidence_status": "current",
      "environment": {"host": "CIIRC SLURM cluster", "build": "Release", "cadical": "cadical-3.0.0-7b99c07", "mutation_cpus_per_task": 1, "mutation_memory": "2G", "mutation_array": "0-3%4"},
      "source_equivalence": "git diff --exit-code 8ff9991..60f7bbe -- src CMakeLists.txt tests/unit is empty; subsequent changes are verification tooling and documentation",
      "references": {"answers": "Z3 5.1.0; the required mixed-Real gate also compares cvc5", "models": "Dolmen with --require-dolmen-pass and --strict=false; no fallback passes", "mutator": "YinYang fork 04c8618a134e7a6c8b6d54fcd5ee9fd2ec64a2bb, package 0.3.0, OpFuzz via scripts/seeded_opfuzz.py"},
      "commands": {
        "prepare": "scripts/slurm_prepare_benchmark_workspace.py with exact clean 3a2dd40, --reuse-dependencies --jobs 4; --check-only --no-sync immediately before sbatch, checking binary git and CaDiCaL",
        "mutation": "sbatch --export=ALL,PRIMO_EXPECTED_GIT=3a2dd40,PRIMO_MUTATION_TOOL=opfuzz,PRIMO_MUTATION_ITERATIONS=20,PRIMO_MUTATION_SECONDS=120,PRIMO_MODEL_SEEDS=SEEDS,PRIMO_FUZZ_OUT_DIR=OUT scripts/slurm_typed_model_mutation_gate.sbatch; seeds 202609500..503; modes off/basic/strong/auto; --quiet --check-model plus optional --no-qf-uflia-model-combination; solver/reference timeout 5s, comparable LRA corpus timeout 20s, Dolmen timeout 5s",
        "mutation_acceptance": "Original seeds first: check_solver_seed_corpus.py --ref z3 and validate_model.py --require-dolmen-pass. scripts/yinyang_fuzz.sh --ref 'z3 model_validate=true' --config scripts/fuzz_configs/model_linear_ops.txt --keep-logic --hoist-declarations --keep-mutants, followed by independent answer and model reruns of EVERY retained mutant. Identical solver options in all phases; process status checked before accepting answers.",
        "uflia": "sbatch scripts/slurm_typed_uflia_model_gate.sbatch; 375/task, seeds 202609300..307, depth 3, all four preprocessing modes and both combination profiles, --check-model, timeout 5s, nine witnesses/profile",
        "uflra": "sbatch scripts/slurm_qf_uflra_fuzz_gate.sbatch; PRIMO_FUZZ_COUNT=750, PRIMO_FINITE_DOMAIN_FUZZ_COUNT=125, PRIMO_FUZZ_SEED_BASE=202609800, PRIMO_FUZZ_SOLVER_ARGS=--check-model; four tasks; default answer/model timeouts from the committed script",
        "smoke_repeat": "Same mutation script/corpus/profile as Mathsat task 0, --array=0 and PRIMO_MUTATION_ITERATIONS=2; compare retained filename-to-SHA256 maps between two runs"
      },
      "corpora": {
        "mathsat": "Six QF_UFLIA/mathsat real seeds, three families, selected with build_fuzz_seed_corpus.py --per-family 2 --max-bytes 200000; tmp/typed-model-mathsat-seeds",
        "uf": "All 13 tracked benchmarks/seeds/qf_uf inputs",
        "uflra_regressions": "All 12 tracked benchmarks/seeds/qf_uflra inputs",
        "uflra_real": "Four real QF_UFLRA family representatives, smallest per family with max 200000 bytes; tmp/typed-model-uflra-seeds",
        "lra_real": "13 independently comparable real QF_LRA family representatives in benchmarks/typed-model-lra-mutation-manifest.txt; original 17-family triage excluded four resource-limited representatives, documented in the earlier diagnostic entry"
      },
      "mutation_results": {
        "mathsat": {"job": "134715", "total": 480, "answer_pass": 478, "dolmen_pass": 355, "not_sat": 123, "solver_timeout": 2},
        "uf": {"job": "134716", "total": 1025, "answer_pass": 1025, "dolmen_pass": 571, "not_sat": 454, "solver_timeout": 0},
        "uflra_regressions": {"job": "134717", "total": 960, "answer_pass": 960, "dolmen_pass": 519, "not_sat": 441, "solver_timeout": 0},
        "uflra_real": {"job": "134718", "total": 160, "answer_pass": 160, "dolmen_pass": 132, "not_sat": 28, "solver_timeout": 0},
        "lra_real": {"job": "134719", "total": 1035, "answer_pass": 1035, "dolmen_pass": 570, "not_sat": 465, "solver_timeout": 0},
        "mathsat_combination_off": {"job": "134720", "total": 480, "answer_pass": 477, "dolmen_pass": 355, "not_sat": 122, "solver_timeout": 3},
        "aggregate": {"retained_mutants": 4140, "answer_pass": 4135, "dolmen_pass": 2502, "not_sat": 1633, "solver_timeout": 5, "wrong_answer": 0, "invalid_model": 0, "crash": 0, "parser_or_type_error": 0, "unsupported": 0, "reference_disagreement": 0},
        "original_seed_checks": {"case_profile_runs": 216, "answer_pass": 216, "dolmen_pass": 76, "not_sat": 140, "errors": 0},
        "timeout_classification": "Five rows over three distinct mutants: Wisa_xs-05-07-4-5-1-2-USwQ8-P0c6y.smt2 and Wisa_xs-05-07-4-5-1-2-USwQ8-tH58K.smt2 in strong mode with combination on/off; Wisa_xs-05-06-2-2-5-1-lOvNI-kgA6R.smt2 in preprocessing-off/combination-off. Primo times out, Z3 returns unsat. Model reruns likewise time out. Raw tasks 134715_2, 134720_0 and 134720_2 are FAILED solely for these resource limits; they are not promoted to passes. All other campaign tasks COMPLETED.",
        "seeded_smoke": {"jobs": ["134696", "134721"], "mutants_per_run": 12, "answer_pass_per_run": 12, "dolmen_pass_per_run": 6, "not_sat_per_run": 6, "identical_filename_sha256_maps": true, "included_in_campaign_totals": false}
      },
      "generated_results": {
        "uflia": {"job": "134698", "answer_pass": 3000, "dolmen_pass": 1488, "not_sat": 1512, "witness_pass": 72, "errors": 0, "timeouts": 0},
        "uflra": {"job": "134699", "general_answer_pass": 3000, "finite_uf_answer_pass": 500, "finite_uflra_answer_pass": 500, "general_dolmen_pass": 1747, "finite_uflra_dolmen_pass": 252, "errors": 0, "timeouts": 0}
      },
      "artifacts": ["results/typed-opfuzz-mathsat-3a2dd40", "results/typed-opfuzz-uf-3a2dd40", "results/typed-opfuzz-uflra-regressions-3a2dd40", "results/typed-opfuzz-uflra-real-3a2dd40", "results/typed-opfuzz-lra-real-3a2dd40", "results/typed-opfuzz-mathsat-fallback-3a2dd40", "results/typed-opfuzz-smoke-3a2dd40", "results/typed-opfuzz-smoke-repeat-3a2dd40", "results/typed-uflia-3a2dd40", "results/typed-uflra-3a2dd40", "tmp/typed-3a-evidence-summaries"],
      "notes": "Complete per-task artifacts collected locally, including retained mutants and failures. Counts are case/profile runs, not distinct inputs. This closes the restricted mutation and latest-binary generated correctness requirements alongside the 6f89774 cross-logic entry. It does not claim complete real-corpus coverage or a performance/PAR2 improvement. Static-review evidence is recorded separately."
    },
    {
      "id": "2026-09-07-typed-model-cross-logic-6f89774",
      "date": "2026-09-07",
      "kind": "slurm-cross-logic-model-acceptance",
      "commit": "6f89774",
      "solver_implementation_commit": "8ff9991",
      "evidence_status": "current",
      "environment": {"host": "CIIRC SLURM cluster", "jobs": {"cross_logic": "134600", "lra_replay": "134601", "lra_semantic_revalidation": "134602", "uflia_profiles": "134603", "uflra_fallback": "134604"}, "cpus_per_task": 1, "memory_per_task": "2G", "array_concurrency": 4},
      "binary": {"git": "6f89774", "build": "Release", "sanitizers": "none", "cadical": "cadical-3.0.0-7b99c07", "revision_source": "Every task's version.txt matched PRIMO_EXPECTED_GIT; source Git metadata in an archived workspace is not the revision oracle", "source_equivalence": "git diff --exit-code 8ff9991..3a2dd40 -- src CMakeLists.txt tests/unit is empty; subsequent commits only change verification tooling/documentation"},
      "references": {"answers": "Z3 5.1.0", "models": "Dolmen, --require-dolmen-pass; no Z3 model fallback counted as pass"},
      "commands": {"prepare": "scripts/slurm_prepare_benchmark_workspace.py --reuse-dependencies --contrib-target contrib-clang-tools --jobs 4 with exact clean HEAD; --check-only --no-sync immediately before sbatch", "cross_logic": "sbatch --array=0-7,12-23%4 scripts/slurm_typed_cross_logic_model_gate.sbatch; 750/task; seeds 202609400+task; modes off/basic/strong/auto; --check-model in answer and model runs; timeout 5s", "lra_replay": "sbatch scripts/slurm_typed_lra_reconstruction_gate.sbatch; 1000/task; seeds 202609700..706; four preprocessing modes plus explicit monotone elimination in basic/strong/auto; solver and Dolmen timeouts 5s", "lra_semantic": "sbatch scripts/slurm_typed_lra_semantic_model_gate.sbatch; 750/task over saved FuzzSMT seeds 202609408..411; identical assertions, matching preprocessing profile, --check-model; Dolmen --force-smtlib2-logic=QF_NRA; both timeouts 5s", "uflia_profiles": "sbatch scripts/slurm_typed_uflia_model_gate.sbatch; 375/task, seeds 202609300..307, depth 3, four preprocessing modes with combination on/off, --check-model, 5s; nine witnesses per profile", "uflra_fallback": "sbatch --array=16-19%4 scripts/slurm_typed_cross_logic_model_gate.sbatch; PRIMO_FUZZ_SOLVER_ARGS=--no-qf-uflra-model-reconciliation; 750/task, seeds 202609416..419, four preprocessing modes, --check-model, 5s"},
      "cross_logic_summary": {"total": 15000, "answer_pass": 14918, "answer_timeout": 80, "answer_unknown": 2, "dolmen_pass": 10453, "not_sat": 4465, "model_timeout": 80, "model_unknown": 2, "wrong_answer": 0, "invalid_model": 0, "crash": 0, "parser_or_type_error": 0, "unsupported": 0, "reference_disagreement": 0},
      "families": {"QF_UF": {"total": 3000, "pass": 3000, "dolmen_pass": 2742}, "QF_LIA": {"total": 3000, "pass": 2918, "timeout": 80, "unknown": 2, "dolmen_pass": 2579}, "QF_UFLIA": {"total": 3000, "pass": 3000, "dolmen_pass": 1509}, "QF_UFLRA": {"total": 3000, "pass": 3000, "dolmen_pass": 1713}, "QF_UF_Bool": {"total": 3000, "pass": 3000, "dolmen_pass": 1910}},
      "additional_gates": {"lra_replay": {"total": 7000, "answer_and_dolmen_pass": 7000, "monotone_enabled": 3000, "wrong_answer": 0, "invalid_model": 0, "timeout": 0}, "lra_semantic": {"total": 3000, "dolmen_pass": 2562, "not_sat": 330, "solver_timeout": 108, "invalid_model": 0, "input_assertions_changed": false}, "uflia_profiles": {"total": 3000, "answer_pass": 3000, "dolmen_pass": 1488, "not_sat": 1512, "witness_pass": 72, "errors": 0}, "uflra_fallback": {"total": 3000, "answer_pass": 3000, "dolmen_pass": 1713, "not_sat": 1287, "errors": 0}},
      "artifacts": ["results/typed-cross-6f89774", "results/typed-lra-replay-6f89774", "results/typed-lra-semantic-6f89774", "results/typed-uflia-6f89774", "results/typed-uflra-fallback-6f89774", "tmp/typed-final-evidence-summaries"],
      "prior_matrix": {"commit": "8ff9991", "jobs": ["134486", "134487", "134488"], "artifacts": ["results/typed-cross-8ff9991", "results/typed-uflia-8ff9991", "results/typed-uflra-8ff9991"], "cross_logic": "18000 cases. UF/UFLIA/UFLRA/Bool: 3000 answer PASS each. LIA: 2917 PASS, 81 timeouts, 2 unknown; 2579 models accepted. LRA: 2894 answer PASS, 106 timeouts; 798 models accepted, 1766 inputs rejected by Dolmen's strict linear grammar, 330 unsat. The LRA shards were rejected gates, not model failures; their exact inputs receive semantic revalidation above.", "uflia_profiles": "3000 PASS; 1488 Dolmen PASS; 72 witness PASS", "required_uflra_gate": "3000 general + 500 finite QF_UF + 500 finite QF_UFLRA answer PASS against Z3/cvc5; 1730 general and 252 finite mixed-Real models accepted"},
      "notes": "31,000 case/profile checks in the listed 6f89774 gates, not 31,000 distinct inputs. No performance/PAR2 claim. Timeouts and branch-and-bound limits are not passes. Forced QF_NRA typing validates Real semantics without claiming strict linear input conformance. Restricted mutation and successful whole-tree static review remain separate acceptance requirements."
    },
    {
      "id": "2026-09-07-typed-model-gate-tool-contract-followup",
      "date": "2026-09-07",
      "kind": "verification-tool-contract-diagnostics",
      "commit": "6f89774",
      "evidence_status": "diagnostic",
      "environment": {"host": "CIIRC SLURM cluster", "static_job": "134605", "opfuzz_jobs": ["134635", "134636", "134637", "134638", "134639", "134640"]},
      "commands": {"static": "sbatch scripts/slurm_typed_model_static_review.sbatch; PRIMO_EXPECTED_GIT=6f89774", "opfuzz": "sbatch scripts/slurm_typed_model_mutation_gate.sbatch; PRIMO_MUTATION_TOOL=opfuzz, PRIMO_EXPECTED_GIT=6f89774; original corpus/profile matrix retained from the typefuzz diagnostic runs", "scope_check": "For each retained 8ff9991 mutation with an unknown ?v_ symbol diagnostic, run contrib/local/bin/z3 -T:1 on its saved primo-input.smt2, with subprocess timeout 2 seconds; check nonzero status and independent unknown-constant diagnostic"},
      "reference": {"fuzzer": "YinYang fork 04c8618a134e7a6c8b6d54fcd5ee9fd2ec64a2bb, package version 0.3.0", "answer": "Z3", "model": "Dolmen"},
      "results": {"static": "FAILED before useful analysis: compute nodes also lack system C headers (bits/wordsize.h and unistd.h). Follow-up stages all compiler include roots, not just C++ roots, and adds a single-file compiler-environment probe before the whole-tree scan.", "opfuzz": "Original seed checks ran; mutation did not start because the installed OpFuzz CLI rejects --seed. Only TypeFuzz exposes that argument. The follow-up seeded_opfuzz.py seeds Python's RNG and executes the actual installed script via runpy; it does not rely on nonexistent package console-entry-point metadata.", "fuzzer_status_audit": "The installed Fuzzer.py checks some nonzero exits but can still accept a generic nonzero exit with sat/unsat output. The gate now independently reruns every retained mutant with check_solver_seed_corpus.py, whose post-answer-crash handling is regression-tested, before accepting its answers. Model validation checks process status independently too.", "unrestricted_typefuzz": {"retained_mutants": 2799, "dolmen_pass": 1093, "not_sat": 654, "solver_error": 1040, "dolmen_input_nonconforming": 12, "independently_confirmed_ill_scoped_inputs": 59, "remaining_error_diagnostics": "981 explicit unsupported arithmetic/operator/sort cases; no model-error diagnostic"}},
      "artifacts": ["results/typed-static-6f89774", "results/typed-opfuzz-mathsat-6f89774", "results/typed-opfuzz-uf-6f89774", "results/typed-opfuzz-uflra-regressions-6f89774", "results/typed-opfuzz-uflra-real-6f89774", "results/typed-opfuzz-lra-real-6f89774", "results/typed-opfuzz-mathsat-fallback-6f89774", "results/typed-mutation-*-8ff9991"],
      "notes": "These are tooling failures/diagnostics, not accepted mutation or static gates. No performance claim. Fresh restricted mutation must pass an actual-tool smoke check before its campaign. Local 6f89774 implementation verification: make check (28 CTest, 91 Python), make asan-test (28 PASS, 50.72 seconds), make docs. Follow-up tooling unit suite: 94 tests PASS."
    },
    {
      "id": "2026-09-07-typed-model-review-environment-and-mutation-triage",
      "date": "2026-09-07",
      "kind": "verification-workflow-diagnostics",
      "commit": "8ff9991",
      "evidence_status": "diagnostic",
      "environment": {"host": "CIIRC SLURM cluster", "static_job": "134489", "typefuzz_jobs": ["134511", "134512", "134513", "134526", "134527"]},
      "commands": {"static": "sbatch scripts/slurm_typed_model_static_review.sbatch with PRIMO_EXPECTED_GIT=8ff9991", "mutation": "sbatch scripts/slurm_typed_model_mutation_gate.sbatch with PRIMO_EXPECTED_GIT=8ff9991, PRIMO_MUTATION_ITERATIONS=20, PRIMO_MUTATION_SECONDS=120; task modes off/basic/strong/auto; --check-model forwarded to every phase", "seeds": "scripts/build_fuzz_seed_corpus.py --root CORPUS --out SEEDS --per-family 1 --max-bytes 200000 (QF_LRA and QF_UFLRA); QF_UFLIA/mathsat uses --per-family 2; tracked QF_UF and QF_UFLRA seed directories also checked"},
      "inputs": {"generator": "YinYang/typefuzz", "seeds": [202609500, 202609501, 202609502, 202609503], "iterations_per_seed": 20, "timeout_seconds": 5, "lra_seed_timeout_seconds": 20, "references": "Z3 model_validate=true for differential mutation; Z3 for original seed answers; Dolmen for printed SAT models"},
      "results": {"static": "FAILED in 4 seconds before analysis: the compute-node compiler cannot locate standard C++ headers (string/vector/memory). No static-review pass is claimed. The follow-up installer stages the build compiler's C++ header roots; review uses the existing compile database without rebuilding on a different host compiler.", "mutation": "Unrestricted typefuzz introduced ill-scoped let variables, variable divisors/nonlinear products, and unsupported mixed Int/Real operators. Those rows are not model-validation passes; full collected-row classification and the restricted OpFuzz follow-up remain pending.", "lra_originals": "All four profiles: 13 PASS and 4 INCOMPLETE of 17 family representatives. LassoRanker: Primo unsat, Z3 timeout; latendresse: Primo sat, Z3 timeout; miplib and tropical-matrix: both timeout. The strict original-seed gate stopped before mutation. The 13 comparable seeds are listed in benchmarks/typed-model-lra-mutation-manifest.txt; this is not full-family performance evidence."},
      "artifacts": ["results/typed-static-8ff9991", "results/typed-mutation-mathsat-8ff9991", "results/typed-mutation-uf-8ff9991", "results/typed-mutation-uflra-regressions-8ff9991", "results/typed-mutation-lra-real-8ff9991", "results/typed-mutation-uflra-real-8ff9991"],
      "notes": "Diagnostic/rejected gate attempts, not completion evidence. Original inputs, solver stderr, model-validator summaries and retained mutations are preserved. Local cross-logic implementation checks passed 28 CTest, 87 Python, 28 ASan, lint and docs before 8ff9991. No performance claim. Follow-up tooling adds two header-search tests and two mutation-profile/seed-failure tests."
    },
    {
      "id": "2026-09-07-typed-uflia-2521110-slurm",
      "date": "2026-09-07",
      "kind": "slurm-typed-model-migration-gate",
      "commit": "2521110",
      "baseline_commit": "df04e80",
      "evidence_status": "current",
      "environment": {"host": "CIIRC SLURM cluster", "job_id": "134384", "array": "0-7%4", "cpus_per_task": 1, "memory": "2G", "wall_limit": "00:15:00", "states": "all COMPLETED, exit 0:0", "elapsed_per_task_seconds": [29, 28, 27, 27, 24, 24, 23, 24]},
      "binary": {"git": "2521110", "build": "Release", "sanitizers": "none", "cadical": "cadical-3.0.0-7b99c07"},
      "inputs": {"generator": "scripts/qf_uflia_fuzz.py", "shape": "mixed", "depth": 3, "seeds": [202609300, 202609301, 202609302, 202609303, 202609304, 202609305, 202609306, 202609307], "count_per_task": 375, "count": 3000, "timeout_seconds": 5, "profiles": "off/basic/strong/auto preprocessing, each with model combination on and off; all model runs use --check-model"},
      "commands": {"prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config SSH_CONFIG --remote REMOTE --remote-dir WORKDIR --local-dir CLEAN_2521110_WORKTREE --cmake PREPARED_CMAKE --reuse-dependencies --jobs 4 --require-tool contrib/local/bin/z3 --require-tool contrib/local/bin/dolmen", "preflight": "same helper with --check-only --no-sync immediately before sbatch; binary confirmed git 2521110 and intended CaDiCaL", "submit": "sbatch --parsable --export=ALL,PRIMO_WORKDIR=WORKDIR,PRIMO_EXPECTED_GIT=2521110,PRIMO_FUZZ_COUNT=375,PRIMO_FUZZ_OUT_DIR=WORKDIR/results/typed-uflia-2521110 scripts/slurm_typed_uflia_model_gate.sbatch", "answer": "python3 scripts/qf_uflia_fuzz.py --solver ./build-slurm-rel/primo PROFILE_ARGS --ref z3 --count 375 --seed SEED --shape mixed --depth 3 --timeout 5 --out OUT/answer", "models": "python3 scripts/validate_model.py --solver ./build-slurm-rel/primo PROFILE_ARGS --require-dolmen-pass --dolmen-arg=--strict=false --timeout 5 --dolmen-timeout 5 --out OUT/models OUT/answer/cases/*.smt2"},
      "reference": "Z3 for answers; Dolmen for all produced SAT models",
      "summary": {"total": 3000, "pass": 3000, "sat": 1488, "unsat": 1512, "dolmen_pass": 1488, "witness_checks": 72, "witness_pass": 72, "wrong_answer": 0, "invalid_model": 0, "crash": 0, "parser_or_type_error": 0, "unsupported": 0, "unknown": 0, "timeout": 0, "reference_disagreement": 0},
      "artifacts": "results/typed-uflia-2521110 (collected locally; per-task options, versions, generated cases, answer/model/witness CSVs and gate-summary.json)",
      "notes": "The initial clean remote build at 9f154d9 failed because primo_smtlib did not declare its new primo_terms/GMP dependency; fixed in 2521110 before any job was submitted. All nine deterministic witnesses pass in every profile. This validates the first QF_UFLIA migration, not subsequent uncommitted cross-logic migrations or final real-seed mutation gates. No performance claim or PAR2 comparison."
    },
    {
      "id": "2026-09-07-typed-model-uflia-local-migration",
      "date": "2026-09-07",
      "kind": "local-model-regression-check",
      "commit": "candidate based on 1cd633a; typed QF_UFLIA migration before source freeze",
      "evidence_status": "diagnostic",
      "environment": {"host": "local development workspace", "build": "development and ASan"},
      "inputs": {"count": 8, "files": "benchmarks/regressions/qf_uflia_model_evaluated_tuple.smt2 and bugs/qf-uflia-nested-application-model/*.smt2", "timeout_seconds": 5},
      "command": "PATH=contrib/local/bin:$PATH python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--check-model --solver-arg=--max-theory-conflicts=1000 --require-dolmen-pass --dolmen-arg=--strict=false --timeout 5 --dolmen-timeout 5 --out results/typed-model-migration-local benchmarks/regressions/qf_uflia_model_evaluated_tuple.smt2 bugs/qf-uflia-nested-application-model/*.smt2",
      "reference": "Dolmen independent printed-model validation; no answer-performance comparison",
      "summary": {"sat": 8, "dolmen_pass": 8, "invalid_model": 0, "crash": 0, "timeout": 0, "unsupported": 0},
      "verification": {"make_check": "PASS: 28 CTest and 87 Python tests, lint", "make_asan_test": "PASS: 28 tests", "make_docs": "PASS", "focused_clang_tidy": "PASS: no owned diagnostics in six focused files", "include_cleaner": "Missing direct headers fixed; no unused headers reported in seven focused files", "whole_tree_static_review": "Pending suitably provisioned SLURM sweep; local work is limited to bounded focused checks"},
      "artifacts": "results/typed-model-migration-local",
      "notes": "Latest witness failed in baseline df04e80 and now passes. Unit coverage adds all four preprocessing modes, both combination settings, assertion-order reversal, fixed-table reverse replay, intermediate versions, unrelated arena terms and x=f(x). This is a staged local milestone, not completion of the general redesign or a substitute for the committed-binary SLURM gate."
    },
    {
      "id": "2026-09-07-model-redesign-baseline-df04e80",
      "date": "2026-09-07",
      "kind": "local-model-regression-baseline",
      "commit": "df04e80",
      "evidence_status": "historical",
      "environment": {"host": "local development workspace", "build": "existing development build, rebuilt before model implementation edits"},
      "inputs": {"count": 8, "files": "benchmarks/regressions/qf_uflia_model_evaluated_tuple.smt2 and all seven bugs/qf-uflia-nested-application-model/*.smt2"},
      "command": "PATH=contrib/local/bin:$PATH python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --require-dolmen-pass --dolmen-arg=--strict=false --timeout 5 --dolmen-timeout 5 --out results/model-redesign-baseline-df04e80 benchmarks/regressions/qf_uflia_model_evaluated_tuple.smt2 bugs/qf-uflia-nested-application-model/*.smt2",
      "summary": {"sat": 8, "dolmen_pass": 7, "model_error": 1, "solver_crash": 0, "timeout": 0},
      "artifacts": "results/model-redesign-baseline-df04e80",
      "notes": "Latest evaluated-tuple witness fails Dolmen (exit 6); all seven historical witnesses pass. Validator reports z3-fallback for the failing row after the Dolmen failure; it remains model-error, not accepted evidence. Baseline source had only the new fixture/design documentation added when rebuilt; model implementation was unchanged. This is focused diagnostic evidence, not the required final SLURM gate."
    },
    {
      "id": "2026-09-07-cite-hoisting-lifetime-slurm-134014",
      "date": "2026-09-07",
      "kind": "targeted-preprocessing-lifetime-merge-gate",
      "commit": "6fe3f07d42726ef294de729d5e2787af00e32817",
      "baseline_commit": "eb2412e",
      "environment": {"host": "CIIRC SLURM cluster", "partition": "compute", "job_id": "134014", "requested_cpus": 1, "memory": "2G", "wall_limit": "00:10:00", "state": "COMPLETED", "exit_code": "0:0", "elapsed_seconds": 25, "max_rss": "24360K", "reference": "Z3 5.1.0"},
      "binary": {"git": "6fe3f07", "build": "Release", "sanitizers": "none", "cadical": "cadical-3.0.0-7b99c07", "sha256": "c57653c93a0936bcb1dcfdfe6a102d9f70a2fb2ff1d0cf9f8b950b78225e9934"},
      "inputs": {"generator": "quoted Python generator in scripts/slurm_cite_hoisting_fuzz_gate.sbatch", "seed": 202609070, "count": 1000, "families": ["QF_LIA", "QF_LRA"], "shape": "constant-leaf ITEs, literal scales and sums, depth 1-3, comparisons on either side, optional Boolean guard assignments", "solver_and_reference_timeout_seconds": 5, "regression": "benchmarks/regressions/qf_lia_scaled_ite_arena_growth.smt2"},
      "commands": {
        "prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config SSH_CONFIG --remote REMOTE --remote-dir WORKDIR --cmake PREPARED_CMAKE --reuse-dependencies --jobs 4 --require-tool contrib/local/bin/z3",
        "preflight": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync --ssh-config SSH_CONFIG --remote REMOTE --remote-dir WORKDIR --require-tool contrib/local/bin/z3",
        "submit": "sbatch --export=ALL,PRIMO_WORKDIR=WORKDIR,PRIMO_EXPECTED_GIT=6fe3f07,PRIMO_FUZZ_OUT_DIR=WORKDIR/results/cite-hoisting-6fe3f07-slurm scripts/slurm_cite_hoisting_fuzz_gate.sbatch",
        "compare": "python3 scripts/compare_with_z3.py OUT/*.smt2 --solver ./build-slurm-rel/primo --refs z3 --timeout 5 --out OUT/summary.csv",
        "asan_before": "ASAN_OPTIONS=detect_leaks=1:strict_init_order=1 ctest --test-dir build-asan -R '^primo_preprocessing_tests$' --output-on-failure --timeout 120",
        "asan_after": "make asan-test",
        "check": "make check",
        "docs": "make docs",
        "static_review": "timeout 120s make tidy; timeout 120s clang-tidy -p build src/smt/preprocessing.cpp tests/unit/preprocessing_tests.cpp; timeout 120s clang-tidy -p build -checks='-*,clang-diagnostic-*,misc-include-cleaner' src/smt/preprocessing.cpp tests/unit/preprocessing_tests.cpp"
      },
      "summary": {"total": 1000, "pass": 1000, "sat": 472, "unsat": 528, "wrong_answer": 0, "crash": 0, "parser_or_type_error": 0, "timeout": 0, "unknown": 0, "unsupported": 0, "reference_disagreement": 0, "regression_pass": 1, "preflight_regression_pass": 1},
      "by_family": {"QF_LIA": {"total": 500, "pass": 500, "sat": 241, "unsat": 259}, "QF_LRA": {"total": 500, "pass": 500, "sat": 231, "unsat": 269}},
      "comparison": "With the new allocation-boundary unit test and otherwise pre-fix eb2412e source, ASan reports heap-use-after-free in hoist_ite_to_top at the scaled-branch construction. After the fix, all 27 ASan tests pass, including eight forced-growth combinations (Int/Real, scale/sum, flat/nested). The minimal default-profile input also passes the ASan CLI smoke check. No baseline throughput or PAR2 comparison was performed.",
      "verification": {"make_check": "PASS: lint, 27 CTest tests, 87 Python tests", "make_asan_test": "PASS: 27 tests, detect_leaks=1 and strict_init_order=1", "make_docs": "PASS", "batch_validation": "PASS: slurm_validate_sbatch.py, bash -n, embedded Python compile", "focused_clang_tidy": "PASS: both touched C++ files, no diagnostics", "include_cleaner": "No unused includes in touched files; pre-existing MonotoneEliminatedVariable direct-header-provider advisory remains", "whole_tree_clang_tidy": "INCOMPLETE: bounded 120-second sweep reached file 34 of 98 and was terminated; no owned diagnostic emitted before termination. clang-tidy is unavailable on the SLURM host. No surviving local review/test process."},
      "artifacts": {"root": "results/cite-hoisting-6fe3f07-slurm", "cases": "case-0000.smt2 through case-0999.smt2", "summaries": ["summary.csv", "regression.csv"], "logs": ["primo-cite-hoisting-134014.out", "primo-cite-hoisting-134014.err", "local-verification/ite-asan-before.log", "local-verification/ite-asan-after.log", "local-verification/ite-check.log", "local-verification/ite-focused-tidy.log", "local-verification/ite-tidy.log", "local-verification/ite-include-cleaner.log"]},
      "evidence_status": "current",
      "notes": "A targeted answer/crash merge gate, not a model-validation or performance campaign. The source commit was frozen before remote preparation and version preflight immediately preceded sbatch. Local tests used the same implementation before its commit. All generated inputs and raw logs were collected, exact row count and PASS categories independently checked, and the job is terminal with empty stderr. The separate QF_UFLIA model-completion defect is not repaired or covered by this gate. No claim that all lifetime bugs in the project have been audited. SSH route details remain in ignored local configuration. New source/test code follows Primo's original term-ownership design; the mathematical ITE transformation is unchanged. The remaining whole-tree static-review gap is reported rather than counted as a pass."
    },
    {
      "id": "2026-09-07-integer-model-reconstruction-slurm-133742",
      "date": "2026-09-07",
      "kind": "slurm-committed-binary-model-correctness-gate",
      "commit": "5a43084320b81b415ee45b575f733bc516a5adac",
      "baseline_commit": "b529a8ba7e785c5fe6c10cf20f4cf9e3ea0f84a0",
      "environment": {"host": "CIIRC SLURM cluster", "partition": "compute", "job_id": "133742", "array": "0-7%4", "requested_cpus_per_task": 1, "memory": "2G", "wall_limit": "00:15:00", "build": "Release, CaDiCaL cadical-3.0.0-7b99c07", "reference": "Z3 5.1.0", "validator": "Dolmen 0.10"},
      "binary": {"version_git": "5a43084", "dirty": false, "sha256": "c8f5e572f33b6a94d3df4826d343ef4d15baddec46e14d01c1343e5661f3f58a"},
      "inputs": {"generator": "scripts/qf_uflia_fuzz.py", "seeds": [202609100, 202609101, 202609102, 202609103, 202609200, 202609201, 202609202, 202609203], "count_per_seed": 750, "count": 6000, "shape": "mixed", "depth": 3, "solver_timeout_seconds": 5, "dolmen_timeout_seconds": 5},
      "commands": {
        "prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config SSH_CONFIG --remote REMOTE --remote-dir WORKDIR --local-dir CLEAN_5a43084_WORKTREE --cmake PREPARED_CMAKE --reuse-dependencies --jobs 4 --require-tool contrib/local/bin/z3 --require-tool contrib/local/bin/dolmen",
        "validate_batch": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_integer_model_reconstruction_gate.sbatch; bash -n scripts/slurm_integer_model_reconstruction_gate.sbatch",
        "preflight": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync --ssh-config SSH_CONFIG --remote REMOTE --remote-dir WORKDIR --local-dir CLEAN_5a43084_WORKTREE --require-tool contrib/local/bin/z3 --require-tool contrib/local/bin/dolmen; immediately followed by sbatch",
        "submit": "From WORKDIR: sbatch --parsable --export=ALL,PRIMO_WORKDIR=WORKDIR,PRIMO_EXPECTED_GIT=5a43084,PRIMO_FUZZ_COUNT=750,PRIMO_FUZZ_OUT_DIR=WORKDIR/results/integer-model-reconstruction-5a43084-slurm tmp/integer-model-reconstruction-gate.sbatch; the submitted file is scripts/slurm_integer_model_reconstruction_gate.sbatch copied after validation",
        "answer": "python3 scripts/qf_uflia_fuzz.py --solver ./build-slurm-rel/primo --solver-arg=--quiet --ref z3 --count 750 --seed SEED --shape mixed --depth 3 --timeout 5 --out OUT/answer",
        "models": "python3 scripts/validate_model.py --solver ./build-slurm-rel/primo --solver-arg=--quiet --require-dolmen-pass --dolmen-arg=--strict=false --timeout 5 --dolmen-timeout 5 --out OUT/models OUT/answer/cases/*.smt2",
        "accounting": "sacct -j 133742 --format=JobID,State,ExitCode,Elapsed,MaxRSS -n",
        "collection": "rsync -az -e 'ssh -F SSH_CONFIG' REMOTE:WORKDIR/results/integer-model-reconstruction-5a43084-slurm/ results/integer-model-reconstruction-5a43084-slurm/; collected matching slurm_logs/primo-int-model-133742_*.{out,err} alongside the results"
      },
      "summary": {"total": 6000, "pass": 5998, "unknown_involved": 1, "timeout": 1, "wrong": 0, "crash": 0, "unsupported": 0, "parser_or_type_error": 0, "reference_disagreement": 0, "reference_unusable": 0, "sat_models": 3019, "dolmen_pass": 3019, "invalid_model": 0, "model_unknown": 1, "model_solver_timeout": 1, "dolmen_timeout": 0, "input_nonconforming": 0, "unsat": 2979, "witness_files": 8, "witness_checks_in_array": 64, "witness_pass_in_array": 64, "preflight_witness_pass": 8},
      "by_seed_range": {"202609100_to_202609103": {"total": 3000, "answer_pass": 2999, "unknown": 1, "dolmen_pass": 1535, "invalid_model": 0}, "202609200_to_202609203": {"total": 3000, "answer_pass": 2999, "timeout": 1, "dolmen_pass": 1484, "invalid_model": 0}},
      "jobs": {"133742_0": "COMPLETED 0:0, 48s", "133742_1": "COMPLETED 0:0, 47s", "133742_2": "COMPLETED 0:0, 47s", "133742_3": "COMPLETED 0:0, 47s", "133742_4": "COMPLETED 0:0, 45s", "133742_5": "COMPLETED 0:0, 44s", "133742_6": "COMPLETED 0:0, 45s", "133742_7": "COMPLETED 0:0, 54s"},
      "comparison": "The seed range from earlier SLURM job 133726 had one invalid model; this run has zero on that range and zero on the earlier clean range. Clean b529a8b was additionally revalidated locally on the same 6000 inputs: 3018 Dolmen passes and one invalid model, versus 3019 passes here. That direct baseline rerun is local preliminary evidence, not a SLURM timing comparison. The minimized z=f(0)+f(0) regression also fails b529a8b and passes the fixed binary.",
      "verification": "make check (27 CTest, 84 Python tests), make asan-test (27 tests), make lint, make docs, and whole-tree make tidy passed for the implementation. The subsequent SLURM script passed shell/heredoc validation, eight mocked acceptance scenarios, and the now-85-test Python suite. Existing post-answer-crash regressions cover both candidate and reference paths in qf_uflia_fuzz. Code and documentation reviews found no blocking issues; advisory include-dependency suggestions remain separate from correctness.",
      "artifacts": {"remote_relative_root": "primo-model-fix/results/integer-model-reconstruction-5a43084-slurm", "collected_root": "results/integer-model-reconstruction-5a43084-slurm", "summaries": "task-0 through task-7/gate-summary.json; task-N/answer/summary.csv; task-N/models/summary.csv", "failures": "task-N/answer/bugs; model input, response and validator output retained under task-N/models", "logs": "slurm_logs/primo-int-model-133742_N.{out,err}"},
      "evidence_status": "current",
      "notes": "Requested SLURM gate, not a performance/default promotion. Both unresolved cases are the same pre-existing branch-and-bound cases found locally: seed 202609100/case-00356 reaches its node limit; seed 202609203/case-00140 hits the five-second wall limit here. Z3 answers sat on both, and neither is counted as a pass. The gate checks exact row counts and allows only explicit unknown/timeout categories; it does not mask model errors behind validator exit 1. The timeout input is retained in bugs/ and classified, not treated as an untriaged wrong answer. No PAR2 or family timing is claimed, and no new mutation campaign was run. User-requested route is held in an ignored SSH config; source synchronization and revision preflight used the repository helper. All array tasks are terminal."
    },
    {
      "id": "2026-09-07-integer-model-reconstruction-5a43084",
      "date": "2026-09-07",
      "kind": "committed-binary-model-correctness-gate",
      "commit": "5a43084320b81b415ee45b575f733bc516a5adac",
      "baseline_commit": "b529a8ba7e785c5fe6c10cf20f4cf9e3ea0f84a0",
      "environment": {"host": "mikolas-ThinkPad-T14s-Gen-5", "type": "local workstation", "slurm_job_id": null, "build": "Release, CaDiCaL cadical-3.0.0-7b99c07"},
      "binary": {"path": "results/integer-model-reconstruction-5a43084/primo", "sha256": "2f5349ffd2a043fa0c7e8ded973cf5dbb1fe99dc8158cf522e68bb1c0e8fb148", "version_git": "5a43084", "dirty": false},
      "inputs": {"generator": "scripts/qf_uflia_fuzz.py", "seeds": [202609100, 202609101, 202609102, 202609103, 202609200, 202609201, 202609202, 202609203], "count_per_seed": 750, "count": 6000, "shape": "mixed", "depth": 3, "timeout_seconds": 5, "reference": "contrib/local/bin/z3", "model_validator": "dolmen --check-model=true --strict=false", "dolmen_timeout_seconds": 5},
      "commands": {
        "build": "cmake --build build --target primo -j 6; mkdir -p results/integer-model-reconstruction-5a43084; cp build/primo results/integer-model-reconstruction-5a43084/primo; sha256sum results/integer-model-reconstruction-5a43084/primo",
        "answer_per_seed": "python3 scripts/qf_uflia_fuzz.py --solver ./results/integer-model-reconstruction-5a43084/primo --solver-arg=--quiet --ref contrib/local/bin/z3 --count 750 --seed SEED --shape mixed --depth 3 --timeout 5 --out results/integer-model-reconstruction-5a43084/seed-SEED",
        "model_per_seed": "python3 scripts/validate_model.py --solver ./results/integer-model-reconstruction-5a43084/primo --require-dolmen-pass --dolmen-arg=--strict=false --timeout 5 --dolmen-timeout 5 --out results/integer-model-reconstruction-5a43084/seed-SEED/models results/integer-model-reconstruction-5a43084/seed-SEED/cases/*.smt2",
        "witness_per_mode": "python3 scripts/validate_model.py --solver ./results/integer-model-reconstruction-5a43084/primo --solver-arg=--preprocessing-mode=MODE --require-dolmen-pass --dolmen-arg=--strict=false --out results/integer-model-reconstruction-5a43084/witness-MODE bugs/qf-uflia-nested-application-model/witness*.smt2 benchmarks/regressions/qf_uflia_model_eliminated_definition.smt2; MODE is off, basic, strong or auto",
        "witness_no_cite": "python3 scripts/validate_model.py --solver ./results/integer-model-reconstruction-5a43084/primo --solver-arg=--no-cite-simplification --require-dolmen-pass --dolmen-arg=--strict=false --out results/integer-model-reconstruction-5a43084/witness-no-cite bugs/qf-uflia-nested-application-model/witness*.smt2 benchmarks/regressions/qf_uflia_model_eliminated_definition.smt2",
        "baseline_models": "For each seed, python3 scripts/validate_model.py --solver ./tmp/primo-model-baseline-b529a8b --require-dolmen-pass --dolmen-arg=--strict=false --timeout 5 --dolmen-timeout 5 --out results/model-reconstruction-baseline-SEED INPUT/cases/*.smt2; INPUT is fuzz-results/model-reconstruction-guarded-SEED except seeds 202609102 and 202609103 use model-reconstruction-retry-SEED. Those corpora were regenerated with the identical committed generator and seeds in the final gate."
      },
      "summary": {"total": 6000, "pass": 5998, "unknown_involved": 1, "timeout": 1, "wrong": 0, "crash": 0, "unsupported": 0, "parser_or_type_error": 0, "reference_disagreement": 0, "sat_models": 3019, "dolmen_pass": 3019, "invalid_model": 0, "input_nonconforming": 0, "unsat": 2979, "model_unknown": 1, "model_solver_timeout": 1, "witness_files": 8, "witness_modes": 5, "witness_dolmen_pass": 40},
      "baseline_summary": {"total": 6000, "dolmen_pass": 3018, "invalid_model": 1, "unsat": 2979, "solver_unknown": 1, "solver_timeout": 1, "crash": 0, "parser_or_type_error": 0, "input_nonconforming": 0},
      "verification": {
        "make_check": "PASS: lint, 27 CTest tests and 84 Python tests",
        "make_asan_test": "PASS: 27 CTest tests, leak detection and strict initialization checks",
        "make_docs": "PASS: warnings-as-errors build",
        "make_tidy": "PASS over all 98 tracked non-generated .cpp files; 19 non-user-code warnings suppressed, no owned-code diagnostic",
        "include_cleaner": "Advisory whole-tree scan inspected; removed seven actual unused includes, kept paired .cpp/.hpp self-includes. Remaining direct-header-dependency suggestions are pre-existing and deferred. Follow-up scan of affected files has no unused-include diagnostic.",
        "self_review": "smt-code-review whole-tree gate and focused soundness/lifetime/dependency review: no blocking issues. Efficiency review restricted the definition map to Int model reconstruction. Documentation critic corrected the old cause hypothesis and distinguishes provisional from committed evidence.",
        "gate_repairs": "Existing Python percent-format lint, script executable bit, two unknown documentation lexer tags, and two validator mocks missing the problem-only Dolmen call were repaired alongside the fix."
      },
      "artifacts": {"root": "results/integer-model-reconstruction-5a43084", "answers": "seed-SEED/summary.csv", "models": "seed-SEED/models/summary.csv", "failures": "seed-SEED/bugs", "baseline": "results/model-reconstruction-baseline-SEED", "verification": "tmp/model-{check,asan,docs,lint,tidy,include-cleaner,final-tidy,final-include-cleaner}.log"},
      "evidence_status": "historical",
      "notes": "Uses one frozen clean committed executable throughout. Completed as the user steered heavy computation to SLURM; retained as local preliminary evidence and superseded by the requested SLURM gate. No performance promotion, family timing, PAR2 claim or new mutation campaign. Known unresolved cases are seed 202609100/case-00356 (integer branch-and-bound node limit) and seed 202609203/case-00140 (wall timeout in this run; branch-and-bound limit in the provisional run), with Z3=sat. Baseline invalid model is seed 202609201/case-00184, the recorded residual witness. Raw artifacts are local-only and reproducible from the committed generator and commands."
    },
    {
      "id": "2026-09-07-integer-model-reconstruction-precommit-gate",
      "date": "2026-09-07",
      "kind": "local-model-fuzz-and-whole-tree-verification",
      "commit": "b529a8b-dirty: shared reconstruction facts, directed-definition evaluation and explicit cycle/component-value guards",
      "environment": {"host": "mikolas-ThinkPad-T14s-Gen-5", "type": "local workstation", "slurm_job_id": null},
      "inputs": {"generator": "scripts/qf_uflia_fuzz.py", "seeds": [202609100, 202609101, 202609102, 202609103, 202609200, 202609201, 202609202, 202609203], "count_per_seed": 750, "count": 6000, "shape": "mixed", "depth": 3, "timeout_seconds": 5, "reference": "contrib/local/bin/z3"},
      "commands": {
        "answer_per_seed": "python3 scripts/qf_uflia_fuzz.py --solver ./build/primo --solver-arg=--quiet --ref contrib/local/bin/z3 --count 750 --seed SEED --shape mixed --depth 3 --timeout 5 --out fuzz-results/model-reconstruction-guarded-SEED",
        "model_per_seed": "python3 scripts/validate_model.py --require-dolmen-pass --dolmen-arg=--strict=false --timeout 5 --dolmen-timeout 5 --out fuzz-results/model-reconstruction-guarded-SEED/models fuzz-results/model-reconstruction-guarded-SEED/cases/*.smt2",
        "retry": "For seeds 202609102 and 202609103, use --solver ./tmp/primo-model-reconstruction-guarded in both commands and replace guarded-SEED output paths with retry-SEED. Snapshot SHA256 b43d8d982639441b81e584116bd47e7ad453fdd8f7538bedf31fa9fafaeb4798.",
        "witnesses": "python3 scripts/validate_model.py --require-dolmen-pass --dolmen-arg=--strict=false --out results/model-reconstruction-guarded-witnesses bugs/qf-uflia-nested-application-model/witness*.smt2 benchmarks/regressions/qf_uflia_model_eliminated_definition.smt2",
        "verification": "make check; make asan-test; make docs; make tidy; clang-tidy -p build -checks='-*,clang-diagnostic-*,misc-include-cleaner' $(git ls-files 'src/*.cpp' 'tests/*.cpp' | rg -v '^src/smtlib/antlr/')"
      },
      "summary": {"total": 6000, "pass": 5998, "unknown_involved": 2, "wrong": 0, "crash": 0, "unsupported": 0, "parser_or_type_error": 0, "reference_disagreement": 0, "sat_models": 3019, "dolmen_pass": 3019, "invalid_model": 0, "input_nonconforming": 0, "unsat": 2979, "witness_dolmen_pass": 8},
      "artifacts": {
        "gate": "fuzz-results/model-reconstruction-guarded-{202609100,202609101,202609200,202609201,202609202,202609203}",
        "retry": "fuzz-results/model-reconstruction-retry-{202609102,202609103}",
        "failures": "Each gate directory has bugs/; no wrong-answer or invalid-model failures in the completed gate.",
        "witnesses": "results/model-reconstruction-guarded-witnesses",
        "verification": "tmp/model-{check,asan,docs,tidy,include-cleaner}.log"
      },
      "evidence_status": "historical",
      "notes": "Provisional local-only dirty-tree gate, superseded by a committed-binary gate. Two original shards (202609102 and 202609103) were invalidated by rebuilding build/primo during execution: PermissionError while the linker replaced the executable. Their partial artifacts are excluded completely and both shards were regenerated and revalidated against the fixed snapshot. Unknown cases are seed 202609100/case-00356 and 202609203/case-00140, both with Z3=sat, not counted as passes or invalid models. The model validator exits 1 for unknown as well as errors, so totals were inspected rather than treating its exit code as proof of a wrong model. No timing or PAR2 claim."
    },
    {
      "id": "2026-09-07-integer-model-reconstruction-diagnosis",
      "date": "2026-09-07",
      "kind": "invalid-model-reproduction-reduction-and-local-fix-probes",
      "commit": "b529a8ba7e785c5fe6c10cf20f4cf9e3ea0f84a0",
      "environment": {
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "type": "local workstation",
        "build": "Release, CaDiCaL cadical-3.0.0-7b99c07",
        "slurm_job_id": null
      },
      "commands": {
        "baseline": "make build; python3 scripts/validate_model.py --require-dolmen-pass --dolmen-arg=--strict=false --out results/model-residual-baseline-b529a8b bugs/qf-uflia-nested-application-model/witness*.smt2 tmp/model-residual-reduced.smt2",
        "reduction": "contrib/local/bin/ddsmt --ignore-output --timeout 5 -j 4 bugs/qf-uflia-nested-application-model/witness-residual-2026-09-07.smt2 tmp/model-residual-ddsmt.smt2 /workspace/tmp/model-invalid-predicate.py",
        "minimized_baseline": "python3 scripts/validate_model.py --solver tmp/primo-model-baseline-b529a8b --require-dolmen-pass --out results/model-residual-minimized-baseline tmp/model-residual-ddsmt.smt2",
        "shared_facts_probe": "python3 scripts/validate_model.py --require-dolmen-pass --dolmen-arg=--strict=false --out results/model-residual-shared-facts-probe bugs/qf-uflia-nested-application-model/witness*.smt2 tmp/model-residual-ddsmt.smt2",
        "definitions_probe": "python3 scripts/validate_model.py --require-dolmen-pass --dolmen-arg=--strict=false --out results/model-residual-definitions-probe bugs/qf-uflia-nested-application-model/witness*.smt2 tmp/model-residual-ddsmt.smt2",
        "answer_probe": "python3 scripts/qf_uflia_fuzz.py --solver ./build/primo --solver-arg=--quiet --ref contrib/local/bin/z3 --count 1000 --seed 202609200 --shape mixed --depth 3 --timeout 5 --out fuzz-results/model-reconstruction-probe-202609200",
        "model_probe": "python3 scripts/validate_model.py --require-dolmen-pass --dolmen-arg=--strict=false --timeout 5 --dolmen-timeout 5 --out fuzz-results/model-reconstruction-probe-202609200/models fuzz-results/model-reconstruction-probe-202609200/cases/*.smt2"
      },
      "results": {
        "baseline": "Clean rebuilt b529a8b reproduces the residual invalid model; six other saved witness files pass. A manually simplified eighth case passes and is not a reduction of the failure.",
        "reduction": "ddSMT reduces 9 assertions to (= z (+ (f 0) (f 0))). Baseline prints z=1 and f(0)=2. Predicate requires sat and Dolmen's assertion-evaluates-to-false diagnostic, not merely a nonzero validator exit. The resulting file is committed at benchmarks/regressions/qf_uflia_model_eliminated_definition.smt2.",
        "diagnosis": "The trace records saved $primo_ite_0=x as FACT 41, while f($primo_ite_0), its doubled sum and w have no recovered value. Recovery's closure did not receive preprocessing facts; the printer's did. The separate minimal failure has no tableau seed: completion invents z instead of evaluating its directed definition. A missing asserted LIA equality is not needed to explain either failure.",
        "shared_facts_only": "Original residual passes, minimized case still fails. This is an incomplete fix, not accepted alone.",
        "shared_facts_and_definition_dependencies": "All eight witness/reduction files pass Dolmen directly.",
        "answer_probe": {"total": 1000, "pass": 1000, "wrong": 0, "crash": 0, "timeout": 0, "unsupported": 0, "parser_or_type_error": 0, "reference_disagreement": 0},
        "model_probe": {"sat": 496, "dolmen_pass": 496, "unsat": 504, "invalid_model": 0, "solver_error": 0, "timeout": 0, "input_nonconforming": 0}
      },
      "inputs": {"generator": "scripts/qf_uflia_fuzz.py", "seed": 202609200, "count": 1000, "shape": "mixed", "depth": 3, "timeout_seconds": 5, "reference": "contrib/local/bin/z3"},
      "artifacts": {
        "baseline": "results/model-residual-baseline-b529a8b",
        "reduction": "results/model-residual-minimized-baseline",
        "trace": "tmp/model-trace.stderr",
        "probe": "fuzz-results/model-reconstruction-probe-202609200",
        "failures": "fuzz-results/model-reconstruction-probe-202609200/bugs"
      },
      "evidence_status": "historical",
      "notes": "Local-only diagnosis and provisional dirty-tree probes based on b529a8b, before cyclic-definition and component-disagreement guards. They are not the final-commit gate. The pre-existing executable initially reported 0fa076c-dirty and was not used as baseline evidence. No reference-solver source was read or copied. Reference comparison is correctness-only; PAR2 and benchmark family timing are not measured. Final acceptance is recorded separately."
    },
    {
      "id": "2026-07-10-qfuf-fuzzsmt-incremental-3200",
      "started_at": "2026-07-10",
      "recorded_at": "2026-07-18",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT generated cases",
      "commit": "unknown",
      "environment": {
        "type": "unknown",
        "host": "unknown",
        "slurm_job_id": null
      },
      "command": "unknown; artifact summary generated by scripts/fuzz_external.py-compatible format",
      "solver": {
        "name": "Primo",
        "argv": "unknown"
      },
      "references": [
        {
          "name": "z3",
          "argv": "unknown"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 0,
        "count": 3200,
        "timeout_seconds": null,
        "manifest": null
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-incremental-3200/summary.csv",
        "results": null,
        "logs": null,
        "bugs": "fuzz-results/qf_uf-fuzzsmt-incremental-3200/bugs"
      },
      "summary": {
        "total": 3200,
        "pass": 3200,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "parser_or_type_error": 0,
        "reference_disagreement": 0,
        "sat": 2873,
        "unsat": 327
      },
      "evidence_status": "needs_revalidation",
      "notes": "Historical artifact observed in the workspace. The summary is all PASS, but bugs/ contains saved files and the commit/host/command are not recorded, so this is not current-head evidence until revalidated."
    },
    {
      "id": "2026-07-16-qfuf-fuzzsmt-smoke-20",
      "started_at": "2026-07-16",
      "recorded_at": "2026-07-18",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT smoke",
      "commit": "unknown",
      "environment": {
        "type": "unknown",
        "host": "unknown",
        "slurm_job_id": null
      },
      "command": "make fuzzsmt or equivalent scripts/fuzz_external.py invocation; exact command not recorded",
      "solver": {
        "name": "Primo",
        "argv": "unknown"
      },
      "references": [
        {
          "name": "z3",
          "argv": "unknown"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 0,
        "count": 20,
        "timeout_seconds": null,
        "manifest": null
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt/summary.csv",
        "results": null,
        "logs": null,
        "bugs": "fuzz-results/qf_uf-fuzzsmt/bugs"
      },
      "summary": {
        "total": 20,
        "pass": 20,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "parser_or_type_error": 0,
        "reference_disagreement": 0,
        "sat": 17,
        "unsat": 3
      },
      "evidence_status": "needs_revalidation",
      "notes": "Historical smoke artifact observed in the workspace. The summary is all PASS, but bugs/ contains saved files and the exact commit/host/command are missing."
    },
    {
      "id": "2026-07-17-qfuf-hard-direct-conflict-bb69076",
      "started_at": "2026-07-17T18:56:22+02:00",
      "recorded_at": "2026-07-18",
      "kind": "benchmark",
      "scope": "QF_UF hard seven NEQ/PEQ/SEQ cases",
      "commit": "bb69076",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "slurm_job_id": "111028"
      },
      "command": "scripts/bench_qf_uf_full.py-compatible hard-set run with --timeout 120 and Primo --stats",
      "solver": {
        "name": "Primo",
        "argv": "--stats"
      },
      "references": [],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 7,
        "timeout_seconds": 120,
        "manifest": "benchmarks/qfuf-smac-gap-validate.txt"
      },
      "artifacts": {
        "summary": "results/slurm-qfuf-hard-direct-conflict-bb69076/primo-hard-120s-summary.csv",
        "results": "results/slurm-qfuf-hard-direct-conflict-bb69076/primo-hard-120s.csv",
        "logs": "results/slurm-qfuf-hard-direct-conflict-bb69076/logs",
        "bugs": null
      },
      "summary": {
        "total": 7,
        "solved": 1,
        "wrong": 0,
        "timeouts": 6,
        "par2": 1543.363725,
        "families": {
          "NEQ": {
            "solved": 0
          },
          "PEQ": {
            "solved": 1
          },
          "SEQ": {
            "solved": 0
          }
        }
      },
      "evidence_status": "historical",
      "notes": "Accepted as evidence for commit bb69076 only; later commits changed docs and solver implementation."
    },
    {
      "id": "2026-07-17-qfuf-hard-preinc-ecfe1d8",
      "started_at": "2026-07-17T19:17:41+02:00",
      "recorded_at": "2026-07-18",
      "kind": "benchmark",
      "scope": "QF_UF hard seven NEQ/PEQ/SEQ cases",
      "commit": "ecfe1d8",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "slurm_job_id": "111029"
      },
      "command": "scripts/bench_qf_uf_full.py-compatible hard-set run with --timeout 120 and Primo --stats",
      "solver": {
        "name": "Primo",
        "argv": "--stats"
      },
      "references": [],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 7,
        "timeout_seconds": 120,
        "manifest": "benchmarks/qfuf-smac-gap-validate.txt"
      },
      "artifacts": {
        "summary": "results/slurm-qfuf-hard-preinc-ecfe1d8/primo-hard-120s-summary.csv",
        "results": "results/slurm-qfuf-hard-preinc-ecfe1d8/primo-hard-120s.csv",
        "logs": "results/slurm-qfuf-hard-preinc-ecfe1d8/logs",
        "bugs": null
      },
      "summary": {
        "total": 7,
        "solved": 5,
        "wrong": 0,
        "timeouts": 2,
        "par2": 794.441822,
        "families": {
          "NEQ": {
            "solved": 1
          },
          "PEQ": {
            "solved": 3
          },
          "SEQ": {
            "solved": 1
          }
        }
      },
      "evidence_status": "historical",
      "notes": "Accepted as evidence for commit ecfe1d8 only; current HEAD needs a fresh fuzz gate before headline/default claims."
    },
    {
      "id": "2026-07-18-cadical-profile-sat-heavy-3858f12",
      "started_at": "2026-07-18T12:07:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "dependency-check",
      "scope": "CaDiCaL default options versus just_count-style incremental profile on SAT-heavy QF_UF instances",
      "commit": "3858f12",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "slurm_job_id": "111034"
      },
      "command": "python3 scripts/check_cadical_profile.py --solver ./build-slurm-rel/primo --timeout 30 --out results/cadical-profile-sat-heavy/profile.csv --summary results/cadical-profile-sat-heavy/profile.md tmp/QF_UF/2018-Goel-hwbench/QF_UF_firewire_tree.3.prop2_ab_reg_max.smt2 tmp/QF_UF/2018-Goel-hwbench/QF_UF_hanoi.2.prop1_ab_br_max.smt2 tmp/QF_UF/QG-classification/qg7/iso_brn_repgen_sk033.smt2 tmp/QF_UF/PEQ/PEQ014_size10.smt2",
      "solver": {
        "name": "Primo",
        "argv": "./build-slurm-rel/primo --quiet"
      },
      "references": [],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 4,
        "timeout_seconds": 30,
        "manifest": null
      },
      "artifacts": {
        "summary": "results/cadical-profile-sat-heavy-3858f12-111034/profile.md",
        "results": "results/cadical-profile-sat-heavy-3858f12-111034/profile.csv",
        "logs": "results/cadical-profile-sat-heavy-3858f12-111034/slurm-111034.out",
        "bugs": null
      },
      "summary": {
        "profiles": [
          "default",
          "incremental"
        ],
        "incremental_options": [
          "ilb=2",
          "sweep=0",
          "congruence=0",
          "backbone=0",
          "condition=0",
          "elim=0",
          "vivify=0",
          "probe=0",
          "subsume=0",
          "transred=0",
          "walk=0"
        ],
        "default_solved": 3,
        "incremental_solved": 3,
        "default_timeouts": 1,
        "incremental_timeouts": 1,
        "default_seconds_total": 34.099614,
        "incremental_seconds_total": 34.856785,
        "notable_rows": [
          {
            "file": "QF_UF_firewire_tree.3.prop2_ab_reg_max.smt2",
            "default_seconds": 0.98592,
            "incremental_seconds": 0.967157
          },
          {
            "file": "QF_UF_hanoi.2.prop1_ab_br_max.smt2",
            "default_seconds": 1.286088,
            "incremental_seconds": 1.312517
          },
          {
            "file": "iso_brn_repgen_sk033.smt2",
            "default_seconds": 1.655154,
            "incremental_seconds": 1.940777
          },
          {
            "file": "PEQ014_size10.smt2",
            "default_seconds": 30.172452,
            "incremental_seconds": 30.636334
          }
        ]
      },
      "evidence_status": "current",
      "notes": "No just_count-style ilb=2 win was observed on this small SAT-heavy Primo sample. This does not rule out CaDiCaL sensitivity for workloads with repeated SAT solve calls and one blocking clause per call; these SMT runs do not have the same model-counting loop structure."
    },
    {
      "id": "2026-07-18-cadical-version-smoke-e1b8d02",
      "started_at": "2026-07-18T11:25:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "dependency-check",
      "scope": "Local smoke validation of versioned CaDiCaL build/profile workflow",
      "commit": "e1b8d02",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "python3 scripts/check_cadical_versions.py --tags rel-1.9.5 --timeout 5 --prefix-root contrib/cadical-versions-test --build-root build-cadical-versions-test --out results/cadical-version-profile-smoke-e1b8d02/profile.csv --summary results/cadical-version-profile-smoke-e1b8d02/profile.md benchmarks/smoke/qf_uf/sat_uninterpreted_constants.smt2",
      "solver": {
        "name": "Primo",
        "argv": "versioned build under build-cadical-versions-test/rel-1.9.5/primo"
      },
      "references": [],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 1,
        "timeout_seconds": 5,
        "manifest": null
      },
      "artifacts": {
        "summary": "results/cadical-version-profile-smoke-e1b8d02/profile.md",
        "results": "results/cadical-version-profile-smoke-e1b8d02/profile.csv",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "tags": [
          "rel-1.9.5"
        ],
        "linked_solver": "primo 0.1.0 | git: e1b8d02 | cadical: cadical-1.9.5",
        "default_solved": 1,
        "incremental_solved": 1,
        "default_seconds_total": 0.003348,
        "incremental_seconds_total": 0.004359
      },
      "evidence_status": "current",
      "notes": "Workflow validation only. This confirms the versioned CaDiCaL path can install rel-1.9.5, build Primo against it, and run the profile harness on a smoke input."
    },
    {
      "id": "2026-07-18-cadical-version-sat-heavy-0ef55b8",
      "started_at": "2026-07-18T13:05:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "dependency-check",
      "scope": "CaDiCaL rel-1.9.5 versus rel-3.0.0 on SAT-heavy QF_UF instances",
      "commit": "0ef55b8",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "slurm_job_id": "111039"
      },
      "command": "run-only SLURM job using login-node builds under build-cadical-versions-sat-heavy-login/{rel-1.9.5,rel-3.0.0}; python3 scripts/check_cadical_profile.py --timeout 30 on four selected QF_UF instances",
      "solver": {
        "name": "Primo",
        "argv": "versioned builds, --quiet; incremental rows also pass --cadical-option ilb=2,sweep=0,congruence=0,backbone=0,condition=0,elim=0,vivify=0,probe=0,subsume=0,transred=0,walk=0"
      },
      "references": [],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 4,
        "timeout_seconds": 30,
        "manifest": null
      },
      "artifacts": {
        "summary": "results/cadical-version-sat-heavy-0ef55b8-111039/profile.md",
        "results": "results/cadical-version-sat-heavy-0ef55b8-111039/profile.csv",
        "logs": "results/cadical-version-sat-heavy-0ef55b8-111039/slurm-111039.out",
        "bugs": null
      },
      "summary": {
        "tags": [
          "rel-1.9.5",
          "rel-3.0.0"
        ],
        "rel_1_9_5_solver": "primo 0.1.0 | git: 0ef55b8 | cadical: cadical-1.9.5",
        "rel_3_0_0_solver": "primo 0.1.0 | git: 0ef55b8 | cadical: cadical-3.0.0-7b99c07",
        "rel_1_9_5_solved": 6,
        "rel_3_0_0_solved": 6,
        "rel_1_9_5_timeouts": 2,
        "rel_3_0_0_timeouts": 2,
        "rel_1_9_5_seconds_total": 67.806616,
        "rel_3_0_0_seconds_total": 67.585542,
        "notable_rows": [
          {
            "file": "QF_UF_firewire_tree.3.prop2_ab_reg_max.smt2",
            "rel_1_9_5_default_seconds": 0.950791,
            "rel_3_0_0_default_seconds": 0.967881
          },
          {
            "file": "QF_UF_hanoi.2.prop1_ab_br_max.smt2",
            "rel_1_9_5_default_seconds": 1.233225,
            "rel_3_0_0_default_seconds": 1.238136
          },
          {
            "file": "iso_brn_repgen_sk033.smt2",
            "rel_1_9_5_default_seconds": 1.691681,
            "rel_3_0_0_default_seconds": 1.551896
          },
          {
            "file": "PEQ014_size10.smt2",
            "rel_1_9_5_default_seconds": 30.034194,
            "rel_3_0_0_default_seconds": 30.034527
          }
        ]
      },
      "evidence_status": "current",
      "notes": "No material CaDiCaL 1.9.5 win on this sample; both versions solve the same rows and time out on PEQ014_size10. Earlier SLURM build jobs 111037 and 111038 failed because compute nodes lacked usable C/C++ development headers, so final measurement used login-node builds and a run-only batch job. Keep versioned CaDiCaL interface for later tuning, but current QF_UF gap is not explained by the 1.9.5/3.0.0 difference on these cases."
    },
    {
      "id": "2026-07-18-qfuf-fuzzsmt-699200f-3000",
      "started_at": "2026-07-18T13:32:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT generated cases, six SLURM shards",
      "commit": "699200f",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "slurm_job_id": "111040"
      },
      "command": "SLURM array 0-5; each shard: python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver <remote-home>/primo-cadical-profile/build-slurm-fuzz/primo --quiet --refs z3 --logic QF_UF --count 500 --timeout 5 --seed 699200+shard --fuzzer-args \"-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2\"",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-fuzz/primo --quiet"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": "699200..699205",
        "count": 3000,
        "timeout_seconds": 5,
        "manifest": null
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-699200f-3000/summary.csv",
        "results": "fuzz-results/qf_uf-fuzzsmt-699200f-3000/shard-*/summary.csv",
        "logs": "fuzz-results/qf_uf-fuzzsmt-699200f-3000/logs/slurm-111040_*.out",
        "bugs": "fuzz-results/qf_uf-fuzzsmt-699200f-3000/shard-*/bugs"
      },
      "summary": {
        "total": 3000,
        "pass": 3000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "parser_or_type_error": 0,
        "reference_disagreement": 0,
        "sat": 2692,
        "unsat": 308,
        "bug_files": 0,
        "slurm_shards_completed": 6
      },
      "evidence_status": "current",
      "notes": "Fresh current-HEAD fuzz gate after CaDiCaL version experiment. Primo binary reports git 699200f and CaDiCaL cadical-3.0.0-7b99c07. Remote FuzzSMT wrapper had to be regenerated after source sync because its absolute jar path pointed at /workspace. Compute nodes still should run prepared binaries rather than compile because batch compilation lacked usable development headers."
    },
    {
      "id": "2026-07-18-qfuf-fuzzsmt-yinyang-5de60d9",
      "started_at": "2026-07-18T13:41:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "fuzz",
      "scope": "QF_UF combined fuzz gate using FuzzSMT plus YinYang-package mutation fuzzers",
      "commit": "5de60d9",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "slurm_job_id": "111046"
      },
      "command": "SLURM array 0-8 under <remote-home>/primo-cadical-profile. Tasks 0-5: scripts/fuzz_external.py --fuzzer fuzzsmt --solver build-slurm-fuzz/primo --quiet --refs z3 --logic QF_UF --count 500 --timeout 5 --seed 500000+shard --fuzzer-args \"-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2\". Task 6: opfuzz -i 200 -t 5 over seven QF_UF seeds with Primo and z3. Tasks 7-8: yinyang semantic fusion -i 100 -t 5 over unsat and sat QF_UF seed sets with Primo.",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-fuzz/primo --quiet"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3 or z3 model_validate=true"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt, opfuzz, yinyang",
        "logic": "QF_UF",
        "seed": "FuzzSMT 500000..500005; in-repo QF_UF smoke/regression/seed files for opfuzz/yinyang",
        "count": 3000,
        "timeout_seconds": 5,
        "manifest": null
      },
      "artifacts": {
        "summary": "fuzz-results/both-fuzz-5de60d9/fuzzsmt-summary.csv",
        "results": "fuzz-results/both-fuzz-5de60d9/fuzzsmt/shard-*/summary.csv",
        "logs": "fuzz-results/both-fuzz-5de60d9/logs/slurm-111046_*.{out,err}",
        "bugs": "fuzz-results/both-fuzz-5de60d9/**/bugs"
      },
      "summary": {
        "fuzzsmt_total": 3000,
        "fuzzsmt_pass": 3000,
        "fuzzsmt_wrong": 0,
        "fuzzsmt_crash": 0,
        "fuzzsmt_timeout": 0,
        "fuzzsmt_sat": 2691,
        "fuzzsmt_unsat": 309,
        "opfuzz_solver_calls_last_reported": 2268,
        "opfuzz_seeds_processed": 7,
        "opfuzz_valid_seeds": 6,
        "opfuzz_invalid_seeds": 1,
        "opfuzz_bug_triggers": 0,
        "yinyang_unsat_solver_calls_last_reported": 813,
        "yinyang_unsat_seeds_processed": 18,
        "yinyang_unsat_valid_seeds": 18,
        "yinyang_unsat_invalid_seeds": 0,
        "yinyang_unsat_bug_triggers": 0,
        "yinyang_sat_solver_calls_last_reported": 391,
        "yinyang_sat_seeds_processed": 18,
        "yinyang_sat_valid_seeds": 12,
        "yinyang_sat_invalid_seeds": 6,
        "yinyang_sat_bug_triggers": 0,
        "bug_files": 0,
        "slurm_tasks_completed": 9
      },
      "evidence_status": "current",
      "notes": "This is the current-head gate that uses both Brummayer/Biere FuzzSMT and the YinYang package. The installed typefuzz entry point was also smoke-tested but hit internal QF_UF seed handling errors (custom-sort seed raised msg 'A'; Bool seed raised 'argument of type Term is not iterable'), so the successful YinYang-package coverage here is from opfuzz plus semantic-fusion yinyang. Primo binary reports git 5de60d9 and CaDiCaL cadical-3.0.0-7b99c07. CaDiCaL rel-1.9.5 versus rel-3.0.0 comparison remains logged separately as 2026-07-18-cadical-version-sat-heavy-0ef55b8 and should be repeated after solver-code changes, not after ledger-only commits."
    },
    {
      "id": "2026-07-18-qfuf-target-gaps-symmetry-order-05e1f7f",
      "started_at": "2026-07-18T12:44:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "benchmark",
      "scope": "26 fast-reference/slow-Primo QF_UF targets selected from primo.html, with QG/Goel/NEQ/PEQ controls",
      "commit": "05e1f7f+working-tree",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "slurm_job_id": "111063"
      },
      "command": "SLURM array 0-3, run-only; each target with build-slurm-rel/primo --quiet --stats, --no-uf-symmetry-breaking ablation, --qf-uf-preprocess=basic ablation, and contrib/local/bin/z3; timeout 120s",
      "solver": {
        "name": "Primo",
        "argv": "./build-slurm-rel/primo --quiet --stats"
      },
      "references": [
        {
          "name": "z3",
          "argv": "./contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 26,
        "timeout_seconds": 120,
        "manifest": "benchmarks/primo-target-gaps.txt"
      },
      "artifacts": {
        "summary": "results/primo-target-gaps-05e1f7f-ordfix/summary.txt",
        "results": "results/primo-target-gaps-05e1f7f-ordfix/merged.csv",
        "logs": "results/primo-target-gaps-05e1f7f-ordfix/slurm-111063_*.out,*.err",
        "bugs": null
      },
      "summary": {
        "total": 26,
        "wrong": 0,
        "profiles": {
          "primo-default": {
            "solved": 26,
            "timeouts": 0,
            "errors": 0,
            "par2": 151.62
          },
          "primo-no-sym": {
            "solved": 21,
            "timeouts": 5,
            "errors": 0,
            "par2": 1760.016
          },
          "primo-basic": {
            "solved": 26,
            "timeouts": 0,
            "errors": 0,
            "par2": 228.432
          },
          "z3": {
            "solved": 26,
            "timeouts": 0,
            "errors": 0,
            "par2": 26.615
          }
        },
        "families": {
          "QG": {
            "primo_default_par2": 13.129,
            "z3_par2": 7.752,
            "no_sym_par2": 211.235
          },
          "Goel": {
            "primo_default_par2": 32.444,
            "z3_par2": 1.453
          },
          "NEQ": {
            "primo_default_par2": 65.645,
            "z3_par2": 9.39
          },
          "PEQ": {
            "primo_default_par2": 40.404,
            "z3_par2": 8.019
          }
        }
      },
      "evidence_status": "current-working-tree",
      "notes": "Generated after moving UF symmetry before generated finite-domain AMO/equality-definition clauses. QG target rows now emit symmetry clauses and solve quickly by default; no-symmetry ablation times out on 5 NEQ/PEQ rows and is much slower on QG. Invalid earlier jobs 111055 and 111059 are not evidence: 111055 had nested-heredoc quoting damage, and 111059 ran before target files were synced to the remote tmp/QF_UF tree."
    },
    {
      "id": "2026-07-18-local-qfuf-profile-phase-05e1f7f",
      "started_at": "2026-07-18T12:35:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "profile",
      "scope": "Local perf/stats diagnostics on QG symmetry, Goel preprocessing, and NEQ/PEQ EUF phase behavior",
      "commit": "05e1f7f+working-tree",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "perf record/report and bounded ./build-current/primo --quiet --stats probes on selected QF_UF targets; includes --preprocess-only and --theory-phase ablations",
      "solver": {
        "name": "Primo",
        "argv": "./build-current/primo --quiet --stats"
      },
      "references": [
        {
          "name": "LLM2SMT local checkout",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 4,
        "timeout_seconds": 45,
        "manifest": null
      },
      "artifacts": {
        "summary": null,
        "results": null,
        "logs": "/tmp/primo-preprocess-only.err, /tmp/primo-neq016.err, perf.data local scratch",
        "bugs": null
      },
      "summary": {
        "qg_iso_icl_repgen_sk009_default_before_order_fix_seconds": 5.058,
        "qg_iso_icl_repgen_sk009_after_order_fix_seconds": 0.059,
        "goel_sokoban_preprocess_only_seconds": 11.46,
        "goel_sokoban_preprocess_forced_atom_rewrites": 187223,
        "goel_sokoban_finite_domain_amo_clauses": 177650,
        "neq016_phase_negative_seconds": 7.257,
        "neq016_phase_none_seconds": 6.488,
        "peq016_phase_negative_seconds": 7.529,
        "peq016_phase_none_seconds": 6.663,
        "sokoban_phase_negative_seconds": 11.99,
        "sokoban_phase_none_seconds": 12.481
      },
      "evidence_status": "diagnostic",
      "notes": "Perf on NEQ016 points at FlatCongruenceClosure process_use_list, explain_equal_into, merge/restore, and allocator cost. Phase none is a possible NEQ/PEQ tuning candidate but regresses the Goel control locally, so the historical negative default was preserved."
    },
    {
      "id": "2026-07-18-local-qfuf-sokoban-prepro-gprof-diseq-index",
      "started_at": "2026-07-18T14:10:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "profile",
      "scope": "Local gprof review of forced-atom preprocessing on a Goel sokoban fast-reference gap",
      "commit": "95baf0f+working-tree",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "cmake -S . -B build-gprof -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$PWD/contrib/local -DCMAKE_CXX_FLAGS='-pg' -DCMAKE_EXE_LINKER_FLAGS='-pg'; ./build-gprof/primo --quiet --stats --preprocess-only tmp/QF_UF/2018-Goel-hwbench/QF_UF_sokoban.3.prop1_ab_br_max.smt2; gprof ./build-gprof/primo gmon.out",
      "solver": {
        "name": "Primo",
        "argv": "./build-current/primo --quiet --stats"
      },
      "references": [
        {
          "name": "LLM2SMT reference SLURM row",
          "argv": "llm2smt --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 1,
        "timeout_seconds": 120,
        "manifest": "tmp/QF_UF/2018-Goel-hwbench/QF_UF_sokoban.3.prop1_ab_br_max.smt2"
      },
      "artifacts": {
        "summary": null,
        "results": null,
        "logs": "/tmp/primo-sokoban-gprof.txt, /tmp/primo-sokoban-gprof-after.txt, /tmp/primo-sokoban-after-index.err, /tmp/primo-sokoban-solve-after-index.err",
        "bugs": null
      },
      "summary": {
        "before_preprocess_only_seconds": 11.46,
        "after_preprocess_only_seconds": 0.72,
        "after_full_solve_seconds": 1.23,
        "after_result": "unsat",
        "before_gprof_top": "IncrementalCongruenceClosure::add_term 33.13%, ensure_capacity 23.44%, are_equal 14.59%, TermManager::get 11.12%; is_known_disequal scanned every known disequality for every equality query",
        "after_gprof_top": "short run dominated by frontend/parser/symbol-table hash lookups and hash-table construction; closure calls no longer dominate",
        "forced_atom_disequalities": 87137,
        "forced_atom_rewrites": 187223,
        "finite_domain_amo_clauses": 177650
      },
      "evidence_status": "current-working-tree",
      "notes": "Implemented local representative-pair indexing for negative equality units after saturating the temporary preprocessing closure. This preserves forced-atom semantics while removing the O(equality queries * disequalities) scan observed in gprof."
    },
    {
      "id": "2026-07-18-qfuf-fuzzsmt-yinyang-6f3cdca",
      "started_at": "2026-07-18T21:57:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "fuzz",
      "scope": "QF_UF campaign gate after forced-disequality preprocessing index",
      "commit": "6f3cdca",
      "environment": {
        "type": "slurm",
        "host": "node-head/node-01",
        "slurm_job_id": "111067,111076"
      },
      "command": "SLURM array under <remote-home>/primo-cadical-profile. Job 111067 tasks 6-8 ran opfuzz/yinyang; tasks 0-5 failed immediately because the FuzzSMT wrapper still pointed at /workspace/contrib/local/share/fuzzsmt/fuzzsmt.jar. After regenerating the wrapper with the remote jar path, job 111076 tasks 0-5 ran scripts/fuzz_external.py --fuzzer fuzzsmt --solver <remote-home>/primo-cadical-profile/build-slurm-fuzz/primo --quiet --refs z3 --logic QF_UF --count 500 --timeout 5 --seed 603000+shard --fuzzer-args \"-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2\". Job 111067 task 6 ran opfuzz -i 200 -t 5 over fuzz-seeds/qf_uf/all with Primo and z3. Tasks 7-8 ran yinyang semantic fusion -i 100 -t 5 over unsat and sat QF_UF seed sets with Primo.",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-fuzz/primo --quiet"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "z3 model_validate=true for opfuzz; z3 for FuzzSMT wrapper reference"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt, opfuzz, yinyang",
        "logic": "QF_UF",
        "seed": "FuzzSMT 603000..603005; in-repo QF_UF smoke/regression/seed files for opfuzz/yinyang",
        "count": 3000,
        "timeout_seconds": 5,
        "manifest": "fuzz-seeds/qf_uf/{all,sat,unsat}"
      },
      "artifacts": {
        "summary": "fuzz-results/both-fuzz-6f3cdca/fuzzsmt/shard-*/summary.csv",
        "results": "fuzz-results/both-fuzz-6f3cdca/",
        "logs": "fuzz-results/both-fuzz-6f3cdca/logs/slurm-111067_*.{out,err}, fuzz-results/both-fuzz-6f3cdca/logs/slurm-111076_*.{out,err}",
        "bugs": "fuzz-results/both-fuzz-6f3cdca/**/bugs"
      },
      "summary": {
        "fuzzsmt_total": 3000,
        "fuzzsmt_pass": 3000,
        "fuzzsmt_wrong": 0,
        "fuzzsmt_crash": 0,
        "fuzzsmt_timeout": 0,
        "fuzzsmt_sat": 2675,
        "fuzzsmt_unsat": 325,
        "opfuzz_solver_calls_last_reported": 2688,
        "opfuzz_seeds_processed": 7,
        "opfuzz_valid_seeds": 7,
        "opfuzz_invalid_seeds": 0,
        "opfuzz_bug_triggers": 0,
        "yinyang_unsat_solver_calls_last_reported": 805,
        "yinyang_unsat_seeds_processed": 18,
        "yinyang_unsat_valid_seeds": 18,
        "yinyang_unsat_invalid_seeds": 0,
        "yinyang_unsat_bug_triggers": 0,
        "yinyang_sat_solver_calls_last_reported": 800,
        "yinyang_sat_seeds_processed": 18,
        "yinyang_sat_valid_seeds": 18,
        "yinyang_sat_invalid_seeds": 0,
        "yinyang_sat_bug_triggers": 0,
        "bug_files": 0
      },
      "evidence_status": "current",
      "notes": "Primo binary reports git 6f3cdca and CaDiCaL cadical-3.0.0-7b99c07. Remote CaDiCaL was rebuilt on the cluster after a stale static library produced the known __isoc23_fscanf link failure. The failed 111067 FuzzSMT tasks are recorded as non-evidence; the successful replacement FuzzSMT evidence is job 111076."
    },
    {
      "id": "2026-07-18-qfuf-full-120s-3d581c9",
      "started_at": "2026-07-18T22:09:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "benchmark",
      "scope": "Full QF_UF benchmark archive after rejecting residual QG symmetry domains",
      "commit": "3d581c9",
      "environment": {
        "type": "slurm",
        "host": "node-head/node-01..node-04",
        "slurm_job_id": "111216"
      },
      "command": "SLURM array 0-95 under <remote-home>/primo-cadical-profile: python3 scripts/bench_qf_uf_full.py --root tmp/QF_UF --solver build-slurm-fuzz/primo --solver-arg=--quiet --solver-arg=--stats --timeout 120 --shards 96",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-fuzz/primo --quiet --stats"
      },
      "references": [
        {
          "name": "SMT-LIB status metadata",
          "argv": "expected status parsed by scripts/bench_qf_uf_full.py"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 7503,
        "timeout_seconds": 120,
        "manifest": "tmp/QF_UF"
      },
      "artifacts": {
        "summary": "results/slurm-qfuf-full-120s-3d581c9/summary.md",
        "results": "results/slurm-qfuf-full-120s-3d581c9/primo-qfuf-full-120s-3d581c9-merged.csv",
        "logs": "results/slurm-qfuf-full-120s-3d581c9/logs/",
        "bugs": null
      },
      "summary": {
        "total": 7503,
        "solved": 7499,
        "wrong": 0,
        "unsupported": 0,
        "par2": 6969.726722,
        "families": {
          "20170829-Rodin": {
            "total": 34,
            "solved": 34,
            "timeout": 0,
            "wrong": 0
          },
          "20190906-CLEARSY": {
            "total": 46,
            "solved": 46,
            "timeout": 0,
            "wrong": 0
          },
          "Goel": {
            "total": 773,
            "solved": 773,
            "timeout": 0,
            "wrong": 0
          },
          "NEQ": {
            "total": 48,
            "solved": 47,
            "timeout": 1,
            "wrong": 0
          },
          "PEQ": {
            "total": 47,
            "solved": 44,
            "timeout": 3,
            "wrong": 0
          },
          "QG": {
            "total": 6396,
            "solved": 6396,
            "timeout": 0,
            "wrong": 0
          },
          "SEQ": {
            "total": 56,
            "solved": 56,
            "timeout": 0,
            "wrong": 0
          },
          "TypeSafe": {
            "total": 3,
            "solved": 3,
            "timeout": 0,
            "wrong": 0
          },
          "eq_diamond": {
            "total": 100,
            "solved": 100,
            "timeout": 0,
            "wrong": 0
          }
        }
      },
      "evidence_status": "current",
      "notes": "Correctness recovery run after full 120s eval of 6f3cdca found 566 wrong answers from default UF symmetry breaking. 3d581c9 rejects symmetry groups manufactured from preprocessing residual domains and rejects moving-only QG table groups. This removes the wrong answers but increases PAR2 versus the unsound run; performance work must regain QG symmetry with a paper-grounded moving-term design."
    },
    {
      "id": "2026-07-18-qfuf-fuzzsmt-yinyang-3d581c9",
      "started_at": "2026-07-18T22:10:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "fuzz",
      "scope": "QF_UF fuzz gate after residual-domain symmetry fix, including existing-formula QG seed mutation",
      "commit": "3d581c9",
      "environment": {
        "type": "slurm",
        "host": "node-head/node-03",
        "slurm_job_id": "111312,111320"
      },
      "command": "Job 111312 tasks 6-7: opfuzz -i 250 -t 5 and yinyang -o sat -i 120 -t 5 over benchmarks/seeds/qf_uf with Primo and z3. Job 111312 tasks 0-5 failed because the FuzzSMT wrapper pointed at /workspace; after rewriting contrib/local/bin/fuzzsmt to the remote jar path, job 111320 tasks 0-5 ran scripts/fuzz_external.py --fuzzer fuzzsmt --count 500 --seed 703000+shard --timeout 5.",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-fuzz/primo --quiet"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "<remote-home>/primo-cadical-profile/contrib/local/bin/z3 model_validate=true"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt, opfuzz, yinyang",
        "logic": "QF_UF",
        "seed": "FuzzSMT 703000..703005; benchmarks/seeds/qf_uf including qg_symmetry_residual_domain.smt2",
        "count": 3000,
        "timeout_seconds": 5,
        "manifest": "benchmarks/seeds/qf_uf"
      },
      "artifacts": {
        "summary": "fuzz-results/both-fuzz-3d581c9-rerun/fuzzsmt/shard-*/summary.csv",
        "results": "fuzz-results/both-fuzz-3d581c9-rerun/, fuzz-results/both-fuzz-3d581c9-seed/",
        "logs": "fuzz-results/both-fuzz-3d581c9-rerun/logs/, fuzz-results/both-fuzz-3d581c9-seed/logs/",
        "bugs": "fuzz-results/both-fuzz-3d581c9-rerun/**/bugs, fuzz-results/both-fuzz-3d581c9-seed/**/bugs"
      },
      "summary": {
        "fuzzsmt_total": 3000,
        "fuzzsmt_pass": 3000,
        "fuzzsmt_wrong": 0,
        "fuzzsmt_crash": 0,
        "fuzzsmt_timeout": 0,
        "opfuzz_seeds_processed": 2,
        "opfuzz_valid_seeds": 2,
        "opfuzz_invalid_seeds": 0,
        "opfuzz_bug_triggers": 0,
        "yinyang_sat_seeds_processed": 2,
        "yinyang_sat_valid_seeds": 2,
        "yinyang_sat_invalid_seeds": 0,
        "yinyang_sat_bug_triggers": 0,
        "bug_files": 0
      },
      "evidence_status": "current",
      "notes": "The previous fuzz gates were insufficient because the tracked real-formula QF_UF seed corpus lacked QG finite-domain table/residual-domain shapes. Added benchmarks/seeds/qf_uf/qg_symmetry_residual_domain.smt2 so future existing-formula mutation covers this class. The failed 111312 FuzzSMT tasks are explicitly non-evidence; 111320 is the successful replacement."
    },
    {
      "id": "2026-07-18-qfuf-phase-targets-fe6350d",
      "started_at": "2026-07-18T17:30:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "benchmark",
      "scope": "Targeted QF_UF theory-phase ablation on eight fast-LLM2SMT/slow-Primo instances",
      "commit": "fe6350d",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "slurm_job_id": "111370"
      },
      "command": "Validated /tmp/primo-phase-targets.sbatch with scripts/slurm_validate_sbatch.py and bash -n; SLURM array 0-31 under <remote-home>/primo-cadical-profile; modes default, polarity, none, positive; timeout 130s wrapper around build-slurm-rel/primo --quiet --stats",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo --quiet --stats [--theory-phase=polarity|none|positive]"
      },
      "references": [
        {
          "name": "LLM2SMT",
          "argv": "<remote-home>/llm2smt-reference-src/build-ref-rel/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        }
      ],
      "inputs": {
        "manifest": "inline eight-instance target list from results/slurm-user-html334-5620bde-primo/fastref-slowprimo-vs-llm2smt.csv",
        "logic": "QF_UF",
        "timeout_seconds": 130
      },
      "artifacts": {
        "results": "results/phase-targets-fe6350d/merged.csv",
        "logs": "results/phase-targets-fe6350d/shard-*.stdout, results/phase-targets-fe6350d/shard-*.stderr"
      },
      "summary": {
        "rows": 32,
        "wrong": 0,
        "notable_result": "Default negative theory phase was slower than polarity on all eight targets; polarity improved iso_brn_repgen033 from 6.978s to 1.108s and PEQ004_size8 from 5.819s to 1.964s. The best mode still varied: none won NEQ015_size5 and iso_brn_repgen013, positive won iso_brn_repgen044 and gensys_brn044."
      },
      "evidence_status": "current",
      "notes": "This was a diagnosis run, not a default-profile decision. It motivated the broader 334-row default-versus-polarity run recorded as 2026-07-18-qfuf-html334-phase-6f3ffb1."
    },
    {
      "id": "2026-07-18-qfuf-html334-phase-6f3ffb1",
      "started_at": "2026-07-18T18:00:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "benchmark",
      "scope": "Default versus --theory-phase=polarity on the 334-row user primo.html QF_UF subset",
      "commit": "6f3ffb1",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "slurm_job_id": "111434"
      },
      "command": "Validated /tmp/primo-html334-phase.sbatch with scripts/slurm_validate_sbatch.py and bash -n; copied /tmp/user_primo_html_336_manifest.txt to benchmarks/user-primo-html-2026-07-18-manifest.txt on the SLURM workspace; SLURM array 0-31 with 16 shards each for default and --theory-phase=polarity; python3 scripts/bench_qf_uf_full.py --root tmp/QF_UF --manifest benchmarks/user-primo-html-2026-07-18-manifest.txt --solver build-slurm-rel/primo --solver-arg=--quiet --solver-arg=--stats --timeout 120",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo --quiet --stats"
      },
      "references": [
        {
          "name": "LLM2SMT",
          "argv": "<remote-home>/llm2smt-reference-src/build-ref-rel/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        }
      ],
      "inputs": {
        "manifest": "/tmp/user_primo_html_336_manifest.txt copied to remote benchmarks/user-primo-html-2026-07-18-manifest.txt",
        "logic": "QF_UF",
        "count": 334,
        "timeout_seconds": 120
      },
      "artifacts": {
        "default_results": "results/html334-phase-6f3ffb1/default-merged.csv",
        "polarity_results": "results/html334-phase-6f3ffb1/polarity-merged.csv",
        "logs": "results/html334-phase-6f3ffb1/{default,polarity}/logs"
      },
      "summary": {
        "default": {
          "rows": 334,
          "solved": 328,
          "wrong": 0,
          "unsupported": 0,
          "par2": 4019.866,
          "family_solved": {
            "Goel": "7/7",
            "NEQ": "25/26",
            "PEQ": "20/25",
            "QG": "270/270",
            "SEQ": "6/6"
          }
        },
        "polarity": {
          "rows": 334,
          "solved": 328,
          "wrong": 0,
          "unsupported": 0,
          "par2": 3990.028,
          "family_solved": {
            "Goel": "7/7",
            "NEQ": "25/26",
            "PEQ": "20/25",
            "QG": "270/270",
            "SEQ": "6/6"
          }
        }
      },
      "evidence_status": "current",
      "notes": "Polarity modestly improved this subset without changing solved count or wrong answers, but it is not a safe global-default conclusion: large wins such as iso_icl_nogen_sk003 100.475s -> 51.920s and iso_brn_repgen033 7.423s -> 1.086s were offset by large regressions such as gensys_icl_sk003 11.481s -> 42.918s, NEQ048_size9 23.327s -> 47.273s, and Goel firewire_tree.5 rows about 3.9s -> about 20s. Failed job 111402 is non-evidence; it exposed a manifest parser bug with dotted benchmark names, fixed in 6f3ffb1 before replacement job 111434."
    },
    {
      "id": "2026-07-18-qg-raw-amo-uselist-local-d9229b2-plus",
      "started_at": "2026-07-18T20:10:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "profile",
      "scope": "Local QG target check after raw finite-domain AMO preservation and flat use-list append-scan removal",
      "commit": "d9229b2 plus uncommitted changes",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "make test; /usr/bin/time -f 'elapsed %e' build/primo --stats tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2; perf record -F 99 -g --output /tmp/primo-qg7-after.perf -- build/primo --quiet tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2; perf report -i /tmp/primo-qg7-after.perf --stdio --no-children --sort symbol",
      "solver": {
        "name": "Primo",
        "argv": "build/primo --stats"
      },
      "references": [
        {
          "name": "previous local Primo diagnostic",
          "argv": "build/primo --stats tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2"
        }
      ],
      "inputs": {
        "file": "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2",
        "logic": "QF_UF",
        "timeout_seconds": 120
      },
      "artifacts": {
        "stats_log": "/tmp/primo-qg7-after.log",
        "perf_data": "/tmp/primo-qg7-after.perf",
        "perf_script_excerpt": "/tmp/primo-qg7-after.perfscript"
      },
      "summary": {
        "answer": "unsat",
        "elapsed_seconds": 5.02,
        "previous_local_elapsed_seconds": 9.05,
        "finite_domain_amo_clauses": 3559,
        "finite_domain_raw_choices": 56,
        "finite_domain_raw_amo_clauses": 3549,
        "finite_domain_post_amo_clauses": 658,
        "finite_domain_deduped_amo_clauses": 648,
        "euf_theory_conflicts": 9703,
        "euf_incremental_explain_calls": 1956068,
        "euf_incremental_use_list_appends": 828192,
        "euf_incremental_max_use_list_size": 3497,
        "perf_top_symbol": "FlatCongruenceClosure::explain_equal_into at 5.72 percent self in local sample"
      },
      "evidence_status": "local-only",
      "notes": "This is local development evidence only. It confirms the raw AMO count moves toward the LLM2SMT reference scale and that the old append-time linear duplicate scan is removed from the visible local profile. Headline benchmark claims still require SLURM suite evaluation and a committed revision."
    },
    {
      "id": "2026-07-18-qfuf-fuzzsmt1000-raw-amo-uselist-d9229b2-plus",
      "started_at": "2026-07-18T20:25:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "fuzz",
      "scope": "Local QF_UF FuzzSMT merge gate after raw finite-domain AMO preservation and flat use-list append-scan removal",
      "commit": "d9229b2 plus uncommitted changes",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver ./build/primo --refs z3 --logic QF_UF --count 1000 --timeout 5 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-1000-raw-amo-uselist",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt 0.3",
        "logic": "QF_UF",
        "count": 1000,
        "timeout_seconds": 5,
        "fuzzer_args": "-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-1000-raw-amo-uselist/summary.csv",
        "generated": "fuzz-results/qf_uf-fuzzsmt-1000-raw-amo-uselist/generated",
        "bugs": "fuzz-results/qf_uf-fuzzsmt-1000-raw-amo-uselist/bugs"
      },
      "summary": {
        "pass": 1000,
        "wrong_answer": 0,
        "crash": 0,
        "parser_or_type_error": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "bug_files": 0
      },
      "evidence_status": "local-only",
      "notes": "The final artifact has zero bug files. This covers the generated QF_UF merge gate; QG seed-mutation and benchmark evidence are still separate."
    },
    {
      "id": "2026-07-18-qg-raw-amo-focused-2905733-111466",
      "started_at": "2026-07-18T18:46:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "benchmark",
      "scope": "Focused QG qg6/qg7 iso_icl_repgen* and *_sk* target suite",
      "commit": "2905733",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "slurm_job_id": "111466"
      },
      "command": "sbatch results/qg-raw-amo-slurm-2905733/qg-focused.sbatch; script invokes python3 scripts/bench_qf_uf_full.py --repo <remote-home>/primo-raw-amo --root tmp/QF_UF --manifest results/qg-raw-amo-slurm-2905733/target-manifest.txt --solver build-slurm-rel/primo --solver-arg=--quiet --solver-arg=--stats --timeout 120 --shards 8",
      "solver": {
        "name": "Primo",
        "argv": "build-slurm-rel/primo --quiet --stats"
      },
      "references": [],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 353,
        "timeout_seconds": 120,
        "manifest": "results/qg-raw-amo-slurm-2905733/target-manifest.txt"
      },
      "artifacts": {
        "summary": "results/qg-raw-amo-slurm-2905733/summary.csv",
        "results": "results/qg-raw-amo-slurm-2905733/merged.csv",
        "logs": "results/qg-raw-amo-slurm-2905733/logs",
        "bugs": null
      },
      "summary": {
        "total": 353,
        "solved": 353,
        "wrong": 0,
        "timeouts": 0,
        "errors": 0,
        "unsupported": 0,
        "par2": 883.944,
        "families": {
          "QG": {
            "total": 353,
            "solved": 353,
            "wrong": 0,
            "timeout": 0
          }
        },
        "target_iso_icl_repgen006": {
          "status": "ok",
          "answer": "unsat",
          "seconds": 2.797408,
          "amo_clauses": 3559,
          "raw_amo_clauses": 3549,
          "post_amo_clauses": 658,
          "deduped_amo_clauses": 648,
          "euf_theory_conflicts": 9703,
          "euf_explain_calls": 1956068
        },
        "stat_totals": {
          "finite_domain_amo_clauses": 1064316,
          "finite_domain_raw_amo_clauses": 1050113,
          "finite_domain_post_amo_clauses": 746419,
          "finite_domain_deduped_amo_clauses": 732216
        }
      },
      "evidence_status": "current",
      "notes": "Remote workspace was checked immediately before sbatch with scripts/slurm_prepare_benchmark_workspace.py --check-only; binary reported git: 2905733 and cadical: cadical-3.0.0-7b99c07. This validates the target-suite part of the QG ICL gap plan."
    },
    {
      "id": "2026-07-18-html334-raw-amo-2905733-111474",
      "started_at": "2026-07-18T19:00:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "benchmark",
      "scope": "334-row primo.html QF_UF subset default-profile regression check",
      "commit": "2905733",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "slurm_job_id": "111474"
      },
      "command": "sbatch results/html334-raw-amo-2905733/html334-default.sbatch; script invokes python3 scripts/bench_qf_uf_full.py --repo <remote-home>/primo-raw-amo --root tmp/QF_UF --manifest results/html334-raw-amo-2905733/manifest.txt --solver build-slurm-rel/primo --solver-arg=--quiet --solver-arg=--stats --timeout 120 --shards 16",
      "solver": {
        "name": "Primo",
        "argv": "build-slurm-rel/primo --quiet --stats"
      },
      "references": [],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 334,
        "timeout_seconds": 120,
        "manifest": "results/html334-raw-amo-2905733/manifest.txt"
      },
      "artifacts": {
        "summary": "results/html334-raw-amo-2905733/summary.csv",
        "results": "results/html334-raw-amo-2905733/merged.csv",
        "logs": "results/html334-raw-amo-2905733/logs",
        "bugs": null
      },
      "summary": {
        "total": 334,
        "solved": 329,
        "wrong": 0,
        "timeouts": 5,
        "errors": 0,
        "unsupported": 0,
        "par2": 3694.119632,
        "baseline_commit": "6f3ffb1",
        "baseline_results": "results/html334-phase-6f3ffb1/default-merged.csv",
        "baseline_solved": 328,
        "baseline_wrong": 0,
        "baseline_timeouts": 6,
        "baseline_par2": 4019.865824,
        "families": {
          "Goel": {
            "total": 7,
            "solved": 7,
            "wrong": 0,
            "timeout": 0
          },
          "NEQ": {
            "total": 26,
            "solved": 25,
            "wrong": 0,
            "timeout": 1
          },
          "PEQ": {
            "total": 25,
            "solved": 21,
            "wrong": 0,
            "timeout": 4
          },
          "QG": {
            "total": 270,
            "solved": 270,
            "wrong": 0,
            "timeout": 0
          },
          "SEQ": {
            "total": 6,
            "solved": 6,
            "wrong": 0,
            "timeout": 0
          }
        },
        "newly_solved": [
          "tmp/QF_UF/PEQ/PEQ003_size10.smt2"
        ],
        "new_unsolved_regressions": [],
        "top_runtime_improvement": {
          "file": "tmp/QF_UF/QG-classification/qg7/iso_icl_nogen_sk003.smt2",
          "new_seconds": 16.054092,
          "old_seconds": 100.474819
        },
        "top_runtime_regression": {
          "file": "tmp/QF_UF/QG-classification/qg7/gensys_icl_sk004.smt2",
          "new_seconds": 14.991977,
          "old_seconds": 10.174769
        },
        "stat_totals": {
          "finite_domain_amo_clauses": 1125064,
          "finite_domain_raw_amo_clauses": 1080284,
          "finite_domain_post_amo_clauses": 1037916,
          "finite_domain_deduped_amo_clauses": 993136,
          "euf_use_list_appends": 1290978177,
          "euf_affected_use_list_dedup": 0
        }
      },
      "evidence_status": "current",
      "notes": "Remote workspace was checked immediately before sbatch with scripts/slurm_prepare_benchmark_workspace.py --check-only; binary reported git: 2905733 and cadical: cadical-3.0.0-7b99c07. This run checks that raw AMO preservation and use-list changes do not regress the mixed 334-row subset; reference-solver reruns were not repeated because the comparison baseline already records Primo default/reference context for this manifest."
    },
    {
      "id": "2026-07-18-missing5-option-inspection-8c772e6",
      "started_at": "2026-07-18T19:15:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "benchmark",
      "scope": "One-by-one local inspection of the five unsolved rows from the 334-row raw-AMO SLURM run",
      "commit": "8c772e6",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "python3 scripts/bench_qf_uf_full.py --repo . --root tmp/QF_UF --manifest /tmp/primo-missing5-manifest.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --timeout 30; repeated for default, pure_auto, pure_on, prop_off, lazy_model, ground_congruence, no_sym variants",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats plus variant options"
      },
      "references": [],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 5,
        "timeout_seconds": 30,
        "manifest": "/tmp/primo-missing5-manifest.txt"
      },
      "artifacts": {
        "summary": "results/missing5-inspection-8c772e6/variant-summary.json",
        "results": "results/missing5-inspection-8c772e6/*.csv",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "variants": [
          "default",
          "pure_auto",
          "pure_on",
          "prop_off",
          "lazy_model",
          "ground_congruence",
          "no_sym"
        ],
        "solved_by_any_variant": 0,
        "wrong": 0,
        "timeouts_per_variant": 5,
        "missing_files": [
          "tmp/QF_UF/PEQ/PEQ002_size8.smt2",
          "tmp/QF_UF/PEQ/PEQ018_size7.smt2",
          "tmp/QF_UF/PEQ/PEQ013_size8.smt2",
          "tmp/QF_UF/NEQ/NEQ016_size8.smt2",
          "tmp/QF_UF/PEQ/PEQ014_size11.smt2"
        ],
        "notes_by_file": {
          "PEQ002_size8": "8-value PEQ operation-table formula; 131 full finite-domain choices; two binary U functions; default 30s had 35900 theory conflicts and 9060745 explain calls; no-sym ablation worsened to 50199 conflicts and 22979263 explain calls.",
          "PEQ018_size7": "7-value PEQ formula; 65 choices; one binary and one unary U function; highest conflict-rate row at 121453 default 30s theory conflicts; no current option solved it.",
          "PEQ013_size8": "8-value PEQ formula; 139 choices; two binary and one unary U function; default 30s had 12997528 explain calls; no current option solved it.",
          "NEQ016_size8": "8-value NEQ formula with one binary U function plus three unary predicates; 67 choices; default 30s timeout; historical symmetry/value-precedence artifact solved this row, but current option probes did not within 30s.",
          "PEQ014_size11": "11-value PEQ formula; 369 choices; three binary functions; large AMO surface and use-list append volume with comparatively few conflicts; no current option solved it."
        }
      },
      "evidence_status": "local-only",
      "notes": "Local z3 and cvc5 binaries were unavailable in this workspace, so this entry records Primo-only option inspection. Historical repo artifacts indicate older symmetry/value-precedence experiments solved PEQ002_size8 and NEQ016_size8, but not the other three."
    },
    {
      "id": "2026-07-18-goel-bufal-boolean-unit-rebuild-fix-75b9ba4-plus",
      "started_at": "2026-07-18T22:40:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "benchmark",
      "scope": "Focused local check of tmp/QF_UF/2018-Goel-hwbench/QF_UF_h_BufAl_ab_reg_max.smt2 after Boolean-unit recursive rebuild fix",
      "commit": "75b9ba4 plus uncommitted preprocessing fix",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "/usr/bin/time -f \"elapsed %e\" build/primo --stats tmp/QF_UF/2018-Goel-hwbench/QF_UF_h_BufAl_ab_reg_max.smt2",
      "solver": {
        "name": "Primo",
        "argv": "build/primo --stats"
      },
      "references": [
        {
          "name": "z3",
          "argv": "historical results/slurm-qfuf-full-ref-z3-109856/z3-qfuf-full-2s-merged.csv: ok sat 0.180999s"
        },
        {
          "name": "cvc5",
          "argv": "historical results/slurm-qfuf-full-ref-cvc5-109857/cvc5-qfuf-full-2s-merged.csv: ok sat 0.206018s"
        },
        {
          "name": "LLM2SMT",
          "argv": "historical results/slurm-qfuf-full-120s-llm2smt-0.2.4-110181/llm2smt-qfuf-full-120s-merged.csv: ok sat 0.082413s"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 1,
        "timeout_seconds": null,
        "manifest": null
      },
      "artifacts": {
        "summary": null,
        "results": null,
        "logs": null,
        "bugs": null
      },
      "summary": {
        "file": "tmp/QF_UF/2018-Goel-hwbench/QF_UF_h_BufAl_ab_reg_max.smt2",
        "pre_fix_local_result": "unsupported with vector::_M_range_check in simplify_with_boolean_units after preprocessing reduced assertions to zero",
        "post_fix_result": "sat",
        "post_fix_elapsed_seconds": 0.09,
        "wrong": 0,
        "preprocessing_assertions": 917,
        "boolean_unit_rewrites": 1231,
        "forced_atom_rewrites": 4460,
        "sat_vars": 1277,
        "sat_clauses": 2116,
        "euf_theory_conflicts": 12
      },
      "evidence_status": "local-only",
      "notes": "Root cause was simplify_with_boolean_units holding a reference to a Term children vector while recursive simplification could intern new terms and reallocate TermManager storage. The fix copies child TermIds before recursive rebuilding, matching the other preprocessing rewriters."
    },
    {
      "id": "2026-07-18-qfuf-fuzzsmt-smoke-boolean-unit-rebuild-fix",
      "started_at": "2026-07-18T22:45:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT smoke after Boolean-unit recursive rebuild fix",
      "commit": "75b9ba4 plus uncommitted preprocessing fix",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "make fuzzsmt; expands to scripts/fuzz_external.py --fuzzer fuzzsmt --solver ./build/primo --refs z3 --logic QF_UF --count 20 --timeout 5",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 0,
        "count": 20,
        "timeout_seconds": 5,
        "manifest": null
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt/summary.csv",
        "results": null,
        "logs": null,
        "bugs": "fuzz-results/qf_uf-fuzzsmt/bugs"
      },
      "summary": {
        "total": 20,
        "pass": 20,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "parser_or_type_error": 0,
        "reference_disagreement": 0,
        "sat": 17,
        "unsat": 3,
        "bug_files": 0
      },
      "evidence_status": "local-only",
      "notes": "Smoke fuzz gate for a narrow preprocessing ownership fix; not a substitute for a full merge gate if broader preprocessing changes are stacked."
    },
    {
      "id": "2026-07-18-qg-iso-smac-setup-c615a84",
      "started_at": "2026-07-18T23:25:00+02:00",
      "recorded_at": "2026-07-18",
      "kind": "tuning-setup",
      "scope": "Local inspection of QG iso_* performance gaps and setup of iso-specific SMAC manifests/search space",
      "commit": "c615a84 plus uncommitted SMAC setup",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Rebuilt build/primo, ranked iso_* rows from results/qg-raw-amo-slurm-2905733/merged.csv against historical LLM2SMT/Z3/cvc5 CSVs, ran bounded option ablations on tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2, and smoke-ran build/primo --quiet --qf-uf-preprocess=basic over benchmarks/qfuf-smac-iso-{train,validate}.txt",
      "solver": {
        "name": "Primo",
        "argv": "build/primo --quiet --stats [option ablations]"
      },
      "references": [
        {
          "name": "LLM2SMT",
          "argv": "historical results/slurm-qfuf-full-120s-llm2smt-0.2.4-110181/llm2smt-qfuf-full-120s-merged.csv"
        },
        {
          "name": "z3",
          "argv": "historical results/slurm-qfuf-full-ref-z3-109856/z3-qfuf-full-2s-merged.csv"
        },
        {
          "name": "cvc5",
          "argv": "historical results/slurm-qfuf-full-ref-cvc5-109857/cvc5-qfuf-full-2s-merged.csv"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 20,
        "timeout_seconds": 30,
        "manifest": "benchmarks/qfuf-smac-iso-train.txt and benchmarks/qfuf-smac-iso-validate.txt"
      },
      "artifacts": {
        "summary": null,
        "results": null,
        "logs": null,
        "bugs": null
      },
      "summary": {
        "iso_rows_ranked_from_current_focused_qg": 259,
        "iso_brn_repgen033_default_seconds": 2.697,
        "iso_brn_repgen033_basic_seconds": 0.087,
        "iso_brn_repgen033_phase_polarity_seconds": 0.516,
        "iso_brn_repgen033_llm2smt_historical_seconds": 0.108559,
        "iso_brn_repgen033_z3_historical_seconds": 0.72639,
        "iso_manifest_train_count": 12,
        "iso_manifest_validate_count": 8,
        "basic_preprocess_smoke_wrong": 0
      },
      "evidence_status": "local-only",
      "notes": "Primo already flattens and/or terms during TermManager construction and finite-domain choice collection walks nested or nodes. No NNF pass was found in preprocessing, so NNF remains a plausible future implementation target, but the strongest immediate local signal on iso_brn_repgen033 is that default finite-domain AMO/search interaction is harmful while basic preprocessing matches the LLM2SMT timing scale. The SMAC search space was extended to tune theory phase, finite-domain value precedence/equality definitions, bounded ground congruence, and EUF engine in addition to existing QF_UF knobs."
    },
    {
      "id": "2026-07-18-qg-iso-smac-slurm-111490",
      "started_at": "2026-07-18T23:55:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "tuning",
      "scope": "SLURM SMAC campaign for QG iso_* performance gap",
      "commit": "c2363b3",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "slurm_job_id": "111490"
      },
      "command": "After python3 scripts/slurm_prepare_benchmark_workspace.py --remote-dir <remote-home>/primo-cadical-profile --check-only verified build-slurm-rel/primo reports git: c2363b3 and cadical: cadical-3.0.0-7b99c07, submitted sbatch --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_SMAC_TRAIN=benchmarks/qfuf-smac-iso-train.txt,PRIMO_SMAC_VALIDATE=benchmarks/qfuf-smac-iso-validate.txt,PRIMO_SMAC_LABEL=qfuf-iso,PRIMO_SMAC_TRIALS=80,PRIMO_SMAC_TIMEOUT=20,PRIMO_SMAC_VALIDATION_TIMEOUT=60,PRIMO_SMAC_SEED=20260718 scripts/slurm_qfuf_smac.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo"
      },
      "references": [],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": 20260718,
        "count": 20,
        "timeout_seconds": 20,
        "manifest": "benchmarks/qfuf-smac-iso-train.txt; holdout benchmarks/qfuf-smac-iso-validate.txt with 60s validation timeout"
      },
      "artifacts": {
        "summary": "<remote-home>/primo-cadical-profile/results/smac/qfuf-iso-111490/result.json",
        "results": "<remote-home>/primo-cadical-profile/results/smac/qfuf-iso-111490",
        "logs": "<remote-home>/primo-cadical-profile/logs/primo-qfuf-smac-111490.out and .err",
        "bugs": null
      },
      "summary": {
        "status": "completed",
        "state": "COMPLETED",
        "elapsed": "02:27:43",
        "exit_code": "0:0",
        "trials": 80,
        "train_count": 12,
        "validate_count": 8,
        "train_best_trial": 54,
        "train_best_cost": 43.41284,
        "train_best_solved": 12,
        "train_best_wrong": 0,
        "default_validation_cost": 36.712076,
        "incumbent_validation_cost": 32.205814,
        "validation_speedup_ratio": 1.1399207608911859,
        "validation_wrong": 0,
        "incumbent_args": "--quiet --preprocessing-passes=4 --preprocessing-adaptive-extra-passes=0 --preprocessing-adaptive-shrink-percent=29 --no-uf-symmetry-breaking --no-eq-bridge --euf-engine=incremental --euf-prop=auto --pure-theory-filter=auto --theory-phase=polarity --euf-prop-budget=1000 --prop-interval=128 --prop-assign-threshold=0.25"
      },
      "evidence_status": "rejected-profile",
      "notes": "Completed cleanly. Incumbent improved the 8-row iso holdout from 36.712076s to 32.205814s with zero wrong answers, a modest 1.14x aggregate speedup. The profile keeps default preprocessing, disables UF symmetry and eq-bridge, uses theory_phase=polarity, prop_budget=1000, and prop_interval=128. This is not strong enough to promote as a default without full focused-QG and 334-row validation; it primarily confirms the earlier phase/predicate-interaction signal. Follow-up local 20s regression check on benchmarks/qfuf-smac-gap-train.txt plus qfuf-smac-gap-validate.txt rejected this incumbent as a broad profile: default solved 10/15 with PAR2 256.247, the iso incumbent solved 6/15 with PAR2 393.522, and the same profile with equality bridge retained still solved only 6/15 with PAR2 391.558. The damage includes PEQ002_size7 timing out where default solved in 3.380s, so the iso SMAC result is overfit and should not be promoted.",
      "followups": [
        {
          "kind": "local-regression-check",
          "command": "python3 inline runner over benchmarks/qfuf-smac-gap-train.txt and benchmarks/qfuf-smac-gap-validate.txt; timeout 20s; compared default, iso incumbent, and iso incumbent with eq-bridge retained",
          "summary": {
            "default_solved": 10,
            "default_wrong": 0,
            "default_timeout": 5,
            "default_par2": 256.247,
            "incumbent_solved": 6,
            "incumbent_wrong": 0,
            "incumbent_timeout": 9,
            "incumbent_par2": 393.522,
            "incumbent_keep_eq_bridge_solved": 6,
            "incumbent_keep_eq_bridge_wrong": 0,
            "incumbent_keep_eq_bridge_timeout": 9,
            "incumbent_keep_eq_bridge_par2": 391.558
          }
        }
      ]
    },
    {
      "id": "2026-07-19-smac-instance-driver-fix",
      "started_at": "2026-07-19T00:45:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "tuning-tooling",
      "scope": "Fix QF_UF SMAC driver to use SMAC instance support and guard validation correctly",
      "commit": "3f21e5d plus uncommitted SMAC driver fix",
      "environment": {
        "type": "local+slurm-smoke",
        "host": "workspace and llm2smt-slurm",
        "slurm_job_id": null
      },
      "command": "Local py_compile/lint/docs/sbatch validation; remote smoke with .venv-smac/bin/python patched qfuf_gap_tune.py --train benchmarks/qfuf-smac-iso-validate.txt --validate same --guard qfuf-smac-equality-guard.txt --timeout 0.5 --validation-timeout 0.5 --guard-timeout 0.5 --trials 2",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo"
      },
      "references": [],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": 20260719,
        "count": 23,
        "timeout_seconds": 0.5,
        "manifest": "benchmarks/qfuf-smac-iso-validate.txt plus benchmarks/qfuf-smac-equality-guard.txt"
      },
      "artifacts": {
        "summary": "remote <remote-home>/primo-cadical-profile/results/smac/smoke-instance3/result.json",
        "results": "remote <remote-home>/primo-cadical-profile/results/smac/smoke-instance3",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "smoke_completed": true,
        "target_runs": 2,
        "smac_instance_warning": false,
        "deprecation_warnings": false,
        "unique_run_ids": true,
        "guard_result_written": true
      },
      "evidence_status": "local-and-remote-smoke",
      "notes": "Previous qfuf_gap_tune.py hid all training files inside one objective call, so SMAC could not use instances/intensification correctly and the default was not a first-class raced configuration. The fixed driver passes train files through Scenario.instances with simple index instance_features, uses use_default_config=True, runs one solver invocation per target-function call, and supports guard manifests that reject incumbents regressing known equality-family behavior."
    },
    {
      "id": "2026-07-19-smac-mixed-manifest-setup",
      "started_at": "2026-07-19T01:15:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "tuning-setup",
      "scope": "Replace iso-only SMAC objective with mixed QF_UF train/holdout manifests",
      "commit": "cf564b8 plus uncommitted mixed manifest setup",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Created benchmarks/qfuf-smac-mixed-train.txt and benchmarks/qfuf-smac-mixed-validate.txt; checked every path; ran make lint and make docs",
      "solver": {
        "name": "Primo",
        "argv": "not run; manifest/tooling setup"
      },
      "references": [],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 39,
        "timeout_seconds": null,
        "manifest": "benchmarks/qfuf-smac-mixed-train.txt and benchmarks/qfuf-smac-mixed-validate.txt"
      },
      "artifacts": {
        "summary": null,
        "results": null,
        "logs": null,
        "bugs": null
      },
      "summary": {
        "mixed_train_count": 21,
        "mixed_train_families": {
          "QG-iso": 8,
          "NEQ": 2,
          "PEQ": 4,
          "SEQ": 2,
          "Goel": 5
        },
        "mixed_validate_count": 18,
        "mixed_validate_families": {
          "QG-iso": 6,
          "NEQ": 2,
          "PEQ": 4,
          "SEQ": 1,
          "Goel": 5
        },
        "missing_paths": 0
      },
      "evidence_status": "setup",
      "notes": "This fixes the iso-only focus by making QG iso rows one slice of a mixed tuning objective. The equality guard remains available, but NEQ/PEQ/SEQ rows are also directly present in the training and validation manifests."
    },
    {
      "id": "2026-07-19-smac-mixed-submission-111491",
      "started_at": "2026-07-19T01:20:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "tuning",
      "scope": "Mixed QF_UF SMAC run over QG iso, equality-family, and Goel instances",
      "commit": "014fe3cea49dbbd10b45082575fd681afc6e8f65",
      "environment": {
        "type": "slurm",
        "host": "<slurm-user>@<slurm-host>",
        "slurm_job_id": "111491"
      },
      "command": "PRIMO_SMAC_TRAIN=benchmarks/qfuf-smac-mixed-train.txt PRIMO_SMAC_VALIDATE=benchmarks/qfuf-smac-mixed-validate.txt PRIMO_SMAC_GUARD=benchmarks/qfuf-smac-equality-guard.txt PRIMO_SMAC_LABEL=qfuf-mixed PRIMO_SMAC_TRIALS=160 PRIMO_SMAC_TIMEOUT=20 PRIMO_SMAC_VALIDATION_TIMEOUT=60 PRIMO_SMAC_GUARD_TIMEOUT=60 PRIMO_SMAC_SEED=20260719 sbatch .../primo-qfuf-smac.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "remote build-slurm-rel/primo candidate configurations selected by scripts/smac/qfuf_gap_tune.py"
      },
      "references": [],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": 20260719,
        "count": 54,
        "timeout_seconds": 20,
        "manifest": "benchmarks/qfuf-smac-mixed-train.txt, benchmarks/qfuf-smac-mixed-validate.txt, benchmarks/qfuf-smac-equality-guard.txt"
      },
      "artifacts": {
        "summary": "remote <remote-home>/primo-cadical-profile/results/smac/qfuf-mixed/result.json",
        "results": "remote <remote-home>/primo-cadical-profile/results/smac/qfuf-mixed",
        "logs": "remote SLURM output for job 111491",
        "bugs": null
      },
      "summary": {
        "train_count": 21,
        "validate_count": 18,
        "guard_count": 15,
        "status_at_recording": "RUNNING on node-01 at about 11 minutes elapsed"
      },
      "evidence_status": "submitted",
      "notes": "This is the corrected mixed-objective SMAC run. It is intentionally background work; local single-instance diagnosis should continue while this job runs."
    },
    {
      "id": "2026-07-19-neq-size8-z3-gap-local-profile",
      "started_at": "2026-07-19T01:25:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "profiling",
      "scope": "Local single-instance diagnosis for NEQ size8 equality-family gaps",
      "commit": "014fe3cea49dbbd10b45082575fd681afc6e8f65",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "build/primo --quiet --stats; /tmp/llm2smt/build/bin/llm2smt --quiet --stats; contrib/local/bin/z3 -smt2 -st; build-gprof/primo --quiet --stats --max-theory-conflicts=50000; perf record/report with --max-theory-conflicts=100000",
      "solver": {
        "name": "Primo",
        "argv": "build/primo --quiet --stats and build-gprof/primo --quiet --stats --max-theory-conflicts=50000"
      },
      "references": [
        {
          "name": "LLM2SMT",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats"
        },
        {
          "name": "Z3",
          "argv": "contrib/local/bin/z3 -smt2 -st"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 2,
        "timeout_seconds": 20,
        "manifest": "tmp/QF_UF/NEQ/NEQ027_size8.smt2 and tmp/QF_UF/NEQ/NEQ016_size8.smt2"
      },
      "artifacts": {
        "summary": "/tmp/neq016-gprof.out, /tmp/neq016-gprof.err, /tmp/neq016-perf.out, /tmp/neq016-perf.err",
        "results": "results/profiles/neq016-gprof-capped.txt and /tmp/primo-neq016.perf",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "NEQ027_size8": {
          "primo_seconds": 0.74,
          "llm2smt_seconds": 4.71,
          "z3_seconds": 0.16,
          "primo_theory_conflicts": 5708,
          "primo_explain_calls": 131278,
          "primo_use_list_appends": 504087,
          "primo_max_use_list_size": 3463
        },
        "NEQ016_size8": {
          "primo_uncapped_interrupted_seconds": 92.31,
          "llm2smt_20s_status": "timeout",
          "z3_seconds": 4.18,
          "primo_50k_conflict_cap_seconds_gprof_build": 10.68,
          "primo_50k_conflict_cap_theory_conflicts": 50000,
          "primo_50k_conflict_cap_explain_calls": 7753999,
          "primo_50k_conflict_cap_explain_cache_hits": 5461437,
          "primo_50k_conflict_cap_merges": 4854628,
          "primo_50k_conflict_cap_use_list_appends": 20322602,
          "primo_50k_conflict_cap_max_use_list_size": 145272
        },
        "gprof_top": "explain_equal_into 29.51%, OnlineEufPropagator::notify_assignment 14.90%, deque push_back allocation 13.18%, restore_trail_entry 5.73%, merge_classes 3.72%, process_use_list 2.01%",
        "perf_top": "explain_equal_into about 18%, allocator/operator new/malloc about 17%, merge_classes about 16%, OnlineEufPropagator::notify_assignment about 12%, restore_trail_entry about 8%, process_use_list about 7%"
      },
      "evidence_status": "local-only",
      "notes": "The named NEQ027 example does not reproduce a Primo-vs-LLM2SMT slowdown in this workspace: Primo is faster than LLM2SMT there, although Z3 is still faster. The current actionable gap is NEQ016_size8 versus Z3. Statistics and profiles point to flat EUF explanation work, merge/backtrack churn, and use-list vector growth/allocation rather than NNF or flattening."
    },
    {
      "id": "2026-07-19-neq-size8-tuned-llm2smt-correction",
      "started_at": "2026-07-19T02:05:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "reference-comparison",
      "scope": "Correct NEQ size8 local comparison by using the tuned LLM2SMT reference command line",
      "commit": "aa77e96",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000 tmp/QF_UF/NEQ/{NEQ027_size8,NEQ016_size8}.smt2; also checked plain, tuned plus --finite-domain-value-precedence, and --uf-symmetry-breaking --finite-domain-value-precedence variants with 30s timeout",
      "solver": {
        "name": "Primo",
        "argv": "No new Primo run; compares against the local and profiled Primo evidence from 2026-07-19-neq-size8-z3-gap-local-profile"
      },
      "references": [
        {
          "name": "LLM2SMT tuned",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        },
        {
          "name": "LLM2SMT plain",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 2,
        "timeout_seconds": 45,
        "manifest": "tmp/QF_UF/NEQ/NEQ027_size8.smt2 and tmp/QF_UF/NEQ/NEQ016_size8.smt2"
      },
      "artifacts": {
        "summary": "results/profiles/llm2smt-tuned-neq/NEQ016_size8.stderr and results/profiles/llm2smt-tuned-neq/NEQ027_size8.stderr",
        "results": "results/profiles/llm2smt-tuned-neq",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "NEQ027_size8": {
          "llm2smt_plain_seconds": 4.14,
          "llm2smt_tuned_seconds": 1.33,
          "llm2smt_tuned_with_value_precedence_seconds": 1.38,
          "llm2smt_symmetry_value_precedence_seconds": 0.98,
          "llm2smt_tuned_euf_conflicts": 5964,
          "llm2smt_tuned_euf_assignments": 460564,
          "llm2smt_tuned_finite_domain_amo": 5328,
          "primo_local_seconds_from_previous_entry": 0.74
        },
        "NEQ016_size8": {
          "llm2smt_plain_30s_status": "timeout",
          "llm2smt_tuned_seconds": 21.47,
          "llm2smt_tuned_with_value_precedence_seconds": 22.13,
          "llm2smt_symmetry_value_precedence_30s_status": "timeout",
          "llm2smt_tuned_euf_conflicts": 185145,
          "llm2smt_tuned_euf_assignments": 5935212,
          "llm2smt_tuned_finite_domain_amo": 2044,
          "primo_local_uncapped_interrupted_seconds_from_previous_entry": 92.31
        },
        "historical_slurm_tuned_llm2smt": {
          "NEQ027_size8_seconds": 4.456993,
          "NEQ016_size8_seconds": 54.08056,
          "artifact": "results/slurm-user-html334-10974ea-llm2smt/merged.csv"
        }
      },
      "evidence_status": "local-only-correction",
      "notes": "The previous local profile entry compared against plain LLM2SMT and therefore understated the LLM2SMT reference. With the tuned reference command, NEQ027 is still faster in current local Primo than tuned LLM2SMT, but the margin is much smaller. NEQ016 is a real tuned-LLM2SMT gap as well as a Z3 gap: tuned LLM2SMT solves locally in about 21.5s while Primo did not solve before interruption at 92s. The tuned reference did not use LLM2SMT's finite-domain value-precedence option for this improvement; the recorded tuned profile uses UF symmetry, four preprocessing passes, equality bridge, and EUF propagation thresholds."
    },
    {
      "id": "2026-07-19-neq023-primo-html-consistency-check",
      "started_at": "2026-07-19T02:35:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "reference-comparison",
      "scope": "Check whether the published primo.html NEQ023_size7 gap is consistent with local runs and stored artifacts",
      "commit": "7fd7eeb",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Opened https://people.ciirc.cvut.cz/~janotmik/llm2smt/primo.html; ran build/primo --quiet --stats, --qf-uf-preprocess=basic, --no-uf-symmetry-breaking, --pure-theory-filter=auto; ran tuned LLM2SMT and local Z3 on tmp/QF_UF/NEQ/NEQ023_size7.smt2 with 60s timeout",
      "solver": {
        "name": "Primo",
        "argv": "build/primo --quiet --stats and local option ablations"
      },
      "references": [
        {
          "name": "LLM2SMT tuned",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        },
        {
          "name": "Z3",
          "argv": "contrib/local/bin/z3 -smt2 -st"
        },
        {
          "name": "published primo.html",
          "argv": "https://people.ciirc.cvut.cz/~janotmik/llm2smt/primo.html"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 1,
        "timeout_seconds": 60,
        "manifest": "tmp/QF_UF/NEQ/NEQ023_size7.smt2"
      },
      "artifacts": {
        "summary": "/tmp/neq023-*.err and /tmp/neq023-*.out",
        "results": null,
        "logs": null,
        "bugs": null
      },
      "summary": {
        "published_primo_html": {
          "primo2_seconds": 37,
          "llm2smt_sym2_seconds": 1,
          "z3_seconds": 1,
          "yices_seconds": 3,
          "opensmt_seconds": 129,
          "cvc5_seconds": 5
        },
        "local_current": {
          "primo_default_seconds": 3.52,
          "primo_basic_seconds": 3.07,
          "primo_no_symmetry_seconds": 21.89,
          "primo_pure_auto_seconds": 3.85,
          "llm2smt_tuned_seconds": 1.11,
          "z3_seconds": 0.63
        },
        "shape": {
          "bytes": 97426,
          "declare_fun": 20,
          "or_nodes": 1930,
          "not_nodes": 645,
          "equalities": 1554,
          "distinct": 1
        },
        "local_default_stats": {
          "euf_assignments": 4728189,
          "euf_theory_conflicts": 3836,
          "euf_incremental_merges": 3629654,
          "euf_incremental_disequality_checks": 1718771,
          "euf_incremental_use_list_appends": 2064051,
          "euf_incremental_max_use_list_size": 32990
        },
        "stored_artifact_context": {
          "slurm_user_html334_default_seconds": 10.236129,
          "html334_phase_default_seconds": 10.352183,
          "html334_phase_polarity_seconds": 2.173922,
          "slurm_pure_auto_seconds": 2.365623,
          "slurm_tuned_llm2smt_seconds": 2.941528
        }
      },
      "evidence_status": "local-only-plus-published-html",
      "notes": "The exact published primo2 number is worse than the current local build on this host, but the qualitative observation is consistent: NEQ023_size7 and nearby NEQ rows are substantially sensitive to Primo profile choices and remain slower than fast references. The no-symmetry ablation is much worse locally, while historical polarity/pure-auto artifacts show this family can improve substantially without solving the broader default-profile problem."
    },
    {
      "id": "2026-07-19-euf-decision-callback-rejected",
      "started_at": "2026-07-19T03:05:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "rejected-experiment",
      "scope": "Prototype dynamic EUF SAT decision hints through CaDiCaL cb_decide on NEQ equality-family gaps",
      "commit": "fe60e77 plus reverted local prototype",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Temporarily added --euf-decide=polarity, rebuilt build/primo, and ran build/primo --quiet --stats --euf-decide=polarity tmp/QF_UF/NEQ/NEQ023_size7.smt2 plus a small NEQ cluster smoke; reverted source after CaDiCaL aborted",
      "solver": {
        "name": "Primo",
        "argv": "temporary build/primo --quiet --stats --euf-decide=polarity"
      },
      "references": [
        {
          "name": "LLM2SMT clean-room inspection",
          "argv": "/tmp/llm2smt source/docs inspected for cb_decide behavior only; no code copied"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 5,
        "timeout_seconds": 25,
        "manifest": "tmp/QF_UF/NEQ/NEQ023_size7.smt2, NEQ016_size7.smt2, NEQ015_size6.smt2, NEQ006_size6.smt2, NEQ041_size8.smt2"
      },
      "artifacts": {
        "summary": "/tmp/decide-abort.err, /tmp/decide-neq023.err, /tmp/neq023-after-revert.err",
        "results": null,
        "logs": null,
        "bugs": null
      },
      "summary": {
        "prototype": "--euf-decide=polarity returned unassigned-looking single-polarity theory atoms from OnlineEufPropagator::cb_decide",
        "abort": "CaDiCaL fatal error: external decisions are only allowed over unassigned variables",
        "first_abort_target": "tmp/QF_UF/NEQ/NEQ023_size7.smt2",
        "reason": "CaDiCaL assignment notifications are not eager enough for the propagator's assignment_by_var_ map to prove that a candidate is currently unassigned at cb_decide time. A one-shot returned-variable guard still aborted, so other assigned observed variables can also be stale.",
        "api_check": "CaDiCaL exposes is_decision(lit) but no safe in-callback unassigned query. val(lit) is SAT-model-only according to cadical.hpp and is not available during solving.",
        "source_status": "prototype reverted; build/primo rebuilt and NEQ023_size7 solved normally in 4.88s after revert"
      },
      "evidence_status": "rejected",
      "notes": "Do not reintroduce EUF cb_decide without a synchronization design that can prove the returned literal is currently unassigned under CaDiCaL's delayed notification semantics, or without extending the SAT adapter with a supported assignment query. Current Primo remains limited to static theory phase plus EUF external conflicts/propagations for QF_UF SAT-search influence."
    },
    {
      "id": "2026-07-19-neq023-preprocessing-reference-compare",
      "started_at": "2026-07-19T03:25:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "reference-comparison",
      "scope": "Compare Primo and tuned LLM2SMT preprocessing/stat shape on NEQ023_size7 after rejecting dynamic EUF decisions",
      "commit": "2c70e96",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "build/primo --quiet --stats tmp/QF_UF/NEQ/NEQ023_size7.smt2; /tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000 tmp/QF_UF/NEQ/NEQ023_size7.smt2",
      "solver": {
        "name": "Primo",
        "argv": "build/primo --quiet --stats"
      },
      "references": [
        {
          "name": "LLM2SMT tuned",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 1,
        "timeout_seconds": null,
        "manifest": "tmp/QF_UF/NEQ/NEQ023_size7.smt2"
      },
      "artifacts": {
        "summary": "/tmp/neq023-primo-pre.err and /tmp/neq023-llm2smt-pre.err",
        "results": null,
        "logs": null,
        "bugs": null
      },
      "summary": {
        "primo_seconds": 4.96,
        "llm2smt_tuned_seconds": 1.38,
        "primo_finite_domain_amo": 4368,
        "llm2smt_finite_domain_amo": 4473,
        "primo_sat_clauses": 6436,
        "llm2smt_sat_clauses": 8778,
        "primo_sat_binary_clauses": 5342,
        "llm2smt_sat_binary_clauses": 7640,
        "primo_euf_assignments": 4728189,
        "llm2smt_euf_assignments": 2138805,
        "primo_euf_conflicts": 3836,
        "llm2smt_euf_conflicts": 9774,
        "primo_uf_symmetry_constraints": 30,
        "llm2smt_uf_symmetry_clauses": 30
      },
      "evidence_status": "local-only",
      "notes": "On this representative NEQ row, the AMO gap is small and symmetry clause counts match. Tuned LLM2SMT has a larger SAT encoding but far fewer EUF assignments, so missing raw finite-domain AMO alone is unlikely to explain the remaining slowdown. The next likely levers are SAT search shape, phase/branching policy that is safe under CaDiCaL's callback semantics, or additional SAT-visible finite-domain/equality clauses beyond current AMO."
    },
    {
      "id": "2026-07-19-neq-cluster-option-matrix-local",
      "started_at": "2026-07-19T03:55:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "local-microbenchmark",
      "scope": "Compare Primo QF_UF option variants against tuned LLM2SMT and Z3 on a cheap NEQ cluster selected from the published primo.html gap table",
      "commit": "9bff67f",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "local loop over default, --finite-domain-equality-definitions, --ground-congruence, --theory-phase=polarity, combined eqdefs+phase, --qf-uf-preprocess=basic, tuned LLM2SMT, and z3; 30s timeout per run; CSV written to results/neq-cluster-option-matrix-local.csv",
      "solver": {
        "name": "Primo",
        "argv": "build/primo --quiet --stats"
      },
      "references": [
        {
          "name": "LLM2SMT tuned",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        },
        {
          "name": "Z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 5,
        "timeout_seconds": 30,
        "manifest": "tmp/QF_UF/NEQ/NEQ023_size7.smt2, NEQ016_size7.smt2, NEQ015_size6.smt2, NEQ006_size6.smt2, NEQ041_size8.smt2"
      },
      "artifacts": {
        "summary": "results/neq-cluster-option-matrix-local.csv",
        "results": null,
        "logs": null,
        "bugs": null
      },
      "summary": {
        "all_answers": "unsat",
        "wrong_answers": 0,
        "variant_total_seconds": {
          "primo_default": 33.208,
          "primo_eqdefs": 32.674,
          "primo_ground_congruence": 72.601,
          "primo_phase_polarity": 31.513,
          "primo_eqdefs_phase": 32.353,
          "primo_basic": 37.426,
          "llm2smt_tuned": 37.286,
          "z3": 24.377
        },
        "phase_polarity_effects": {
          "wins": {
            "NEQ023_size7": "5.259s -> 0.928s",
            "NEQ006_size6": "5.039s -> 2.786s",
            "NEQ041_size8": "1.916s -> 1.071s"
          },
          "regressions": {
            "NEQ016_size7": "9.306s -> 11.539s",
            "NEQ015_size6": "11.688s -> 15.189s"
          }
        },
        "ground_congruence_effects": {
          "wins": {
            "NEQ015_size6": "11.688s -> 8.231s",
            "NEQ041_size8": "1.916s -> 1.794s"
          },
          "regressions": {
            "NEQ023_size7": "5.259s -> 8.411s",
            "NEQ016_size7": "9.306s -> 28.984s",
            "NEQ006_size6": "5.039s -> 25.181s"
          }
        },
        "eqdefs_accepted": 0,
        "interpretation": "Finite-domain equality definitions did not fire on these NEQ files. Phase polarity is a selective SAT-search win, not a safe default from this evidence. Ground congruence remains too mixed for default use. Basic preprocessing is best for NEQ041_size8 but regresses the cluster aggregate."
      },
      "evidence_status": "local-only",
      "notes": "Use this matrix as a SMAC/heuristic input, not as headline benchmark evidence. A promising next step is an opt-in auto phase mode guarded by cheap theory-atom polarity and finite-domain/symmetry statistics, then validate on the mixed QF_UF SMAC manifests before considering any default change."
    },
    {
      "id": "2026-07-19-neq-cluster-auto-phase-local",
      "started_at": "2026-07-19T04:45:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "local-microbenchmark",
      "scope": "Smoke-test experimental --theory-phase=auto on the five-file NEQ cluster used to derive the phase heuristic",
      "commit": "worktree-after-f799825",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "build/primo --quiet --stats --theory-phase=auto on tmp/QF_UF/NEQ/{NEQ023_size7,NEQ016_size7,NEQ015_size6,NEQ006_size6,NEQ041_size8}.smt2; 30s timeout per file",
      "solver": {
        "name": "Primo",
        "argv": "build/primo --quiet --stats --theory-phase=auto"
      },
      "references": [],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 5,
        "timeout_seconds": 30,
        "manifest": "tmp/QF_UF/NEQ/NEQ023_size7.smt2, NEQ016_size7.smt2, NEQ015_size6.smt2, NEQ006_size6.smt2, NEQ041_size8.smt2"
      },
      "artifacts": {
        "summary": "terminal output from local auto-phase smoke run",
        "results": null,
        "logs": null,
        "bugs": null
      },
      "summary": {
        "all_answers": "unsat",
        "wrong_answers": 0,
        "total_seconds": 18.737,
        "previous_default_total_seconds": 33.208,
        "previous_phase_polarity_total_seconds": 31.513,
        "per_instance": {
          "NEQ023_size7": {
            "seconds": 0.698,
            "auto_polarity": 1,
            "negative_phase_atoms": 71,
            "theory_atoms": 2257
          },
          "NEQ016_size7": {
            "seconds": 6.288,
            "auto_polarity": 0,
            "negative_phase_atoms": 899,
            "theory_atoms": 899
          },
          "NEQ015_size6": {
            "seconds": 8.839,
            "auto_polarity": 0,
            "negative_phase_atoms": 28522,
            "theory_atoms": 28522
          },
          "NEQ006_size6": {
            "seconds": 2.053,
            "auto_polarity": 1,
            "negative_phase_atoms": 1782,
            "theory_atoms": 5778
          },
          "NEQ041_size8": {
            "seconds": 0.859,
            "auto_polarity": 1,
            "negative_phase_atoms": 716,
            "theory_atoms": 2092
          }
        }
      },
      "evidence_status": "local-only",
      "notes": "The heuristic selected polarity on the same rows where the earlier option matrix showed polarity wins and fell back to negative on the two polarity regressions. This is encouraging but intentionally not default evidence; validate via mixed QF_UF SMAC manifests and fuzzing before promotion."
    },
    {
      "id": "2026-07-19-qfuf-fuzzsmt-auto-phase-1000",
      "started_at": "2026-07-19T04:55:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT merge gate for experimental --theory-phase=auto",
      "commit": "worktree-after-f799825",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet --theory-phase=auto' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 20260719 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-auto-phase-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --theory-phase=auto"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 20260719,
        "count": 1000,
        "timeout_seconds": 5,
        "fuzzer_args": "-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-auto-phase-1000/summary.csv",
        "results": "fuzz-results/qf_uf-fuzzsmt-auto-phase-1000/generated",
        "logs": null,
        "bugs": "fuzz-results/qf_uf-fuzzsmt-auto-phase-1000/bugs"
      },
      "summary": {
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unknown": 0,
        "bugs": 0,
        "sat": 899,
        "unsat": 101
      },
      "evidence_status": "local-only",
      "notes": "This covers the opt-in auto phase option against generated QF_UF formulas. It is sufficient as a local merge gate for the new non-default option, but not sufficient for promoting auto phase to a default or headline profile; that still requires mixed-manifest SLURM validation."
    },
    {
      "id": "2026-07-19-smac-qfuf-mixed-auto-111492-submitted",
      "started_at": "2026-07-19T05:20:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "tuning",
      "scope": "Submit mixed QF_UF SMAC campaign from current commit with experimental --theory-phase=auto in the search space",
      "commit": "9d7e4ac",
      "environment": {
        "type": "slurm",
        "host": "<slurm-user>@<slurm-host>",
        "slurm_job_id": "111492"
      },
      "command": "Remote <remote-home>/primo-cadical-profile, after scripts/slurm_prepare_benchmark_workspace.py --check-only verified build-slurm-rel/primo reports git 9d7e4ac and cadical-3.0.0-7b99c07; submitted with PRIMO_SMAC_TRAIN=benchmarks/qfuf-smac-mixed-train.txt PRIMO_SMAC_VALIDATE=benchmarks/qfuf-smac-mixed-validate.txt PRIMO_SMAC_GUARD=benchmarks/qfuf-smac-equality-guard.txt PRIMO_SMAC_LABEL=qfuf-mixed-auto PRIMO_SMAC_TRIALS=160 PRIMO_SMAC_TIMEOUT=20 PRIMO_SMAC_VALIDATION_TIMEOUT=60 PRIMO_SMAC_GUARD_TIMEOUT=60 PRIMO_SMAC_SEED=20260720 sbatch scripts/slurm_qfuf_smac.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo"
      },
      "references": [],
      "inputs": {
        "generator": "SMAC",
        "logic": "QF_UF",
        "seed": 20260720,
        "count": 160,
        "timeout_seconds": 20,
        "manifest": "benchmarks/qfuf-smac-mixed-train.txt; validation benchmarks/qfuf-smac-mixed-validate.txt; guard benchmarks/qfuf-smac-equality-guard.txt"
      },
      "artifacts": {
        "summary": "pending: <remote-home>/primo-cadical-profile/results/smac/qfuf-mixed-auto-111492/",
        "results": "pending",
        "logs": "pending: <remote-home>/primo-cadical-profile/logs/primo-qfuf-smac-111492.{out,err}",
        "bugs": null
      },
      "summary": {
        "status": "submitted",
        "sbatch_validation": "scripts/slurm_validate_sbatch.py and bash -n passed locally; check-only remote binary validation passed immediately before sbatch",
        "search_space_change": "theory_phase now includes auto in addition to negative, positive, none, and polarity"
      },
      "evidence_status": "pending",
      "notes": "This replaces the earlier mixed SMAC job 111491 for evaluating the new auto phase knob. Job 111491 was launched from commit 014fe3c before auto existed and remains useful only as historical tuning evidence for the old search space."
    },
    {
      "id": "2026-07-19-smac-qfuf-mixed-111491-invalidated",
      "started_at": "2026-07-19T04:00:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "tuning",
      "scope": "Collect old mixed QF_UF SMAC job launched before --theory-phase=auto existed",
      "commit": "014fe3c",
      "environment": {
        "type": "slurm",
        "host": "<slurm-user>@<slurm-host>",
        "slurm_job_id": "111491"
      },
      "command": "PRIMO_SMAC_TRAIN=benchmarks/qfuf-smac-mixed-train.txt PRIMO_SMAC_VALIDATE=benchmarks/qfuf-smac-mixed-validate.txt PRIMO_SMAC_GUARD=benchmarks/qfuf-smac-equality-guard.txt PRIMO_SMAC_LABEL=qfuf-mixed PRIMO_SMAC_TRIALS=160 PRIMO_SMAC_TIMEOUT=20 PRIMO_SMAC_VALIDATION_TIMEOUT=60 PRIMO_SMAC_GUARD_TIMEOUT=60 PRIMO_SMAC_SEED=20260719 sbatch scripts/slurm_qfuf_smac.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo"
      },
      "references": [],
      "inputs": {
        "generator": "SMAC",
        "logic": "QF_UF",
        "seed": 20260719,
        "count": 160,
        "timeout_seconds": 20,
        "manifest": "benchmarks/qfuf-smac-mixed-train.txt; validation benchmarks/qfuf-smac-mixed-validate.txt; guard benchmarks/qfuf-smac-equality-guard.txt"
      },
      "artifacts": {
        "summary": "<remote-home>/primo-cadical-profile/results/smac/qfuf-mixed-111491/",
        "results": "<remote-home>/primo-cadical-profile/results/smac/qfuf-mixed-111491/{target-runs.csv,trial-summary.csv,validation-runs.csv,incumbent.json}",
        "logs": "<remote-home>/primo-cadical-profile/logs/primo-qfuf-smac-111491.{out,err}",
        "bugs": null
      },
      "summary": {
        "status": "invalid",
        "failure": "After SMAC exhausted 160 trials, guard validation crashed with FileNotFoundError for <remote-home>/primo-cadical-profile/build-slurm-rel/primo.",
        "cause": "The shared remote workspace was resynced/rebuilt for commit 9d7e4ac while job 111491 was still running, removing build-slurm-rel/primo out from under the old job.",
        "usable_evidence": "none for incumbent acceptance or guard results"
      },
      "evidence_status": "rejected",
      "notes": "Do not cite 111491 as a successful SMAC result. Future SLURM tuning runs should avoid destructive rebuilds of a workspace used by active jobs, preferably by using per-commit/per-job remote workdirs or checking squeue before rebuilding the shared workdir."
    },
    {
      "id": "2026-07-19-qfuf-mixed-local-default-auto-online-2d01ffa",
      "started_at": "2026-07-19T05:05:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "Local mixed QF_UF comparison across the SMAC train, validation, and equality-guard manifests after refreshing the local build to commit 2d01ffa",
      "commit": "2d01ffa",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "cmake -S . -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build -j$(nproc); local Python loops over the union of benchmarks/qfuf-smac-mixed-train.txt, benchmarks/qfuf-smac-mixed-validate.txt, and benchmarks/qfuf-smac-equality-guard.txt with 20s per run. Variants: ./build/primo --quiet --stats; ./build/primo --quiet --stats --theory-phase=auto; ./build/primo --quiet --stats --euf-prop=online; tuned /tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000; contrib/local/bin/z3 -smt2.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "references": [
        {
          "name": "LLM2SMT tuned",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        },
        {
          "name": "Z3",
          "argv": "contrib/local/bin/z3 -smt2"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 39,
        "timeout_seconds": 20,
        "manifest": "union of benchmarks/qfuf-smac-mixed-train.txt, benchmarks/qfuf-smac-mixed-validate.txt, and benchmarks/qfuf-smac-equality-guard.txt"
      },
      "artifacts": {
        "summary": "terminal summary and CSV artifacts",
        "results": "results/qfuf-mixed-local-default-auto-ref-2d01ffa.csv; results/qfuf-mixed-local-euf-online-2d01ffa.csv",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "disagreements": 0,
        "primo_default": {
          "ok": 34,
          "timeout": 5,
          "error": 0,
          "par2": 298.899
        },
        "primo_theory_phase_auto": {
          "ok": 33,
          "timeout": 6,
          "error": 0,
          "par2": 312.564
        },
        "primo_euf_prop_online": {
          "ok": 33,
          "timeout": 6,
          "error": 0,
          "par2": 300.789
        },
        "llm2smt_tuned": {
          "ok": 31,
          "timeout": 8,
          "error": 0,
          "par2": 384.264
        },
        "z3": {
          "ok": 34,
          "timeout": 5,
          "error": 0,
          "par2": 243.006
        },
        "notable_llm2smt_gaps": "iso_brn_repgen033 default 4.103s vs tuned LLM2SMT 0.071s; NEQ015_size5 default 5.434s and auto 4.664s vs tuned LLM2SMT 1.658s.",
        "online_effects": "Forcing --euf-prop=online improved NEQ015_size5 from 5.434s to 1.422s and NEQ015_size6 from 9.891s to 7.109s, but regressed PEQ014_size10 from solved in 19.057s to timeout, so always-online is rejected as a default."
      },
      "evidence_status": "current-local",
      "notes": "This is local development evidence, not a headline SLURM claim. It shows current Primo default is stronger than tuned LLM2SMT on this mixed 39-row PAR2 slice, but Z3 is still substantially ahead and there remain cheap QG/NEQ gaps. The data supports keeping --theory-phase=auto and --euf-prop=online as tuning knobs rather than defaults until the active SMAC job and broader SLURM validation decide a profile."
    },
    {
      "id": "2026-07-19-neq015-euf-online-local-profile-2d01ffa",
      "started_at": "2026-07-19T05:20:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "profiling",
      "scope": "Local diagnosis of NEQ/NEQ015_size5.smt2 as a non-iso cheap QF_UF gap",
      "commit": "2d01ffa",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "./build/primo --quiet --stats tmp/QF_UF/NEQ/NEQ015_size5.smt2; option ablations for --theory-phase=polarity, --euf-prop=online, --qf-uf-preprocess=basic, --no-uf-symmetry-breaking, --ground-congruence; tuned /tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000; contrib/local/bin/z3 -smt2 -st; perf record/report for default and --euf-prop=online.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats tmp/QF_UF/NEQ/NEQ015_size5.smt2"
      },
      "references": [
        {
          "name": "LLM2SMT tuned",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        },
        {
          "name": "Z3",
          "argv": "contrib/local/bin/z3 -smt2 -st"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 1,
        "timeout_seconds": 30,
        "manifest": "tmp/QF_UF/NEQ/NEQ015_size5.smt2"
      },
      "artifacts": {
        "summary": "/tmp/neq015-primo.err; /tmp/neq015-llm.err; /tmp/neq015-default.perf.data; /tmp/neq015-online.perf.data",
        "results": "results/qfuf-mixed-local-default-auto-ref-2d01ffa.csv; results/qfuf-mixed-local-euf-online-2d01ffa.csv",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "instance_shape": "One assertion, about 731kB, 12034 or nodes, 8808 equality tokens, 5137 not nodes, one distinct, no ite, max parenthesis depth about 2258.",
        "default_stats": {
          "finite_domain_amo": 9610,
          "uf_symmetry_constraints": 36,
          "sat_clauses": 22377,
          "euf_assignments": 363937,
          "euf_theory_conflicts": 11717,
          "euf_explain_calls": 379562,
          "max_use_list_size": 102333
        },
        "reference_stats": {
          "llm2smt_tuned_total_ms": 4299,
          "llm2smt_tuned_sat_clauses": 37959,
          "llm2smt_tuned_euf_assignments": 50424,
          "llm2smt_tuned_euf_conflicts": 916,
          "z3_total_time_seconds": 1.7,
          "z3_conflicts": 754,
          "z3_decisions": 349799
        },
        "ablations": {
          "default_seconds": 7.46,
          "theory_phase_polarity_seconds": 4.94,
          "euf_prop_online_seconds": 2.0,
          "online_with_reference_budget_seconds": 2.61,
          "basic_preprocess_seconds": 3.07,
          "no_uf_symmetry_seconds": 3.3,
          "ground_congruence_seconds": 3.19
        },
        "perf_default_top": "_int_malloc 10.37%, FlatCongruenceClosure::merge_classes 8.47%, OnlineEufPropagator::notify_assignment 6.05%, restore_trail_entry 5.35%, process_use_list 5.18%, Frontend::build_term 5.17%",
        "perf_online_top": "Frontend::build_term 15.35%, memcmp 13.32%, allocator about 10%, FlatCongruenceClosure::merge_classes 3.40%, restore_trail_entry 2.96%, process_use_list visible through allocator samples"
      },
      "evidence_status": "current-local",
      "notes": "The existing auto EUF propagation resolver uses online only for at most 5000 theory atoms, so this 13967-atom NEQ row is forced to conflict-only even though online propagation reduces conflicts from 11717 to 699 and cuts local time substantially. However, the mixed 39-row run shows always-online is not safe: PEQ014_size10 times out with online after delivering zero propagations. A sound next change would need a better auto predictor or adaptive early disable/enable mechanism with regression tests and fuzzing, or should be left to SMAC as a tuned option."
    },
    {
      "id": "2026-07-19-smac-qfuf-mixed-auto-111492-incumbent-local-reject",
      "started_at": "2026-07-19T05:45:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "tuning",
      "scope": "Local snapshot evaluation of the in-progress SLURM SMAC job 111492 incumbent on the same 39-row mixed QF_UF union",
      "commit": "2d01ffa",
      "environment": {
        "type": "local",
        "host": "workspace",
        "related_slurm_job_id": "111492"
      },
      "command": "Local Python loop over the 39-row mixed train/validation/guard union with 20s timeout using incumbent snapshot args from <remote-home>/primo-cadical-profile/results/smac/qfuf-mixed-auto-111492/incumbent.json while the SLURM job was still running: ./build/primo --quiet --qf-uf-preprocess=auto --preprocessing-passes=4 --preprocessing-adaptive-extra-passes=0 --preprocessing-adaptive-shrink-percent=8 --no-uf-symmetry-breaking --no-finite-domain-equality-definitions --no-eq-bridge --guarded-ground-unit-substitution --euf-engine=incremental --euf-prop=conflict --pure-theory-filter=off --theory-phase=polarity --euf-prop-budget=10000 --euf-prop-delivery=3000 --prop-interval=16 --prop-assign-threshold=0.10",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo with the incumbent snapshot listed in command"
      },
      "references": [
        {
          "name": "Primo default local baseline",
          "argv": "./build/primo --quiet --stats from 2026-07-19-qfuf-mixed-local-default-auto-online-2d01ffa"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 39,
        "timeout_seconds": 20,
        "manifest": "union of benchmarks/qfuf-smac-mixed-train.txt, benchmarks/qfuf-smac-mixed-validate.txt, and benchmarks/qfuf-smac-equality-guard.txt"
      },
      "artifacts": {
        "summary": "terminal summary and local CSV artifact",
        "results": "results/qfuf-mixed-local-smac-incumbent-111492-snapshot-2d01ffa.csv",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "incumbent_snapshot": {
          "ok": 30,
          "timeout": 9,
          "error": 0,
          "par2": 452.26
        },
        "default_baseline": {
          "ok": 34,
          "timeout": 5,
          "error": 0,
          "par2": 298.899
        },
        "notable_wins": "iso_brn_repgen033 improved to 0.149s and SEQ035_size6 improved to 0.587s locally.",
        "notable_regressions": "PEQ002_size7, PEQ016_size7, and SEQ026_size6 timed out although default solved them; PEQ003_size8 slowed to 15.059s; PEQ014_size10 timed out although default solved it under the cap."
      },
      "evidence_status": "rejected-local-snapshot",
      "notes": "This does not replace the final SLURM SMAC result because job 111492 was still running and may find a different incumbent or fail validation. It is a guardrail against promoting this early incumbent profile: the local mixed union rejects it as a broad default despite QG-specific wins."
    },
    {
      "id": "2026-07-19-adaptive-online-propagation-prototype-rejected",
      "started_at": "2026-07-19T06:05:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "profiling",
      "scope": "Local source prototype for auto-selected online EUF propagation with adaptive zero-delivery disable and a medium-size NEQ-shaped auto-online branch",
      "commit": "cd6de8b",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "Temporarily changed --euf-prop=auto to use online propagation for all <=5000 theory-atom problems plus medium problems with <=15000 atoms, <=45 UF-symmetry constraints, and <=700 pure-negative atoms; added a temporary :euf.propagation.adaptive-disabled counter and disabled auto-selected online propagation after eight no-delivery scans before reverting the source. Rebuilt build/primo and ran the 39-row mixed train/validation/guard union with 20s timeout.",
      "solver": {
        "name": "Primo prototype",
        "argv": "./build/primo --quiet --stats with temporary adaptive-online source changes"
      },
      "references": [
        {
          "name": "Primo default local baseline",
          "argv": "./build/primo --quiet --stats from 2026-07-19-qfuf-mixed-local-default-auto-online-2d01ffa"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 39,
        "timeout_seconds": 20,
        "manifest": "union of benchmarks/qfuf-smac-mixed-train.txt, benchmarks/qfuf-smac-mixed-validate.txt, and benchmarks/qfuf-smac-equality-guard.txt"
      },
      "artifacts": {
        "summary": "terminal summary and local CSV artifact",
        "results": "results/qfuf-mixed-local-adaptive-online-prototype.csv",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "prototype": {
          "ok": 34,
          "timeout": 5,
          "error": 0,
          "par2": 315.153
        },
        "default_baseline": {
          "ok": 34,
          "timeout": 5,
          "error": 0,
          "par2": 298.899
        },
        "notable_wins": "NEQ015_size5 improved from 5.434s to 2.467s; PEQ014_size10 improved from 19.057s to 16.270s in this noisy local run.",
        "notable_regressions": "NEQ015_size6 slowed from 9.891s to 15.119s; PEQ002_size7 slowed from 3.439s to 6.083s; PEQ016_size7 slowed from 5.789s to 7.841s; multiple QG/SEQ solved rows regressed."
      },
      "evidence_status": "rejected",
      "notes": "The source changes were reverted completely. The experiment confirms that medium-row online propagation is useful for NEQ015_size5, but the static medium-shape predictor and adaptive zero-delivery disable are too weak as a default mechanism. Future work should either find a stronger online-usefulness predictor from pre-solve/pre-search stats or pursue a different EUF/SAT search technique."
    },
    {
      "id": "2026-07-19-auto-phase-low-negative-local",
      "started_at": "2026-07-19T06:30:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "Local refinement of --theory-phase=auto for low-negative finite-domain QF_UF shapes, motivated by SEQ035_size6 and SEQ026_size7",
      "commit": "3990ce8",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "Profiled tmp/QF_UF/SEQ/SEQ035_size6.smt2 with ./build/primo --quiet --stats under default, --theory-phase=polarity, --theory-phase=auto, --theory-phase=none, --qf-uf-preprocess=basic, --no-uf-symmetry-breaking, and --pure-theory-filter=off; then added the low-negative branch to --theory-phase=auto and ran the 39-row mixed train/validation/guard union with 20s timeout: ./build/primo --quiet --stats --theory-phase=auto.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats --theory-phase=auto"
      },
      "references": [
        {
          "name": "Primo default local baseline",
          "argv": "./build/primo --quiet --stats from 2026-07-19-qfuf-mixed-local-default-auto-online-2d01ffa"
        },
        {
          "name": "Previous Primo --theory-phase=auto local baseline",
          "argv": "./build/primo --quiet --stats --theory-phase=auto from 2026-07-19-qfuf-mixed-local-default-auto-online-2d01ffa"
        },
        {
          "name": "Z3",
          "argv": "contrib/local/bin/z3 -smt2 from 2026-07-19-qfuf-mixed-local-default-auto-online-2d01ffa"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 39,
        "timeout_seconds": 20,
        "manifest": "union of benchmarks/qfuf-smac-mixed-train.txt, benchmarks/qfuf-smac-mixed-validate.txt, and benchmarks/qfuf-smac-equality-guard.txt"
      },
      "artifacts": {
        "summary": "terminal summary and local CSV artifacts",
        "results": "results/qfuf-mixed-local-auto-low-negative-polarity.csv; results/qfuf-mixed-local-polarity-2d01ffa.csv",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "seq035_diagnosis": "Default took about 3.25s locally with 47536 EUF conflicts and 1321983 explain calls; --theory-phase=polarity took about 0.55s with 14426 conflicts and 356601 explain calls; Z3 solved in about 0.03s.",
        "new_auto": {
          "ok": 35,
          "timeout": 4,
          "error": 0,
          "par2": 247.589
        },
        "old_auto": {
          "ok": 33,
          "timeout": 6,
          "error": 0,
          "par2": 312.564
        },
        "default_baseline": {
          "ok": 34,
          "timeout": 5,
          "error": 0,
          "par2": 298.899
        },
        "z3_baseline": {
          "ok": 34,
          "timeout": 5,
          "error": 0,
          "par2": 243.006
        },
        "notable_wins": "SEQ026_size7 changed from timeout under old auto to 14.663s with auto-polarity; SEQ035_size6 improved from old-auto 1.811s to 0.451s; iso and QG rows remained on the existing auto-polarity path.",
        "notable_regressions": "No material regression against old auto in the 39-row local run; the largest measured regression was about 0.004s on a small Goel row."
      },
      "evidence_status": "current-local",
      "notes": "The implemented subset is a heuristic only: if --theory-phase=auto sees finite-domain or UF-symmetry structure, at most 25 pure-negative theory atoms, and at least 100 pure-positive theory atoms, it selects the same static polarity phase mode as --theory-phase=polarity. The CLI default remains negative pending broader SLURM validation because previous blanket phase changes regressed some families."
    },
    {
      "id": "2026-07-19-auto-phase-low-negative-fuzzsmt-1000",
      "started_at": "2026-07-19T07:10:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "fuzzing",
      "scope": "Merge-gate QF_UF FuzzSMT differential check for the low-negative --theory-phase=auto heuristic",
      "commit": "3990ce8",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet --theory-phase=auto' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 20260719 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-auto-phase-low-negative-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --theory-phase=auto"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 1000,
        "timeout_seconds": 5,
        "generator": "fuzzsmt",
        "seed": 20260719,
        "fuzzer_args": "-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-auto-phase-low-negative-1000/summary.csv",
        "results": "fuzz-results/qf_uf-fuzzsmt-auto-phase-low-negative-1000",
        "logs": null,
        "bugs": "fuzz-results/qf_uf-fuzzsmt-auto-phase-low-negative-1000/bugs"
      },
      "summary": {
        "pass": 1000,
        "wrong_answer": 0,
        "crash": 0,
        "parser_or_type_error": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "answers": {
          "sat": 899,
          "unsat": 101
        }
      },
      "evidence_status": "current-local",
      "notes": "This is the required local merge-gate fuzzing evidence for changing --theory-phase=auto. It does not replace broader SLURM performance validation for making auto or polarity the default command-line phase policy."
    },
    {
      "id": "2026-07-19-qfuf-mixed-auto-smac-111492-rejected",
      "started_at": "2026-07-19T06:45:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "parameter-tuning",
      "scope": "SLURM SMAC campaign over mixed QF_UF train/validation with an auto-phase-inclusive search space and equality-family guard validation",
      "commit": "9d7e4ac",
      "environment": {
        "type": "slurm",
        "host": "<slurm-user>@<slurm-host>",
        "job_id": "111492"
      },
      "command": "sbatch --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_SMAC_TRAIN=benchmarks/qfuf-smac-mixed-train.txt,PRIMO_SMAC_VALIDATE=benchmarks/qfuf-smac-mixed-validate.txt,PRIMO_SMAC_LABEL=qfuf-mixed-auto,PRIMO_SMAC_TRIALS=160,PRIMO_SMAC_TIMEOUT=20,PRIMO_SMAC_VALIDATION_TIMEOUT=60 scripts/slurm_qfuf_smac.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo --quiet --stats with SMAC-selected options"
      },
      "references": [
        {
          "name": "Primo default",
          "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo --quiet --stats"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "timeout_seconds": 20,
        "validation_timeout_seconds": 60,
        "trials": 160,
        "manifest": "benchmarks/qfuf-smac-mixed-train.txt, benchmarks/qfuf-smac-mixed-validate.txt, and equality guard benchmarks/qfuf-smac-gap-{train,validate}.txt"
      },
      "artifacts": {
        "summary": "results/smac/qfuf-mixed-auto-111492/result.json",
        "results": "results/smac/qfuf-mixed-auto-111492",
        "logs": "logs/primo-qfuf-smac-111492.out and logs/primo-qfuf-smac-111492.err",
        "bugs": null
      },
      "summary": {
        "remote_binary": {
          "git": "9d7e4ac",
          "cadical": "cadical-3.0.0-7b99c07"
        },
        "default_validation_cost": 616.433394,
        "incumbent_validation_cost": 771.041335,
        "default_guard": {
          "ok": 11,
          "timeout": 4,
          "wrong": 0,
          "total": 15,
          "cost": 648.1058569999999
        },
        "incumbent_guard": {
          "ok": 6,
          "timeout": 9,
          "wrong": 0,
          "total": 15,
          "cost": 1185.26709
        },
        "incumbent": {
          "preprocess": "auto",
          "theory_phase": "polarity",
          "euf_prop": "conflict",
          "euf_engine": "incremental",
          "symmetry": "off",
          "eq_bridge": "off",
          "pure_filter": "off",
          "value_precedence": "on",
          "prop_interval": "16",
          "prop_budget": "10000",
          "prop_delivery": "3000"
        }
      },
      "evidence_status": "rejected",
      "notes": "The run completed cleanly but the selected profile was rejected by the equality-family guard. It disables symmetry and equality bridging, which repeats the observed pattern that narrow QG/iso or mixed validation wins can lose many NEQ/PEQ/SEQ rows. The campaign predates commit 3990ce8, so it is not evidence about the low-negative auto-phase refinement."
    },
    {
      "id": "2026-07-19-neq023-current-auto-profile",
      "started_at": "2026-07-19T11:45:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "profiling",
      "scope": "Local current-head NEQ023_size7 default versus --theory-phase=auto stats and perf profile, with tuned LLM2SMT and Z3 timing comparison",
      "commit": "bc3106a",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "./build/primo --quiet --stats tmp/QF_UF/NEQ/NEQ023_size7.smt2; ./build/primo --quiet --stats --theory-phase=auto tmp/QF_UF/NEQ/NEQ023_size7.smt2; /tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000 tmp/QF_UF/NEQ/NEQ023_size7.smt2; contrib/local/bin/z3 -smt2 tmp/QF_UF/NEQ/NEQ023_size7.smt2; perf record/report for default and --theory-phase=auto",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats and ./build/primo --quiet --stats --theory-phase=auto"
      },
      "references": [
        {
          "name": "LLM2SMT tuned",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        },
        {
          "name": "Z3",
          "argv": "contrib/local/bin/z3 -smt2"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 1,
        "timeout_seconds": 60,
        "manifest": "tmp/QF_UF/NEQ/NEQ023_size7.smt2"
      },
      "artifacts": {
        "summary": "terminal summary and perf text reports",
        "results": "results/qfuf-phase-compare-111509/perf-neq023-default.txt and results/qfuf-phase-compare-111509/perf-neq023-auto.txt",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "answers": "all unsat",
        "seconds": {
          "primo_default": 3.549,
          "primo_auto": 0.629,
          "primo_polarity": 0.635,
          "llm2smt_tuned": 0.948,
          "z3": 0.548
        },
        "primo_default_stats": {
          "theory_atoms": 2257,
          "negative_phase_atoms": 2257,
          "euf_assignments": 4728189,
          "euf_conflicts": 3836,
          "incremental_merges": 3629654,
          "use_list_appends": 2064051,
          "max_use_list_size": 32990,
          "finite_domain_amo": 4368,
          "uf_symmetry_constraints": 30
        },
        "primo_auto_stats": {
          "auto_polarity": 1,
          "negative_phase_atoms": 71,
          "euf_assignments": 877565,
          "euf_conflicts": 4275,
          "incremental_merges": 703884,
          "use_list_appends": 427078,
          "max_use_list_size": 9270,
          "finite_domain_amo": 4368,
          "uf_symmetry_constraints": 30
        },
        "llm2smt_tuned_stats": {
          "euf_assignments": 2138805,
          "euf_conflicts": 9774,
          "finite_domain_amo": 4473,
          "uf_symmetry_clauses": 30,
          "sat_clauses": 8778
        },
        "perf_default_top": "CaDiCaL::Internal::propagate 24.86%, OnlineEufPropagator::notify_assignment 7.86%, allocator free 5.26%, CaDiCaL::Internal::explain_external_propagations 4.42%, FlatCongruenceClosure::merge_classes 3.15%, process_use_list 2.20%.",
        "perf_auto_top": "Same broad SAT/EUF categories but only 73 samples versus 325 for default; top symbols include allocator, CaDiCaL::Internal::propagate, OnlineEufPropagator::notify_assignment, and FlatCongruenceClosure merge/use-list work."
      },
      "evidence_status": "current-local",
      "notes": "This confirms the NEQ023 gap is primarily SAT search shape induced by static theory phase. The auto heuristic beats tuned LLM2SMT on this local run by reducing assignments and flat-CC merges, not by changing AMO or symmetry clause counts. CLI default was still negative in this run."
    },
    {
      "id": "2026-07-19-qfuf-phase-compare-111509",
      "started_at": "2026-07-19T11:54:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "SLURM default versus --theory-phase=auto comparison on the mixed QF_UF train/validation/equality-guard union",
      "commit": "4fd7e05",
      "environment": {
        "type": "slurm",
        "host": "<slurm-user>@<slurm-host>",
        "job_id": "111509"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/primo-ssh/config --remote primo-slurm --remote-dir <remote-home>/primo-cadical-profile --check-only; sbatch --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_PHASE_TIMEOUT=60,PRIMO_PHASE_SHARDS=8 scripts/slurm_qfuf_phase_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo --quiet --stats and the same command plus --theory-phase=auto"
      },
      "references": [
        {
          "name": "Primo default",
          "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo --quiet --stats"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 39,
        "timeout_seconds": 60,
        "manifest": "De-duplicated union of benchmarks/qfuf-smac-mixed-train.txt, benchmarks/qfuf-smac-mixed-validate.txt, and benchmarks/qfuf-smac-equality-guard.txt"
      },
      "artifacts": {
        "summary": "results/qfuf-phase-compare-111509/summary.json",
        "results": "results/qfuf-phase-compare-111509/default-merged.csv and results/qfuf-phase-compare-111509/auto-merged.csv",
        "logs": "logs/primo-qfuf-phase-111509-*.out and logs/primo-qfuf-phase-111509-*.err",
        "bugs": null
      },
      "summary": {
        "default": {
          "ok": 34,
          "timeout": 5,
          "error": 0,
          "wrong": 0,
          "par2": 835.33
        },
        "auto": {
          "ok": 35,
          "timeout": 4,
          "error": 0,
          "wrong": 0,
          "par2": 746.876
        },
        "families_default": {
          "Goel": "10/10 ok, PAR2 2.934",
          "NEQ": "3/4 ok, PAR2 173.191",
          "PEQ": "5/8 ok, PAR2 444.703",
          "QG": "14/14 ok, PAR2 77.686",
          "SEQ": "2/3 ok, PAR2 136.816"
        },
        "families_auto": {
          "Goel": "10/10 ok, PAR2 2.806",
          "NEQ": "3/4 ok, PAR2 173.110",
          "PEQ": "5/8 ok, PAR2 448.665",
          "QG": "14/14 ok, PAR2 60.331",
          "SEQ": "3/3 ok, PAR2 61.964"
        },
        "top_wins": "SEQ026_size7 timeout/default 60.221s -> auto 53.073s; iso_brn_repgen033 8.029s -> 1.118s; SEQ026_size6 11.723s -> 7.617s; SEQ035_size6 5.093s -> 1.274s.",
        "top_regressions": "PEQ014_size10 41.557s -> 43.751s; PEQ004_size9 9.797s -> 10.710s; NEQ015_size6 32.458s -> 32.923s; PEQ002_size7 10.957s -> 11.345s."
      },
      "evidence_status": "current-slurm",
      "notes": "All 16 shards completed with exit code 0. Earlier job 111493 is non-evidence: it failed immediately because the phase-compare script passed manifest paths with a doubled tmp/QF_UF prefix; commit 4fd7e05 fixed that before this replacement run. This 39-row SLURM guard supports broader validation of --theory-phase=auto but is not yet a full 334-row or full-QF_UF default-promotion result."
    },
    {
      "id": "2026-07-19-qfuf-phase-compare-111525-rejected",
      "started_at": "2026-07-19T12:16:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark-infrastructure",
      "scope": "Rejected SLURM default versus --theory-phase=auto comparison on the 334-row user HTML QF_UF manifest",
      "commit": "7d63bbc",
      "environment": {
        "type": "slurm",
        "host": "<slurm-user>@<slurm-host>",
        "job_id": "111525"
      },
      "command": "sbatch --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_PHASE_TIMEOUT=120,PRIMO_PHASE_SHARDS=16,PRIMO_PHASE_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt scripts/slurm_qfuf_phase_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo --quiet --stats and the same command plus --theory-phase=auto"
      },
      "references": [
        {
          "name": "Primo default",
          "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo --quiet --stats"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 334,
        "timeout_seconds": 120,
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt"
      },
      "artifacts": {
        "summary": null,
        "results": "remote-only partial results/qfuf-phase-compare-111525",
        "logs": "remote-only logs/primo-qfuf-phase-111525-*.out and logs/primo-qfuf-phase-111525-*.err",
        "bugs": null
      },
      "summary": {
        "status": "rejected",
        "reason": "The array tasks concurrently rewrote one shared manifest file. Some tasks read a truncated row and failed with a false missing-file error for QG-classification/qg7/gensys_icl001.smt2."
      },
      "evidence_status": "rejected",
      "notes": "Do not use job 111525 for performance claims. The follow-up script change gives each array task its own atomically renamed manifest."
    },
    {
      "id": "2026-07-19-neq015-size6-local-profile",
      "started_at": "2026-07-19T12:16:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "profile",
      "scope": "Local NEQ015_size6 QF_UF comparison and flat-congruence-closure allocation profile",
      "commit": "82a4f50",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "./build/primo --quiet --stats tmp/QF_UF/NEQ/NEQ015_size6.smt2; ./build/primo --quiet --stats --theory-phase=auto tmp/QF_UF/NEQ/NEQ015_size6.smt2; /tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000 tmp/QF_UF/NEQ/NEQ015_size6.smt2; /workspace/contrib/local/bin/z3 tmp/QF_UF/NEQ/NEQ015_size6.smt2; perf record -F 99 -g -- ./build/primo --quiet --stats tmp/QF_UF/NEQ/NEQ015_size6.smt2",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "references": [
        {
          "name": "LLM2SMT tuned",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        },
        {
          "name": "Z3",
          "argv": "/workspace/contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 1,
        "timeout_seconds": 30,
        "manifest": "tmp/QF_UF/NEQ/NEQ015_size6.smt2"
      },
      "artifacts": {
        "summary": null,
        "results": "results/local-profiles/perf-neq015-size6.txt and results/local-profiles/perf-neq015-size6-move-use-list.txt",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "primo_default_seconds": 8.6,
        "primo_auto_seconds": 9.93,
        "llm2smt_tuned_seconds": 24.24,
        "z3_seconds": 2.51,
        "primo_stats": "unsat; 28522 theory atoms; 49135 clauses; 665126 EUF assignments; 15618 EUF conflicts; 3177744 flat-CC merges; 8798333 use-list appends; max use-list size 161794.",
        "perf_top": "Before rejected experiment: _int_malloc 12.78%, Frontend::build_term 10.81%, FlatCongruenceClosure::merge_classes 7.94%, OnlineEufPropagator::notify_assignment 7.14%, malloc_consolidate 6.29%. Moving old use-lists into the rollback trail preserved correctness in focused tests but did not improve runtime or the top profile shape, so the source edit was reverted."
      },
      "evidence_status": "current-local",
      "notes": "This shows the current NEQ015_size6 gap is against Z3, not the tuned local LLM2SMT command. The next useful implementation target is reducing allocation/trail pressure in flat CC or frontend term construction, with a stronger benchmark before accepting changes."
    },
    {
      "id": "2026-07-19-qfuf-phase-compare-111557",
      "started_at": "2026-07-19T12:24:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "SLURM default versus --theory-phase=auto comparison on the 334-row user HTML QF_UF manifest",
      "commit": "82a4f50",
      "environment": {
        "type": "slurm",
        "host": "<slurm-user>@<slurm-host>",
        "job_id": "111557"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/primo-ssh/config --remote primo-slurm --remote-dir <remote-home>/primo-cadical-profile --check-only; sbatch --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_PHASE_TIMEOUT=120,PRIMO_PHASE_SHARDS=16,PRIMO_PHASE_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt scripts/slurm_qfuf_phase_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo --quiet --stats and the same command plus --theory-phase=auto"
      },
      "references": [
        {
          "name": "Primo default",
          "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo --quiet --stats"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 334,
        "timeout_seconds": 120,
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt"
      },
      "artifacts": {
        "summary": "results/qfuf-phase-compare-111557/summary.json",
        "results": "results/qfuf-phase-compare-111557/default-merged.csv and results/qfuf-phase-compare-111557/auto-merged.csv",
        "logs": "logs/primo-qfuf-phase-111557-*.out and logs/primo-qfuf-phase-111557-*.err",
        "bugs": null
      },
      "summary": {
        "default": {
          "ok": 329,
          "timeout": 5,
          "error": 0,
          "wrong": 0,
          "par2": 3695.199
        },
        "auto": {
          "ok": 330,
          "timeout": 4,
          "error": 0,
          "wrong": 0,
          "par2": 3500.463
        },
        "families_default": {
          "Goel": "7/7 ok, PAR2 16.631",
          "NEQ": "25/26 ok, PAR2 435.097",
          "PEQ": "21/25 ok, PAR2 1272.917",
          "QG": "270/270 ok, PAR2 1900.095",
          "SEQ": "6/6 ok, PAR2 70.460"
        },
        "families_auto": {
          "Goel": "7/7 ok, PAR2 16.998",
          "NEQ": "25/26 ok, PAR2 425.382",
          "PEQ": "22/25 ok, PAR2 1151.647",
          "QG": "270/270 ok, PAR2 1859.826",
          "SEQ": "6/6 ok, PAR2 46.611"
        },
        "top_wins": "PEQ002_size8 timeout/default 120.107s -> auto 116.535s; SEQ026_size7 57.584s -> 35.426s; gensys_icl001 31.840s -> 20.138s; iso_icl_nogen003 34.721s -> 24.038s; NEQ023_size7 10.283s -> 2.190s; iso_brn_repgen033 7.354s -> 1.083s.",
        "top_regressions": "iso_icl_repgen_sk003 23.657s -> 49.508s; gensys_icl_sk003 10.778s -> 29.534s; iso_icl_nogen_sk003 16.074s -> 33.449s; iso_icl_repgen001 75.581s -> 92.232s; iso_icl_repgen003 60.852s -> 75.263s; PEQ018_size6 43.375s -> 53.022s."
      },
      "evidence_status": "current-slurm",
      "notes": "All 32 shards completed with exit code 0 after commit 82a4f50 fixed the shared-manifest race. The 334-row result supports keeping --theory-phase=auto as a candidate because it improves solved count by one and lowers PAR2 without wrong answers, but the large per-instance regressions mean it should not be blindly promoted before a broader full-QF_UF/default-readiness check or a refined heuristic."
    },
    {
      "id": "2026-07-19-qfuf-auto-online-fd-neq-local",
      "date": "2026-07-19",
      "kind": "benchmark",
      "scope": "Local QF_UF finite-domain auto-online heuristic guard rows",
      "commit": "cde818f plus uncommitted auto-online finite-domain heuristic",
      "host": "workspace",
      "timeout_seconds": 30,
      "command": "cmake --build build -j$(nproc); local Python loop over SEQ026_size7, NEQ015_size4/5/6, NEQ033_size5/6, and NEQ046_size5/6 with ./build/primo --quiet --stats, --euf-prop=online, and --euf-prop=conflict",
      "subjects": [
        {
          "name": "Primo new default",
          "argv": "./build/primo --quiet --stats"
        },
        {
          "name": "Primo forced online",
          "argv": "./build/primo --quiet --stats --euf-prop=online"
        },
        {
          "name": "Primo forced conflict",
          "argv": "./build/primo --quiet --stats --euf-prop=conflict"
        }
      ],
      "artifacts": {
        "summary": "results/local-profiles/auto-online-fd-neq-seq-20260719.csv",
        "results": "results/local-profiles/auto-online-fd-neq-seq-20260719.csv",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "rows": 8,
        "variants_per_row": 3,
        "wrong": 0,
        "timeouts": 0,
        "selected_online": "NEQ015_size4/5/6, NEQ033_size5/6, SEQ026_size7",
        "selected_conflict": "NEQ046_size5/6",
        "key_timings": {
          "NEQ015_size4": "default 0.368s, forced online 0.390s, forced conflict 0.758s",
          "NEQ015_size5": "default 1.534s, forced online 1.428s, forced conflict 4.035s",
          "NEQ015_size6": "default 5.653s, forced online 5.447s, forced conflict 9.044s",
          "NEQ046_size5": "default 1.155s, forced online 1.657s, forced conflict 1.203s",
          "NEQ046_size6": "default 3.142s, forced online 3.547s, forced conflict 3.181s",
          "SEQ026_size7": "default 20.527s, forced online 22.062s, forced conflict 21.904s"
        },
        "guard_shape": "auto selects online for theory_atoms > 5000 when finite-domain domains >= 500 and pure-negative atoms <= finite-domain domains"
      },
      "evidence_status": "local-current",
      "notes": "This local guard matrix supports the pure-negative guard: it keeps the NEQ015 family on the faster online path and excludes NEQ046 rows where online is slower. SEQ026_size7 is roughly neutral to slightly worse and must be watched in the 334-row SLURM validation before promoting the heuristic as default-ready."
    },
    {
      "id": "2026-07-19-qfuf-fuzzsmt-auto-online-fd-1000",
      "date": "2026-07-19",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT merge gate for finite-domain auto-online EUF propagation heuristic",
      "commit": "cde818f plus uncommitted auto-online finite-domain heuristic",
      "host": "workspace",
      "timeout_seconds": 5,
      "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026071902 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-auto-online-fd-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "z3"
        }
      ],
      "generator": {
        "name": "fuzzsmt",
        "seed": 2026071902,
        "count": 1000,
        "logic": "QF_UF",
        "fuzzer_args": "-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-auto-online-fd-1000/summary.csv",
        "results": "fuzz-results/qf_uf-fuzzsmt-auto-online-fd-1000/generated",
        "logs": null,
        "bugs": "fuzz-results/qf_uf-fuzzsmt-auto-online-fd-1000/bugs"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "sat": 902,
        "unsat": 98,
        "bugs": 0
      },
      "evidence_status": "local-current",
      "notes": "Fresh local merge-gate differential fuzzing after changing the default EUF propagation resolver. This does not replace the 3000-case campaign gate required for headline default-readiness claims."
    },
    {
      "id": "2026-07-19-qfuf-phase-compare-111589",
      "started_at": "2026-07-19T13:34:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "SLURM default versus --theory-phase=auto comparison on the 334-row user HTML QF_UF manifest after finite-domain auto-online heuristic",
      "commit": "e30988a",
      "environment": {
        "type": "slurm",
        "host": "<slurm-user>@<slurm-host>",
        "job_id": "111589"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/primo-ssh/config --remote primo-slurm --remote-dir <remote-home>/primo-cadical-profile --check-only; sbatch --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_PHASE_TIMEOUT=120,PRIMO_PHASE_SHARDS=16,PRIMO_PHASE_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt scripts/slurm_qfuf_phase_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo --quiet --stats and the same command plus --theory-phase=auto"
      },
      "inputs": {
        "logic": "QF_UF",
        "count": 334,
        "timeout_seconds": 120,
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt"
      },
      "artifacts": {
        "summary": "results/qfuf-phase-compare-111589/summary.json",
        "results": "results/qfuf-phase-compare-111589/default-merged.csv and results/qfuf-phase-compare-111589/auto-merged.csv",
        "logs": "logs/primo-qfuf-phase-111589-*.out and logs/primo-qfuf-phase-111589-*.err",
        "bugs": null
      },
      "summary": {
        "default": {
          "ok": 329,
          "timeout": 5,
          "error": 0,
          "wrong": 0,
          "par2": 3692.592
        },
        "auto": {
          "ok": 330,
          "timeout": 4,
          "error": 0,
          "wrong": 0,
          "par2": 3555.397
        },
        "families_default": {
          "Goel": "7/7 ok, PAR2 15.778",
          "NEQ": "25/26 ok, PAR2 414.461",
          "PEQ": "21/25 ok, PAR2 1272.860",
          "QG": "270/270 ok, PAR2 1918.207",
          "SEQ": "6/6 ok, PAR2 71.285"
        },
        "families_auto": {
          "Goel": "7/7 ok, PAR2 16.316",
          "NEQ": "25/26 ok, PAR2 409.457",
          "PEQ": "22/25 ok, PAR2 1154.265",
          "QG": "270/270 ok, PAR2 1926.335",
          "SEQ": "6/6 ok, PAR2 49.024"
        },
        "default_vs_111557": "same solved count and wrong-answer count; PAR2 3695.199 -> 3692.592. Top intended wins: NEQ015_size5 15.048s -> 4.859s, NEQ015_size6 30.967s -> 20.788s, NEQ015_size4 2.691s -> 1.100s. Largest measured regressions were small except iso_icl_repgen001 75.581s -> 77.974s.",
        "auto_vs_default": "auto still solves one extra PEQ row and lowers PAR2, but repeats large QG regressions: iso_icl_repgen_sk003 24.159s -> 49.959s, gensys_icl_sk003 10.819s -> 29.584s, iso_icl_nogen_sk003 16.661s -> 33.291s."
      },
      "evidence_status": "current-slurm",
      "notes": "The finite-domain auto-online heuristic is accepted as a narrow default improvement on the 334-row manifest: it improves the targeted NEQ015 rows without changing solved count or introducing wrong answers, and the 334-row PAR2 is slightly better than job 111557. The result is still far from reference parity; continue triage on the remaining NEQ/PEQ/QG gaps and do not promote --theory-phase=auto as the command-line default because the QG regressions remain."
    },
    {
      "id": "2026-07-19-qfuf-top-level-or-tseitin-local",
      "started_at": "2026-07-19T15:20:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "Local QF_UF top-level disjunction Tseitin default comparison against --no-top-level-or-tseitin",
      "commit": "5b7d684",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "./build/primo --quiet --stats [--no-top-level-or-tseitin] <instance>",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats and the same command plus --no-top-level-or-tseitin"
      },
      "inputs": {
        "logic": "QF_UF",
        "count": 39,
        "timeout_seconds": 20,
        "manifest": "local mixed QF_UF slice covering NEQ, PEQ, SEQ, Goel, and QG rows; gap-list artifact separately covers 13 known fast-reference/slow-Primo rows"
      },
      "artifacts": {
        "tseitin_results": "results/local-tseitin-prototype-20260719.csv",
        "oldmode_results": "results/local-top-level-or-oldmode-20260719.csv",
        "gaplist_results": "results/local-top-level-or-gaplist-20260719.csv"
      },
      "summary": {
        "mixed_tseitin": {
          "ok": 34,
          "total": 39,
          "wrong": 0,
          "par2_timeout_20": 268.265
        },
        "mixed_oldmode": {
          "ok": 34,
          "total": 39,
          "wrong": 0,
          "par2_timeout_20": 268.235
        },
        "gaplist": {
          "pairs": 13,
          "tseitin_faster": 8,
          "oldmode_faster": 5,
          "sum_seconds_delta_tseitin_minus_old": -5.229
        },
        "target_examples": {
          "NEQ016_size7": "4.596s with Tseitin versus 6.109s old mode; EUF conflicts 37931 versus 57206",
          "NEQ023_size7": "2.972s with Tseitin versus 3.403s old mode",
          "iso_brn_repgen033": "2.596s with Tseitin versus 2.432s old mode"
        }
      },
      "evidence_status": "needs_slurm_validation",
      "notes": "The change exposes support clauses for top-level asserted OR formulas. It improves several fast-reference/slow-Primo gap-list rows and the NEQ016 target, but the 39-row mixed guard is effectively neutral, so 334-row SLURM validation is required before treating it as headline/default-ready evidence."
    },
    {
      "id": "2026-07-19-qfuf-top-level-or-tseitin-fuzz-1000",
      "started_at": "2026-07-19T16:05:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT merge gate after top-level OR Tseitin encoding and finite-domain AMO fact preservation",
      "commit": "5b7d684",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026071903 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-top-level-or-tseitin-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "inputs": {
        "logic": "QF_UF",
        "count": 1000,
        "timeout_seconds": 5,
        "generator": "fuzzsmt",
        "seed": 2026071903,
        "reference": "z3"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-top-level-or-tseitin-1000/summary.csv",
        "bugs": "fuzz-results/qf_uf-fuzzsmt-top-level-or-tseitin-1000/bugs"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "sat": 902,
        "unsat": 98,
        "bugs": 0
      },
      "evidence_status": "local-current",
      "notes": "Fresh local merge-gate differential fuzzing. This is not the 3000-case campaign gate needed for headline default-readiness claims."
    },
    {
      "id": "2026-07-19-qfuf-tseitin-compare-111621-rejected",
      "started_at": "2026-07-19T13:51:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "SLURM default top-level OR Tseitin encoding versus --no-top-level-or-tseitin on the 334-row user HTML QF_UF manifest",
      "commit": "af5ad64",
      "environment": {
        "type": "slurm",
        "host": "<slurm-user>@<slurm-host>",
        "job_id": "111621"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/primo-ssh/config --remote primo-slurm --remote-dir <remote-home>/primo-cadical-profile --check-only; sbatch --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_TSEITIN_TIMEOUT=120,PRIMO_TSEITIN_SHARDS=16,PRIMO_TSEITIN_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt scripts/slurm_qfuf_tseitin_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo --quiet --stats and the same command plus --no-top-level-or-tseitin"
      },
      "inputs": {
        "logic": "QF_UF",
        "count": 334,
        "timeout_seconds": 120,
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt"
      },
      "artifacts": {
        "summary": "results/qfuf-tseitin-compare-111621/summary.json",
        "results": "results/qfuf-tseitin-compare-111621/tseitin-merged.csv and results/qfuf-tseitin-compare-111621/oldmode-merged.csv",
        "diffs": "results/qfuf-tseitin-compare-111621/diffs.csv",
        "logs": "logs/primo-qfuf-tseitin-111621-*.out and logs/primo-qfuf-tseitin-111621-*.err"
      },
      "summary": {
        "tseitin": {
          "ok": 330,
          "timeout": 4,
          "error": 0,
          "wrong": 0,
          "par2": 3560.437
        },
        "oldmode": {
          "ok": 331,
          "timeout": 3,
          "error": 0,
          "wrong": 0,
          "par2": 3386.22
        },
        "families_tseitin": {
          "Goel": "7/7 ok, PAR2 17.677",
          "NEQ": "25/26 ok, PAR2 439.434",
          "PEQ": "22/25 ok, PAR2 1102.567",
          "QG": "270/270 ok, PAR2 1925.336",
          "SEQ": "6/6 ok, PAR2 75.423"
        },
        "families_oldmode": {
          "Goel": "7/7 ok, PAR2 16.568",
          "NEQ": "25/26 ok, PAR2 415.171",
          "PEQ": "23/25 ok, PAR2 983.266",
          "QG": "270/270 ok, PAR2 1905.208",
          "SEQ": "6/6 ok, PAR2 66.007"
        },
        "top_tseitin_wins": "PEQ014_size11: timeout-scale win, iso_icl_repgen001: -4.764s, gensys_brn044: -4.375s, NEQ016_size7: -4.239s",
        "top_tseitin_regressions": "PEQ013_size8: timeout regression, PEQ003_size10: timeout regression, PEQ002_size8: +25.437s, PEQ018_size6: +14.551s, NEQ027_size11: +10.916s"
      },
      "evidence_status": "rejected",
      "notes": "This rejects top-level OR Tseitin support clauses as a command-line default. The implementation remains available behind --top-level-or-tseitin for targeted experiments, but commit after this run restores the single-clause top-level OR encoding as default."
    },
    {
      "id": "2026-07-19-qfuf-top-level-or-default-off-fuzz-1000",
      "started_at": "2026-07-19T13:55:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT merge gate after restoring single-clause top-level OR as the default and keeping Tseitin support opt-in",
      "commit": "a081368",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026071904 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-top-level-or-default-off-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "inputs": {
        "logic": "QF_UF",
        "count": 1000,
        "timeout_seconds": 5,
        "generator": "fuzzsmt",
        "seed": 2026071904,
        "reference": "z3"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-top-level-or-default-off-1000/summary.csv",
        "bugs": "fuzz-results/qf_uf-fuzzsmt-top-level-or-default-off-1000/bugs"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "sat": 893,
        "unsat": 107,
        "bugs": 0
      },
      "evidence_status": "local-current",
      "notes": "Fresh local merge-gate differential fuzzing for the restored default after SLURM job 111621 rejected top-level OR Tseitin as a default."
    },
    {
      "id": "2026-07-19-qfuf-current-gap-rank-iso033-local",
      "started_at": "2026-07-19T14:05:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "profile",
      "scope": "Current-head local ranking and profiling of fast-reference/slow-Primo QF_UF gaps after top-level OR Tseitin was restored to opt-in",
      "commit": "c409c91",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "python3 scripts/rank_qfuf_gaps.py --native results/qfuf-tseitin-compare-111621/oldmode-merged.csv --ref results/slurm-qfuf-full-120s-llm2smt-0.2.4-110181/llm2smt-qfuf-full-120s-merged.csv --ref results/slurm-qfuf-full-ref-z3-109856/z3-qfuf-full-2s-merged.csv --ref results/slurm-qfuf-full-ref-cvc5-109857/cvc5-qfuf-full-2s-merged.csv --timeout 120 --fast-ref 2 --min-ratio 5 --top 50; local option matrix and perf record/report on tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats with default, --qf-uf-preprocess=basic, --theory-phase=auto, --theory-phase=polarity, --theory-phase=none, --top-level-or-tseitin, and selected preprocessing toggles"
      },
      "inputs": {
        "logic": "QF_UF",
        "count": 1,
        "target": "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2",
        "reference": "LLM2SMT tuned command plus historical Z3/cvc5 full-QF_UF reference CSVs"
      },
      "artifacts": {
        "ranked_gaps": "results/qfuf-current-gaps-vs-reference-20260719.csv",
        "option_matrix": "results/iso-brn-repgen033-local-matrix-20260719.csv",
        "phase_sample": "results/qfuf-current-phase-local-sample-20260719.csv",
        "preprocess_sample": "results/qfuf-current-preprocess-local-sample-20260719.csv",
        "perf_report": "results/local-profiles/perf-iso-brn-repgen033-default.txt",
        "perf_data": "results/local-profiles/perf-iso-brn-repgen033-default.data"
      },
      "summary": {
        "rank_top": "iso_brn_repgen033 ranked first on the current 334-row artifact: Primo oldmode 7.280s versus best reference 0.109s, ratio 67.06",
        "iso033_local": {
          "default_seconds": 2.511,
          "default_euf_conflicts": 67244,
          "basic_seconds": 0.078,
          "phase_auto_seconds": 0.493,
          "phase_auto_euf_conflicts": 13595,
          "llm2smt_tuned_seconds": 0.048,
          "llm2smt_euf_conflicts": 18,
          "z3_seconds": 0.028
        },
        "phase_sample": "QG rows and PEQ019 improved with --theory-phase=auto, but NEQ016_size7 and NEQ027_size11 regressed locally, so a blanket phase default change is not justified from local evidence.",
        "perf_top": "Default iso033 profile was dominated by EUF explain/assignment work and CaDiCaL propagation: FlatCongruenceClosure::explain_equal_into 11.35%, CaDiCaL::Internal::propagate 11.33%, allocator cost under OnlineEufPropagator notification and FlatCongruenceClosure operations about 10%."
      },
      "evidence_status": "local-current",
      "notes": "The clean-room reference comparison is behavioral only. The result motivates a current-head SLURM default-versus---theory-phase=auto validation rather than immediately changing the default phase policy."
    },
    {
      "id": "2026-07-19-qfuf-phase-auto-334-slurm",
      "started_at": "2026-07-19T14:08:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "Current-head SLURM comparison of default theory phase against --theory-phase=auto on the 334-row primo.html QF_UF subset",
      "commit": "c409c91",
      "environment": {
        "type": "slurm",
        "host": "<slurm-user>@<slurm-host>",
        "job_id": "111653",
        "remote_workdir": "<remote-home>/primo-cadical-profile"
      },
      "command": "sbatch --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_PHASE_TIMEOUT=120,PRIMO_PHASE_SHARDS=16,PRIMO_PHASE_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt scripts/slurm_qfuf_phase_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo --quiet --stats and the same command plus --theory-phase=auto"
      },
      "inputs": {
        "logic": "QF_UF",
        "count": 334,
        "timeout_seconds": 120,
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt"
      },
      "artifacts": {
        "summary": "results/qfuf-phase-compare-111653/summary.json",
        "results": "results/qfuf-phase-compare-111653/default-merged.csv and results/qfuf-phase-compare-111653/auto-merged.csv",
        "diffs": "results/qfuf-phase-compare-111653/diffs.csv",
        "logs": "logs/primo-qfuf-phase-111653-*.out and logs/primo-qfuf-phase-111653-*.err"
      },
      "summary": {
        "default": {
          "ok": 330,
          "timeout": 4,
          "error": 0,
          "wrong": 0,
          "par2": 3526.915
        },
        "auto": {
          "ok": 330,
          "timeout": 4,
          "error": 0,
          "wrong": 0,
          "par2": 3511.304
        },
        "families_default": {
          "Goel": "7/7 ok, PAR2 16.402",
          "NEQ": "25/26 ok, PAR2 422.008",
          "PEQ": "22/25 ok, PAR2 1114.174",
          "QG": "270/270 ok, PAR2 1901.345",
          "SEQ": "6/6 ok, PAR2 72.985"
        },
        "families_auto": {
          "Goel": "7/7 ok, PAR2 17.337",
          "NEQ": "25/26 ok, PAR2 485.119",
          "PEQ": "22/25 ok, PAR2 1132.855",
          "QG": "270/270 ok, PAR2 1828.059",
          "SEQ": "6/6 ok, PAR2 47.934"
        },
        "top_auto_wins": "SEQ026_size7: -25.276s, NEQ031_size10: -8.669s, NEQ023_size7: -8.057s, iso_icl_nogen003: -7.904s, iso_brn_repgen033: -6.088s",
        "top_auto_regressions": "NEQ027_size10: +75.052s, iso_icl_nogen_sk003: +17.920s, gensys_icl_sk003: +17.598s, PEQ018_size6: +9.572s, PEQ002_size8: +8.745s"
      },
      "evidence_status": "mixed-not-default-ready",
      "notes": "Auto phase has a small aggregate PAR2 improvement but severe localized regressions. NEQ027_size10 and NEQ031_size10 have very similar coarse finite-domain and polarity statistics while moving in opposite directions, so a simple count-only default heuristic is not supported by this evidence."
    },
    {
      "id": "2026-07-19-qfuf-basic-polarity-portfolio-local-sample",
      "started_at": "2026-07-19T14:40:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "Local smoke comparison of opt-in --qf-uf-portfolio=basic-polarity against default on representative QG, NEQ, and PEQ rows",
      "commit": "uncommitted",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "python3 inline harness over nine selected QF_UF files, comparing ./build/primo --quiet --stats against ./build/primo --quiet --stats --qf-uf-portfolio=basic-polarity with the default 2000 theory-conflict first-pass budget",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats and ./build/primo --quiet --stats --qf-uf-portfolio=basic-polarity"
      },
      "inputs": {
        "logic": "QF_UF",
        "count": 9,
        "targets": "iso_brn_repgen033, iso_brn_repgen043, gensys_brn044, iso_icl_repgen_sk006, iso_icl_repgen006, NEQ023_size7, NEQ016_size7, NEQ027_size10, PEQ019_size7"
      },
      "artifacts": {
        "manual_budget_probe": "results/qfuf-portfolio-budget-local-sample-20260719.csv",
        "integrated_option_sample": "results/qfuf-portfolio-integrated-local-sample-20260719.csv"
      },
      "summary": {
        "wins": "portfolio solved iso_brn_repgen033 in 0.045s versus 2.420s default and gensys_brn044 in 0.561s versus 2.433s default",
        "fallbacks": "portfolio fell back on iso_brn_repgen043, iso_icl_repgen_sk006, iso_icl_repgen006, NEQ023_size7, NEQ016_size7, NEQ027_size10, and PEQ019_size7",
        "regressions": "fallback overhead was visible on NEQ027_size10, 2.195s versus 1.318s default, and PEQ019_size7, 1.713s versus 1.146s default",
        "status": "supports keeping the feature opt-in and running a 334-row SLURM comparison before considering any profile/default promotion"
      },
      "evidence_status": "local-current",
      "notes": "The first attempt reparses the original input under basic preprocessing and polarity phase, returns only sat/unsat answers, and falls back to the ordinary configured solve on the existing theory-conflict-limit unknown."
    },
    {
      "id": "2026-07-19-qfuf-basic-polarity-portfolio-334-slurm",
      "started_at": "2026-07-19T14:31:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "SLURM default versus opt-in --qf-uf-portfolio=basic-polarity on the 334-row primo.html QF_UF subset",
      "commit": "e411821",
      "environment": {
        "type": "slurm",
        "host": "<slurm-user>@<slurm-host>",
        "job_id": "111685",
        "remote_workdir": "<remote-home>/primo-cadical-profile"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/primo-ssh/config --remote primo-slurm --remote-dir <remote-home>/primo-cadical-profile --check-only; sbatch --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_PORTFOLIO_TIMEOUT=120,PRIMO_PORTFOLIO_SHARDS=16,PRIMO_PORTFOLIO_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt scripts/slurm_qfuf_portfolio_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo --quiet --stats and the same command plus --qf-uf-portfolio=basic-polarity"
      },
      "inputs": {
        "logic": "QF_UF",
        "count": 334,
        "timeout_seconds": 120,
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt"
      },
      "artifacts": {
        "summary": "results/qfuf-portfolio-compare-111685/summary.json",
        "results": "results/qfuf-portfolio-compare-111685/default-merged.csv and results/qfuf-portfolio-compare-111685/portfolio-merged.csv",
        "diffs": "results/qfuf-portfolio-compare-111685/diffs.csv",
        "logs": "logs/primo-qfuf-portfolio-111685-*.out and logs/primo-qfuf-portfolio-111685-*.err"
      },
      "summary": {
        "default": {
          "ok": 330,
          "timeout": 4,
          "error": 0,
          "wrong": 0,
          "par2": 3529.268
        },
        "portfolio": {
          "ok": 331,
          "timeout": 3,
          "error": 0,
          "wrong": 0,
          "par2": 3934.339
        },
        "families_default": {
          "Goel": "7/7 ok, PAR2 16.800",
          "NEQ": "25/26 ok, PAR2 422.517",
          "PEQ": "22/25 ok, PAR2 1118.069",
          "QG": "270/270 ok, PAR2 1899.029",
          "SEQ": "6/6 ok, PAR2 72.853"
        },
        "families_portfolio": {
          "Goel": "7/7 ok, PAR2 59.896",
          "NEQ": "25/26 ok, PAR2 470.524",
          "PEQ": "23/25 ok, PAR2 1010.163",
          "QG": "270/270 ok, PAR2 2322.269",
          "SEQ": "6/6 ok, PAR2 71.486"
        },
        "first_pass_solved": 16,
        "fell_back": 315,
        "portfolio_faster_rows": 21,
        "portfolio_slower_rows": 299,
        "top_wins": "PEQ013_size8 timeout-to-solved, PEQ014_size10 -8.839s, iso_brn_repgen033 -7.350s, SEQ026_size7 -5.144s, gensys_brn044 -4.829s",
        "top_regressions": "QF_UF_firewire_tree.5.prop3 +19.016s, QF_UF_firewire_tree.5.prop2 +18.657s, iso_brn_nogen_sk015 +11.389s, iso_brn_nogen018 +9.883s, NEQ046_size6 +9.638s"
      },
      "evidence_status": "rejected-default-current",
      "notes": "The option remains useful as a controlled experiment and solves one additional PEQ row on this set, but the 2000-conflict first pass creates too much fallback overhead for a default or tuned profile."
    },
    {
      "id": "2026-07-19-qfuf-basic-polarity-portfolio-fuzz-1000",
      "started_at": "2026-07-19T14:40:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT merge gate for opt-in --qf-uf-portfolio=basic-polarity",
      "commit": "e411821",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet --qf-uf-portfolio=basic-polarity' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026071905 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-basic-polarity-portfolio-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --qf-uf-portfolio=basic-polarity"
      },
      "inputs": {
        "logic": "QF_UF",
        "count": 1000,
        "timeout_seconds": 5,
        "generator": "fuzzsmt",
        "seed": 2026071905,
        "reference": "z3"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-basic-polarity-portfolio-1000/summary.csv",
        "bugs": "fuzz-results/qf_uf-fuzzsmt-basic-polarity-portfolio-1000/bugs"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "sat": 910,
        "unsat": 90,
        "bugs": 0
      },
      "evidence_status": "local-current",
      "notes": "Differential fuzzing covers the new opt-in portfolio control path; default behavior remains separately covered by the default-off fuzz gate."
    },
    {
      "id": "2026-07-19-qfuf-basic-polarity-local-sample",
      "started_at": "2026-07-19T15:05:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "Local option matrix for default, --qf-uf-preprocess=basic, --qf-uf-preprocess=basic --theory-phase=polarity, and --theory-phase=polarity on ranked QG gaps plus NEQ/PEQ guards",
      "commit": "2c62380",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "Python subprocess matrix over tmp/QF_UF/QG-classification/qg7/{iso_brn_repgen033,iso_brn_repgen043,gensys_brn044,iso_brn_nogen017,iso_brn_nogen010,iso_icl_nogen006,iso_icl_repgen006}.smt2 plus tmp/QF_UF/NEQ/{NEQ023_size7,NEQ016_size7}.smt2 and tmp/QF_UF/PEQ/PEQ019_size7.smt2; each run used timeout 30 ./build/primo --quiet --stats with the mode-specific options",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "inputs": {
        "manifest": "ad hoc 10-row local sample from current QF_UF gap ranking",
        "timeout_seconds": 30
      },
      "artifacts": {
        "csv": "results/qfuf-local-basic-polarity-sample-20260719.csv"
      },
      "summary": {
        "best_modes": {
          "iso_brn_repgen033": "basic-polarity 0.047s vs default 2.629s",
          "iso_brn_repgen043": "polarity 0.137s vs default 1.714s",
          "gensys_brn044": "basic-polarity 0.565s vs default 2.492s",
          "iso_brn_nogen017": "default 4.067s; basic and polarity variants did not improve",
          "iso_brn_nogen010": "default 4.204s; basic and polarity variants did not improve",
          "iso_icl_nogen006": "basic-polarity 4.279s vs default 4.317s, effectively neutral",
          "iso_icl_repgen006": "polarity 0.927s vs default 0.936s, effectively neutral",
          "NEQ023_size7": "basic-polarity 0.553s vs default 3.557s",
          "NEQ016_size7": "default 6.981s; basic-polarity regressed to 9.286s",
          "PEQ019_size7": "polarity 0.649s vs default 1.233s"
        },
        "structural_observation": "Small repgen-style multi-assertion inputs benefit from suppressing strong finite-domain AMO, while nogen rows are dominated by hundreds of thousands of SAT clauses and NEQ016 needs preserved AMO."
      },
      "evidence_status": "local-current",
      "notes": "This is evidence for a broader SLURM option comparison, not enough to promote a default heuristic. It rejects a single basic or basic-polarity rule because NEQ016 and QG nogen rows regress or stay flat."
    },
    {
      "id": "2026-07-19-qfuf-option-compare-111717",
      "started_at": "2026-07-19T15:11:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "SLURM 334-row primo.html subset comparison of default, --qf-uf-preprocess=basic, and --qf-uf-preprocess=basic --theory-phase=polarity",
      "commit": "6fc390d",
      "environment": {
        "type": "slurm",
        "host": "node-head",
        "job_id": "111717"
      },
      "command": "sbatch --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_OPTION_TIMEOUT=120,PRIMO_OPTION_SHARDS=16,PRIMO_OPTION_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt scripts/slurm_qfuf_option_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "build-slurm-rel/primo --quiet --stats",
        "version": "primo 0.1.0; git: 6fc390d; cadical: cadical-3.0.0-7b99c07"
      },
      "inputs": {
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt",
        "rows": 334,
        "timeout_seconds": 120,
        "variants": {
          "default": "",
          "basic": "--qf-uf-preprocess=basic",
          "basic-polarity": "--qf-uf-preprocess=basic --theory-phase=polarity"
        }
      },
      "artifacts": {
        "summary": "results/qfuf-option-compare-111717/summary.json",
        "default": "results/qfuf-option-compare-111717/default-merged.csv",
        "basic": "results/qfuf-option-compare-111717/basic-merged.csv",
        "basic_polarity": "results/qfuf-option-compare-111717/basic-polarity-merged.csv",
        "basic_diffs": "results/qfuf-option-compare-111717/basic-diffs.csv",
        "basic_polarity_diffs": "results/qfuf-option-compare-111717/basic-polarity-diffs.csv"
      },
      "summary": {
        "default": {
          "ok": 330,
          "timeout": 4,
          "error": 0,
          "wrong": 0,
          "par2": 3529.273
        },
        "basic": {
          "ok": 330,
          "timeout": 4,
          "error": 0,
          "wrong": 0,
          "par2": 3696.403
        },
        "basic_polarity": {
          "ok": 328,
          "timeout": 6,
          "error": 0,
          "wrong": 0,
          "par2": 3980.374
        },
        "families_basic_polarity": {
          "Goel": "7/7 ok, PAR2 55.309",
          "NEQ": "25/26 ok, PAR2 442.238",
          "PEQ": "20/25 ok, PAR2 1662.480",
          "QG": "270/270 ok, PAR2 1743.164",
          "SEQ": "6/6 ok, PAR2 77.183"
        },
        "families_basic": {
          "Goel": "7/7 ok, PAR2 18.640",
          "NEQ": "25/26 ok, PAR2 520.783",
          "PEQ": "22/25 ok, PAR2 1131.331",
          "QG": "270/270 ok, PAR2 1946.047",
          "SEQ": "6/6 ok, PAR2 79.602"
        },
        "basic_polarity_qg_signal": "QG PAR2 improves from 1904.984 to 1743.164, with 166 faster and 84 slower QG rows.",
        "top_basic_polarity_wins": "SEQ026_size7 -21.132s, iso_icl_nogen003 -9.159s, NEQ031_size10 -9.029s, gensys_icl001 -8.983s, NEQ023_size7 -8.613s, iso_brn_repgen033 -7.371s",
        "top_basic_polarity_regressions": "PEQ018_size6 timeout regression +196.555s, PEQ003_size10 timeout regression +123.299s, PEQ014_size9 +85.410s, PEQ002_size8 +40.366s, NEQ048_size9 +20.164s, SEQ009_size10 +19.062s"
      },
      "evidence_status": "rejected-default-current",
      "notes": "The run rejects both broad option variants as defaults. It preserves a strong QG-only signal for future structural classification, but any default promotion must avoid PEQ and Goel regressions and the NEQ016/NEQ048 split."
    },
    {
      "id": "2026-07-19-local-auto-basic-multi-smoke",
      "started_at": "2026-07-19T18:20:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "Local smoke diagnostics for the QF_UF auto basic-multi preprocessing and phase heuristic before default rejection",
      "commit": "c808c19+working-tree",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "cmake --build build --target primo -j2; /usr/bin/time -f 'TIME %e' ./build/primo --quiet --stats [target]; repeated iso_brn_repgen033 with --no-auto-basic-multi",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats",
        "version": "working tree after c808c19"
      },
      "inputs": {
        "targets": [
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_nogen017.smt2",
          "tmp/QF_UF/NEQ/NEQ016_size7.smt2",
          "tmp/QF_UF/PEQ/PEQ019_size7.smt2",
          "tmp/QF_UF/2018-Goel-hwbench/QF_UF_firewire_tree.5.prop3_ab_reg_max.smt2"
        ],
        "timeout_seconds": 30
      },
      "summary": {
        "iso_brn_repgen033_default_seconds": 0.07,
        "iso_brn_repgen033_no_auto_basic_multi_seconds": 2.51,
        "iso_icl_repgen006_default_seconds": 1.11,
        "iso_icl_repgen006_no_auto_basic_multi_seconds": 1.05,
        "iso_brn_nogen017_default_seconds": 4.72,
        "neq016_size7_default_seconds": 7.44,
        "peq019_size7_default_seconds": 1.47,
        "goel_firewire_default_seconds": 1.83,
        "wrong_answers": 0,
        "selected_stats": "QG compact multi-assertion rows reported :preprocessing.auto.basic-multi 1 and :sat.phase.auto-basic-multi-polarity 1; NEQ016 and PEQ019 remained single-assertion auto cases; the Goel firewire row reported :preprocessing.auto.large-assertion-skip 1."
      },
      "evidence_status": "local-smoke-current",
      "notes": "The heuristic captures iso_brn_repgen033 and excludes the checked NEQ, PEQ, and large Goel examples. It does not improve iso_icl_repgen006 on this local build, where the old auto path was already near 1s. The later SLURM run 2026-07-19-qfuf-option-compare-111765 rejected this as a default, so the heuristic was kept opt-in."
    },
    {
      "id": "2026-07-19-qfuf-fuzzsmt-auto-basic-multi-1000",
      "started_at": "2026-07-19T18:35:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "fuzzing",
      "scope": "QF_UF FuzzSMT merge gate for candidate auto basic-multi preprocessing and phase heuristic before default rejection",
      "commit": "c808c19+working-tree",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026071906 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-auto-basic-multi-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet",
        "version": "working tree after c808c19"
      },
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 2026071906,
        "count": 1000,
        "timeout_seconds": 5,
        "reference": "z3",
        "fuzzer_args": "-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-auto-basic-multi-1000/summary.csv",
        "generated": "fuzz-results/qf_uf-fuzzsmt-auto-basic-multi-1000/generated"
      },
      "summary": {
        "pass": 1000,
        "wrong_answer": 0,
        "crash": 0,
        "timeout": 0,
        "reference_disagreement": 0,
        "sat": 902,
        "unsat": 98
      },
      "evidence_status": "local-current",
      "notes": "Merge-gate fuzzing for the candidate solver behavior change. Generated inputs are local artifacts; the later SLURM run 2026-07-19-qfuf-option-compare-111765 rejected the candidate as a default, so the heuristic was kept opt-in."
    },
    {
      "id": "2026-07-19-qfuf-option-compare-111765",
      "started_at": "2026-07-19T18:50:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "SLURM 334-row primo.html subset comparison of candidate auto basic-multi default against --no-auto-basic-multi",
      "commit": "a5b17f4",
      "environment": {
        "type": "slurm",
        "host": "node-head",
        "job_id": "111765"
      },
      "command": "Validated scripts/slurm_qfuf_option_compare.sbatch with scripts/slurm_validate_sbatch.py and bash -n; preflighted <remote-home>/primo-cadical-profile build-slurm-rel/primo as git a5b17f4; sbatch --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_OPTION_TIMEOUT=120,PRIMO_OPTION_SHARDS=16,PRIMO_OPTION_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt,PRIMO_OPTION_VARIANTS='default= old-auto=--no-auto-basic-multi' scripts/slurm_qfuf_option_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "build-slurm-rel/primo --quiet --stats",
        "version": "primo 0.1.0; git: a5b17f4; cadical: cadical-3.0.0-7b99c07"
      },
      "inputs": {
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt",
        "rows": 334,
        "timeout_seconds": 120,
        "variants": {
          "default_candidate": "",
          "old_auto": "--no-auto-basic-multi"
        }
      },
      "artifacts": {
        "summary": "results/qfuf-option-compare-111765/summary.json",
        "default": "results/qfuf-option-compare-111765/default-merged.csv",
        "old_auto": "results/qfuf-option-compare-111765/old-auto-merged.csv",
        "diffs": "results/qfuf-option-compare-111765/default-vs-old-auto-diffs.csv"
      },
      "summary": {
        "default_candidate": {
          "ok": 330,
          "timeout": 4,
          "wrong": 0,
          "par2": 3385.676
        },
        "old_auto": {
          "ok": 331,
          "timeout": 3,
          "wrong": 0,
          "par2": 3358.437
        },
        "comparison": {
          "par2_delta_default_minus_old_auto": 27.239,
          "faster_rows": 191,
          "slower_rows": 138,
          "selected_rows": "270 QG rows, PAR2 delta -119.237, 157 faster, 113 slower",
          "nonselected_rows": "64 rows, PAR2 delta +146.475, 34 faster, 25 slower"
        },
        "family_par2_default_candidate": {
          "Goel": 16.663,
          "NEQ": 421.444,
          "PEQ": 1112.589,
          "QG": 1761.902,
          "SEQ": 73.079
        },
        "family_par2_old_auto": {
          "Goel": 16.637,
          "NEQ": 414.741,
          "PEQ": 980.071,
          "QG": 1881.139,
          "SEQ": 65.85
        },
        "top_wins": "iso_icl_nogen003 -8.772s, gensys_icl001 -8.365s, iso_icl_repgen_sk004 -7.720s, gensys_icl_sk004 -7.262s, gensys_icl003 -6.763s, iso_brn_repgen033 -6.731s",
        "top_regressions": "PEQ013_size8 timeout vs 113.861s old-auto despite heuristic not selecting it; iso_icl_repgen003 +10.009s; SEQ026_size7 +7.488s despite heuristic not selecting it"
      },
      "evidence_status": "rejected-default-current",
      "notes": "The structural heuristic improved the selected QG rows, but the same-run mixed-suite PAR2 was worse and solved one fewer row. Because nonselected rows have unchanged solver settings, some regression is likely wall-clock noise near timeout thresholds, but this is still not acceptable default evidence. The follow-up source change keeps the mechanism opt-in through --auto-basic-multi for SMAC and family-specific experiments."
    },
    {
      "id": "2026-07-19-qfuf-fuzzsmt-auto-basic-multi-optin-1000",
      "started_at": "2026-07-19T19:25:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "fuzzing",
      "scope": "QF_UF FuzzSMT merge gate for the final opt-in --auto-basic-multi interface",
      "commit": "a5b17f4+opt-in-followup-working-tree",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet --auto-basic-multi' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026071907 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-auto-basic-multi-optin-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --auto-basic-multi",
        "version": "working tree after a5b17f4"
      },
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 2026071907,
        "count": 1000,
        "timeout_seconds": 5,
        "reference": "z3",
        "fuzzer_args": "-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-auto-basic-multi-optin-1000/summary.csv",
        "generated": "fuzz-results/qf_uf-fuzzsmt-auto-basic-multi-optin-1000/generated"
      },
      "summary": {
        "pass": 1000,
        "wrong_answer": 0,
        "crash": 0,
        "timeout": 0,
        "reference_disagreement": 0,
        "sat": 892,
        "unsat": 108
      },
      "evidence_status": "local-current",
      "notes": "This reruns the fuzz gate against the final opt-in CLI spelling after the mixed-suite benchmark rejected making the heuristic default-on."
    },
    {
      "id": "2026-07-19-flatcc-class-member-resize-local",
      "started_at": "2026-07-19T20:05:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "profile",
      "scope": "Local flat congruence-closure rollback optimization on merge-heavy QF_UF NEQ/PEQ/QG rows",
      "commit": "b167cca+working-tree",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "Built a detached b167cca baseline in /tmp/primo-baseline-b167cca, then alternated three runs each of /tmp/primo-baseline-b167cca/build/primo --quiet --stats and ./build/primo --quiet --stats on NEQ015_size6, NEQ023_size7, iso_brn_repgen033, and PEQ019_size7. Also ran perf record -F 199 -g on NEQ015_size6 after the change.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats with flat-CC class-member resize rollback trail"
      },
      "references": [
        {
          "name": "Primo b167cca local baseline",
          "argv": "/tmp/primo-baseline-b167cca/build/primo --quiet --stats"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 4,
        "timeout_seconds": 60,
        "targets": [
          "tmp/QF_UF/NEQ/NEQ015_size6.smt2",
          "tmp/QF_UF/NEQ/NEQ023_size7.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2",
          "tmp/QF_UF/PEQ/PEQ019_size7.smt2"
        ]
      },
      "artifacts": {
        "timing_csv": "results/local-flatcc-class-members-resize-20260719.csv",
        "perf_report": "results/local-profiles/perf-neq015-size6-class-member-resize.txt",
        "perf_data": "results/local-profiles/perf-neq015-size6-class-member-resize.data",
        "fuzz_summary": "fuzz-results/qf_uf-fuzzsmt-flatcc-class-member-resize-1000-rerun/summary.csv"
      },
      "summary": {
        "median_seconds_baseline_vs_resize": {
          "NEQ015_size6": "7.966 -> 7.753",
          "NEQ023_size7": "5.190 -> 5.091",
          "iso_brn_repgen033": "3.679 -> 3.481",
          "PEQ019_size7": "1.765 -> 1.696"
        },
        "sample_new_counters": {
          "NEQ015_size6": "trail-entries 38182479; class-member-trail-entries-saved 4647140",
          "NEQ023_size7": "trail-entries 43503922; class-member-trail-entries-saved 4603407",
          "iso_brn_repgen033": "trail-entries 18336685; class-member-trail-entries-saved 3724467",
          "PEQ019_size7": "trail-entries 20069185; class-member-trail-entries-saved 3280765"
        },
        "perf_top": "NEQ015 post-change: Frontend::build_term 15.94%, _int_malloc 7.87%, memcmp 7.07%, FlatCongruenceClosure lookup find 6.34%, process_use_list 6.19%. The class-member trail change reduces rollback records but does not remove the remaining frontend/lookup/use-list bottlenecks.",
        "fuzz": "1000/1000 PASS against Z3, 0 bugs, seed 2026071909. An earlier parallel fuzz attempt was discarded because make test rebuilt ./build/primo while the fuzzer was spawning it."
      },
      "evidence_status": "local-current",
      "notes": "Accepted as a narrow rollback representation improvement, not as reference parity. The change replaces one ClassMembersPop trail entry per moved member with one ClassMembersResize entry per merge and preserves parent/class-size/lhs-member restoration. Further work should target frontend term construction, signature lookup, or use-list processing."
    },
    {
      "id": "2026-07-19-online-euf-array-state-local",
      "started_at": "2026-07-19T20:55:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "profile",
      "scope": "Local online EUF callback-state optimization on representative QF_UF NEQ and QG rows",
      "commit": "4394923+working-tree",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "Three runs each of ./build/primo --quiet --stats before and after replacing OnlineEufPropagator hot hash maps/sets with SAT-variable and theory-atom indexed vectors on NEQ023_size7, NEQ027_size8, iso_brn_repgen033, and iso_icl_repgen006; perf record -F 199 -g before and after on NEQ023_size7 and iso_brn_repgen033.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats with online EUF array callback state"
      },
      "references": [
        {
          "name": "Primo 4394923 local baseline",
          "argv": "./build/primo --quiet --stats before the working-tree change"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 4,
        "timeout_seconds": 40,
        "targets": [
          "tmp/QF_UF/NEQ/NEQ023_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ027_size8.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2"
        ]
      },
      "artifacts": {
        "timing_csv": "results/local-online-euf-array-state-20260719.csv",
        "perf_neq023_before": "results/local-profiles/perf-neq023-head-4394923.txt",
        "perf_neq023_after": "results/local-profiles/perf-neq023-array-state-20260719.txt",
        "perf_isobrn033_before": "results/local-profiles/perf-isobrn033-head-4394923.txt",
        "perf_isobrn033_after": "results/local-profiles/perf-isobrn033-array-state-20260719.txt"
      },
      "summary": {
        "median_seconds_baseline_vs_array_state": {
          "NEQ023_size7": "3.411 -> 3.021",
          "NEQ027_size8": "0.667 -> 0.573",
          "iso_brn_repgen033": "2.495 -> 1.950",
          "iso_icl_repgen006": "0.844 -> 0.628"
        },
        "search_counters": "The measured euf.theory-conflicts, euf.incremental.explain-calls, euf.incremental.use-list-appends, and euf.incremental.trail-entries were unchanged on every before/after row.",
        "perf_top": "NEQ023 notify_assignment dropped from 9.32% to 4.56%; iso_brn_repgen033 notify_assignment dropped from 5.07% to 3.44% and _int_malloc from 9.67% to 2.88%. Remaining hot spots are CaDiCaL propagation and FlatCongruenceClosure explanation/merge/use-list work."
      },
      "evidence_status": "local-current",
      "notes": "Accepted as a callback bookkeeping optimization. It exploits that the theory atom set is fixed after clausification; it does not implement a new SAT decision callback and does not change theory reasoning."
    },
    {
      "id": "2026-07-19-qfuf-fuzzsmt-online-euf-array-state-1000",
      "started_at": "2026-07-19T21:05:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT merge gate after replacing online EUF callback hash maps with indexed arrays",
      "commit": "4394923+working-tree",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026071910 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-online-euf-array-state-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 1000,
        "timeout_seconds": 5,
        "generator": "fuzzsmt",
        "seed": 2026071910,
        "fuzzer_args": "-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-online-euf-array-state-1000/summary.csv",
        "generated": "fuzz-results/qf_uf-fuzzsmt-online-euf-array-state-1000/generated",
        "bugs": "fuzz-results/qf_uf-fuzzsmt-online-euf-array-state-1000/bugs"
      },
      "summary": {
        "pass": 1000,
        "wrong_answer": 0,
        "crash": 0,
        "timeout": 0,
        "reference_disagreement": 0,
        "sat": 904,
        "unsat": 96
      },
      "evidence_status": "local-current",
      "notes": "Fresh local merge-gate differential fuzzing for a SAT/theory callback bookkeeping change. This does not replace broader SLURM performance validation for reference-parity claims."
    },
    {
      "id": "2026-07-19-qfuf-smac-90444ca-111813",
      "started_at": "2026-07-19T21:20:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "tuning",
      "scope": "QF_UF SMAC tuning over the gap train/validate manifests after online EUF callback-state optimization",
      "commit": "90444ca",
      "environment": {
        "type": "slurm",
        "host": "node-head",
        "job_id": "111813",
        "remote_workdir": "<remote-home>/primo-cadical-profile"
      },
      "command": "Validated scripts/slurm_qfuf_smac.sbatch with scripts/slurm_validate_sbatch.py and bash -n; ran scripts/slurm_prepare_benchmark_workspace.py --check-only immediately before sbatch; submitted with PRIMO_SMAC_LABEL=qfuf-gap-90444ca PRIMO_SMAC_SEED=2026071911 PRIMO_SMAC_TRIALS=80 PRIMO_SMAC_TIMEOUT=45 PRIMO_SMAC_VALIDATION_TIMEOUT=120 sbatch scripts/slurm_qfuf_smac.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo",
        "version": "primo 0.1.0; git: 90444ca; cadical: cadical-3.0.0-7b99c07"
      },
      "inputs": {
        "logic": "QF_UF",
        "train_manifest": "benchmarks/qfuf-smac-gap-train.txt",
        "validate_manifest": "benchmarks/qfuf-smac-gap-validate.txt",
        "trials": 80,
        "timeout_seconds": 45,
        "validation_timeout_seconds": 120,
        "seed": 2026071911
      },
      "artifacts": {
        "remote_results": "<remote-home>/primo-cadical-profile/results/smac/qfuf-gap-90444ca-111813",
        "remote_stdout": "<remote-home>/primo-cadical-profile/logs/primo-qfuf-smac-111813.out",
        "remote_stderr": "<remote-home>/primo-cadical-profile/logs/primo-qfuf-smac-111813.err"
      },
      "summary": {
        "state_at_submission": "PENDING",
        "final_state": "FAILED",
        "elapsed": "00:12:45",
        "exit_code": "1:0",
        "submission_check": "Remote binary version check immediately before sbatch reported git 90444ca and cadical cadical-3.0.0-7b99c07.",
        "failure": "The compute-node pip install could not reach PyPI and failed to install smac<3,>=2, so no tuning trials were produced."
      },
      "evidence_status": "failed-infrastructure",
      "notes": "No solver-performance conclusion. The failure is an environment/dependency issue: PyPI was unreachable from the job environment. Future SMAC runs need preinstalled/cached dependencies or a login-node-prepared virtual environment."
    },
    {
      "id": "2026-07-19-default-auto-theory-phase-local",
      "started_at": "2026-07-19T16:35:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "profile",
      "scope": "Local QF_UF default-theory-phase change from all-negative to the existing auto heuristic on representative NEQ, PEQ, and QG rows",
      "commit": "f62b3ca+working-tree",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "cmake --build build -j2; local Python harness over NEQ023_size7, NEQ027_size8, PEQ019_size7, iso_brn_repgen033, and iso_icl_repgen006 comparing ./build/primo --quiet --stats --theory-phase=negative against ./build/primo --quiet --stats after changing CheckSatOptions and CLI defaults to TheoryPhaseMode::Auto; perf record/report -F 199 -g on NEQ023_size7 for negative and auto",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats with default TheoryPhaseMode::Auto"
      },
      "references": [
        {
          "name": "Primo explicit negative phase",
          "argv": "./build/primo --quiet --stats --theory-phase=negative"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 5,
        "timeout_seconds": 40,
        "targets": [
          "tmp/QF_UF/NEQ/NEQ023_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ027_size8.smt2",
          "tmp/QF_UF/PEQ/PEQ019_size7.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2"
        ]
      },
      "artifacts": {
        "timing_csv": "results/local-default-auto-phase-20260719.csv",
        "perf_neq023_negative": "results/local-profiles/perf-neq023-default-f62b3ca-20260719.txt",
        "perf_neq023_auto": "results/local-profiles/perf-neq023-auto-f62b3ca-20260719.txt"
      },
      "summary": {
        "seconds_negative_vs_default_auto": {
          "NEQ023_size7": "3.017 -> 0.585",
          "NEQ027_size8": "0.574 -> 0.647",
          "PEQ019_size7": "1.068 -> 0.514",
          "iso_brn_repgen033": "2.095 -> 0.387",
          "iso_icl_repgen006": "0.668 -> 0.621"
        },
        "assignment_effect": {
          "NEQ023_size7": "4728189 -> 877565",
          "PEQ019_size7": "169824 -> 61203",
          "iso_brn_repgen033": "2268666 -> 222034"
        },
        "perf_top": "NEQ023 explicit negative phase: CaDiCaL::Internal::propagate 26.09%, FlatCongruenceClosure::merge_classes 6.23%, OnlineEufPropagator::notify_assignment 5.92%, allocator/free/rollback costs next. Default auto is much shorter, with only 128 samples; CaDiCaL propagation remains the largest visible cost at 16.00%."
      },
      "evidence_status": "rejected-default-local-only",
      "notes": "Local evidence showed useful targeted wins but was superseded by SLURM job 111814, where making auto the default lost one solve and worsened PAR2 on the 334-row subset. Keep --theory-phase=auto as an experimental option; do not use this local run as default-readiness evidence."
    },
    {
      "id": "2026-07-19-qfuf-fuzzsmt-default-auto-phase-1000",
      "started_at": "2026-07-19T16:50:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT merge gate after changing the default theory phase to the auto heuristic",
      "commit": "f62b3ca+working-tree",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026071912 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-default-auto-phase-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet with default TheoryPhaseMode::Auto"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 1000,
        "timeout_seconds": 5,
        "generator": "fuzzsmt",
        "seed": 2026071912,
        "fuzzer_args": "-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-default-auto-phase-1000/summary.csv",
        "generated": "fuzz-results/qf_uf-fuzzsmt-default-auto-phase-1000/generated",
        "bugs": "fuzz-results/qf_uf-fuzzsmt-default-auto-phase-1000/bugs"
      },
      "summary": {
        "pass": 1000,
        "wrong_answer": 0,
        "crash": 0,
        "timeout": 0,
        "reference_disagreement": 0,
        "sat": 907,
        "unsat": 93
      },
      "evidence_status": "local-current",
      "notes": "Fresh local merge-gate differential fuzzing for a default QF_UF search-heuristic change. This does not replace the broader SLURM validation needed for reference-parity claims."
    },
    {
      "id": "2026-07-19-qfuf-default-auto-vs-negative-111814",
      "started_at": "2026-07-19T17:10:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "SLURM 334-row primo.html QF_UF subset validation of the candidate default auto theory phase against explicit --theory-phase=negative",
      "commit": "de6c54d",
      "environment": {
        "type": "slurm",
        "host": "node-head",
        "job_id": "111814",
        "remote_workdir": "<remote-home>/primo-cadical-profile"
      },
      "command": "Validated scripts/slurm_qfuf_option_compare.sbatch with scripts/slurm_validate_sbatch.py and bash -n; synced and rebuilt <remote-home>/primo-cadical-profile from clean commit de6c54d; ran scripts/slurm_prepare_benchmark_workspace.py --check-only immediately before sbatch; submitted sbatch --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_OPTION_TIMEOUT=120,PRIMO_OPTION_SHARDS=16,PRIMO_OPTION_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt,PRIMO_OPTION_VARIANTS='default= negative=--theory-phase=negative',PRIMO_OPTION_OUT_ROOT=<remote-home>/primo-cadical-profile/results/qfuf-default-auto-vs-negative-de6c54d scripts/slurm_qfuf_option_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo --quiet --stats",
        "version": "primo 0.1.0; git: de6c54d; cadical: cadical-3.0.0-7b99c07"
      },
      "inputs": {
        "logic": "QF_UF",
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt",
        "count": 334,
        "timeout_seconds": 120,
        "variants": {
          "default": "new default TheoryPhaseMode::Auto",
          "negative": "--theory-phase=negative"
        },
        "shards": 16
      },
      "artifacts": {
        "remote_results": "<remote-home>/primo-cadical-profile/results/qfuf-default-auto-vs-negative-de6c54d",
        "local_results": "results/qfuf-default-auto-vs-negative-de6c54d",
        "remote_logs": "<remote-home>/primo-cadical-profile/logs/primo-qfuf-options-111814-*.{out,err}"
      },
      "summary": {
        "final_state": "COMPLETED",
        "array_exit_codes": "all 0:0",
        "preflight": "Remote binary version check immediately before sbatch reported git de6c54d and cadical cadical-3.0.0-7b99c07.",
        "default_auto": {
          "solved": 330,
          "timeouts": 4,
          "errors": 0,
          "wrong": 0,
          "par2_seconds": 3210.487,
          "family_solved": {
            "Goel": "7/7",
            "NEQ": "25/26",
            "PEQ": "22/25",
            "QG": "270/270",
            "SEQ": "6/6"
          }
        },
        "negative": {
          "solved": 331,
          "timeouts": 3,
          "errors": 0,
          "wrong": 0,
          "par2_seconds": 3049.049,
          "family_solved": {
            "Goel": "7/7",
            "NEQ": "25/26",
            "PEQ": "23/25",
            "QG": "270/270",
            "SEQ": "6/6"
          }
        },
        "selected_wins": {
          "NEQ023_size7": "8.779s negative -> 2.140s default-auto",
          "iso_brn_repgen033": "6.389s negative -> 1.062s default-auto",
          "SEQ026_size7": "41.820s negative -> 33.275s default-auto"
        },
        "selected_regressions": {
          "PEQ013_size8": "87.047s negative -> timeout default-auto",
          "NEQ027_size10": "4.829s negative -> 69.212s default-auto",
          "gensys_icl_sk003": "10.631s negative -> 26.205s default-auto"
        }
      },
      "evidence_status": "rejected-default",
      "notes": "The candidate auto default fixed several visible NEQ/QG/SEQ rows but regressed the broader 334-row subset, losing one PEQ solve and increasing PAR2 by 161.438s. Revert the default to negative and keep auto as an explicit experimental option for future portfolio/tuning work."
    },
    {
      "id": "2026-07-19-neq023-live-stats-publication-local",
      "started_at": "2026-07-19T19:20:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "profile",
      "scope": "Local NEQ023_size7 gap triage after restoring the negative theory phase default",
      "commit": "f1f92c2+working-tree",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "Rebuilt ./build/primo at f1f92c2; compared ./build/primo --quiet --stats, --theory-phase=auto, and tuned /tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000 on tmp/QF_UF/NEQ/NEQ023_size7.smt2; ran perf record/report before and after lazy live-stats publication; ran local option probe over NEQ023, NEQ016, NEQ041, PEQ019, and iso_brn_repgen033.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "references": [
        {
          "name": "LLM2SMT tuned",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 5,
        "timeout_seconds": 30,
        "targets": "tmp/QF_UF/NEQ/NEQ023_size7.smt2, tmp/QF_UF/NEQ/NEQ016_size7.smt2, tmp/QF_UF/NEQ/NEQ041_size8.smt2, tmp/QF_UF/PEQ/PEQ019_size7.smt2, tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2"
      },
      "artifacts": {
        "timing_logs": "results/local-neQ-analysis-20260719/",
        "perf_before": "results/local-profiles/perf-neq023-default-f1f92c2-20260719.txt",
        "perf_after": "results/local-profiles/perf-neq023-default-f1f92c2-statslazy-20260719.txt",
        "option_probe": "results/local-neQ-analysis-20260719/current-option-probe.csv"
      },
      "summary": {
        "neq023_default_seconds": 3.04,
        "neq023_auto_phase_seconds": 0.57,
        "neq023_llm2smt_tuned_seconds": 1.01,
        "neq023_default_stats": {
          "euf_assignments": 4728189,
          "euf_theory_conflicts": 3836,
          "finite_domain_amo": 4368,
          "sat_clauses": 6436,
          "sat_binary_clauses": 5342
        },
        "llm2smt_tuned_stats": {
          "euf_assignments": 2138805,
          "euf_conflicts": 9774,
          "finite_domain_amo": 4473,
          "sat_clauses": 8778,
          "sat_binary_clauses": 7640
        },
        "nnf_flattening_check": "LLM2SMT --nnf --nnf-memo was neutral on NEQ023; --no-flatten regressed from about 0.97s to 1.55s and increased assignments.",
        "top_level_or_tseitin_probe": "Improved local NEQ023, NEQ016, and NEQ041, but previous SLURM job 111621 rejected it as a global default because it lost one solve and worsened PAR2.",
        "accepted_change": "Reduce hot live-stat snapshotting by publishing rollbackable flat-closure counters before pop, periodically for live timeout stats, and at final flush instead of after every theory assignment.",
        "perf_effect": "The pre-change perf report showed IncrementalFlatAssignmentState::publish_stats at 2.97% self time. After the change it is absent from the top self-time report; CaDiCaL propagation and flat congruence-closure merge/allocation remain dominant."
      },
      "evidence_status": "local-current",
      "notes": "This is a narrow overhead improvement, not a reference-parity claim. The next profiler-backed target is allocation in FlatCongruenceClosure::merge_classes, especially rollback class-member/use-list trail storage."
    },
    {
      "id": "2026-07-19-qfuf-fuzzsmt-live-stats-publication-1000",
      "started_at": "2026-07-19T20:50:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT merge gate for lazy live-stat publication in online incremental EUF",
      "commit": "f1f92c2+working-tree",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026071919 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-live-stats-publication-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "generator": "fuzzsmt",
        "seed": 2026071919,
        "count": 1000,
        "timeout_seconds": 5
      },
      "artifacts": {
        "summary_csv": "fuzz-results/qf_uf-fuzzsmt-live-stats-publication-1000/summary.csv",
        "generated_inputs": "fuzz-results/qf_uf-fuzzsmt-live-stats-publication-1000/generated/"
      },
      "summary": {
        "pass": 1000,
        "wrong_answer": 0,
        "crash": 0,
        "parser_or_type_error": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "ours_sat": 896,
        "ours_unsat": 104
      },
      "evidence_status": "local-current",
      "notes": "All generated cases matched Z3. This fuzz gate covers the stats-publication behavior change; it is not evidence for broader QF_UF reference parity."
    },
    {
      "id": "2026-07-19-neq-phase-basic-portfolio-local",
      "started_at": "2026-07-19T21:25:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "Local NEQ-focused option matrix after confirming QF_UF has no dynamic EUF SAT decision callback",
      "commit": "dbfb05b",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "Inline Python harnesses over NEQ023_size7, NEQ027_size8, NEQ027_size10, NEQ016_size7, NEQ041_size8, PEQ019_size7, and iso_brn_repgen033. Compared ./build/primo --quiet --stats, --theory-phase=auto, --theory-phase=polarity, --qf-uf-preprocess=basic, --qf-uf-preprocess=basic --theory-phase=polarity, --qf-uf-portfolio=basic-polarity with budgets 500/1000/2000/5000/10000, and tuned /tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000 where applicable; 30s timeout per run.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "references": [
        {
          "name": "LLM2SMT tuned",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "count": 7,
        "timeout_seconds": 30,
        "targets": "NEQ023_size7, NEQ027_size8, NEQ027_size10, NEQ016_size7, NEQ041_size8, PEQ019_size7, QG qg7 iso_brn_repgen033"
      },
      "artifacts": {
        "neq_reference_matrix": "results/local-neq-matrix-20260719/neq023-027-local.csv",
        "basic_polarity_matrix": "results/local-neq-matrix-20260719/neq-peq-qg-basic-polarity.csv",
        "portfolio_budget_matrix": "results/local-neq-matrix-20260719/portfolio-budget-neq-peq-qg.csv"
      },
      "summary": {
        "neq023": {
          "default_seconds": 3.064,
          "polarity_seconds": 0.553,
          "basic_polarity_seconds": 0.455,
          "portfolio_budget_10000_seconds": 0.429,
          "llm2smt_tuned_seconds": 1.034
        },
        "neq027_size8": {
          "default_seconds": 0.597,
          "basic_polarity_seconds": 0.803,
          "llm2smt_tuned_seconds": 1.282
        },
        "neq027_size10": {
          "default_seconds": 1.255,
          "polarity_seconds": 21.478,
          "basic_polarity_seconds": 2.935,
          "llm2smt_tuned_seconds": 1.582
        },
        "neq016_size7": {
          "default_seconds": 4.92,
          "polarity_seconds": 6.502,
          "basic_polarity_seconds": 6.935
        },
        "portfolio_observation": "A 1000 or 2000 conflict first-pass budget catches iso_brn_repgen033 but not NEQ023. Budget 10000 catches NEQ023 and NEQ041, but slows NEQ016, NEQ027_size8, NEQ027_size10, and PEQ019 on this sample.",
        "decision_callback_observation": "Clean-room inspection found LLM2SMT's cb_decide path is implemented for LRA branch hints; QF_UF EUF inherits the default return-0 callback. Primo likewise has QF_UF theory propagation/conflict callbacks and static phase hints, but no dynamic EUF SAT decision callback."
      },
      "evidence_status": "local-current",
      "notes": "Do not promote polarity, basic-polarity, or the higher portfolio budget from this evidence. The NEQ cluster needs a sharper structural classifier or a different SAT-visible encoding/profiling target. The existing 334-row SLURM portfolio run remains rejected as a default because it was slower on most rows and worsened PAR2 despite gaining one solve."
    },
    {
      "id": "2026-07-19-auto-basic-single-selector-local",
      "started_at": "2026-07-19T22:05:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "Offline selector mining and local guard run for default-on single-assertion basic preprocessing selector",
      "commit": "7b51758",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "Mined results/qfuf-option-compare-111717/default-merged.csv, basic-merged.csv, and basic-polarity-merged.csv for selectors using only default preprocessing stats; then rebuilt ./build/primo with the auto-basic-single selector and --no-auto-basic-single escape hatch and ran ./build/primo --quiet --stats over NEQ016_size7, NEQ023_size7, NEQ027_size8, NEQ027_size10, NEQ041_size8, PEQ019_size7, PEQ010_size8, and qg7/iso_brn_repgen033 with 30s timeout.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "inputs": {
        "logic": "QF_UF",
        "count": 8,
        "timeout_seconds": 30,
        "targets": "NEQ016_size7, NEQ023_size7, NEQ027_size8, NEQ027_size10, NEQ041_size8, PEQ019_size7, PEQ010_size8, QG qg7 iso_brn_repgen033"
      },
      "artifacts": {
        "selector_sources": "results/qfuf-option-compare-111717/{default,basic,basic-polarity}-merged.csv",
        "local_guard_csv": "results/local-neq-matrix-20260719/auto-basic-single-guard.csv"
      },
      "summary": {
        "offline_334_prediction": {
          "baseline_default_solved": 330,
          "baseline_default_par2_seconds": 3529.273,
          "selected_rows": 12,
          "predicted_solved": 331,
          "predicted_par2_seconds": 3298.9,
          "selector": "single assertion, initial reachable terms <= 15000, raw finite-domain domains >= 200, accepted symmetry group, symmetry terms <= 6"
        },
        "local_guard": {
          "selected": {
            "NEQ023_size7": "2.745s, :preprocessing.auto.basic-single 1, AMO 0",
            "PEQ010_size8": "1.205s, :preprocessing.auto.basic-single 1, AMO 0"
          },
          "not_selected": {
            "NEQ016_size7": "5.143s, raw choices 52",
            "NEQ027_size8": "0.568s, raw choices 172",
            "NEQ027_size10": "1.190s, initial term size above selector limit",
            "NEQ041_size8": "1.367s, raw choices 145",
            "PEQ019_size7": "0.976s, raw choices 51",
            "iso_brn_repgen033": "1.974s, no accepted symmetry group before preprocessing"
          }
        }
      },
      "evidence_status": "local-current-needs-slurm",
      "notes": "This selector is a default behavior change candidate. Local make test, make asan-test, make lint, make docs, targeted clang-tidy, and a 1000-case QF_UF FuzzSMT gate passed on the working tree, but a same-run SLURM 334-row comparison is still required before claiming the default is accepted. The implementation chooses the existing basic preprocessing subset and does not add new theory lemmas."
    },
    {
      "id": "2026-07-19-qf-uf-fuzzsmt-auto-basic-single-1000",
      "started_at": "2026-07-19T22:35:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT merge gate for the guarded auto-basic-single selector and --no-auto-basic-single option",
      "commit": "7b51758",
      "environment": {
        "type": "local",
        "host": "workspace"
      },
      "command": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026071922 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-auto-basic-single-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "generator": "fuzzsmt",
        "seed": 2026071922,
        "count": 1000,
        "timeout_seconds": 5
      },
      "artifacts": {
        "summary_csv": "fuzz-results/qf_uf-fuzzsmt-auto-basic-single-1000/summary.csv",
        "generated_inputs": "fuzz-results/qf_uf-fuzzsmt-auto-basic-single-1000/generated"
      },
      "summary": {
        "pass": 1000,
        "wrong_answer": 0,
        "crash": 0,
        "timeout": 0,
        "parser_or_type_error": 0,
        "ours_sat": 883,
        "ours_unsat": 117,
        "z3_sat": 883,
        "z3_unsat": 117
      },
      "evidence_status": "local-current",
      "notes": "All generated cases matched Z3. This is correctness evidence for the selector plumbing only; mixed-suite performance acceptance still requires SLURM comparison."
    },
    {
      "id": "2026-07-19-slurm-html334-auto-basic-single",
      "started_at": "2026-07-19T22:55:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "Same-binary SLURM A/B comparison for the guarded auto-basic-single selector on the 334-row user HTML QF_UF set",
      "commit": "ff0ad27",
      "environment": {
        "type": "slurm",
        "host": "node-head",
        "job_id": "111862",
        "remote_workdir": "<remote-home>/primo-cadical-profile"
      },
      "command": "sbatch scripts/slurm_qfuf_auto_basic_single_compare.sbatch after python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --ssh-config /tmp/llm2smt_slurm_ssh_config --remote llm2smt-slurm --remote-dir <remote-home>/primo-cadical-profile --local-dir . --target primo verified primo git ff0ad27 and cadical-3.0.0-7b99c07. The sbatch ran PRIMO_OPTION_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt, PRIMO_OPTION_VARIANTS='default= no-basic-single=--no-auto-basic-single', PRIMO_OPTION_SHARDS=16, PRIMO_OPTION_TIMEOUT=120.",
      "solver": {
        "name": "Primo",
        "argv": "build-slurm-rel/primo --quiet --stats"
      },
      "references": [
        {
          "name": "LLM2SMT tuned historical same-manifest artifact",
          "argv": "<remote-home>/llm2smt-reference-src/build-ref-rel/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000",
          "artifact": "results/slurm-user-html334-10974ea-llm2smt/merged.csv"
        }
      ],
      "inputs": {
        "logic": "QF_UF",
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt",
        "count": 334,
        "timeout_seconds": 120
      },
      "artifacts": {
        "remote_root": "<remote-home>/primo-cadical-profile/results/qfuf-auto-basic-single-111862",
        "local_root": "results/slurm-qfuf-auto-basic-single-111862",
        "default_merged": "results/slurm-qfuf-auto-basic-single-111862/default-merged.csv",
        "no_basic_single_merged": "results/slurm-qfuf-auto-basic-single-111862/no-basic-single-merged.csv",
        "default_summary": "results/slurm-qfuf-auto-basic-single-111862/default-summary.csv",
        "no_basic_single_summary": "results/slurm-qfuf-auto-basic-single-111862/no-basic-single-summary.csv",
        "family_summary": "results/slurm-qfuf-auto-basic-single-111862/default-family-summary.csv",
        "ab_diffs": "results/slurm-qfuf-auto-basic-single-111862/default-vs-no-basic-single-diffs.csv",
        "llm2smt_diffs": "results/slurm-qfuf-auto-basic-single-111862/default-vs-llm2smt-html334-diffs.csv"
      },
      "summary": {
        "default": {
          "solved": 332,
          "timeouts": 2,
          "errors": 0,
          "wrong": 0,
          "par2_seconds": 2828.628934,
          "auto_basic_single_selected": 12
        },
        "no_basic_single": {
          "solved": 331,
          "timeouts": 3,
          "errors": 0,
          "wrong": 0,
          "par2_seconds": 3031.43601
        },
        "delta_default_minus_no_basic_single": {
          "solved": 1,
          "par2_seconds": -202.807076
        },
        "families_default": {
          "Goel": "7/7 solved, PAR2 15.575",
          "NEQ": "25/26 solved, PAR2 392.168",
          "PEQ": "24/25 solved, PAR2 675.008",
          "QG": "270/270 solved, PAR2 1697.784",
          "SEQ": "6/6 solved, PAR2 48.093"
        },
        "llm2smt_historical_same_manifest": {
          "solved": 330,
          "timeouts": 4,
          "wrong": 0,
          "par2_seconds": 4670.459144
        },
        "largest_selector_wins": {
          "PEQ014_size11": "default 64.603s, --no-auto-basic-single timeout at 120.085s",
          "PEQ003_size10": "default 38.049s, --no-auto-basic-single 103.026s",
          "NEQ023_size7": "default 7.280s, --no-auto-basic-single 8.612s"
        },
        "largest_default_regressions_vs_disable": {
          "PEQ013_size8": "+18.132s, not selected",
          "NEQ015_size6": "+4.783s, not selected",
          "PEQ014_size10": "+4.616s, selected"
        },
        "largest_remaining_reference_gaps": {
          "NEQ016_size8": "Primo timeout, LLM2SMT 54.081s",
          "PEQ013_size8": "Primo 105.232s, LLM2SMT 82.581s",
          "SEQ026_size7": "Primo 39.311s, LLM2SMT 20.587s",
          "iso_brn_repgen033": "Primo 6.136s, LLM2SMT 0.102s"
        }
      },
      "evidence_status": "slurm-current",
      "notes": "Accepted as a default selector on this 334-row evidence: it adds one solve and improves PAR2 without wrong answers versus the same binary with --no-auto-basic-single. This does not close every family-level performance gap; NEQ016_size8 and several QG/SEQ rows remain next profiling targets."
    },
    {
      "id": "2026-07-19-local-neq016-reference-gap-rejected-probes",
      "date": "2026-07-19",
      "commit": "fe37d40",
      "host": "local workstation",
      "kind": "local performance investigation",
      "scope": "QF_UF NEQ/NEQ016_size8 reference-gap triage after auto-basic-single selector",
      "commands": [
        "/usr/bin/time -f 'TIME %e' /tmp/llm2smt/build/bin/llm2smt --quiet --stats --no-theory-prop --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000 tmp/QF_UF/NEQ/NEQ016_size8.smt2",
        "timeout 45s ./build/primo --quiet --stats --euf-prop=conflict tmp/QF_UF/NEQ/NEQ016_size8.smt2",
        "temporary rejected prototype: SAT-level finite-domain endpoint AMO after clausification",
        "temporary rejected prototype: core And/Or duplicate and complementary-literal folding",
        "temporary rejected prototype: --euf-decide-equalities external cb_decide"
      ],
      "inputs": {
        "benchmark": "tmp/QF_UF/NEQ/NEQ016_size8.smt2",
        "logic": "QF_UF",
        "timeout_seconds": 45
      },
      "summary": {
        "llm2smt_no_theory_prop": {
          "result": "unsat",
          "seconds": 22.86,
          "finite_domain_amo": 2044,
          "clauses": 3557,
          "binary_clauses": 2726,
          "euf_assignments": 5935212,
          "euf_eq_assignments": 2176082,
          "euf_diseq_assignments": 3759130,
          "euf_conflicts": 185145
        },
        "primo_conflict_only": {
          "result": "unknown",
          "seconds": 45.0,
          "finite_domain_amo": 1876,
          "clauses": 2731,
          "binary_clauses": 1917,
          "euf_assignments": 7089643,
          "euf_eq_assignments": 791787,
          "euf_diseq_assignments": 4955759,
          "euf_theory_conflicts": 298338,
          "explain_calls": 55186353
        },
        "rejected_sat_level_endpoint_amo": {
          "result": "unknown",
          "seconds": 25.0,
          "extra_binary_clauses": 378,
          "reason_rejected": "overshot the reference AMO delta and increased bounded EUF conflict churn"
        },
        "rejected_boolean_dedup": {
          "result": "unknown",
          "seconds": 30.0,
          "reason_rejected": "did not change the target term shape materially and increased bounded EUF conflicts"
        },
        "rejected_euf_decide_equalities": {
          "result": "crash",
          "reason_rejected": "CaDiCaL reported external decisions are only allowed over unassigned variables; current assignment notifications are not eager enough for a naive decision hook"
        }
      },
      "evidence_status": "local-rejected",
      "notes": "The remaining NEQ016 gap is not explained by EUF theory propagation: the reference solves with --no-theory-prop. Static phase changes did not reproduce the reference's much higher equality-assignment share. A safe EUF cb_decide design would require callback-synchronized assignment visibility, not the current delayed notification mirror."
    },
    {
      "id": "2026-07-19-local-auto-basic-multi-default-smoke",
      "date": "2026-07-19",
      "commit": "6c5f267",
      "host": "local workstation",
      "kind": "local option comparison",
      "scope": "QF_UF compact multi-assertion basic selector promoted to default, compared with --no-auto-basic-multi",
      "commands": [
        "cmake --build build --target primo -j2",
        "./build/primo --quiet --stats <benchmark>",
        "./build/primo --quiet --stats --no-auto-basic-multi <benchmark>",
        "cmake --build build --target primo_core_tests primo_boolean_solver_tests primo -j2 && ctest --test-dir build -R 'primo_core_tests|primo_boolean_solver_tests' --output-on-failure"
      ],
      "inputs": {
        "benchmarks": [
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2",
          "tmp/QF_UF/NEQ/NEQ023_size7.smt2",
          "tmp/QF_UF/PEQ/PEQ019_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ016_size8.smt2"
        ],
        "timeout_seconds": 35
      },
      "summary": {
        "iso_brn_repgen033": {
          "default": {
            "result": "sat",
            "seconds": 0.045,
            "auto_basic_multi": 1,
            "auto_basic_multi_polarity": 1,
            "finite_domain_amo": 0,
            "clauses": 1177,
            "binary_clauses": 588,
            "euf_assignments": 1957,
            "euf_theory_conflicts": 596,
            "explain_calls": 17085
          },
          "no_auto_basic_multi": {
            "result": "sat",
            "seconds": 1.873,
            "auto_basic_multi": 0,
            "auto_basic_multi_polarity": 0,
            "finite_domain_amo": 3808,
            "clauses": 4985,
            "binary_clauses": 4396,
            "euf_assignments": 2268666,
            "euf_theory_conflicts": 67244,
            "explain_calls": 6626223
          }
        },
        "iso_icl_repgen006": {
          "default": {
            "result": "unsat",
            "seconds": 0.604,
            "auto_basic_multi": 1,
            "auto_basic_multi_polarity": 1,
            "finite_domain_amo": 0,
            "clauses": 3864,
            "binary_clauses": 3234,
            "euf_assignments": 114165,
            "euf_theory_conflicts": 16869,
            "explain_calls": 2317573
          },
          "no_auto_basic_multi": {
            "result": "unsat",
            "seconds": 0.606,
            "auto_basic_multi": 0,
            "auto_basic_multi_polarity": 0,
            "finite_domain_amo": 3559,
            "clauses": 7423,
            "binary_clauses": 6793,
            "euf_assignments": 331355,
            "euf_theory_conflicts": 9703,
            "explain_calls": 1956194
          }
        },
        "NEQ023_size7": {
          "default": {
            "result": "unsat",
            "seconds": 2.622,
            "auto_basic_multi": 0,
            "euf_assignments": 4367937,
            "euf_theory_conflicts": 6562
          },
          "no_auto_basic_multi": {
            "result": "unsat",
            "seconds": 2.638,
            "auto_basic_multi": 0,
            "euf_assignments": 4367937,
            "euf_theory_conflicts": 6562
          }
        },
        "PEQ019_size7": {
          "default": {
            "result": "unsat",
            "seconds": 0.966,
            "auto_basic_multi": 0,
            "euf_assignments": 169824,
            "euf_theory_conflicts": 4707
          },
          "no_auto_basic_multi": {
            "result": "unsat",
            "seconds": 1.057,
            "auto_basic_multi": 0,
            "euf_assignments": 169824,
            "euf_theory_conflicts": 4707
          }
        },
        "NEQ016_size8": {
          "default": {
            "result": "unknown",
            "seconds": 35.007,
            "auto_basic_multi": 0,
            "euf_assignments": 6278750,
            "euf_theory_conflicts": 277889
          },
          "no_auto_basic_multi": {
            "result": "unknown",
            "seconds": 35.007,
            "auto_basic_multi": 0,
            "euf_assignments": 5961765,
            "euf_theory_conflicts": 268492
          }
        }
      },
      "evidence_status": "local-smoke-needs-slurm",
      "notes": "Local smoke supports enabling the compact multi-assertion basic selector for iso_brn_repgen033 and shows no selector effect on sampled NEQ/PEQ rows. iso_icl_repgen006 is roughly neutral in wall time with different EUF conflict/explanation shape. Because earlier 334-row SLURM evidence for this selector was mixed before the auto-basic-single baseline, promotion still requires renewed same-binary SLURM validation before it can be treated as accepted default evidence."
    },
    {
      "id": "2026-07-19-qfuf-fuzzsmt-auto-basic-multi-default-1000",
      "date": "2026-07-19",
      "commit": "6c5f267",
      "host": "local workstation",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT merge gate for enabling compact multi-assertion basic selector by default",
      "commands": [
        "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 20260719 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-auto-basic-multi-default-1000"
      ],
      "inputs": {
        "generator": "fuzzsmt",
        "seed": 20260719,
        "count": 1000,
        "logic": "QF_UF",
        "timeout_seconds": 5,
        "reference": "z3",
        "artifact_dir": "fuzz-results/qf_uf-fuzzsmt-auto-basic-multi-default-1000"
      },
      "summary": {
        "pass": 1000,
        "wrong_answer": 0,
        "crash": 0,
        "parser_or_type_error": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "ours": {
          "sat": 899,
          "unsat": 101
        },
        "refs": {
          "sat": 899,
          "unsat": 101
        }
      },
      "artifacts": {
        "summary_csv": "fuzz-results/qf_uf-fuzzsmt-auto-basic-multi-default-1000/summary.csv",
        "generated_inputs": "fuzz-results/qf_uf-fuzzsmt-auto-basic-multi-default-1000/generated",
        "bugs_dir": "fuzz-results/qf_uf-fuzzsmt-auto-basic-multi-default-1000/bugs"
      },
      "evidence_status": "local-current",
      "notes": "No wrong answers, crashes, parser/type errors, unsupported answers, timeouts, or reference disagreements were reported in the harness summary."
    },
    {
      "id": "2026-07-19-slurm-auto-basic-multi-default-111894",
      "date": "2026-07-19",
      "commit": "6c5f267",
      "host": "SLURM node-head/node-01/node-02",
      "kind": "slurm option comparison",
      "scope": "334-row user primo.html QF_UF manifest, current default versus --no-auto-basic-multi",
      "commands": [
        "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qfuf_option_compare.sbatch",
        "bash -n scripts/slurm_qfuf_option_compare.sbatch",
        "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --ssh-config /tmp/llm2smt_slurm_ssh_config --remote llm2smt-slurm --remote-dir <remote-home>/primo-cadical-profile --local-dir . --target primo --jobs 4",
        "ssh -F /tmp/llm2smt_slurm_ssh_config llm2smt-slurm \"cd <remote-home>/primo-cadical-profile && sbatch --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_OPTION_TIMEOUT=120,PRIMO_OPTION_SHARDS=16,PRIMO_OPTION_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt,PRIMO_OPTION_VARIANTS='default= no-basic-multi=--no-auto-basic-multi' scripts/slurm_qfuf_option_compare.sbatch\""
      ],
      "inputs": {
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt",
        "timeout_seconds": 120,
        "variants": {
          "default": "",
          "no_basic_multi": "--no-auto-basic-multi"
        },
        "slurm_job_id": 111894,
        "shards": 16,
        "remote_workdir": "<remote-home>/primo-cadical-profile"
      },
      "artifacts": {
        "remote_results": "<remote-home>/primo-cadical-profile/results/qfuf-option-compare-111894",
        "local_results": "results/qfuf-option-compare-111894",
        "local_logs": "slurm_logs/primo-qfuf-options-111894-*.{out,err}"
      },
      "summary": {
        "default": {
          "solved": 332,
          "timeouts": 2,
          "errors": 0,
          "wrong": 0,
          "par2_seconds": 2708.316721,
          "auto_basic_multi_selected": 270,
          "families": {
            "Goel": "7/7 solved, PAR2 15.433",
            "NEQ": "25/26 solved, PAR2 390.670",
            "PEQ": "24/25 solved, PAR2 675.711",
            "QG": "270/270 solved, PAR2 1578.982",
            "SEQ": "6/6 solved, PAR2 47.522"
          }
        },
        "no_basic_multi": {
          "solved": 332,
          "timeouts": 2,
          "errors": 0,
          "wrong": 0,
          "par2_seconds": 2767.11395,
          "families": {
            "Goel": "7/7 solved, PAR2 15.486",
            "NEQ": "25/26 solved, PAR2 384.404",
            "PEQ": "24/25 solved, PAR2 631.897",
            "QG": "270/270 solved, PAR2 1693.687",
            "SEQ": "6/6 solved, PAR2 41.640"
          }
        },
        "delta_default_minus_no_basic_multi": {
          "solved": 0,
          "par2_seconds": -58.797229,
          "selected_qg_rows_par2_seconds": -114.704894,
          "nonselected_rows_par2_seconds": 55.907665
        },
        "target_rows": {
          "iso_brn_repgen033": "default 0.103s, --no-auto-basic-multi 6.100s; euf assignments 1957 versus 2268666",
          "iso_icl_repgen006": "default 7.787s, --no-auto-basic-multi 6.197s; selected but slower on this run",
          "NEQ023_size7": "default 7.290s, --no-auto-basic-multi 7.299s; selector not active",
          "NEQ016_size8": "both variants timed out at 120s; selector not active"
        },
        "largest_selector_wins": {
          "iso_icl_repgen001": "-10.002s",
          "gensys_icl001": "-8.536s",
          "iso_icl_nogen003": "-7.246s",
          "gensys_icl_sk004": "-6.745s",
          "iso_brn_repgen033": "-5.997s"
        },
        "largest_selector_regressions": {
          "iso_icl_nogen_sk004": "+6.416s",
          "iso_icl_nogen004": "+5.841s",
          "iso_icl_repgen005": "+3.975s",
          "iso_icl_repgen009": "+3.968s",
          "iso_icl_repgen007": "+3.627s"
        }
      },
      "evidence_status": "slurm-current",
      "notes": "Accepted as the current default on same-binary SLURM evidence after the auto-basic-single baseline: no wrong answers, no solved-count regression, and lower PAR2 overall. The QG-selected subset improves materially, including iso_brn_repgen033. Nonselected family deltas are timing noise because those rows report auto_basic_multi=0 under both variants. The remaining NEQ gap, including NEQ016_size8, is unchanged and remains the next performance target."
    },
    {
      "id": "2026-07-19-local-auto-basic-single-predicate-polarity",
      "date": "2026-07-19",
      "commit": "8b91008",
      "host": "local workstation",
      "kind": "local option comparison",
      "scope": "QF_UF selected auto-basic-single rows, testing predicate-gated polarity phase for NEQ-style formulas",
      "commands": [
        "./build/primo --quiet --stats tmp/QF_UF/NEQ/NEQ023_size7.smt2",
        "./build/primo --quiet --stats --no-auto-basic-single-predicate-polarity tmp/QF_UF/NEQ/NEQ023_size7.smt2",
        "for the 12 rows reporting :preprocessing.auto.basic-single 1 in results/qfuf-option-compare-111894/default, run timeout 90s ./build/primo --quiet --stats with candidate default and with --no-auto-basic-single-predicate-polarity",
        "broad rejected probe: run the same 12 rows with explicit --theory-phase=polarity"
      ],
      "inputs": {
        "selected_rows": 12,
        "timeout_seconds": 90,
        "basis": "results/qfuf-option-compare-111894/default shard CSVs"
      },
      "summary": {
        "implemented_candidate": {
          "selector": "auto-basic-single plus euf.predicate-atoms > 0",
          "affected_selected_rows": 3,
          "unaffected_selected_rows": 9,
          "NEQ006_size6": "candidate 0.962s, disabled 2.328s; predicate atoms 3098",
          "NEQ023_size7": "candidate 0.444s, disabled 2.660s; predicate atoms 731",
          "NEQ032_size6": "candidate 0.291s, disabled 0.160s; predicate atoms 1154",
          "PEQ_selected_rows": "predicate atoms 0, unchanged search stats",
          "SEQ_selected_rows": "predicate atoms 0, unchanged search stats"
        },
        "rejected_broad_polarity": {
          "reason": "explicit --theory-phase=polarity improved NEQ023 but regressed pure-equality PEQ rows",
          "NEQ023_size7": "default 2.654s, polarity 0.456s",
          "PEQ003_size10": "default 10.876s, polarity 64.284s",
          "PEQ014_size9": "default 2.458s, polarity 17.848s",
          "PEQ014_size11": "default 16.595s, polarity 78.720s"
        },
        "NEQ016_size8": {
          "candidate_effect": "none; row does not select auto-basic-single because finite-domain raw choices are below the 200-choice guard",
          "disabled_65s": "unknown with 8199955 euf assignments and 335901 theory conflicts",
          "interrupted_candidate_run": "stopped after 161.91s after confirming the selector cannot affect this row"
        }
      },
      "evidence_status": "local-candidate-needs-slurm",
      "notes": "The narrow predicate gate avoids the PEQ/SEQ regressions seen under broad polarity and materially improves NEQ023, but it does not address NEQ016. Same-binary SLURM validation is required before accepting this as a default."
    },
    {
      "id": "2026-07-19-qfuf-fuzzsmt-auto-basic-single-predicate-polarity-1000",
      "date": "2026-07-19",
      "commit": "8b91008",
      "host": "local workstation",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT generated cases after predicate-gated auto-basic-single polarity phase change",
      "command": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026071931 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-auto-basic-single-predicate-polarity-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "reference": {
        "name": "Z3",
        "argv": "z3"
      },
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 2026071931,
        "count": 1000,
        "timeout_seconds": 5
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-auto-basic-single-predicate-polarity-1000/summary.csv",
        "generated": "fuzz-results/qf_uf-fuzzsmt-auto-basic-single-predicate-polarity-1000/generated",
        "bugs": "fuzz-results/qf_uf-fuzzsmt-auto-basic-single-predicate-polarity-1000/bugs"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "sat": 911,
        "unsat": 89,
        "bug_files": 0
      },
      "evidence_status": "local-current",
      "notes": "Fresh local merge-gate fuzzing for the candidate worktree; headline/default performance acceptance still depends on same-binary SLURM comparison."
    },
    {
      "id": "2026-07-19-slurm-auto-basic-single-predicate-polarity-111942",
      "date": "2026-07-19",
      "commit": "95c5c86",
      "host": "SLURM node-head via <slurm-user>@<slurm-host>",
      "job_id": "111942",
      "kind": "benchmark",
      "scope": "334-row user primo.html QF_UF subset, same-binary option comparison",
      "command": "sbatch --array=0-31 --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_OPTION_TIMEOUT=120,PRIMO_OPTION_SHARDS=16,PRIMO_OPTION_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt,PRIMO_OPTION_VARIANTS='default= disabled=--no-auto-basic-single-predicate-polarity' scripts/slurm_qfuf_option_compare.sbatch",
      "preflight": {
        "validate_sbatch": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qfuf_option_compare.sbatch",
        "bash_n": "bash -n scripts/slurm_qfuf_option_compare.sbatch",
        "workspace_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/llm2smt_slurm_ssh_config --remote llm2smt-slurm --remote-dir <remote-home>/primo-cadical-profile --local-dir . --target primo --check-only",
        "remote_version": "primo 0.1.0; git: 95c5c86; cadical: cadical-3.0.0-7b99c07"
      },
      "inputs": {
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt",
        "timeout_seconds": 120,
        "shards": 16,
        "variants": {
          "default": "",
          "disabled": "--no-auto-basic-single-predicate-polarity"
        }
      },
      "artifacts": {
        "local_results": "results/qfuf-option-compare-111942",
        "remote_results": "<remote-home>/primo-cadical-profile/results/qfuf-option-compare-111942"
      },
      "summary": {
        "default": {
          "total": 334,
          "solved": 332,
          "timeouts": 2,
          "wrong": 0,
          "par2": 2653.764612
        },
        "disabled": {
          "total": 334,
          "solved": 332,
          "timeouts": 2,
          "wrong": 0,
          "par2": 2606.962678
        },
        "raw_par2_delta_default_minus_disabled": 46.801934,
        "activated_rows": {
          "count": 3,
          "par2_delta_default_minus_disabled": -9.570277,
          "NEQ006_size6": "default 3.411367s, disabled 7.178450s",
          "NEQ023_size7": "default 1.246835s, disabled 7.310475s",
          "NEQ032_size6": "default 0.840735s, disabled 0.580289s"
        },
        "targets": {
          "NEQ016_size8": "default timeout 120.103414s, disabled timeout 120.105554s; override inactive",
          "iso_icl_repgen006": "default 7.916638s, disabled 8.190635s; override inactive",
          "iso_brn_repgen033": "default 0.103036s, disabled 0.107815s; override inactive"
        }
      },
      "evidence_status": "slurm-current-qualified",
      "notes": "No wrong answers and no solved-count difference. The raw whole-set PAR2 favored disabled because rows where the new override is inactive had large timing variation, especially PEQ013_size8 and PEQ014_size11. The causal subset where :sat.phase.auto-basic-single-predicate-polarity fired improved overall; the remaining NEQ016 and QG iso gaps require separate mechanisms."
    },
    {
      "id": "2026-07-19-local-neq016-phase-preprocess-diagnostic",
      "date": "2026-07-19",
      "commit": "c07ad6c",
      "host": "local workstation",
      "kind": "local option comparison",
      "scope": "QF_UF/NEQ/NEQ016_size8.smt2 focused diagnosis after predicate polarity SLURM run",
      "commands": [
        "timeout 75s ./build/primo --quiet tmp/QF_UF/NEQ/NEQ016_size8.smt2",
        "timeout 75s ./build/primo --quiet --stats tmp/QF_UF/NEQ/NEQ016_size8.smt2",
        "timeout 75s ./build/primo --quiet --theory-phase=polarity tmp/QF_UF/NEQ/NEQ016_size8.smt2",
        "timeout 75s ./build/primo --quiet --euf-prop=off tmp/QF_UF/NEQ/NEQ016_size8.smt2",
        "timeout 75s ./build/primo --quiet --euf-prop=off --theory-phase=polarity tmp/QF_UF/NEQ/NEQ016_size8.smt2",
        "timeout 75s ./build/primo --quiet --qf-uf-preprocess=basic tmp/QF_UF/NEQ/NEQ016_size8.smt2",
        "timeout 75s ./build/primo --quiet --qf-uf-preprocess=basic --theory-phase=polarity tmp/QF_UF/NEQ/NEQ016_size8.smt2",
        "timeout 75s ./build/primo --quiet --qf-uf-preprocess=strong --theory-phase=polarity tmp/QF_UF/NEQ/NEQ016_size8.smt2",
        "timeout 75s ./build/primo --quiet --theory-phase=auto tmp/QF_UF/NEQ/NEQ016_size8.smt2",
        "timeout 70s /tmp/llm2smt/build/bin/llm2smt --quiet --stats tmp/QF_UF/NEQ/NEQ016_size8.smt2"
      ],
      "inputs": {
        "instance": "tmp/QF_UF/NEQ/NEQ016_size8.smt2",
        "timeout_seconds": "75 for Primo local matrix; 70 for local LLM2SMT stats"
      },
      "summary": {
        "primo_default": "timeout at 75s",
        "primo_stats": "timeout at 75s",
        "primo_polarity": "unsat in 57.01s",
        "primo_euf_prop_off": "timeout at 75s",
        "primo_euf_prop_off_polarity": "timeout at 75s",
        "primo_basic": "timeout at 75s",
        "primo_basic_polarity": "timeout at 75s",
        "primo_strong_polarity": "unsat in 57.87s",
        "primo_auto_phase": "timeout at 75s",
        "llm2smt_stats": "timeout at 70s locally; previous SLURM artifact solved in 56.911077s",
        "polarity_stats": {
          "sat_phase_theory_negative": 28,
          "euf_assignments": 11876277,
          "euf_theory_conflicts": 445437,
          "euf_propagation_delivered": 52,
          "euf_incremental_explain_calls": 88414553
        },
        "default_20s_stats": {
          "sat_phase_theory_negative": 1295,
          "euf_assignments": 3908425,
          "euf_theory_conflicts": 194239,
          "euf_propagation_delivered": 42,
          "euf_incremental_explain_calls": 32812868
        }
      },
      "evidence_status": "local-current",
      "notes": "NEQ016_size8 needs the strong finite-domain AMO structure plus polarity phase and online EUF callbacks to solve locally under the 75s cap. A blanket predicate/single-assertion polarity selector is unsafe because prior local NEQ matrices show severe regressions such as NEQ027_size10. The next implementation should look for a stronger structural discriminator or a finite-domain/Horn-style encoding rather than broad phase selection."
    },
    {
      "id": "2026-07-19-local-qg-multi-polarity-ablation",
      "date": "2026-07-19",
      "commit": "2f58446",
      "host": "local workstation",
      "kind": "local option comparison",
      "scope": "QG compact multi-assertion rows comparing current default with --no-auto-basic-multi-polarity",
      "command": "for selected QG rows, run timeout 25s ./build/primo --quiet --stats and ./build/primo --quiet --stats --no-auto-basic-multi-polarity",
      "inputs": {
        "instances": [
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen_sk032.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen043.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_nogen_sk004.smt2"
        ],
        "timeout_seconds": 25
      },
      "artifacts": {
        "local_results": "results/local-qg-multi-polarity-ablation-20260719.csv"
      },
      "summary": {
        "improved_with_no_multi_polarity": {
          "iso_brn_repgen_sk032": "default 0.536760s, no-multi-polarity 0.070464s; euf conflicts 11925 -> 1875",
          "iso_brn_repgen043": "default 0.713224s, no-multi-polarity 0.217954s; euf conflicts 16283 -> 5654",
          "iso_icl_nogen_sk004": "default 10.704742s, no-multi-polarity 7.922847s; euf assignments 5546207 -> 3255227"
        },
        "regressed_with_no_multi_polarity": {
          "iso_brn_repgen033": "default 0.043048s, no-multi-polarity 0.072127s; euf assignments 1957 -> 47230",
          "iso_icl_repgen006": "default 0.611889s, no-multi-polarity 0.722190s; euf assignments 114165 -> 324741"
        }
      },
      "evidence_status": "local-candidate-needs-slurm",
      "notes": "The new flag isolates compact multi-assertion preprocessing from the phase override. The phase effect is mixed across QG rows; use same-binary SLURM or SMAC before changing the default."
    },
    {
      "id": "2026-07-19-qfuf-fuzzsmt-no-auto-basic-multi-polarity-1000",
      "date": "2026-07-19",
      "commit": "2f58446",
      "host": "local workstation",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT generated cases using the new --no-auto-basic-multi-polarity option",
      "command": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet --no-auto-basic-multi-polarity' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026071932 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-no-auto-basic-multi-polarity-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --no-auto-basic-multi-polarity"
      },
      "reference": {
        "name": "Z3",
        "argv": "z3"
      },
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 2026071932,
        "count": 1000,
        "timeout_seconds": 5
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-no-auto-basic-multi-polarity-1000/summary.csv",
        "generated": "fuzz-results/qf_uf-fuzzsmt-no-auto-basic-multi-polarity-1000/generated",
        "bugs": "fuzz-results/qf_uf-fuzzsmt-no-auto-basic-multi-polarity-1000/bugs"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "sat": 891,
        "unsat": 109,
        "bug_files": 0
      },
      "evidence_status": "local-current",
      "notes": "Fresh local fuzz gate for the new phase-ablation option; default behavior is unchanged by this source change."
    },
    {
      "id": "2026-07-19-slurm-qfuf-html334-no-auto-basic-multi-polarity-111975",
      "started_at": "2026-07-19T00:00:00+02:00",
      "recorded_at": "2026-07-19",
      "kind": "slurm-option-comparison",
      "scope": "Same-binary comparison of current default versus --no-auto-basic-multi-polarity on the 334-row user primo.html QF_UF subset",
      "commit": "0ea0ea6",
      "environment": {
        "type": "SLURM",
        "host": "<slurm-user>@<slurm-host>",
        "remote_workdir": "<remote-home>/primo-cadical-profile",
        "slurm_job_id": "111975"
      },
      "command": "Validated scripts/slurm_qfuf_option_compare.sbatch and ran scripts/slurm_prepare_benchmark_workspace.py --check-only immediately before sbatch; sbatch --array=0-31 --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_OPTION_TIMEOUT=120,PRIMO_OPTION_SHARDS=16,PRIMO_OPTION_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt,PRIMO_OPTION_VARIANTS='default= no-multi-polarity=--no-auto-basic-multi-polarity' scripts/slurm_qfuf_option_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "build-slurm-rel/primo --quiet --stats [--no-auto-basic-multi-polarity]",
        "version": "primo 0.1.0 git: 0ea0ea6 cadical: cadical-3.0.0-7b99c07"
      },
      "inputs": {
        "logic": "QF_UF",
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt",
        "count": 334,
        "timeout_seconds": 120,
        "shards": 16
      },
      "artifacts": {
        "results_dir": "results/qfuf-option-compare-111975",
        "default_results": "results/qfuf-option-compare-111975/default-merged.csv",
        "no_multi_polarity_results": "results/qfuf-option-compare-111975/no-multi-polarity-merged.csv",
        "gaps_vs_refs": "results/qfuf-option-compare-111975/gaps-vs-refs.csv",
        "remote_results": "<remote-home>/primo-cadical-profile/results/qfuf-option-compare-111975"
      },
      "summary": {
        "default": {
          "total": 334,
          "solved": 332,
          "wrong": 0,
          "timeouts": 2,
          "par2": 2640.865653
        },
        "no_multi_polarity": {
          "total": 334,
          "solved": 332,
          "wrong": 0,
          "timeouts": 2,
          "par2": 2757.942501
        },
        "par2_delta_no_multi_minus_default": 117.076848,
        "family_par2": {
          "default": {
            "Goel": 15.613612,
            "NEQ": 380.722781,
            "PEQ": 671.850086,
            "QG": 1525.851206,
            "SEQ": 46.827968
          },
          "no_multi_polarity": {
            "Goel": 15.501893,
            "NEQ": 374.966446,
            "PEQ": 635.731869,
            "QG": 1689.509106,
            "SEQ": 42.233187
          }
        },
        "activated_rows": {
          "count": 270,
          "family": "QG",
          "default_solved": 270,
          "no_multi_polarity_solved": 270,
          "default_par2": 1525.851206,
          "no_multi_polarity_par2": 1689.509106
        },
        "named_targets": {
          "iso_brn_repgen_sk032": "default 1.478515s, no-multi-polarity 0.180607s",
          "iso_brn_repgen043": "default 2.047298s, no-multi-polarity 0.778036s",
          "iso_brn_repgen033": "default 0.105591s, no-multi-polarity 0.212332s",
          "qg6_iso_icl_repgen006": "default 7.801909s, no-multi-polarity 7.388299s",
          "qg7_iso_icl_nogen_sk004": "default 23.711388s, no-multi-polarity 17.689953s",
          "NEQ016_size8": "both timeout at 120s; auto-basic-multi inactive",
          "NEQ023_size7": "default 1.252836s, no-multi-polarity 1.306795s; auto-basic-multi inactive"
        },
        "gap_rank_vs_available_refs": "Only iso_brn_repgen043 remained above 5x with fast reference <=1s in this run: default 2.047298s versus 0.342980s reference, ratio 5.97."
      },
      "evidence_status": "current-rejected-default-change",
      "notes": "Disabling auto-basic-multi polarity helps selected SAT BRN and some ICL rows, but it regresses the activated QG aggregate and whole 334-row PAR2. Keep the ablation flag for SMAC/tuning; do not flip the default from this evidence. The broader NEQ gap is unaffected because auto-basic-multi is inactive on the named NEQ rows."
    },
    {
      "id": "2026-07-19-neq016-pure-filter-guard-rejected",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "tuning",
      "scope": "QF_UF 334-row primo.html subset, auto pure-filter exception candidate",
      "commit": "f6fdee6 for evaluated candidate; reverted immediately afterward because SLURM did not validate a default win",
      "environment": {
        "type": "slurm",
        "host": "<slurm-user>@<slurm-host>",
        "slurm_job_id": "112007"
      },
      "command": "sbatch --array=0-31 --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_OPTION_TIMEOUT=120,PRIMO_OPTION_SHARDS=16,PRIMO_OPTION_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt,PRIMO_OPTION_VARIANTS='default= pure-on=--pure-theory-filter=on' scripts/slurm_qfuf_option_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "build-slurm-rel/primo --quiet --stats"
      },
      "references": [
        {
          "name": "Primo explicit pure filter",
          "argv": "build-slurm-rel/primo --quiet --stats --pure-theory-filter=on"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 334,
        "timeout_seconds": 120,
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt"
      },
      "artifacts": {
        "summary": "results/qfuf-option-compare-112007/{default,pure-on}-merged.csv",
        "results": "results/qfuf-option-compare-112007",
        "logs": "results/qfuf-option-compare-112007/*/logs",
        "bugs": null
      },
      "summary": {
        "default": {
          "total": 334,
          "solved": 332,
          "timeouts": 2,
          "errors": 0,
          "wrong": 0,
          "par2": 2636.469837,
          "auto_pure_filter_off_rows": 1
        },
        "pure_on": {
          "total": 334,
          "solved": 332,
          "timeouts": 2,
          "errors": 0,
          "wrong": 0,
          "par2": 2591.9866,
          "auto_pure_filter_off_rows": 0
        },
        "activated_row": "tmp/QF_UF/NEQ/NEQ016_size8.smt2",
        "activated_row_default": "timeout at 120.104467s, :euf.pure-filter.enabled 0, :euf.pure-filter.auto-off 1, assignments 4684816, conflicts 186571, explain calls 35720389",
        "activated_row_pure_on": "timeout at 120.104966s, :euf.pure-filter.enabled 1, assignments 7704675, conflicts 320667, explain calls 56443779",
        "local_candidate_evidence": "Before SLURM, local default with the guard solved NEQ016_size8 in 43.84s and 1000 QF_UF FuzzSMT cases passed. The cluster result did not reproduce the solved-row improvement at the requested 120s timeout."
      },
      "evidence_status": "rejected",
      "notes": "The candidate reduced some EUF activity on the activated row but did not improve solved count under SLURM headline conditions. The source change was reverted; keep this entry to prevent promoting this narrow benchmark-derived guard without stronger evidence."
    },
    {
      "id": "2026-07-19-neq016-single-fd-phase-rejected",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "tuning",
      "scope": "QF_UF 334-row primo.html subset, single finite-domain phase selector candidate",
      "commit": "6976c33 for evaluated candidate; reverted immediately afterward because SLURM did not validate the local win",
      "environment": {
        "type": "slurm",
        "host": "<slurm-user>@<slurm-host>",
        "slurm_job_id": "112039"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --remote-dir <remote-home>/primo-cadical-profile --target primo; sbatch --array=0-31 --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_OPTION_TIMEOUT=120,PRIMO_OPTION_SHARDS=16,PRIMO_OPTION_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt,PRIMO_OPTION_VARIANTS='default= disabled=--no-auto-single-fd-polarity' scripts/slurm_qfuf_option_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "build-slurm-rel/primo --quiet --stats"
      },
      "references": [
        {
          "name": "Primo with candidate disabled",
          "argv": "build-slurm-rel/primo --quiet --stats --no-auto-single-fd-polarity"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 334,
        "timeout_seconds": 120,
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt"
      },
      "artifacts": {
        "summary": "results/qfuf-option-compare-112039/summary.json",
        "default": "results/qfuf-option-compare-112039/default-merged.csv",
        "disabled": "results/qfuf-option-compare-112039/disabled-merged.csv",
        "diffs": "results/qfuf-option-compare-112039/default-vs-disabled-diffs.csv",
        "remote_results": "<remote-home>/primo-cadical-profile/results/qfuf-option-compare-112039",
        "logs": "results/qfuf-option-compare-112039/*/logs",
        "bugs": null
      },
      "summary": {
        "default": {
          "total": 334,
          "solved": 332,
          "timeouts": 2,
          "wrong": 0,
          "par2": 2716.703317
        },
        "disabled": {
          "total": 334,
          "solved": 332,
          "timeouts": 2,
          "wrong": 0,
          "par2": 2636.797158
        },
        "selector_activations": 1,
        "activated_row": "tmp/QF_UF/NEQ/NEQ016_size8.smt2",
        "activated_row_default": "timeout at 120.106615s, :sat.phase.auto-single-fd-polarity 1, :sat.phase.theory-negative 28, assignments 8103251, theory conflicts 326685",
        "activated_row_disabled": "timeout at 120.105952s, :sat.phase.auto-single-fd-polarity 0, :sat.phase.theory-negative 1295, assignments 7665027, theory conflicts 319481",
        "local_candidate_evidence": "Before SLURM, the candidate solved NEQ016_size8 locally in 57.84s while the disabled variant hit a 30s cap. The cluster result did not reproduce a solved-row improvement at the requested 120s timeout."
      },
      "evidence_status": "rejected",
      "notes": "The candidate changed only static CaDiCaL phase hints and activated on one row, but it did not improve solved count and made 334-row PAR2 worse on SLURM. The source change was reverted; keep this entry to prevent promoting this benchmark-derived selector without stronger mixed-suite evidence."
    },
    {
      "id": "2026-07-19-qfuf-fuzzsmt-single-fd-phase-revert-1000",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT generated cases after reverting the rejected single finite-domain phase selector",
      "commit": "6976c33 plus uncommitted revert of 6976c33 and a53dc16",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026071952 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-single-fd-phase-revert-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 2026071952,
        "count": 1000,
        "timeout_seconds": 5,
        "manifest": null
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-single-fd-phase-revert-1000/summary.csv",
        "results": "fuzz-results/qf_uf-fuzzsmt-single-fd-phase-revert-1000",
        "logs": null,
        "bugs": "fuzz-results/qf_uf-fuzzsmt-single-fd-phase-revert-1000/bugs"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "parser_or_type_error": 0,
        "reference_disagreement": 0,
        "sat": 911,
        "unsat": 89
      },
      "evidence_status": "current_local",
      "notes": "Fresh merge-gate-sized local QF_UF fuzz run after reverting the rejected default selector."
    },
    {
      "id": "2026-07-19-peq019-post-amo-ablation-local",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "Local non-iso QF_UF gap triage for PEQ019_size7 and nearby PEQ/NEQ rows",
      "commit": "c36c1bf plus uncommitted --no-finite-domain-post-amo option",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Local Python subprocess matrix over PEQ019_size7, PEQ018_size5, NEQ015_size5, NEQ015_size4, NEQ033_size5, and iso_brn_repgen_sk032 comparing ./build/primo --quiet --stats default, --no-finite-domain-post-amo, and --no-finite-domain-post-amo --theory-phase=polarity; also ran tuned /tmp/llm2smt and z3/cvc5 timing on PEQ019_size7",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "references": [
        {
          "name": "LLM2SMT tuned",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        },
        {
          "name": "Z3",
          "argv": "contrib/local/bin/z3 -smt2"
        },
        {
          "name": "cvc5",
          "argv": "contrib/local/bin/cvc5 --lang smt2"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 6,
        "timeout_seconds": 30,
        "manifest": "Selected from results/qfuf-next-gap-ranking-c36c1bf-ratio2.csv: PEQ019_size7, PEQ018_size5, NEQ015_size5, NEQ015_size4, NEQ033_size5, iso_brn_repgen_sk032"
      },
      "artifacts": {
        "summary": "/tmp/post-amo-option-matrix.csv",
        "results": "/tmp/post-amo-option-matrix.csv",
        "logs": "/tmp/peq019-*.{out,err}; /tmp/primo-peq019-default.perf",
        "bugs": null
      },
      "summary": {
        "PEQ019_size7": "default 1.035s, 4845 clauses, 3787 AMO; raw-only 0.541s, 2129 clauses, 1071 AMO; tuned LLM2SMT 0.20s with 2235 clauses and 1176 AMO",
        "PEQ018_size5": "default 1.218s; raw-only 1.189s; raw-only polarity 0.767s",
        "NEQ015_size5": "default 1.345s; raw-only 1.224s; raw-only polarity 1.722s",
        "NEQ015_size4": "default 0.356s; raw-only 0.341s; raw-only polarity 0.486s",
        "NEQ033_size5": "default 0.523s; raw-only 0.543s; raw-only polarity 0.473s",
        "iso_brn_repgen_sk032": "no finite-domain AMO in either mode; raw-only is neutral within noise",
        "profile": "perf on PEQ019 default is dominated by FlatCongruenceClosure explanation/merge/restore work; the raw-only win reduces SAT search/EUF work by avoiding post-simplification AMO clause growth"
      },
      "evidence_status": "current_local_candidate",
      "notes": "This is a default-preserving ablation option. The local evidence supports a same-binary SLURM comparison before any auto/default rule is considered."
    },
    {
      "id": "2026-07-19-qfuf-fuzzsmt-post-amo-option-1000",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT generated cases after adding the default-preserving finite-domain post-AMO ablation option",
      "commit": "c36c1bf plus uncommitted --no-finite-domain-post-amo option",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026071953 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-post-amo-option-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 2026071953,
        "count": 1000,
        "timeout_seconds": 5,
        "manifest": null
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-post-amo-option-1000/summary.csv",
        "results": "fuzz-results/qf_uf-fuzzsmt-post-amo-option-1000",
        "logs": null,
        "bugs": "fuzz-results/qf_uf-fuzzsmt-post-amo-option-1000/bugs"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "parser_or_type_error": 0,
        "reference_disagreement": 0,
        "sat": 896,
        "unsat": 104
      },
      "evidence_status": "current_local_candidate",
      "notes": "The option is default-preserving. It exists to test whether post-simplification AMO clause growth is responsible for PEQ/NEQ/QG gaps before changing any default."
    },
    {
      "id": "2026-07-19-qfuf-post-amo-raw-only-slurm-112071",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "SLURM same-binary 334-row primo.html QF_UF subset comparison of default post-simplification finite-domain AMO against --no-finite-domain-post-amo",
      "commit": "a56738f",
      "environment": {
        "type": "slurm",
        "host": "<slurm-user>@<slurm-host>",
        "slurm_job_id": "112071",
        "remote_workdir": "<remote-home>/primo-cadical-profile"
      },
      "command": "sbatch --array=0-31 --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_OPTION_TIMEOUT=120,PRIMO_OPTION_SHARDS=16,PRIMO_OPTION_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt,PRIMO_OPTION_VARIANTS='default= raw-only=--no-finite-domain-post-amo' scripts/slurm_qfuf_option_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "references": [
        {
          "name": "Primo raw-only ablation",
          "argv": "./build/primo --quiet --stats --no-finite-domain-post-amo"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 334,
        "timeout_seconds": 120,
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt"
      },
      "artifacts": {
        "summary": "results/qfuf-option-compare-112071/summary.json",
        "results": "results/qfuf-option-compare-112071/{default-merged.csv,raw-only-merged.csv,default-vs-raw-only-diffs.csv}",
        "logs": "results/qfuf-option-compare-112071/{default,raw-only}/",
        "bugs": null
      },
      "summary": {
        "default": {
          "total": 334,
          "ok": 332,
          "timeout": 2,
          "wrong": 0,
          "par2": 2640.449295
        },
        "raw_only": {
          "total": 334,
          "ok": 332,
          "timeout": 2,
          "wrong": 0,
          "par2": 2656.147716
        },
        "family_counts_same": {
          "Goel": {
            "ok": 7
          },
          "NEQ": {
            "ok": 25,
            "timeout": 1
          },
          "PEQ": {
            "ok": 24,
            "timeout": 1
          },
          "QG": {
            "ok": 270
          },
          "SEQ": {
            "ok": 6
          }
        },
        "post_amo_rows": {
          "default": 48,
          "raw_only": 0
        },
        "notable_rows": {
          "PEQ019_size7": "default 3.140852s, raw-only 1.607925s; AMO 3787 -> 1071; conflicts 4707 -> 2974; assignments 169824 -> 32225",
          "SEQ009_size10": "default 0.272649s, raw-only 27.616121s; AMO 6035 -> 5095; assignments 54842 -> 2529076",
          "NEQ016_size8": "both timed out at 120s; conflicts 295737 -> 320006; assignments 6858076 -> 7683004"
        }
      },
      "evidence_status": "current_rejected_default",
      "notes": "Raw-only post-AMO ablation improved PEQ019_size7 but worsened whole-subset PAR2 and had a severe SEQ009_size10 regression. Keep --no-finite-domain-post-amo as a tuning/SMAC parameter, not as a default or auto rule without a stronger selector."
    },
    {
      "id": "2026-07-19-flatcc-class-member-merge-record-local",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "Local flat congruence-closure class-member rollback representation retime on current cheap QF_UF gaps",
      "commit": "7c7b405 plus uncommitted compact ClassMembersMerge trail entry",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "cmake --build build -j2; ctest --test-dir build -R primo_euf_solver_tests --output-on-failure; three runs each of ./build/primo --quiet --stats with default and --no-finite-domain-post-amo on PEQ019_size7, NEQ023_size7, NEQ027_size8, and qg7/iso_brn_repgen033; perf record/report on PEQ019 default and --no-finite-domain-post-amo",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "references": [
        {
          "name": "LLM2SMT tuned",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        },
        {
          "name": "Z3",
          "argv": "contrib/local/bin/z3 -smt2"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 4,
        "timeout_seconds": 30,
        "manifest": "tmp/QF_UF/PEQ/PEQ019_size7.smt2, tmp/QF_UF/NEQ/NEQ023_size7.smt2, tmp/QF_UF/NEQ/NEQ027_size8.smt2, tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2"
      },
      "artifacts": {
        "summary": "results/local-qfuf-current-gap-matrix-20260719.csv",
        "results": "results/profiles/peq019-current-20260719/",
        "logs": "results/profiles/peq019-current-20260719/*.err",
        "bugs": null
      },
      "summary": {
        "local_gap_matrix_before_edit": "Current HEAD already solves NEQ023_size7 in about 0.44s, NEQ027_size8 in about 0.56s, SEQ009_size10 in about 0.10s, and iso_brn_repgen033 in about 0.04s on this host; PEQ019_size7 remains the cheap non-iso gap at about 1.03s default versus tuned LLM2SMT about 0.23s and Z3 about 0.07s.",
        "nnf_reference_check": "LLM2SMT --nnf and --nnf-memo left PEQ019, NEQ023, and SEQ009 stats unchanged; NNF is not the local explanation for those gaps.",
        "profile_before_edit": "PEQ019 default perf: FlatCongruenceClosure::explain_equal_into 16.83%, merge_classes 11.27%, process_use_list 8.22%, _int_malloc 7.50%, OnlineEufPropagator notification 6.20%; raw-only perf has explain_equal_into 23.55% and restore_trail_entry 14.73%.",
        "change": "Replace class-member rollback vector snapshots with one ClassMembersMerge trail entry containing kept representative, restored representative, and moved-member count. This avoids copying the loser class member vector; reverse-order rollback moves the appended tail back after later merges have been undone.",
        "post_edit_times": {
          "PEQ019_size7_default": "0.975348, 0.894091, 0.893125",
          "PEQ019_size7_no_post_amo": "0.460267, 0.459603, 0.464771",
          "NEQ023_size7_default": "0.389168, 0.414388, 0.388448",
          "NEQ027_size8_default": "0.543769, 0.542472, 0.633763",
          "iso_brn_repgen033_default": "0.044235, 0.046244, 0.040956"
        },
        "search_counters": "The change does not alter SAT clauses, EUF conflicts, assignments, or class-member-trail-entries-saved; it reduces the cost and allocation shape of restoring class-member lists.",
        "focused_tests": "ctest --test-dir build -R primo_euf_solver_tests --output-on-failure passed"
      },
      "evidence_status": "current_local_candidate",
      "notes": "This is a narrow memory/rollback optimization motivated by the documented flat congruence-closure design. It is not reference parity; headline status requires fuzzing and mixed-suite SLURM comparison."
    },
    {
      "id": "2026-07-19-qfuf-fuzzsmt-flatcc-class-member-merge-record-1000",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT merge gate after replacing flat congruence-closure class-member vector rollback snapshots with compact merge records",
      "commit": "7c7b405 plus uncommitted compact ClassMembersMerge trail entry",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026071954 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-flatcc-class-member-merge-record-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 2026071954,
        "count": 1000,
        "timeout_seconds": 5,
        "manifest": null
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-flatcc-class-member-merge-record-1000/summary.csv",
        "results": "fuzz-results/qf_uf-fuzzsmt-flatcc-class-member-merge-record-1000",
        "logs": null,
        "bugs": "fuzz-results/qf_uf-fuzzsmt-flatcc-class-member-merge-record-1000/bugs"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "parser_or_type_error": 0,
        "reference_disagreement": 0,
        "sat": 885,
        "unsat": 115
      },
      "evidence_status": "current_local_candidate",
      "notes": "Fresh merge gate for a rollback-sensitive flat congruence-closure representation change."
    },
    {
      "id": "2026-07-19-slurm-qfuf-html334-flatcc-class-member-merge-record-112103",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "benchmark",
      "scope": "334-row QF_UF primo.html subset comparing current default against raw finite-domain AMO ablation after compact flat congruence-closure class-member rollback",
      "commit": "2815681",
      "environment": {
        "type": "slurm",
        "host": "<slurm-user>@<slurm-host>",
        "slurm_job_id": "112103",
        "remote_dir": "<remote-home>/primo-cadical-profile"
      },
      "command": "sbatch --array=0-31 --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_OPTION_TIMEOUT=120,PRIMO_OPTION_SHARDS=16,PRIMO_OPTION_MANIFESTS=benchmarks/user-primo-html334-2026-07-18.txt,PRIMO_OPTION_VARIANTS='default= raw-only=--no-finite-domain-post-amo' scripts/slurm_qfuf_option_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet plus variant-specific options",
        "version": "primo 0.1.0; git 2815681; cadical cadical-3.0.0-7b99c07"
      },
      "references": [
        {
          "name": "previous Primo default",
          "artifact": "results/qfuf-option-compare-112071/default-merged.csv",
          "commit": "a56738f"
        }
      ],
      "inputs": {
        "benchmark_set": "user primo.html 334-row QF_UF subset",
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt",
        "timeout_seconds": 120,
        "variants": [
          "default=",
          "raw-only=--no-finite-domain-post-amo"
        ]
      },
      "artifacts": {
        "summary": "results/qfuf-option-compare-112103/summary.json",
        "default_results": "results/qfuf-option-compare-112103/default-merged.csv",
        "raw_only_results": "results/qfuf-option-compare-112103/raw-only-merged.csv",
        "default_vs_previous": "results/qfuf-option-compare-112103/default-vs-112071-default-diffs.csv",
        "default_vs_raw_only": "results/qfuf-option-compare-112103/default-vs-raw-only-diffs.csv"
      },
      "summary": {
        "default": {
          "total": 334,
          "ok": 332,
          "timeout": 2,
          "wrong": 0,
          "par2": 2627.77157,
          "family": {
            "Goel": {
              "ok": 7
            },
            "NEQ": {
              "ok": 25,
              "timeout": 1
            },
            "PEQ": {
              "ok": 24,
              "timeout": 1
            },
            "QG": {
              "ok": 270
            },
            "SEQ": {
              "ok": 6
            }
          }
        },
        "raw_only": {
          "total": 334,
          "ok": 332,
          "timeout": 2,
          "wrong": 0,
          "par2": 2631.160678
        },
        "previous_default_job_112071": {
          "total": 334,
          "ok": 332,
          "timeout": 2,
          "wrong": 0,
          "par2": 2640.449295
        },
        "par2_delta_previous_minus_current_default": 12.677725,
        "par2_delta_raw_only_minus_current_default": 3.389108,
        "solved_ok_delta_vs_previous": 0,
        "top_default_wins_vs_previous": [
          "PEQ014_size11 63.840771s -> 58.188442s",
          "PEQ002_size8 61.694478s -> 58.181466s",
          "PEQ003_size10 37.379141s -> 34.489157s",
          "PEQ014_size10 29.844886s -> 27.972340s",
          "QG qg7/iso_icl_repgen003 52.146376s -> 50.373923s"
        ],
        "top_default_losses_vs_previous": [
          "QG qg5/gensys_icl320 2.182811s -> 4.187969s",
          "QG qg7/gensys_icl003 14.141451s -> 16.015869s",
          "QG qg7/iso_brn_nogen_sk011 8.997739s -> 10.647028s",
          "QG qg6/gensys_icl001 6.003113s -> 7.644259s",
          "QG qg5/gensys_icl316 2.328922s -> 3.884026s"
        ]
      },
      "evidence_status": "current",
      "notes": "Compact class-member rollback slightly reduces runtime without changing SAT or EUF search counters. It improves PAR2 modestly but does not close the reference gap or solve additional rows. The raw-only finite-domain AMO option remains rejected as default because default still has lower PAR2 on this suite and raw-only severely regresses SEQ009_size10."
    },
    {
      "id": "2026-07-19-local-cc-audit-use-list-explanation-cache-rejected",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "profiling",
      "scope": "Local congruence-closure audit against Nieuwenhuis-Oliveras Section 3 and Section 5 on PEQ/SEQ/NEQ/QG representative rows",
      "commit": "2815681 plus temporary uncommitted CC experiments, both reverted after measurement",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Paper audit using https://www.cs.upc.edu/~oliveras/IC.pdf plus local ./build/primo --quiet --stats runs on PEQ019_size7, SEQ009_size10, PEQ002_size8, NEQ048_size7, and QG qg7/iso_brn_repgen_sk032 with default and --no-finite-domain-post-amo variants.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats [optional --no-finite-domain-post-amo]"
      },
      "references": [
        {
          "name": "Nieuwenhuis-Oliveras paper",
          "citation": "Robert Nieuwenhuis and Albert Oliveras, Fast Congruence Closure and Extensions, Information and Computation 205, 2007, Sections 3 and 5"
        },
        {
          "name": "LLM2SMT reference checkout",
          "path": "/tmp/llm2smt",
          "use": "clean-room behavioral/design comparison only; no source copied"
        }
      ],
      "inputs": {
        "benchmark_set": "local representative QF_UF rows from current 334-row gap ranking",
        "manifest": "tmp/QF_UF/PEQ/PEQ019_size7.smt2, tmp/QF_UF/SEQ/SEQ009_size10.smt2, tmp/QF_UF/PEQ/PEQ002_size8.smt2, tmp/QF_UF/NEQ/NEQ048_size7.smt2, tmp/QF_UF/QG-classification/qg7/iso_brn_repgen_sk032.smt2",
        "timeout_seconds": 80
      },
      "artifacts": {
        "summary": "terminal-captured local matrices in 2026-07-19 conversation",
        "results": "results/profiles/peq019-next-20260719/",
        "logs": "results/profiles/peq019-next-20260719/*.err"
      },
      "summary": {
        "baseline_observation": "PEQ019 default remains a cheap non-iso gap: local default about 0.91s, raw-only about 0.48s, tuned LLM2SMT about 0.23s, Z3 near 0.00s on this host. Primo default has 4845 clauses and 3787 AMO clauses; LLM2SMT tuned has 2235 clauses and 1176 AMO clauses.",
        "use_list_no_reappend_experiment": {
          "change": "Do not append an affected flat definition to the new representative use list when its normalized signature hits Lookup in process_use_list.",
          "selected_local_results": {
            "PEQ019_size7_default": "about 0.46s, improved from about 0.91s; assignments 63275 vs 169824 baseline",
            "iso_brn_repgen_sk032_default": "about 0.15s, improved from about 0.52s local matrix",
            "PEQ002_size8_default": "56.746s in longer check, worse than roughly 18-24s baseline/cache-only local checks; PEQ013_size8 and PEQ014_size11 timed out at 90s in follow-up"
          },
          "decision": "rejected; paper-shaped but unsafe as a default performance change on hard PEQ rows without a broader redesign"
        },
        "explanation_reason_cache_experiment": {
          "change": "Bounded per-branch memo table for completed explain_equal reasons, cleared on FlatCongruenceClosure::pop.",
          "selected_local_results_after_reverting_no_reappend": {
            "PEQ019_size7_default": "1.286s, no useful counter movement versus baseline; explain-cache-hits unchanged at 940671",
            "PEQ002_size8_default": "23.979s, not a clear improvement over baseline noise and worse than reference gap target",
            "SEQ009_size10_default": "0.132s, slightly slower than baseline local about 0.09-0.10s",
            "iso_brn_repgen_sk032_default": "0.646s, worse than baseline local about 0.52s"
          },
          "decision": "rejected; repeated explanation cost is not fixed by this simple memoization policy"
        },
        "audit_conclusion": "The current FlatCongruenceClosure is a Section 3-shaped affected-use-list/signature-lookup closure, but it still lacks the Section 4-5 proof-forest explanation algorithm. Profiles and rejected experiments indicate that a proper proof-forest Explain design is the next CC-level implementation target, not a local use-list or memoization tweak."
      },
      "evidence_status": "rejected_experiments",
      "notes": "Temporary source edits were reverted. The accepted artifact from this audit is the diagnosis and documentation; no performance default was changed."
    },
    {
      "id": "2026-07-19-local-cc-proof-parent-skeleton-rejected",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "profiling",
      "scope": "Local rejected proof-parent explanation skeleton for FlatCongruenceClosure",
      "commit": "e2ff384 plus temporary uncommitted proof-parent metadata prototype, reverted after measurement",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Temporary prototype added proof_parent/proof_edge/proof_from metadata on flat merges and tried LCA-style explanation before falling back to the existing adjacency BFS; measured ./build/primo --quiet --stats on PEQ019_size7, SEQ009_size10, PEQ002_size8, NEQ048_size7, and QG qg7/iso_brn_repgen_sk032, default and --no-finite-domain-post-amo.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats [optional --no-finite-domain-post-amo]"
      },
      "references": [
        {
          "name": "Nieuwenhuis-Oliveras paper",
          "citation": "Fast Congruence Closure and Extensions, Sections 5.1-5.3 proof forest and Explain"
        }
      ],
      "inputs": {
        "manifest": "tmp/QF_UF/PEQ/PEQ019_size7.smt2, tmp/QF_UF/SEQ/SEQ009_size10.smt2, tmp/QF_UF/PEQ/PEQ002_size8.smt2, tmp/QF_UF/NEQ/NEQ048_size7.smt2, tmp/QF_UF/QG-classification/qg7/iso_brn_repgen_sk032.smt2",
        "timeout_seconds": 80
      },
      "artifacts": {
        "summary": "terminal-captured local proof-parent matrix in 2026-07-19 conversation",
        "results": null,
        "logs": null
      },
      "summary": {
        "prototype": "Maintained one proof-parent edge from the losing class representative to a pending equality endpoint in the winning class, with recursive repair when the losing representative was not the pending endpoint. Existing adjacency BFS remained as fallback.",
        "focused_tests": "Temporary tests for non-representative merge endpoints and proof-parent rollback passed before measurement.",
        "selected_results": {
          "PEQ019_size7_default": "1.143s, worse than current local baseline about 0.91s; conflicts 3961, assignments 142366, explain-calls 1648233",
          "PEQ019_size7_raw_only": "0.559s, worse than raw-only local baseline about 0.48s",
          "PEQ002_size8_default": "38.036s, worse than current local baseline about 18-24s",
          "SEQ009_size10_default": "0.126s, slightly worse than local baseline about 0.09-0.10s",
          "iso_brn_repgen_sk032_default": "0.100s, improved from local baseline about 0.52s but not enough to offset PEQ regressions"
        },
        "decision": "rejected and reverted. A parent-to-LCA skeleton changes explanation clauses/search and is not the Section 5 algorithm. A future accepted implementation needs the auxiliary union-find/highest-node discipline and focused explanation-quality counters/tests."
      },
      "evidence_status": "rejected_experiment",
      "notes": "No source changes from this prototype remain."
    },
    {
      "id": "2026-07-19-local-cc-reoriented-proof-forest-rejected",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "profiling",
      "scope": "Local review of FlatCongruenceClosure proof-forest Explain against the Nieuwenhuis-Oliveras Section 4-5 design",
      "commit": "d597ada plus temporary uncommitted reoriented proof-forest and auxiliary-Explain work, reverted after measurement",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Built clean baseline in /tmp/primo-baseline-d597ada at d597ada, then measured /tmp/primo-baseline-d597ada/build/primo and ./build/primo with --stats --euf-engine=incremental, default and --no-finite-domain-post-amo, timeout 80s, on PEQ019_size7, PEQ002_size8, SEQ009_size10, NEQ048_size7, and QG qg7/iso_brn_repgen_sk032. Also ran /tmp/llm2smt/build/bin/llm2smt --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000 on PEQ002_size8.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --stats --euf-engine=incremental [optional --no-finite-domain-post-amo]"
      },
      "references": [
        {
          "name": "Nieuwenhuis-Oliveras paper",
          "citation": "Fast Congruence Closure and Extensions, Sections 4, 5.2, and 5.4"
        },
        {
          "name": "LLM2SMT",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        }
      ],
      "inputs": {
        "manifest": "tmp/QF_UF/PEQ/PEQ019_size7.smt2, tmp/QF_UF/PEQ/PEQ002_size8.smt2, tmp/QF_UF/SEQ/SEQ009_size10.smt2, tmp/QF_UF/NEQ/NEQ048_size7.smt2, tmp/QF_UF/QG-classification/qg7/iso_brn_repgen_sk032.smt2",
        "timeout_seconds": 80
      },
      "artifacts": {
        "summary": "terminal-captured local matrices in 2026-07-19 conversation",
        "results": null,
        "logs": null
      },
      "summary": {
        "prototype": "Maintained a reoriented proof forest on each flat merge, then tried proof-forest explanation before the existing adjacency BFS. The first version recursively expanded congruence labels; the second used a pending-proof worklist plus auxiliary union-find/highest-node scratch state and skipped trivial congruence premise pairs.",
        "focused_tests": "Temporary focused tests for non-representative endpoints, path reorientation, congruence labels, and backtracking passed.",
        "selected_results_after_auxiliary_explain": {
          "PEQ019_size7_default": "baseline 0.883s, proof-forest 0.562s; explain-length 211380 -> 122675; assignments 169824 -> 78912",
          "PEQ019_size7_raw_only": "baseline 0.461s, proof-forest 0.444s",
          "PEQ002_size8_default": "baseline 17.096s, proof-forest 34.982s; explain-length 5205743 -> 8226320; assignments 2297659 -> 2723405; conflicts 95096 -> 169270",
          "PEQ002_size8_raw_only": "baseline 20.246s, proof-forest 20.065s; explain-length 6252051 -> 5621561",
          "SEQ009_size10_default": "baseline 0.097s, proof-forest 0.117s",
          "SEQ009_size10_raw_only": "baseline 11.515s, proof-forest 8.178s",
          "NEQ048_size7_default": "baseline 0.110s, proof-forest 0.100s",
          "iso_brn_repgen_sk032_default": "baseline 0.487s, proof-forest 0.500s; explain-length 105144 -> 109776"
        },
        "reference_peq002": "Tuned LLM2SMT local PEQ002_size8 result was about 21.0s, 6002 clauses, 1146459 EUF assignments, 122234 conflicts, and 6972444 conflict literals. On this host PEQ002 is not a one-second reference case.",
        "decision": "rejected and reverted. The Section 5.2-shaped auxiliary explanation removed repeated recursive work but did not fix proof-tree reason quality; defaulting it would regress a hard PEQ row and produce larger conflict clauses."
      },
      "evidence_status": "rejected_experiment",
      "notes": "No source changes from this prototype remain. Future CC work should first add diagnostic counters comparing BFS and proof-forest reason lengths without changing emitted clauses."
    },
    {
      "id": "2026-07-19-local-cc-baseline-gprof-peq002-neq023",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "profiling",
      "scope": "Baseline FlatCongruenceClosure profile and quick NEQ reference check after rejected proof-forest revert",
      "commit": "2d11ced",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Built /tmp/primo-gprof-build with -DPRIMO_WARNINGS_AS_ERRORS=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS_RELWITHDEBINFO='-O2 -g -pg' -DCMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO='-pg', ran /tmp/primo-gprof-build/primo --quiet --stats --euf-engine=incremental tmp/QF_UF/PEQ/PEQ002_size8.smt2, then gprof /tmp/primo-gprof-build/primo gmon.out. Rebuilt ./build/primo after reverting the proof-forest WIP and ran Primo, tuned LLM2SMT, and /workspace/contrib/local/bin/z3 on tmp/QF_UF/NEQ/NEQ023_size7.smt2.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --stats --euf-engine=incremental"
      },
      "references": [
        {
          "name": "LLM2SMT",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        },
        {
          "name": "Z3",
          "argv": "/workspace/contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "manifest": "tmp/QF_UF/PEQ/PEQ002_size8.smt2 and tmp/QF_UF/NEQ/NEQ023_size7.smt2",
        "timeout_seconds": 60
      },
      "artifacts": {
        "gprof": "/tmp/primo-gprof-peq002.txt",
        "stats": "/tmp/primo-gprof-peq002.out",
        "results": null
      },
      "summary": {
        "peq002_baseline_stats": "PEQ002_size8 with baseline source: unsat; assignments 2297659; theory conflicts 95096; incremental explain calls 25649979; explain length 5205743; use-list appends 68553621; max use-list size 876.",
        "peq002_gprof_top": "Top sampled self costs: FlatCongruenceClosure::explain_equal_into 23.24%, CaDiCaL find_subsuming_clause 12.06%, CaDiCaL propagate 7.77%, std::deque<unsigned int>::_M_push_back_aux 7.24%, FlatCongruenceClosure::restore_trail_entry 6.79%, FlatCongruenceClosure::merge_classes 6.26%, ApplyKey hash-table lookup 5.81%, OnlineEufPropagator::notify_assignment 5.81%, pop 2.59%, representative 2.23%, process_use_list 2.14%.",
        "neq023_local_reference_check": "After rebuilding ./build/primo from baseline source, NEQ023_size7 was unsat in 0.435s default and 0.395s raw-only; tuned LLM2SMT was 0.972s; Z3 was 0.624s. This local row does not reproduce a Primo-slower-than-reference NEQ gap.",
        "profiling_limitations": "perf stat returned status 234 with no output in this container. The gprof build required PRIMO_WARNINGS_AS_ERRORS=OFF because GCC emitted an optimized std::vector false-positive warning in preprocessing.cpp; the normal build was not changed."
      },
      "evidence_status": "current_local",
      "notes": "The profile supports continuing CC work around explanation cost, rollback volume, and search volume, but the rejected proof forest showed that reason quality must be preserved or measured before changing the emitted conflict clauses."
    },
    {
      "id": "2026-07-19-local-cc-explain-diagnostics",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "profiling",
      "scope": "Diagnostic-only FlatCongruenceClosure explanation counters for PEQ/NEQ/QG triage",
      "commit": "d5f4579 plus uncommitted diagnostic counter patch",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "./build/primo --stats --euf-engine=incremental CASE after adding passive counters for explain BFS searches, visited BFS nodes, BFS path edges, max BFS queue, direct edge expansions, congruence edge expansions, and duplicate reason literals.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --stats --euf-engine=incremental"
      },
      "inputs": {
        "manifest": "tmp/QF_UF/PEQ/PEQ019_size7.smt2, tmp/QF_UF/PEQ/PEQ002_size8.smt2, tmp/QF_UF/NEQ/NEQ023_size7.smt2, tmp/QF_UF/QG-classification/qg7/iso_brn_repgen_sk032.smt2",
        "timeout_seconds": 80
      },
      "artifacts": {
        "summary": "terminal-captured local matrix in 2026-07-19 conversation",
        "results": null,
        "logs": null
      },
      "summary": {
        "PEQ019_size7_default": "unsat 0.904s; explain-calls 1261146; cache-hits 940671; explain-length 211380; BFS searches 320435; BFS visited 4634102; BFS path edges 1555351; max BFS queue 224; direct edges 480899; congruence edges 1074452; duplicate reason literals 274372.",
        "PEQ002_size8_default": "unsat 17.086s; explain-calls 25649979; cache-hits 18635523; explain-length 5205743; BFS searches 7013297; BFS visited 105904124; BFS path edges 31107753; max BFS queue 1048; direct edges 9736798; congruence edges 21370955; duplicate reason literals 4630753.",
        "NEQ023_size7_default": "unsat 0.431s; explain-calls 35509; cache-hits 4628; explain-length 29938; BFS searches 26602; BFS visited 509168; BFS path edges 49032; max BFS queue 346; direct edges 28441; congruence edges 20591; duplicate reason literals 1845.",
        "iso_brn_repgen_sk032_default": "sat 0.476s; explain-calls 187085; cache-hits 49729; explain-length 105144; BFS searches 137280; BFS visited 757760; BFS path edges 270196; max BFS queue 190; direct edges 123907; congruence edges 146289; duplicate reason literals 31270.",
        "interpretation": "PEQ002 is dominated by repeated BFS and congruence-edge expansion: it performs about 7.0M BFS searches, visits about 105.9M explanation graph nodes, and expands about 21.4M congruence edges. Future CC changes should first reduce these counters or preserve reason length while reducing traversal."
      },
      "evidence_status": "current_local",
      "notes": "This patch is diagnostic-only: it does not change congruence closure state, conflict clauses, propagation clauses, or SAT options."
    },
    {
      "id": "2026-07-19-local-qfuf-gap-rerank-and-seq-phase-check",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "tuning",
      "scope": "Cross-family QF_UF gap rerank and local phase/propropagation check after CC diagnostics",
      "commit": "f0d5a2c",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "python3 scripts/rank_qfuf_gaps.py --native results/slurm-qfuf-full-120s-6f3cdca/primo-qfuf-full-120s-6f3cdca-merged.csv --ref results/slurm-qfuf-full-120s-llm2smt-0.2.4-110181/llm2smt-qfuf-full-120s-merged.csv --ref results/slurm-qfuf-full-ref-z3-109856/z3-qfuf-full-2s-merged.csv --ref results/slurm-qfuf-full-ref-cvc5-109857/cvc5-qfuf-full-2s-merged.csv --timeout 120 --fast-ref 1 --min-ratio 5 --top 40 --out /tmp/qfuf-ranked-gaps-20260719.csv; local ./build/primo --stats --euf-engine=incremental option matrices on selected Goel, eq_diamond, QG, SEQ, NEQ, PEQ rows.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --stats --euf-engine=incremental [optional --theory-phase=polarity or --euf-prop mode]"
      },
      "inputs": {
        "manifest": "Ranked full QF_UF artifacts plus local checks for QF_UF_bug-1_ab_cti_max, eq_diamond14, iso_brn_repgen039, SEQ035_size6, NEQ033_size4, PEQ019_size7, PEQ002_size8, iso_brn_repgen_sk032",
        "timeout_seconds": 60
      },
      "artifacts": {
        "ranked_gaps": "/tmp/qfuf-ranked-gaps-20260719.csv",
        "summary": "terminal-captured local matrices in 2026-07-19 conversation"
      },
      "summary": {
        "rerank": "Top ratio gaps from historical 120s artifacts are not iso-only: Goel, eq_diamond, TypeSafe, QG, SEQ, NEQ, and PEQ all appear. Some top historical gaps are stale locally after current improvements: QF_UF_bug-1_ab_cti_max solved in 0.004s and eq_diamond14 in 0.007s with no EUF work.",
        "seq035_propagation_matrix": "SEQ035_size6 default sat 1.177s with 639558 assignments, 47536 conflicts, 0 delivered propagations, 1324912 explain calls, 5035533 BFS visits. --euf-prop=off timed out at 30s. --euf-prop=conflict was 1.216s. Unlimited online propagation was 1.378s and still delivered 0 propagations. --theory-phase=polarity was 0.304s with 145223 assignments, 14426 conflicts, 357634 explain calls, 1418821 BFS visits.",
        "mixed_phase_matrix": "Polarity helped PEQ019_size7 0.889s -> 0.435s and SEQ035_size6 1.233s -> 0.305s; it regressed PEQ002_size8 17.647s -> 19.452s and iso_brn_repgen_sk032 0.484s -> 0.530s; NEQ033_size4 was neutral/slightly worse and iso_brn_repgen039 was slightly faster.",
        "decision": "Do not make polarity global default. It remains evidence for a possible structural auto-phase rule on SEQ-like formulas, but previous broad evidence and this mixed local matrix both show default risk."
      },
      "evidence_status": "current_local",
      "notes": "The next phase investigation should inspect formula structure, not benchmark family names, before adding any automatic phase selection."
    },
    {
      "id": "2026-07-19-local-cc-lower-degree-bfs-root-rejected",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "profiling",
      "scope": "Rejected FlatCongruenceClosure explanation BFS root-selection heuristic",
      "commit": "c244ec7 plus temporary uncommitted lower-degree BFS root prototype, reverted after measurement",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Built clean baseline worktree /tmp/primo-baseline-c244ec7 at c244ec7 and compared it with ./build/primo after a temporary patch that started explain_equal_into BFS from the endpoint with the smaller edge_adjacency_ list; ran ./primo --stats --euf-engine=incremental on PEQ019_size7, PEQ002_size8, SEQ035_size6, NEQ033_size4, qg7/iso_brn_repgen039, and qg7/iso_brn_repgen_sk032.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --stats --euf-engine=incremental"
      },
      "inputs": {
        "manifest": "tmp/QF_UF/PEQ/PEQ019_size7.smt2, tmp/QF_UF/PEQ/PEQ002_size8.smt2, tmp/QF_UF/SEQ/SEQ035_size6.smt2, tmp/QF_UF/NEQ/NEQ033_size4.smt2, tmp/QF_UF/QG-classification/qg7/iso_brn_repgen039.smt2, tmp/QF_UF/QG-classification/qg7/iso_brn_repgen_sk032.smt2",
        "timeout_seconds": 80
      },
      "artifacts": {
        "summary": "terminal-captured local matrix in 2026-07-19 conversation",
        "patch": "/tmp/primo-rootdeg-bfs-rejected.patch"
      },
      "summary": {
        "prototype": "For each flat equality explanation, choose the endpoint with the smaller equality-edge adjacency list as the BFS root and reconstruct the path to the other endpoint. The equality graph and explanation validity check were unchanged, but tie-breaking/path choice and SAT conflict clauses could change.",
        "selected_results": {
          "PEQ019_size7_default": "baseline 0.983s -> prototype 0.445s; explain-length 211380 -> 103808; conflicts 4707 -> 1952",
          "PEQ002_size8_default": "baseline 17.322s -> prototype 33.439s; explain-length 5205743 -> 8344692; BFS visited 105904124 -> 174231936; conflicts 95096 -> 150545",
          "SEQ035_size6_default": "baseline 1.237s -> prototype 0.875s; explain-length 621434 -> 468030; conflicts 47536 -> 34909",
          "NEQ033_size4_default": "baseline 0.214s -> prototype 0.208s; neutral",
          "iso_brn_repgen039_default": "baseline 0.420s -> prototype 0.234s; conflicts 11049 -> 7002",
          "iso_brn_repgen_sk032_default": "baseline 0.497s -> prototype 0.420s; conflicts 11925 -> 11613"
        },
        "decision": "rejected and reverted. The heuristic improves several rows but badly regresses hard PEQ002 by changing explanation clauses/search. Future BFS changes need either an explanation-length guard that does not double work, a structural selector validated on mixed suites, or an option/default-off experiment."
      },
      "evidence_status": "rejected_experiment",
      "notes": "No source changes from this prototype remain."
    },
    {
      "id": "2026-07-19-local-cc-audit-and-version-provenance",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "profiling",
      "scope": "Follow-up review of FlatCongruenceClosure invariants, explanation hotspot, NEQ027 reference comparison, and local build provenance",
      "commit": "f54dfb4 plus uncommitted generated git-revision header fix",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "cmake --build build --target primo -j4; cmake --build build-gprof --target primo -j4; ./build/primo --quiet --stats --euf-engine=incremental tmp/QF_UF/PEQ/PEQ002_size8.smt2; ./build-gprof/primo --quiet --stats --euf-engine=incremental tmp/QF_UF/PEQ/PEQ002_size8.smt2; gprof ./build-gprof/primo gmon.out; local timed Primo and tuned /tmp/llm2smt/build/bin/llm2smt runs on tmp/QF_UF/NEQ/NEQ027_size8.smt2 through NEQ027_size11.smt2.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats --euf-engine=incremental"
      },
      "inputs": {
        "manifest": "tmp/QF_UF/PEQ/PEQ002_size8.smt2 and tmp/QF_UF/NEQ/NEQ027_size8.smt2, NEQ027_size9.smt2, NEQ027_size10.smt2, NEQ027_size11.smt2",
        "timeout_seconds": 45
      },
      "artifacts": {
        "primo_stats": "/tmp/primo-peq002.stats, /tmp/primo-NEQ027_size*.stats",
        "llm2smt_stats": "/tmp/llm-peq002.stats, /tmp/llm-NEQ027_size*.stats",
        "gprof": "terminal-captured gprof flat profile in 2026-07-19 conversation"
      },
      "references": [
        {
          "name": "LLM2SMT tuned local reference",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        }
      ],
      "summary": {
        "cc_review": "No direct soundness or rollback bug was found in FlatCongruenceClosure use-list, lookup, changed-term, checkpoint, or explanation-edge maintenance. The implementation remains a Nieuwenhuis-Oliveras Section 3 congruence-discovery subset with adjacency-BFS explanations, not the Section 4-5 proof-forest explanation algorithm.",
        "peq002_primo_stats": "unsat in 22.23s; 95096 theory conflicts; 25649979 explain calls; 7013297 BFS searches; 105904124 BFS nodes visited; 31107753 BFS path edges; 21370955 congruence-edge expansions; 5205743 emitted explanation literals.",
        "peq002_gprof_top": "FlatCongruenceClosure::explain_equal_into 21.11% self; CaDiCaL::Closure::find_subsuming_clause 11.48%; std::deque<unsigned int>::_M_push_back_aux 7.77%; FlatCongruenceClosure::merge_classes 7.42%; FlatCongruenceClosure::restore_trail_entry 7.24%; process_use_list 2.65%.",
        "peq002_reference": "Tuned local LLM2SMT was unsat in 25.50s with 122234 EUF conflicts and 6972444 EUF conflict literals, so this local run does not show LLM2SMT faster on PEQ002.",
        "neq027_reference_check": "Primo vs tuned local LLM2SMT seconds: size8 0.55 vs 1.43; size9 0.81 vs 1.07; size10 1.18 vs 1.57; size11 2.17 vs 4.01. NEQ027 no longer reproduces as a local slow-Primo CC gap.",
        "version_provenance": "The existing CMake configure-time git definition left ./build/primo reporting git d5f4579 after rebuilding source at f54dfb4. A generated build-time header now reports the current revision and appends -dirty for uncommitted changes."
      },
      "evidence_status": "current_local",
      "notes": "This entry supports CC triage only. It is not headline SLURM evidence and does not claim broad solved-count improvement."
    },
    {
      "id": "2026-07-19-local-cc-conflict-reason-buckets",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "profiling",
      "scope": "Diagnostic-only conflict-reason length buckets for FlatCongruenceClosure explanation triage",
      "commit": "a5beecf plus uncommitted passive conflict-reason bucket counters",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "cmake --build build --target primo_euf_solver_tests primo_boolean_solver_tests primo -j4; ctest --test-dir build -R 'primo_euf_solver_tests|primo_boolean_solver_tests|primo_version' --output-on-failure; for selected PEQ/SEQ/NEQ/QG rows, run ./build/primo --quiet --stats --euf-engine=incremental and extract :euf.incremental.conflict-reason.* counters.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats --euf-engine=incremental"
      },
      "inputs": {
        "manifest": "tmp/QF_UF/PEQ/PEQ019_size7.smt2, tmp/QF_UF/PEQ/PEQ002_size8.smt2, tmp/QF_UF/SEQ/SEQ035_size6.smt2, tmp/QF_UF/NEQ/NEQ027_size11.smt2, tmp/QF_UF/QG-classification/qg7/iso_brn_repgen_sk032.smt2",
        "timeout_seconds": 120
      },
      "artifacts": {
        "stats": "/tmp/reason2-*.stats",
        "summary": "terminal-captured local matrix in 2026-07-19 conversation"
      },
      "summary": {
        "PEQ019_size7": "unsat 0.97s; theory-conflicts 4707; explain-calls 1261146; BFS searches 320435; conflict reason max 187; buckets le4=152 le8=426 le16=1152 le32=1138 le64=746 gt64=1239.",
        "PEQ002_size8": "unsat 16.43s; theory-conflicts 95096; explain-calls 25649979; BFS searches 7013297; BFS visited 105904124; conflict reason max 173; buckets le4=285 le8=999 le16=6832 le32=22397 le64=37623 gt64=31562.",
        "SEQ035_size6": "sat 1.22s; theory-conflicts 47536; explain-calls 1324912; BFS searches 1040412; conflict reason max 34; buckets le4=62 le8=11752 le16=31894 le32=7743 le64=3 gt64=0.",
        "NEQ027_size11": "unsat 2.01s; theory-conflicts 8923; explain-calls 114647; BFS searches 84649; conflict reason max 32; buckets le4=671 le8=4552 le16=3779 le32=687.",
        "iso_brn_repgen_sk032": "sat 0.52s; theory-conflicts 11925; explain-calls 187085; BFS searches 137280; conflict reason max 31; buckets le4=2095 le8=5695 le16=3801 le32=916.",
        "interpretation": "PEQ002 needs reason-quality work because many emitted conflict clauses are large. SEQ035 needs lower per-reason traversal overhead because conflict reasons are mostly short but BFS search volume is high."
      },
      "evidence_status": "current_local",
      "notes": "The patch is diagnostic-only: it records reason length after a conflict clause has already been built and does not alter clauses, propagation, SAT options, or CC state."
    },
    {
      "id": "2026-07-19-local-cc-direct-edge-fast-path-rejected",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "profiling",
      "scope": "Rejected direct-edge pre-BFS explanation fast path for FlatCongruenceClosure",
      "commit": "3311731 plus temporary uncommitted direct-edge fast-path prototype, reverted after measurement",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Temporary prototype scanned edge_adjacency_[lhs] in explain_equal_into before BFS and used the direct edge when it connected lhs and rhs. Focused tests passed after adjusting diagnostics expectations; measured ./build/primo --quiet --stats --euf-engine=incremental on the same PEQ/SEQ/NEQ/QG matrix as the reason-bucket run.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats --euf-engine=incremental"
      },
      "inputs": {
        "manifest": "tmp/QF_UF/PEQ/PEQ019_size7.smt2, tmp/QF_UF/PEQ/PEQ002_size8.smt2, tmp/QF_UF/SEQ/SEQ035_size6.smt2, tmp/QF_UF/NEQ/NEQ027_size11.smt2, tmp/QF_UF/QG-classification/qg7/iso_brn_repgen_sk032.smt2",
        "timeout_seconds": 120
      },
      "artifacts": {
        "stats": "/tmp/directedge-*.stats",
        "summary": "terminal-captured local matrix in 2026-07-19 conversation"
      },
      "summary": {
        "prototype": "Pre-BFS direct-edge scan preserved the same one-edge reason BFS would find from lhs, and added a diagnostic :euf.incremental.explain-direct-pair-hits counter.",
        "selected_results": {
          "PEQ019_size7": "baseline 0.97s, BFS searches 320435 -> prototype 1.27s, BFS searches 219384, direct-pair hits 101051",
          "PEQ002_size8": "baseline 16.43s, BFS searches 7013297 -> prototype 19.16s, BFS searches 4316365, direct-pair hits 2696932",
          "SEQ035_size6": "baseline 1.22s, BFS searches 1040412 -> prototype 1.79s, BFS searches 610928, direct-pair hits 429484",
          "NEQ027_size11": "baseline 2.01s, BFS searches 84649 -> prototype 2.79s, BFS searches 32068, direct-pair hits 52581",
          "iso_brn_repgen_sk032": "baseline 0.52s, BFS searches 137280 -> prototype 1.18s, BFS searches 58410, direct-pair hits 78870"
        },
        "decision": "rejected and reverted. Although BFS counters fell, wall time regressed on every measured row, so direct adjacency pre-scans are the wrong direction for the current explanation hot path."
      },
      "evidence_status": "rejected_experiment",
      "notes": "No source changes from the prototype remain; only the run-log/design-note evidence and a stronger BFS diagnostics unit-test assertion remain."
    },
    {
      "id": "2026-07-19-local-cc-oracle-review",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "profiling",
      "scope": "FlatCongruenceClosure implementation review with independent oracle regression test and PEQ019 perf sample",
      "commit": "cf89ee6",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "cmake --build build --target primo_euf_solver_tests -j2 && ./build/primo_euf_solver_tests; make test; perf record -F 199 -g -- ./build/primo --quiet --stats tmp/QF_UF/PEQ/PEQ019_size7.smt2; perf report --stdio --no-children --sort symbol,dso",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "inputs": {
        "manifest": "tmp/QF_UF/PEQ/PEQ019_size7.smt2 plus deterministic in-process flat-CC oracle sequence in tests/unit/euf_solver_tests.cpp",
        "timeout_seconds": 30
      },
      "artifacts": {
        "perf_data": "discarded local /workspace/perf.data; top-symbol summary recorded in this run-log entry",
        "perf_stdout": "/tmp/primo-peq019-perf.out",
        "perf_stderr": "/tmp/primo-peq019-perf.err"
      },
      "summary": {
        "oracle_test": "Added a deterministic small-state flat-CC oracle test: production FlatCongruenceClosure is compared against an independent naive all-pairs saturation model after definitions, random equalities, pushes, pops, and every-pair equality queries.",
        "PEQ019_stats": "unsat about 0.87s locally; lookup probes 4584075; lookup hits 2714550; explain calls 1261146; BFS searches 320435; trail entries 18938037; backtracks 5630; max use-list size 160.",
        "perf_top": "Short local perf sample: unordered_map ApplyKey lookup find about 12.75% self, FlatCongruenceClosure::explain_equal_into about 11.63% self, FlatCongruenceClosure::restore_trail_entry about 11.05% self.",
        "interpretation": "The review found no immediate Section-3 use-list rollback correctness bug. Remaining PEQ cost is split across signature lookup probes, explanation graph traversal, and rollback granularity, so future CC performance work should target those mechanisms with reason-quality and trail-volume counters rather than ad hoc BFS shortcuts."
      },
      "evidence_status": "current_local",
      "notes": "This is a CC review and regression-guard checkpoint, not headline SLURM evidence and not a claimed solved-count improvement."
    },
    {
      "id": "2026-07-19-local-seq035-cc-use-list-batching-rejected",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "profiling",
      "scope": "SEQ035_size6 non-iso QF_UF gap triage and rejected FlatCongruenceClosure use-list rollback batching prototype",
      "commit": "612b13e plus temporary uncommitted UseListResize prototype, reverted after measurement",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Ranked 334-row and full-corpus QF_UF CSV artifacts with scripts/rank_qfuf_gaps.py; ran local default/basic/polarity/Z3/LLM2SMT ablations on tmp/QF_UF/SEQ/SEQ035_size6.smt2; ran local SEQ size-6 default/basic/polarity/Z3 micro-matrix; temporarily replaced per-append UseListPop trail entries with per-generation UseListResize entries, then rebuilt and measured selected rows before reverting.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats [variant args]"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "contrib/local/bin/z3 -smt2 -st"
        },
        {
          "name": "LLM2SMT tuned",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        }
      ],
      "inputs": {
        "manifest": "tmp/QF_UF/SEQ/SEQ0*_size6.smt2 micro-matrix plus focused tmp/QF_UF/SEQ/SEQ035_size6.smt2",
        "timeout_seconds": 20
      },
      "artifacts": {
        "seq_matrix": "results/local-seq-size6-20260719/matrix.csv",
        "seq_phase_matrix": "results/local-seq-size6-20260719/phase-matrix.csv",
        "focused_stats": "/tmp/seq035-*.stats and /tmp/seq035-*.out local-only scratch"
      },
      "summary": {
        "gap_selection": "Full-corpus Z3/cvc5 ranking identified SEQ035_size6 as a non-iso CC-heavy gap in older artifacts: Primo about 37.1s versus reference about 0.49s. Current local Primo is much faster but still about 1.2s versus Z3 about 0.03s.",
        "seq035_local": "Current default sat about 1.18-1.25s with 47536 theory conflicts, 1040412 explain BFS searches, 25622002 trail entries, and 4347328 use-list appends. --theory-phase=auto/polarity solves in about 0.31s; --qf-uf-preprocess=basic solves in about 0.31-0.35s; tuned LLM2SMT was about 5.39s locally; Z3 about 0.03s.",
        "seq_size6_matrix": "On ten SEQ size-6 rows, default total was about 3.42s, polarity about 3.10s, and basic about 2.45s. SEQ035 is the main local outlier; broad basic or polarity defaults remain unsafe from existing mixed-suite evidence.",
        "auto_phase_evidence": "Existing same-binary auto-vs-negative artifact rejects making all --theory-phase=auto default: auto solved 330/334 versus negative 331/334 and worsened PAR2 by about 161s, despite wins on SEQ026_size7, NEQ031_size10, NEQ023_size7, and iso_brn_repgen033.",
        "rejected_prototype": "UseListResize rollback batching passed focused euf_solver_tests, including the naive oracle, but regressed SEQ035_size6 from about 1.2s to 21.73s. Trail entries fell to 20741545, but use-list appends exploded to 84948122, showing that resize-only batching is incompatible with process_use_list UseListRestore swaps."
      },
      "evidence_status": "rejected_experiment",
      "notes": "No source changes from the prototype remain. The useful retained evidence is that the next CC rollback optimization must preserve use-list duplicate discipline across restored/swapped lists, not just reduce trail-entry count."
    },
    {
      "id": "2026-07-19-local-cc-explanation-oracle-review",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "correctness_review",
      "scope": "FlatCongruenceClosure explanation invariant hardening and independent reason oracle test",
      "commit": "cb4f6b5",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "cmake --build build --target primo_euf_solver_tests -j2 && ./build/primo_euf_solver_tests; ./build/primo --quiet --stats tmp/QF_UF/NEQ/NEQ015_size4.smt2; ./build/primo --quiet --stats tmp/QF_UF/PEQ/PEQ019_size7.smt2",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "inputs": {
        "manifest": "deterministic in-process flat-CC explanation oracle sequence in tests/unit/euf_solver_tests.cpp, tmp/QF_UF/NEQ/NEQ015_size4.smt2, tmp/QF_UF/PEQ/PEQ019_size7.smt2",
        "timeout_seconds": 30
      },
      "artifacts": {
        "neq015_stats": "/tmp/primo-neq015-cc-review.out",
        "peq019_stats": "/tmp/primo-peq019-cc-review.out"
      },
      "summary": {
        "source_change": "Recursive congruence-edge explanation expansion now propagates child explanation failure, and direct disequality conflict construction throws a logic_error instead of emitting an incomplete conflict if equal endpoints cannot be explained.",
        "oracle_test": "Added an independent deterministic explanation oracle: returned flat-CC reason literals are replayed as explicit equalities in a naive saturation model under push/pop, and must entail every explained equality.",
        "neq015_smoke": "unsat; 249 theory conflicts; 23482 explain calls; 9094 BFS searches; maximum conflict reason length 14.",
        "peq019_smoke": "unsat; 4707 theory conflicts; 1261146 explain calls; 320435 BFS searches; maximum conflict reason length 187; 1239 conflicts over 64 reason literals.",
        "interpretation": "No discovery-side CC correctness bug was found in this pass. The change is a fail-closed invariant guard and stronger regression test, not a performance win. PEQ019 still points to explanation traversal and reason quality as the remaining CC hotspot."
      },
      "evidence_status": "current_local",
      "notes": "This run intentionally did not inspect or copy reference-solver code. It reviewed Primo's current CC implementation against the local Nieuwenhuis-Oliveras Section 3 design note and strengthened the explanation soundness checks."
    },
    {
      "id": "2026-07-19-qfuf-fuzzsmt-cc-explanation-oracle-1000",
      "started_at": "2026-07-19",
      "recorded_at": "2026-07-19",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT merge gate after FlatCongruenceClosure explanation invariant hardening",
      "commit": "cb4f6b5",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026071961 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-cc-explanation-oracle-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt",
        "seed": 2026071961,
        "count": 1000,
        "logic": "QF_UF",
        "timeout_seconds": 5,
        "fuzzer_args": "-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-cc-explanation-oracle-1000/summary.csv",
        "generated": "fuzz-results/qf_uf-fuzzsmt-cc-explanation-oracle-1000/generated",
        "bugs": "fuzz-results/qf_uf-fuzzsmt-cc-explanation-oracle-1000/bugs"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "sat": 905,
        "unsat": 95
      },
      "evidence_status": "current_local",
      "notes": "Fresh local merge-gate fuzzing for the explanation reason-construction hardening. This is correctness evidence, not a QF_UF reference-parity performance claim."
    },
    {
      "id": "2026-07-20-neq016-cc-review-and-interface-ablations",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "performance",
      "scope": "Local review of FlatCongruenceClosure on NEQ016_size8 with option ablations, reference stats, and a rejected disequality-check ordering prototype",
      "commit": "a19545b",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "rank_qfuf_gaps over existing SLURM CSVs; local ./build/primo --quiet --stats option sweep on tmp/QF_UF/NEQ/NEQ016_size8.smt2; perf record/report and gprof with 35s caps; tuned /tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000; temporary prototype moved process_use_list before check_disequalities_touching in FlatCongruenceClosure::merge_classes and was reverted after focused tests aborted",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "references": [
        {
          "name": "LLM2SMT",
          "argv": "/tmp/llm2smt/build/bin/llm2smt --quiet --stats --uf-symmetry-breaking --preprocess-passes 4 --eq-bridge --prop-interval 32 --prop-assign-threshold 0.25 --prop-delivery-budget 1000"
        },
        {
          "name": "Z3",
          "argv": "contrib/local/bin/z3 -smt2 -st"
        }
      ],
      "inputs": {
        "manifest": "tmp/QF_UF/NEQ/NEQ016_size8.smt2 plus small NEQ023/PEQ/QG guard probes",
        "timeout_seconds": 45
      },
      "artifacts": {
        "ranked_gaps": "results/local-gap-rank-a19545b-20260720.csv",
        "local_topgap_matrix": "results/local-topgap-matrix-20260720/matrix.csv",
        "perf_report": "/tmp/neq016-perf-report.txt",
        "gprof_report": "/tmp/neq016-gprof-report.txt",
        "option_stats": "/tmp/neq016-*.stats and /tmp/neq016-*.time",
        "reference_stats": "/tmp/neq016-llm2smt-fresh.err"
      },
      "summary": {
        "primo_default_90s": "unknown at 90s; 477706 theory conflicts; 89941225 explain calls; 25893221 BFS searches; 434540867 BFS nodes visited; 155546 conflicts over 64 reason literals; 285691372 use-list appends.",
        "llm2smt_tuned": "unsat in 24.13s; 5935212 EUF assignments; 185145 EUF conflicts; 8171171 total conflict literals; 2044 finite-domain AMO clauses; 21 UF symmetry clauses.",
        "z3_local": "unsat in about 4.12s with 46453 conflicts and 116510 decisions.",
        "profile": "35s local profiles put FlatCongruenceClosure::explain_equal_into first, with merge_classes, process_use_list, restore_trail_entry, ApplyKey lookup, and CaDiCaL propagation also hot.",
        "option_matrix": "At 45s, default, phase auto/polarity/none, qf-uf basic, no UF symmetry, conflict-only propagation, propagation off, finite-domain equality definitions, and ground-congruence did not solve. --pure-theory-filter=off solved in 42.53s, reduced explain calls to 37962704, and delivered 252 propagations, but a partial guard showed NEQ023_size7 regressed from 0.39s default to 0.96s with pure filtering off.",
        "cc_review": "The current FlatCongruenceClosure still matches the local Nieuwenhuis-Oliveras Section 3 affected-use-list/signature-lookup design and no rollback or congruence-discovery correctness bug was found. The remaining implemented gap is the missing Section 4-5 proof-forest Explain algorithm; the reference behavior also points to proof-forest-style explanation and less filtering of assignment facts, but no reference code was copied.",
        "rejected_probe": "Moving affected-use-list saturation before disequality conflict probing in merge_classes was reverted immediately because ./build/primo_euf_solver_tests aborted. Any change to conflict timing requires a deliberate explanation design and new tests."
      },
      "evidence_status": "current_local",
      "notes": "This is diagnostic evidence only. It does not establish a new default or a reference-parity improvement. Pure-theory filtering remains a candidate family-shape heuristic, while the CC-level implementation target remains a paper-derived proof-forest explanation path with direct reason-quality counters."
    },
    {
      "id": "2026-07-20-rejected-flatcc-dense-explanation-cache",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "performance",
      "scope": "Rejected FlatCongruenceClosure dense generation-stamped per-explanation cache experiment",
      "commit": "fd11811",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Temporary patch replaced the per-reason unordered_set explanation_cache_ in FlatCongruenceClosure with a dense generation-stamped pair table for closures up to 2048 flat nodes, falling back to the existing unordered_set above that limit. Built and ran ./build/primo_euf_solver_tests, then compared patched and baseline ./build/primo --quiet --stats on NEQ016_size8, NEQ023_size7, PEQ019_size7, PEQ002_size8, SEQ035_size6, and qg7/iso_brn_repgen033 with 30-55s timeouts. The source patch was reverted before recording this entry.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "inputs": {
        "manifest": "tmp/QF_UF/NEQ/NEQ016_size8.smt2, tmp/QF_UF/NEQ/NEQ023_size7.smt2, tmp/QF_UF/PEQ/PEQ019_size7.smt2, tmp/QF_UF/PEQ/PEQ002_size8.smt2, tmp/QF_UF/SEQ/SEQ035_size6.smt2, tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2",
        "timeout_seconds": "30, 35, or 55 depending on row"
      },
      "artifacts": {
        "baseline_csv": "results/local-dense-explain-cache-baseline-20260720.csv",
        "patched_csv": "results/local-dense-explain-cache-current-20260720.csv"
      },
      "summary": {
        "focused_test": "./build/primo_euf_solver_tests passed under the temporary patch.",
        "NEQ016_size8": "Baseline 55.008s unknown with 67235860 explain calls; dense cache 55.009s unknown with 68274798 explain calls. No timeout movement and slightly more work.",
        "NEQ023_size7": "Baseline 0.420s unsat; dense cache 0.422s unsat.",
        "PEQ019_size7": "Baseline 1.010s unsat; dense cache 0.977s unsat.",
        "PEQ002_size8": "Baseline 17.888s unsat; dense cache 17.923s unsat.",
        "SEQ035_size6": "Baseline 1.367s sat; dense cache 1.262s sat.",
        "iso_brn_repgen033": "Baseline 0.050s sat; dense cache 0.052s sat.",
        "interpretation": "The hash-cache replacement did not reduce search or explain traversal on the target and produced only noise-scale guard changes. The dominant issue remains reason shape/traversal and SAT interaction, not the small unordered_set used to suppress repeated sub-explanations inside one reason."
      },
      "evidence_status": "rejected_local",
      "notes": "Do not reintroduce this dense pair-cache optimization as a CC performance fix without stronger evidence. It increases memory footprint and did not improve the NEQ016 reference gap."
    },
    {
      "id": "2026-07-20-neq-pure-filter-static-shape-probe",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "performance",
      "scope": "Local NEQ pure-theory-filter ablation after CC review",
      "commit": "2b1766e",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Short ./build/primo --quiet --stats probes over selected NEQ size7/size8 rows to collect static preprocessing/purity shape; then default versus --pure-theory-filter=off on finite-domain NEQ rows; followed by NEQ016_size8 checks for --pure-theory-filter=off --top-level-or-tseitin and --top-level-or-tseitin.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "inputs": {
        "manifest": "tmp/QF_UF/NEQ/{NEQ016_size7,NEQ016_size8,NEQ023_size7,NEQ027_size8,NEQ041_size8,NEQ004_size7,NEQ031_size7,NEQ031_size8,NEQ048_size7}.smt2 plus targeted default/pure-off probes on NEQ016, NEQ004, NEQ048, NEQ027, and NEQ041",
        "timeout_seconds": "8 for static-shape probe, 15 or 50 for default/pure-off matrix, 65 for NEQ016 option combinations"
      },
      "artifacts": {
        "static_shape_csv": "results/local-neq-static-shape-20260720.csv",
        "pure_filter_matrix": "results/local-neq-pure-filter-fd-skew-20260720.csv",
        "neq016_top_or_combo": "/tmp/neq016-pure_off_top_or.err and /tmp/neq016-top_or.err"
      },
      "summary": {
        "static_shape": "NEQ016 differs from NEQ023 because it has finite-domain domains and a highly skewed pure-positive/pure-negative ratio. NEQ023 has no finite-domain domains and default filtering is beneficial there.",
        "NEQ016_size8": "Default timed out at 50s with 62612134 explain calls; --pure-theory-filter=off solved unsat in 41.552s with 37962704 explain calls and 252 delivered propagations.",
        "NEQ016_size7": "Default solved in 4.566s; --pure-theory-filter=off regressed to 10.898s, with conflicts and explain calls roughly doubling.",
        "NEQ023_size7_guard": "Earlier same-turn guard showed default 0.39s versus 0.96s with pure filtering disabled.",
        "other_fd_rows": "Pure filtering off was mostly noise-scale on NEQ004_size7, NEQ048_size7, and NEQ027_size8; it regressed NEQ041_size8 from 1.272s to 1.376s.",
        "top_level_or_combination": "On NEQ016_size8, --pure-theory-filter=off --top-level-or-tseitin timed out at 65s, and --top-level-or-tseitin alone also timed out at 65s.",
        "interpretation": "Pure-theory filtering is a real SAT/EUF interaction lever for NEQ016_size8, but the same static family and size7 predecessor can regress. Keep pure-filter mode in the SMAC/portfolio search space; do not promote a default-off heuristic from this local evidence."
      },
      "evidence_status": "current_local",
      "notes": "This is not a CC implementation change. It follows from the CC review because filtering changes which assigned theory literals reach FlatCongruenceClosure and therefore changes explanation workload and delivered propagation."
    },
    {
      "id": "2026-07-20-smac-qfuf-neq-112139-submitted",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "benchmark",
      "scope": "Submit NEQ-focused QF_UF SMAC campaign with PEQ/SEQ/QG/Goel guard rows",
      "commit": "a93f2e6",
      "environment": {
        "type": "slurm",
        "host": "node-head",
        "slurm_job_id": 112139
      },
      "command": "Validated /tmp/primo-qfuf-smac-neq-a93f2e6.sbatch with scripts/slurm_validate_sbatch.py and bash -n; ran python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/primo-ssh/config --remote primo-slurm --remote-dir <remote-home>/primo-cadical-profile --check-only immediately before submission; submitted sbatch scripts/primo-qfuf-smac-neq-a93f2e6.sbatch from <remote-home>/primo-cadical-profile.",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo selected by scripts/smac/qfuf_gap_tune.py"
      },
      "inputs": {
        "generator": "SMAC",
        "seed": 20260720,
        "train_manifest": "benchmarks/qfuf-smac-neq-train.txt",
        "validation_manifest": "benchmarks/qfuf-smac-neq-validate.txt",
        "guard_manifest": "benchmarks/qfuf-smac-neq-guard.txt",
        "trials": 192,
        "timeout_seconds": 45,
        "validation_timeout_seconds": 90,
        "guard_timeout_seconds": 60
      },
      "artifacts": {
        "remote_results": "<remote-home>/primo-cadical-profile/results/smac/qfuf-neq-112139/",
        "remote_summary": "<remote-home>/primo-cadical-profile/results/smac/qfuf-neq-112139/result.json",
        "remote_incumbent": "<remote-home>/primo-cadical-profile/results/smac/qfuf-neq-112139/incumbent.json",
        "remote_runs": "<remote-home>/primo-cadical-profile/results/smac/qfuf-neq-112139/{target-runs.csv,trial-summary.csv,validation-runs.csv}",
        "remote_logs": "<remote-home>/primo-cadical-profile/logs/primo-qfuf-smac-neq-112139.{out,err}"
      },
      "summary": {
        "remote_binary": "pre-submit check reported primo 0.1.0, git: a93f2e6, cadical: cadical-3.0.0-7b99c07",
        "job_state_at_submission": "PENDING",
        "motivation": "Previous mixed SMAC job 111492 had pure_filter=off in its incumbent but was rejected by validation and guard rows, and still timed out on NEQ016_size8 because that row was not part of training. This campaign trains directly on NEQ016_size8 and adjacent NEQ rows while guarding PEQ/SEQ/QG/Goel behavior.",
        "job_failure": "Job 112139 exited immediately because the wrapper used exec scripts/slurm_qfuf_smac.sbatch and the target script was not executable on the remote filesystem."
      },
      "evidence_status": "failed_mechanical",
      "notes": "Do not treat this as an accepted profile until result.json is collected and compared against default validation and guard costs. If the guard rejects the incumbent, record it as rejected evidence rather than promoting a profile."
    },
    {
      "id": "2026-07-20-flat-cc-lookup-hit-review",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "review",
      "scope": "Focused clean-room review of FlatCongruenceClosure lookup-hit/use-list and explanation hot path",
      "commit": "b93f8a2 plus working-tree test/doc changes",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Inspected src/theory/equality/flat_congruence_closure.* against docs/papers/fast-congruence-closure-implementation.md; added a focused lookup-hit witness regression in tests/unit/euf_solver_tests.cpp; ran clang-format, ./build/primo_euf_solver_tests, make docs, and default/pure-filter-off stats probes on tmp/QF_UF/NEQ/NEQ023_size7.smt2.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "inputs": {
        "instances": [
          "tmp/QF_UF/NEQ/NEQ023_size7.smt2"
        ],
        "timeout_seconds": "none for NEQ023; interrupted a default NEQ016_size8 probe after roughly 90s because no stats are emitted before solver exit"
      },
      "artifacts": {
        "source_test": "tests/unit/euf_solver_tests.cpp",
        "design_note": "docs/papers/fast-congruence-closure-implementation.md"
      },
      "summary": {
        "cc_review": "No new Section-3 congruence-discovery or rollback correctness bug was found in the inspected flat closure paths. The lookup-hit definition path is now covered by a focused regression showing that an existing lookup/use-list witness preserves future congruence discovery.",
        "hot_path": "The implementation still uses adjacency BFS plus recursive congruence-edge expansion for explain_equal_into rather than the Nieuwenhuis-Oliveras Section 4-5 proof-forest explanation algorithm. This remains the most plausible CC-specific performance gap.",
        "NEQ023_size7_default": "Solved unsat in about 0.44s; 35,509 explain calls; 509,168 BFS nodes visited; 49,032 BFS path edges; max conflict reason length 14.",
        "NEQ023_size7_pure_filter_off": "Solved unsat in about 0.97s; 37,117 explain calls; 906,125 BFS nodes visited; 59,299 BFS path edges; confirms pure-filter-off is not a general NEQ default.",
        "NEQ016_size8_default_probe": "Still did not finish within roughly 90s locally on this checkout; earlier logged evidence remains the usable bounded stats for that row."
      },
      "evidence_status": "current_local",
      "notes": "Reference solver code was not copied. The CC implementation remains paper/documentation driven; the next code-changing CC experiment should be proof-forest reason diagnostics or a default-off explanation engine with reason-quality counters."
    },
    {
      "id": "2026-07-20-smac-qfuf-neq-112140-submitted",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "benchmark",
      "scope": "Resubmit NEQ-focused QF_UF SMAC campaign after wrapper permission failure",
      "commit": "b6a533d",
      "environment": {
        "type": "slurm",
        "host": "node-head",
        "slurm_job_id": 112140
      },
      "command": "Validated /tmp/primo-qfuf-smac-neq-a93f2e6-r2.sbatch with scripts/slurm_validate_sbatch.py and bash -n; synced/rebuilt remote workspace with scripts/slurm_prepare_benchmark_workspace.py; pre-submit check reported git: b6a533d and cadical: cadical-3.0.0-7b99c07; submitted sbatch scripts/primo-qfuf-smac-neq-b6a533d.sbatch. The wrapper uses exec bash scripts/slurm_qfuf_smac.sbatch.",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo selected by scripts/smac/qfuf_gap_tune.py"
      },
      "inputs": {
        "generator": "SMAC",
        "seed": 20260720,
        "train_manifest": "benchmarks/qfuf-smac-neq-train.txt",
        "validation_manifest": "benchmarks/qfuf-smac-neq-validate.txt",
        "guard_manifest": "benchmarks/qfuf-smac-neq-guard.txt",
        "trials": 192,
        "timeout_seconds": 45,
        "validation_timeout_seconds": 90,
        "guard_timeout_seconds": 60
      },
      "artifacts": {
        "remote_results": "<remote-home>/primo-cadical-profile/results/smac/qfuf-neq-112140/",
        "remote_summary": "<remote-home>/primo-cadical-profile/results/smac/qfuf-neq-112140/result.json",
        "remote_incumbent": "<remote-home>/primo-cadical-profile/results/smac/qfuf-neq-112140/incumbent.json",
        "remote_runs": "<remote-home>/primo-cadical-profile/results/smac/qfuf-neq-112140/{target-runs.csv,trial-summary.csv,validation-runs.csv}",
        "remote_logs": "<remote-home>/primo-cadical-profile/logs/primo-qfuf-smac-neq-112140.{out,err}"
      },
      "summary": {
        "remote_binary": "pre-submit check reported primo 0.1.0, git: b6a533d, cadical: cadical-3.0.0-7b99c07",
        "job_state_at_submission": "PENDING",
        "previous_attempt": "Job 112139 failed mechanically before running SMAC because the wrapper tried to exec a non-executable script directly.",
        "job_failure": "Job 112140 passed the wrapper and binary check but exited immediately because the pre-existing .venv-smac lacked smac and ConfigSpace; the launcher only installed dependencies when the venv python was absent."
      },
      "evidence_status": "failed_mechanical",
      "notes": "Do not promote any incumbent until result.json is collected and guard rows are compared against default."
    },
    {
      "id": "2026-07-20-smac-qfuf-neq-112141-submitted",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "benchmark",
      "scope": "Resubmit NEQ-focused QF_UF SMAC campaign after repairing remote SMAC dependencies",
      "commit": "ed18169",
      "environment": {
        "type": "slurm",
        "host": "node-head",
        "slurm_job_id": 112141
      },
      "command": "Installed remote .venv-smac dependencies with .venv-smac/bin/python -m pip install 'smac>=2,<3'; import probe reported ConfigSpace 1.2.0 and smac importable. Re-synced/rebuilt remote workspace with scripts/slurm_prepare_benchmark_workspace.py; pre-submit check reported git: ed18169 and cadical: cadical-3.0.0-7b99c07; submitted sbatch scripts/primo-qfuf-smac-neq-ed18169.sbatch.",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo selected by scripts/smac/qfuf_gap_tune.py"
      },
      "inputs": {
        "generator": "SMAC",
        "seed": 20260720,
        "train_manifest": "benchmarks/qfuf-smac-neq-train.txt",
        "validation_manifest": "benchmarks/qfuf-smac-neq-validate.txt",
        "guard_manifest": "benchmarks/qfuf-smac-neq-guard.txt",
        "trials": 192,
        "timeout_seconds": 45,
        "validation_timeout_seconds": 90,
        "guard_timeout_seconds": 60
      },
      "artifacts": {
        "remote_results": "<remote-home>/primo-cadical-profile/results/smac/qfuf-neq-112141/",
        "remote_summary": "<remote-home>/primo-cadical-profile/results/smac/qfuf-neq-112141/result.json",
        "remote_incumbent": "<remote-home>/primo-cadical-profile/results/smac/qfuf-neq-112141/incumbent.json",
        "remote_runs": "<remote-home>/primo-cadical-profile/results/smac/qfuf-neq-112141/{target-runs.csv,trial-summary.csv,validation-runs.csv}",
        "remote_logs": "<remote-home>/primo-cadical-profile/logs/primo-qfuf-smac-neq-112141.{out,err}"
      },
      "summary": {
        "remote_binary": "pre-submit check reported primo 0.1.0, git: ed18169, cadical: cadical-3.0.0-7b99c07",
        "job_state_at_submission": "PENDING",
        "dependency_repair": "Remote .venv-smac now has smac 2.4.0 dependencies installed; import probe succeeded."
      },
      "evidence_status": "pending",
      "notes": "Do not promote any incumbent until result.json is collected and guard rows are compared against default."
    },
    {
      "id": "2026-07-20-flat-cc-explanation-shape-counters",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "instrumentation",
      "scope": "Diagnostic-only FlatCongruenceClosure explanation-shape counters for QF_UF CC review",
      "commit": "ea9a17d",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Added top-level, recursive, repeated-pair, and max-depth explanation counters without changing emitted reasons; ran cmake --build build --target primo_euf_solver_tests primo -j4, ./build/primo_euf_solver_tests, make test, make lint, make docs, and local stats probes on NEQ023_size7 and PEQ002_size8.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "inputs": {
        "instances": [
          "tmp/QF_UF/NEQ/NEQ023_size7.smt2",
          "tmp/QF_UF/PEQ/PEQ002_size8.smt2"
        ],
        "timeout_seconds": "none for NEQ023; 35 second wrapper for PEQ002, solved before timeout"
      },
      "artifacts": {
        "neq023_stats": "/tmp/neq023-cc-diagnostic-stats.txt",
        "peq002_stats": "/tmp/peq002-cc-diagnostic-stats.txt",
        "source": "src/theory/equality/flat_congruence_closure.cpp"
      },
      "summary": {
        "change": "Diagnostic counters only. No conflict or propagation clauses changed; no solver option/default changed.",
        "NEQ023_size7": "Solved unsat in about 0.38s; 35,509 explain calls; 6,862 top-level queries; 24,368 recursive queries; 4,628 repeated pair queries; max recursion depth 5; 509,168 BFS nodes visited.",
        "PEQ002_size8": "Solved unsat in about 16.55s; 25,649,979 explain calls; 100,472 top-level queries; 25,548,348 recursive queries; 18,635,523 repeated pair queries; max recursion depth 36; 105,904,124 BFS nodes visited; 31,562 conflicts over 64 reason literals.",
        "interpretation": "The hard PEQ row is dominated by recursive congruence-premise explanation and repeated pair requests within reasons. This is stronger evidence that the next CC implementation target should be a paper-derived Section 5-style repeated-subproof/explain mechanism with explicit reason-quality safeguards, not another use-list tweak."
      },
      "evidence_status": "current_local",
      "notes": "This instrumentation does not prove a performance improvement and is not a proof-forest implementation. It is intended to guide the next CC design experiment without changing solver answers or SAT search clauses."
    },
    {
      "id": "2026-07-20-peq002-cc-gprof-reference-shape",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "profiling",
      "scope": "Local gprof profile of PEQ002_size8 after explanation-shape counters and clean-room reference CC behavior inspection",
      "commit": "fd1e90e",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Built build-gprof with -O2 -g -pg and ran build-gprof/primo --quiet --stats tmp/QF_UF/PEQ/PEQ002_size8.smt2, then gprof build-gprof/primo gmon.out. Inspected /tmp/llm2smt/src/theories/euf/cc.{h,cpp} only for high-level behavior: proof forest, LCA walk, and auxiliary per-explain union-find/worklist shape; no source text was copied into Primo.",
      "solver": {
        "name": "Primo",
        "argv": "build-gprof/primo --quiet --stats"
      },
      "inputs": {
        "instance": "tmp/QF_UF/PEQ/PEQ002_size8.smt2",
        "timeout_seconds": "none; solved before timeout"
      },
      "artifacts": {
        "stats": "/tmp/peq002-gprof-stats.txt",
        "gprof_report": "/tmp/peq002-gprof-report.txt",
        "reference_checkout": "/tmp/llm2smt"
      },
      "summary": {
        "wall_time": "gprof build solved unsat in about 29.11s; normal release stats probe solved in about 16.55s earlier on the same instance.",
        "gprof_top": "FlatCongruenceClosure::explain_equal_into 22.00% self; CaDiCaL Closure::find_subsuming_clause 11.20%; std::deque<unsigned int>::_M_push_back_aux 7.39%; CaDiCaL propagate 6.74%; restore_trail_entry 6.25%; merge_classes 6.25%; ApplyKey hash lookup 5.68%; process_use_list 2.68%; ExplanationKey unordered_set find 2.68%; append_edge_reason 0.57%.",
        "stats_shape": "25,649,979 explain calls; 100,472 top-level queries; 25,548,348 recursive queries; 18,635,523 repeated pair queries; max recursion depth 36; 7,013,297 BFS searches; 105,904,124 BFS nodes visited; 31,562 conflicts over 64 reason literals.",
        "interpretation": "The repeated-pair cache lookup itself is visible but not dominant. The larger gap is that current BFS explanations recursively expand congruence premises millions of times and emit large PEQ conflict reasons. Reference behavior confirms a proof-forest/LCA/worklist/auxiliary-UF explanation shape, but the prior Primo proof-forest prototype showed reason quality can regress. Next accepted code should first add proof-forest candidate diagnostics or a paper-derived reason-quality guard, not default a replacement reason path."
      },
      "evidence_status": "current_local",
      "notes": "The gprof profiling build emitted GCC array-bounds warnings in preprocessing.cpp under -O2 -pg, but the ordinary strict build, make test, make lint, make docs, and make asan-test passed for commit fd1e90e. The warnings are not used as correctness evidence."
    },
    {
      "id": "2026-07-20-flat-cc-causal-recursive-explanations",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "benchmark",
      "scope": "Local QF_UF CC review after bounding recursive congruence-premise explanations to older equality edges",
      "commit": "4128c72",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Built exact baseline in /tmp/primo-a228e9d at a228e9d and compared /tmp/primo-a228e9d/build/primo against ./build/primo --quiet --stats with a 45s timeout on selected NEQ, PEQ, SEQ, and QG iso rows.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "inputs": {
        "instances": [
          "tmp/QF_UF/NEQ/NEQ023_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ027_size8.smt2",
          "tmp/QF_UF/PEQ/PEQ002_size8.smt2",
          "tmp/QF_UF/PEQ/PEQ019_size7.smt2",
          "tmp/QF_UF/SEQ/SEQ035_size6.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2"
        ],
        "timeout_seconds": 45
      },
      "artifacts": {
        "baseline_worktree": "/tmp/primo-a228e9d",
        "source": "src/theory/equality/flat_congruence_closure.cpp"
      },
      "summary": {
        "change": "Recursive explanation of a congruence edge now ignores equality-graph edges whose index is at or after that congruence edge; emitted reason shape and SAT search counts were unchanged on sampled rows.",
        "NEQ023_size7": "base 0.385s vs causal 0.418s; conflicts 5632 both; explain calls 35509 both; BFS visits 509168 -> 508873; causal skips 13437.",
        "NEQ027_size8": "base 0.525s vs causal 0.550s; conflicts 4642 both; explain calls 81427 both; BFS visits 438401 -> 432734; causal skips 16862.",
        "PEQ002_size8": "base 16.313s vs causal 16.299s; conflicts 95096 both; explain calls 25649979 both; BFS visits 105904124 -> 79293756; conflicts over 64 literals unchanged at 31562; causal skips 11596191.",
        "PEQ019_size7": "base 0.988s vs causal 0.981s; conflicts 4707 both; explain calls 1261146 both; BFS visits 4634102 -> 3529805; causal skips 559401.",
        "SEQ035_size6": "base 1.346s vs causal 1.275s; sat both; conflicts 47536 both; explain calls 1324912 both; BFS visits 5035533 -> 5013254; causal skips 1078047.",
        "iso_icl_repgen006": "base 0.643s vs causal 0.560s; conflicts 16869 both; explain calls 2317573 both; BFS visits 8754428 -> 5960538; causal skips 15728055.",
        "iso_brn_repgen033": "base 0.047s vs causal 0.051s; sat both; conflicts 596 both; explain calls 17085 both; BFS visits 123613 -> 122191; causal skips 45196.",
        "interpretation": "This is a local CC invariant/performance improvement, not reference parity and not the Nieuwenhuis-Oliveras proof-forest explain algorithm. Tiny NEQ/QG rows are timing-noisy; the stronger signal is reduced BFS work with unchanged search shape."
      },
      "evidence_status": "current_local",
      "notes": "Needs normal verification, merge-gate fuzzing, and broader SLURM evaluation before headline/default performance claims beyond this local CC review."
    },
    {
      "id": "2026-07-20-qfuf-fuzzsmt-flatcc-causal-explain-1000",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT merge gate after causal recursive FlatCongruenceClosure explanations",
      "commit": "4128c72",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026072001 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-flatcc-causal-explain-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "reference": {
        "name": "Z3",
        "argv": "z3"
      },
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "count": 1000,
        "seed": 2026072001,
        "timeout_seconds": 5,
        "fuzzer_args": "-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2"
      },
      "artifacts": {
        "summary_csv": "fuzz-results/qf_uf-fuzzsmt-flatcc-causal-explain-1000/summary.csv",
        "generated_inputs": "fuzz-results/qf_uf-fuzzsmt-flatcc-causal-explain-1000/generated",
        "bugs_dir": "fuzz-results/qf_uf-fuzzsmt-flatcc-causal-explain-1000/bugs"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "sat": 892,
        "unsat": 108,
        "bugs": 0
      },
      "evidence_status": "current_local",
      "notes": "Fresh local merge-gate fuzzing for the FlatCongruenceClosure recursive explanation behavior change. Broader performance claims still require mixed-suite SLURM evaluation."
    },
    {
      "id": "2026-07-20-local-flatcc-cache-bound-audit",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "profile",
      "scope": "Local review of FlatCongruenceClosure explanation caching under causal edge bounds",
      "commit": "5f74e91",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "perf record -F 99 -g -o /tmp/neq016-current-perf.data -- /usr/bin/timeout 35s ./build/primo --quiet --stats tmp/QF_UF/NEQ/NEQ016_size8.smt2; build-gprof/primo --quiet --stats --max-theory-conflicts=250000 tmp/QF_UF/NEQ/NEQ016_size8.smt2; focused runs of ./build/primo --quiet --stats on NEQ023_size7, PEQ002_size8, and 45s-capped NEQ016_size8 after making explanation-cache entries edge-bound-aware.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "reference": {
        "name": "LLM2SMT and Nieuwenhuis-Oliveras behavior inspection",
        "argv": "/tmp/llm2smt used as clean-room behavior reference only"
      },
      "inputs": {
        "instances": [
          "tmp/QF_UF/NEQ/NEQ016_size8.smt2",
          "tmp/QF_UF/NEQ/NEQ023_size7.smt2",
          "tmp/QF_UF/PEQ/PEQ002_size8.smt2"
        ],
        "timeout_seconds": 45
      },
      "artifacts": {
        "perf_data": "/tmp/neq016-current-perf.data",
        "perf_report": "/tmp/neq016-current-perf-report.txt",
        "gprof_report": "/tmp/neq016-current-gprof.txt",
        "neq016_after_stats": "/tmp/neq016-cachebound-primo.err",
        "neq023_after_stats": "/tmp/neq023-cachebound-primo.err",
        "peq002_after_stats": "/tmp/peq002-cachebound-primo.err"
      },
      "summary": {
        "cc_review": "No Section 3 congruence-discovery or rollback correctness bug was found. The review found a causal explanation-cache issue: a repeated pair cached under a later edge prefix must not be reused for a stricter earlier congruence-premise bound.",
        "change": "The per-reason explanation cache now stores the smallest successful max_edge_index for each pair and only treats it as a hit for equal or looser bounds. A focused flat-CC unit test covers broad-then-strict queries in one reason collection.",
        "profile_before_edit": "Current NEQ016 perf remained CC-heavy: explain_equal_into 16.08 percent self, CaDiCaL propagate 15.96 percent, merge_classes 11.24 percent, restore_trail_entry 7.78 percent, process_use_list 6.28 percent, ApplyKey hash find 6.22 percent. A gprof conflict-capped run put explain_equal_into first at 21.33 percent self.",
        "NEQ023_size7_after": "unsat in about 0.42s; 35,553 explain calls; 4,546 cache hits; 126 cache-bound misses; 509,017 BFS nodes visited.",
        "PEQ002_size8_after": "unsat in about 19.25s; conflict/search shape unchanged at 95,096 theory conflicts and 31,562 conflicts over 64 literals, but stricter cache produced 2,488,188 bound misses and 93,056,417 BFS nodes visited.",
        "NEQ016_size8_after": "timeout at 45s; 308,737 theory conflicts; 67,371,782 explain calls; 45,035,408 cache hits; 6,538,565 cache-bound misses; 236,501,078 BFS nodes visited; 87,363 conflicts over 64 literals.",
        "interpretation": "This is a correctness and diagnostics tightening, not a reference-parity performance fix. The stricter causal cache exposes how expensive the current adjacency-BFS explanation layer is and strengthens the case for a paper-derived Section 4-5 proof-forest Explain implementation with reason-quality safeguards."
      },
      "evidence_status": "current_local",
      "notes": "Local test, lint, docs, ASan, check, and merge-gate fuzzing passed after this behavior change. Broader SLURM evaluation is still required before any headline performance claim. The clean-room reference inspection was limited to high-level behavior: proof forest, LCA/path explanation, auxiliary per-explain union-find/worklist, and SAT decision callback presence; no source text was copied into Primo."
    },
    {
      "id": "2026-07-20-qfuf-fuzzsmt-flatcc-cache-bound-1000",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT merge gate after making FlatCongruenceClosure explanation cache edge-bound-aware",
      "commit": "5f74e91",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026072002 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-flatcc-cache-bound-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "reference": {
        "name": "Z3",
        "argv": "z3"
      },
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "count": 1000,
        "seed": 2026072002,
        "timeout_seconds": 5,
        "fuzzer_args": "-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2"
      },
      "artifacts": {
        "summary_csv": "fuzz-results/qf_uf-fuzzsmt-flatcc-cache-bound-1000/summary.csv",
        "generated_inputs": "fuzz-results/qf_uf-fuzzsmt-flatcc-cache-bound-1000/generated",
        "bugs_dir": "fuzz-results/qf_uf-fuzzsmt-flatcc-cache-bound-1000/bugs"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "sat": 893,
        "unsat": 107,
        "bugs": 0
      },
      "evidence_status": "current_local",
      "notes": "Fresh local merge-gate fuzzing for the FlatCongruenceClosure explanation-cache causal-bound behavior change. This is correctness evidence, not a performance claim."
    },
    {
      "id": "2026-07-20-local-flatcc-neq016-review-after-cache-bound",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "profile",
      "scope": "Fresh local FlatCongruenceClosure review on NEQ016_size8 after cache-bound fix",
      "commit": "5621a24",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "timeout 45s ./build/primo --quiet --stats tmp/QF_UF/NEQ/NEQ016_size8.smt2 > /tmp/primo-neq016-cc-audit.stdout 2> /tmp/primo-neq016-cc-audit.stderr; perf record -g -o /tmp/primo-neq016-cc-audit.perf.data -- timeout 25s ./build/primo --quiet tmp/QF_UF/NEQ/NEQ016_size8.smt2; perf report -i /tmp/primo-neq016-cc-audit.perf.data --stdio --no-children --sort comm,dso,symbol",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "reference": {
        "name": "Nieuwenhuis-Oliveras and clean-room LLM2SMT behavior notes",
        "argv": "/tmp/llm2smt inspected only for high-level behavior"
      },
      "inputs": {
        "instances": [
          "tmp/QF_UF/NEQ/NEQ016_size8.smt2"
        ],
        "stats_timeout_seconds": 45,
        "perf_timeout_seconds": 25
      },
      "artifacts": {
        "stats_stdout": "/tmp/primo-neq016-cc-audit.stdout",
        "stats_stderr": "/tmp/primo-neq016-cc-audit.stderr",
        "perf_data": "/tmp/primo-neq016-cc-audit.perf.data"
      },
      "summary": {
        "status": "timeout at 45s with answer unknown",
        "preprocessing": "Raw finite-domain AMO preservation is active on this row: 67 raw choices and 1876 raw/post/deduped AMO clauses.",
        "cc_stats": "328,671 theory conflicts; 72,342,626 explanation calls; 366,610 top-level explanation queries; 71,962,026 recursive queries; 23,915,372 BFS searches; 253,558,519 BFS nodes visited; 101,277,955 BFS path edges; 65,738,678 expanded congruence edges; 29,489,067 causal edge skips; 7,024,111 cache-bound misses.",
        "rollback_and_use_lists": "833,247,412 trail entries; 272,338,635 class-member trail entries saved; 171,549,928 use-list appends; zero affected-use-list duplicate skips; maximum use-list size 847.",
        "perf_top": "explain_equal_into 19.01 percent self; CaDiCaL::Internal::propagate 11.75 percent; merge_classes 9.30 percent; restore_trail_entry 7.99 percent; process_use_list 7.48 percent; ApplyKey unordered_map find 6.40 percent; OnlineEufPropagator::notify_assignment 5.04 percent.",
        "interpretation": "No new Section 3 congruence-discovery or rollback bug was found in this audit. The active CC gap is the missing Section 4-5 proof-forest explanation mechanism and reason-quality policy; NEQ016 is dominated by recursive congruence-premise explanation, not use-list duplicate scanning."
      },
      "evidence_status": "current_local",
      "notes": "Documentation-only evidence update. No solver behavior changed in this entry, so no fuzz gate is required for this audit note."
    },
    {
      "id": "2026-07-20-rejected-flatcc-bounded-failure-cache",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "rejected_experiment",
      "scope": "FlatCongruenceClosure per-reason cache for failed bounded explanation queries",
      "commit": "f091ffa",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Temporary source patch added failed_explanation_cache_ keyed by explanation pair and max_edge_index, plus :euf.incremental.explain-cache-failure-hits. Built and ran ctest --test-dir build -R primo_euf_solver_tests --output-on-failure, then probed timeout 45s ./build/primo --quiet --stats tmp/QF_UF/NEQ/NEQ016_size8.smt2 and timeout 35s ./build/primo --quiet --stats on NEQ016_size7, NEQ023_size7, PEQ019_size7, PEQ002_size8, and QG qg7/iso_brn_repgen033. Source patch was reverted after measurement.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats with temporary failed bounded-explanation cache"
      },
      "inputs": {
        "instances": [
          "tmp/QF_UF/NEQ/NEQ016_size8.smt2",
          "tmp/QF_UF/NEQ/NEQ016_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ023_size7.smt2",
          "tmp/QF_UF/PEQ/PEQ019_size7.smt2",
          "tmp/QF_UF/PEQ/PEQ002_size8.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2"
        ],
        "timeout_seconds": 35
      },
      "artifacts": {
        "neq016_size8_stdout": "/tmp/neq016-failcache.stdout",
        "neq016_size8_stderr": "/tmp/neq016-failcache.stderr"
      },
      "summary": {
        "unit_test": "Focused euf solver test target passed with the temporary cache.",
        "NEQ016_size8": "45s timeout; no :euf.incremental.explain-cache-failure-hits counter appeared; 74,229,151 explain calls, 24,522,972 BFS searches, and 260,053,303 BFS nodes visited, essentially unchanged from the current audit shape.",
        "sample_rows": "NEQ016_size7 solved in 4.97s, NEQ023_size7 in 0.39s, PEQ019_size7 in 0.91s, PEQ002_size8 in 17.21s, and iso_brn_repgen033 in 0.04s; none reported nonzero failed-cache hits.",
        "decision": "Rejected and reverted. The measured CC hotspot is not repeated failed bounded queries, and the extra hash lookup would sit in the hottest explanation function without evidence of benefit."
      },
      "evidence_status": "rejected",
      "notes": "This records a negative result only; no source behavior from the temporary cache remains in the worktree."
    },
    {
      "id": "2026-07-20-local-euf-explain-search-bidirectional-option",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "local_benchmark",
      "scope": "Same-binary local probe for opt-in bidirectional flat EUF explanation search",
      "commit": "d63f6d6",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "cmake --build build --target primo primo_euf_solver_tests -j2; ctest --test-dir build -R primo_euf_solver_tests --output-on-failure; for mode in one-sided bidirectional, run timeout 40s ./build/primo --quiet --stats --euf-explain-search=$mode on NEQ016_size7, PEQ019_size7, PEQ002_size8, and qg7/iso_brn_repgen033; separately ran timeout 45s ./build/primo --quiet --stats --euf-explain-search=bidirectional on NEQ016_size8.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats --euf-explain-search={one-sided,bidirectional}"
      },
      "inputs": {
        "instances": [
          "tmp/QF_UF/NEQ/NEQ016_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ016_size8.smt2",
          "tmp/QF_UF/PEQ/PEQ019_size7.smt2",
          "tmp/QF_UF/PEQ/PEQ002_size8.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2"
        ],
        "timeout_seconds": 40
      },
      "artifacts": {
        "last_probe_stdout": "/tmp/explain-mode.out",
        "last_probe_stderr": "/tmp/explain-mode.err",
        "neq016_size8_bidirectional_stdout": "/tmp/neq016-bidir.stdout",
        "neq016_size8_bidirectional_stderr": "/tmp/neq016-bidir.stderr",
        "fuzz_summary_csv": "fuzz-results/qf_uf-fuzzsmt-bidir-explain-1000/summary.csv",
        "fuzz_generated_inputs": "fuzz-results/qf_uf-fuzzsmt-bidir-explain-1000/generated",
        "fuzz_bugs_dir": "fuzz-results/qf_uf-fuzzsmt-bidir-explain-1000/bugs"
      },
      "summary": {
        "default_preserved": "With --euf-explain-search=one-sided, the same-binary rows matched the previous default shape: NEQ016_size7 4.92s, PEQ019_size7 0.96s, PEQ002_size8 17.22s, iso_brn_repgen033 0.04s.",
        "bidirectional_wins": "Bidirectional solved NEQ016_size7 in 4.33s with BFS visited 29.2M -> 18.0M, and PEQ019_size7 in 0.47s with BFS visited 3.84M -> 1.51M. iso_brn_repgen033 remained 0.04s with BFS visited 125k -> 39k.",
        "bidirectional_regressions": "PEQ002_size8 regressed from 17.22s to 32.25s; theory conflicts increased 95,096 -> 138,912 and conflicts over 64 literals increased 31,562 -> 39,383.",
        "NEQ016_size8": "Bidirectional still timed out at 45s, but reduced internal work: theory conflicts 328,671 -> 299,585, explain calls 72.3M -> 62.4M, BFS searches 23.9M -> 19.8M, BFS visited 253.6M -> 173.9M, and conflicts over 64 literals 93,984 -> 77,586.",
        "fuzz": "QF_UF FuzzSMT merge gate with --euf-explain-search=bidirectional passed 1000/1000 against Z3; sat 888, unsat 112, wrong 0, crash 0, timeout 0, bugs 0.",
        "decision": "Accepted only as an explicit experimental option. It is not default-ready because proof-path changes regress PEQ002_size8. This is a graph-search baseline, not the Nieuwenhuis-Oliveras Section 4-5 proof forest."
      },
      "evidence_status": "current_local",
      "notes": "Standard local verification passed before commit: make test, make check, make asan-test, make lint, make docs, and the recorded QF_UF FuzzSMT gate. Broader SMAC/SLURM evaluation can now include --euf-explain-search=bidirectional as a knob."
    },
    {
      "id": "2026-07-20-local-euf-proof-forest-diagnostics",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "local_benchmark",
      "scope": "Default-off proof-forest path-length diagnostic for flat EUF explanations",
      "commit": "42e32cd",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "cmake --build build --target primo primo_euf_solver_tests -j2; ctest --test-dir build -R primo_euf_solver_tests --output-on-failure; for f in NEQ016_size7, PEQ019_size7, PEQ002_size8 run timeout 45s ./build/primo --quiet --stats --euf-proof-forest-diagnostics $f; PATH=/workspace/contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet --euf-proof-forest-diagnostics' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026072004 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-proofdiag-1000",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats --euf-proof-forest-diagnostics"
      },
      "inputs": {
        "instances": [
          "tmp/QF_UF/NEQ/NEQ016_size7.smt2",
          "tmp/QF_UF/PEQ/PEQ019_size7.smt2",
          "tmp/QF_UF/PEQ/PEQ002_size8.smt2"
        ],
        "timeout_seconds": 45
      },
      "artifacts": {
        "last_probe_stdout": "/tmp/proofdiag-run.out",
        "last_probe_stderr": "/tmp/proofdiag-run.err",
        "fuzz_summary_csv": "fuzz-results/qf_uf-fuzzsmt-proofdiag-1000/summary.csv",
        "fuzz_generated_inputs": "fuzz-results/qf_uf-fuzzsmt-proofdiag-1000/generated",
        "fuzz_bugs_dir": "fuzz-results/qf_uf-fuzzsmt-proofdiag-1000/bugs"
      },
      "summary": {
        "NEQ016_size7": "unsat in 5.18s; BFS searches 2,941,496, BFS visited 29,198,449, BFS path edges 12,005,743, proof-forest path edges 11,518,651, max proof path 95, missing LCA 0.",
        "PEQ019_size7": "unsat in 0.94s; BFS searches 397,592, BFS visited 3,837,930, BFS path edges 1,745,828, proof-forest path edges 1,598,418, max proof path 41, missing LCA 0.",
        "PEQ002_size8": "unsat in 17.99s; BFS searches 9,501,485, BFS visited 93,056,417, BFS path edges 38,770,005, proof-forest path edges 43,232,810, max proof path 68, missing LCA 0.",
        "fuzz": "QF_UF FuzzSMT merge gate with --euf-proof-forest-diagnostics passed 1000/1000 against Z3; ours sat 895, unsat 105; wrong 0, crash 0, timeout 0.",
        "decision": "Accepted as a diagnostic only. It confirms the current CC has a coherent rollback-aware proof forest, but a proof-forest reason engine is not automatically a PEQ win because proof-path edge count can be worse than the current BFS path shape."
      },
      "evidence_status": "current_local",
      "notes": "This option does not change emitted clauses. It is intended to guide a future paper-derived Section 4-5 explanation implementation before changing reason production."
    },
    {
      "id": "2026-07-20-local-smtlib-fast-sexpr-parser-qg",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "local_profile",
      "scope": "Parser allocation hotspot on QG many-assertion iso/nogen rows",
      "commit": "ba782b1",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "perf record/report on ./build/primo --quiet --stats tmp/QF_UF/QG-classification/qg7/iso_brn_nogen007.smt2 before and after replacing ANTLR parse-tree validation with the local smtlib::Lexer S-expression parser; smoke matrix on iso_brn_repgen033, iso_brn_repgen043, iso_brn_nogen007, PEQ019_size7, and NEQ023_size7; PATH=/workspace/contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026072005 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-fast-sexpr-parser-1000.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "inputs": {
        "instances": [
          "tmp/QF_UF/QG-classification/qg7/iso_brn_nogen007.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen043.smt2",
          "tmp/QF_UF/PEQ/PEQ019_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ023_size7.smt2"
        ],
        "timeout_seconds": 30
      },
      "artifacts": {
        "before_perf": "/tmp/primo-nogen007.perf",
        "after_perf": "/tmp/primo-nogen007-fastparse.perf",
        "target_stdout": "/tmp/nogen-fastparse.out",
        "target_stderr": "/tmp/nogen-fastparse.err",
        "smoke_stdout": "/tmp/fastparse-smoke.out",
        "smoke_stderr": "/tmp/fastparse-smoke.err",
        "fuzz_summary_csv": "fuzz-results/qf_uf-fuzzsmt-fast-sexpr-parser-1000/summary.csv",
        "fuzz_generated_inputs": "fuzz-results/qf_uf-fuzzsmt-fast-sexpr-parser-1000/generated",
        "fuzz_bugs_dir": "fuzz-results/qf_uf-fuzzsmt-fast-sexpr-parser-1000/bugs"
      },
      "summary": {
        "diagnosis": "On iso_brn_nogen007, perf before the patch was dominated by malloc/free under antlr4 parse-tree construction and teardown in Parser::parse_commands/parse_sexprs, not by EUF.",
        "target_result": "iso_brn_nogen007 remained sat with identical high-level solver stats and improved from about 4.37s before the parser patch to 0.91-0.97s after it.",
        "smoke": "Current-head smoke results after the patch: iso_brn_repgen033 sat 0.02s, iso_brn_repgen043 sat 0.72s, iso_brn_nogen007 sat 0.97s, PEQ019_size7 unsat 0.96s, NEQ023_size7 unsat 0.39s.",
        "fuzz": "QF_UF FuzzSMT merge gate passed 1000/1000 against Z3; ours sat 892, unsat 108; wrong 0, crash 0, timeout 0.",
        "reference_context": "Local tuned LLM2SMT on iso_brn_nogen007 reported total_ms 3024 but wall 4.37s on this host; local Z3 solved in 0.56s. This patch closes most of the local Primo-vs-Z3 gap for this parser-heavy row.",
        "decision": "Accepted. The change targets supported SMT-LIB S-expression parsing only and leaves command/frontend validation in Primo."
      },
      "evidence_status": "current_local",
      "notes": "This is local development evidence. A broad SLURM rerun is still needed for headline solved/PAR2 claims on the QG family."
    },
    {
      "id": "2026-07-20-local-cc-causal-bound-adjacency-break",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "local_profile",
      "scope": "Flat EUF explanation BFS causal-bound scan review",
      "commit": "8ede895",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Built current ./build/primo and a separate /tmp/primo-cc-prev worktree at 0c639b8. Compared five repeated runs of --quiet --stats --euf-proof-forest-diagnostics on PEQ019_size7, SEQ035_size6, and qg7/iso_icl_repgen006 before/after changing bounded explanation adjacency scans to break at the first future edge.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats --euf-proof-forest-diagnostics"
      },
      "inputs": {
        "instances": [
          "tmp/QF_UF/PEQ/PEQ019_size7.smt2",
          "tmp/QF_UF/SEQ/SEQ035_size6.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2"
        ],
        "timeout_seconds": 30
      },
      "artifacts": {
        "previous_worktree": "/tmp/primo-cc-prev",
        "previous_binary": "/tmp/primo-cc-prev/build/primo",
        "peq019_perf": "/tmp/primo-peq019-cc.perf",
        "seq035_perf": "/tmp/primo-seq035-cc.perf",
        "fuzz_summary_csv": "fuzz-results/qf_uf-fuzzsmt-cc-causal-bound-break-1000/summary.csv",
        "fuzz_generated_inputs": "fuzz-results/qf_uf-fuzzsmt-cc-causal-bound-break-1000/generated",
        "fuzz_bugs_dir": "fuzz-results/qf_uf-fuzzsmt-cc-causal-bound-break-1000/bugs"
      },
      "summary": {
        "diagnosis": "Explanation adjacency lists are chronological because edge ids are appended to endpoint lists as edges_ grows and rollback pops from the back. Recursive bounded explanations do not need to scan later adjacency entries after the first edge at or after the bound.",
        "peq019": "Answer/conflicts/BFS counts unchanged. Median with stats+diagnostics was 0.9281s before and 1.0138s after; causal future-edge skips dropped from 651,810 to 397,567.",
        "seq035": "Answer/conflicts/BFS counts unchanged. Median was 1.2948s before and 1.2867s after; causal future-edge skips dropped from 1,177,205 to 493,855.",
        "qg7_iso_icl_repgen006": "Answer/conflicts/BFS counts unchanged. Median was 0.5177s before and 0.5152s after; causal future-edge skips dropped from 17,038,485 to 764,402.",
        "fuzz": "QF_UF FuzzSMT merge gate passed 1000/1000 against Z3; ours sat 882, unsat 118; wrong 0, crash 0, timeout 0.",
        "decision": "Accepted as a local CC hygiene improvement with a focused unit test. It reduces unnecessary bounded-adjacency scans but is not the missing Section 4-5 proof-forest explanation implementation."
      },
      "evidence_status": "current_local",
      "notes": "Wall-time movement on cheap rows is mostly noise; the value is removing avoidable inner-loop work before pursuing the larger paper-derived explanation design."
    },
    {
      "id": "2026-07-20-local-cc-proof-forest-path-comparison",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "local_profile",
      "scope": "Flat EUF proof-forest diagnostic review on representative QF_UF equality families",
      "commit": "a7e9dd8",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "cmake --build build --target primo_euf_solver_tests primo -j2; ctest --test-dir build -R primo_euf_solver_tests --output-on-failure; for selected rows, run timeout ./build/primo --quiet --stats --euf-proof-forest-diagnostics and extract BFS/proof-forest path comparison counters.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats --euf-proof-forest-diagnostics"
      },
      "inputs": {
        "instances": [
          "tmp/QF_UF/NEQ/NEQ023_size7.smt2",
          "tmp/QF_UF/PEQ/PEQ019_size7.smt2",
          "tmp/QF_UF/PEQ/PEQ002_size8.smt2",
          "tmp/QF_UF/SEQ/SEQ035_size6.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2"
        ],
        "timeout_seconds": "20 seconds except PEQ002_size8 at 35 seconds"
      },
      "artifacts": {
        "terminal_summary": "local command output in current agent run",
        "fuzz_summary_csv": "fuzz-results/qf_uf-fuzzsmt-proofdiag-path-compare-1000/summary.csv",
        "fuzz_generated_inputs": "fuzz-results/qf_uf-fuzzsmt-proofdiag-path-compare-1000/generated",
        "fuzz_bugs_dir": "fuzz-results/qf_uf-fuzzsmt-proofdiag-path-compare-1000/bugs"
      },
      "summary": {
        "diagnosis": "The current flat CC proof-parent forest has no missing LCAs on the sampled rows, but proof-forest paths are not uniformly shorter than the current BFS explanation paths. This supports continuing CC review around Section 4-5 explanation design and reason-quality safeguards rather than swapping in proof-forest paths blindly.",
        "NEQ023_size7": "BFS path edges 49,176; proof-forest path edges 44,734; shorter/equal/longer queries 3,907/22,025/796; max conflict reason 14; large reasons 0.",
        "PEQ019_size7": "BFS path edges 1,745,828; proof-forest path edges 1,598,418; shorter/equal/longer queries 105,021/236,926/55,645; max conflict reason 187; large reasons 1,239.",
        "PEQ002_size8": "BFS path edges 38,770,005; proof-forest path edges 43,232,810; shorter/equal/longer queries 940,798/5,455,496/3,105,191; max conflict reason 173; large reasons 31,562.",
        "SEQ035_size6": "BFS path edges 1,950,801; proof-forest path edges 2,000,013; shorter/equal/longer queries 81,394/907,482/106,818; max conflict reason 34; large reasons 0.",
        "qg7_iso_icl_repgen006": "BFS path edges 2,722,807; proof-forest path edges 2,810,149; shorter/equal/longer queries 170,449/1,063,621/215,575; max conflict reason 45; large reasons 0.",
        "qg7_iso_brn_repgen033": "BFS path edges 34,865; proof-forest path edges 36,152; shorter/equal/longer queries 305/12,246/1,010; max conflict reason 59; large reasons 0.",
        "verification": "make test, make check, make asan-test, make lint, make docs, clang-tidy on touched C++ files, and QF_UF FuzzSMT 1000 against Z3 all passed. Fuzz results: PASS 1000, sat 892, unsat 108, wrong 0, crash 0, timeout 0.",
        "decision": "Accepted as diagnostic instrumentation only. It does not change emitted EUF reasons, SAT decisions, propagation, or defaults."
      },
      "evidence_status": "current_local",
      "notes": "The broad reference-parity goal remains open. A proof-forest explanation engine still needs a paper-derived design with clause-quality checks and full fuzz/benchmark validation before it can be considered as a default."
    },
    {
      "id": "2026-07-20-slurm-qfuf-smac-mixed-expanded-112142",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "slurm_smac",
      "scope": "Expanded mixed QF_UF SMAC run including finite-domain post-AMO and EUF explanation-search knobs",
      "commit": "e47a020",
      "environment": {
        "type": "slurm",
        "host": "node-head submit, completed on node-01",
        "slurm_job_id": "112142",
        "remote_workdir": "<remote-home>/primo-cadical-profile"
      },
      "command": "Validated scripts/slurm_qfuf_smac.sbatch with scripts/slurm_validate_sbatch.py and bash -n; ran scripts/slurm_prepare_benchmark_workspace.py --check-only for <remote-home>/primo-cadical-profile; submitted with sbatch --export=ALL,PRIMO_WORKDIR=<remote-home>/primo-cadical-profile,PRIMO_SMAC_TRAIN=benchmarks/qfuf-smac-mixed-train.txt,PRIMO_SMAC_VALIDATE=benchmarks/qfuf-smac-mixed-validate.txt,PRIMO_SMAC_GUARD=benchmarks/qfuf-smac-equality-guard.txt,PRIMO_SMAC_TRIALS=160,PRIMO_SMAC_TIMEOUT=45,PRIMO_SMAC_VALIDATION_TIMEOUT=120,PRIMO_SMAC_GUARD_TIMEOUT=120,PRIMO_SMAC_SEED=20260720,PRIMO_SMAC_LABEL=qfuf-mixed-expanded-e47a020 scripts/slurm_qfuf_smac.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "<remote-home>/primo-cadical-profile/build-slurm-rel/primo",
        "version": "primo 0.1.0; git: e47a020; cadical: cadical-3.0.0-7b99c07"
      },
      "inputs": {
        "train_manifest": "benchmarks/qfuf-smac-mixed-train.txt",
        "validate_manifest": "benchmarks/qfuf-smac-mixed-validate.txt",
        "guard_manifest": "benchmarks/qfuf-smac-equality-guard.txt",
        "trials": 160,
        "train_timeout_seconds": 45,
        "validation_timeout_seconds": 120,
        "guard_timeout_seconds": 120,
        "seed": 20260720
      },
      "artifacts": {
        "remote_out_dir": "<remote-home>/primo-cadical-profile/results/smac/qfuf-mixed-expanded-e47a020-112142",
        "remote_stdout": "<remote-home>/primo-cadical-profile/logs/primo-qfuf-smac-112142.out",
        "remote_stderr": "<remote-home>/primo-cadical-profile/logs/primo-qfuf-smac-112142.err",
        "local_result": "results/smac/qfuf-mixed-expanded-e47a020-112142/result.json",
        "local_incumbent": "results/smac/qfuf-mixed-expanded-e47a020-112142/incumbent.json",
        "local_target_runs": "results/smac/qfuf-mixed-expanded-e47a020-112142/target-runs.csv",
        "local_trial_summary": "results/smac/qfuf-mixed-expanded-e47a020-112142/trial-summary.csv",
        "local_validation_runs": "results/smac/qfuf-mixed-expanded-e47a020-112142/validation-runs.csv",
        "local_stdout": "logs/primo-qfuf-smac-112142.out",
        "local_stderr": "logs/primo-qfuf-smac-112142.err"
      },
      "summary": {
        "submission": "Job 112142 completed with sacct state COMPLETED and exit code 0:0 after 01:15:57. The remote log printed the intended e47a020 Primo binary and CaDiCaL version.",
        "purpose": "Search a mixed QF_UF profile rather than an iso-only profile. The space includes phase/preprocessing/symmetry/quality-bridge/pure-filter/CaDiCaL choices plus --no-finite-domain-post-amo and --euf-explain-search.",
        "incumbent": "--preprocessing-passes=3 --preprocessing-adaptive-extra-passes=7 --preprocessing-adaptive-shrink-percent=1 --no-uf-symmetry-breaking --no-finite-domain-value-precedence --no-finite-domain-post-amo --no-eq-bridge --guarded-ground-unit-substitution --euf-engine=incremental --euf-explain-search=bidirectional --euf-prop=conflict --pure-theory-filter=off --theory-phase=positive --euf-prop-budget=1000 --euf-prop-delivery=1000 --prop-interval=8 --prop-assign-threshold=1.0",
        "validation_cost": "default 478.016602 versus incumbent 1315.2930600000002",
        "guard_cost": "default guard total 15, ok 14, timeout 1, wrong 0, cost 508.6330919999999; incumbent guard total 15, ok 9, timeout 6, wrong 0, cost 1748.1573039999998",
        "decision": "Rejected by guard and validation cost. Do not promote this profile; the expanded mixed search mostly rediscovered a QG/phase/preprocessing overfit that damages equality-family guard rows."
      },
      "evidence_status": "rejected",
      "notes": "This is useful negative tuning evidence. It supports keeping bidirectional explanation search, positive phase, pure-filter off, disabled symmetry, and post-AMO off as explicit SMAC/family knobs rather than defaults."
    },
    {
      "id": "2026-07-20-local-cc-review-propagation-stop-tests",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "local_profile",
      "scope": "Focused FlatCongruenceClosure review after NEQ/PEQ/QG performance gaps",
      "commit": "c69acc3 plus current working-tree CC review patch",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Reviewed src/theory/equality/flat_congruence_closure.{hpp,cpp}, tests/unit/euf_solver_tests.cpp, and Nieuwenhuis-Oliveras Section 5.2 text; ran ./build/primo --quiet --stats and --euf-proof-forest-diagnostics on PEQ016_size7 and QG iso rows; ran focused ctest for primo_euf_solver_tests. Two read-only subagent audits independently reviewed paper conformance and local rollback/use-list/explanation risks without inspecting reference solver code.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats"
      },
      "inputs": {
        "instances": [
          "tmp/QF_UF/PEQ/PEQ016_size7.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2"
        ],
        "timeout_seconds": 30
      },
      "artifacts": {
        "mixed39_csv": "results/local-current-mixed39-primo-llm-z3-20260720.csv",
        "peq016_profile_perf": "/tmp/primo-peq016-size7.perf",
        "peq016_profile_stdout": "/tmp/primo-peq016-size7.out",
        "peq016_profile_stderr": "/tmp/primo-peq016-size7.err",
        "peq016_proofdiag_stdout": "/tmp/primo-peq016-proofdiag.out",
        "peq016_proofdiag_stderr": "/tmp/primo-peq016-proofdiag.err",
        "smoke_logs": "/tmp/primo-{PEQ016_size7,iso_icl_repgen006,iso_brn_repgen033}-ccreview.{out,err}",
        "fuzz_summary_csv": "fuzz-results/qf_uf-fuzzsmt-cc-review-propagation-stop-1000/summary.csv",
        "fuzz_generated_inputs": "fuzz-results/qf_uf-fuzzsmt-cc-review-propagation-stop-1000/generated",
        "fuzz_bugs_dir": "fuzz-results/qf_uf-fuzzsmt-cc-review-propagation-stop-1000/bugs"
      },
      "summary": {
        "mixed39_current": "Primo solved 33/39 with PAR2 123.868 at 8s; tuned LLM2SMT solved 32/39 with PAR2 169.761; Z3 solved 33/39 with PAR2 119.918. Remaining local gaps include SEQ026_size7 vs tuned LLM2SMT, PEQ016_size7 vs tuned LLM2SMT, and PEQ002/NEQ016/QG rows vs Z3.",
        "paper_review": "Current FlatCongruenceClosure matches a Section-3 affected-use-list/signature-lookup closure and has causal adjacency-BFS explanations. It still does not implement Section 5 proof-forest Explain: no labeled reoriented proof-forest edges, no pending-proof worklist, and no per-explanation auxiliary union-find with HighestNode.",
        "subagent_audit": "Independent read-only reviews found no definite rollback or explanation soundness bug. They classified proof-forest Explain as the missing optimized mechanism and flagged duplicate-heavy use lists, stale lookup signatures, post-conflict propagation, missing bidirectional tests, and missing conflict-reason oracle checks as risks/test gaps.",
        "accepted_change": "propagate() now stops draining pending merges after conflict_ is set. Added unit coverage for bidirectional BFS causal-bound/cache-bound behavior, bidirectional rollback, and nested-congruence disequality conflict reasons checked against the naive flat oracle.",
        "peq016_after_patch": "PEQ016_size7 solved unsat in 3.45s. Search counters stayed in the same shape as before: theory conflicts 7331, explain calls 14,780,429, BFS searches 2,838,287, BFS visited 60,040,372, use-list appends 27,353,334. Trail entries dropped from the earlier 53,311,077 diagnostic to 51,838,864 because post-conflict closure mutations are skipped.",
        "peq016_proofdiag": "Proof-parent diagnostic had no missing LCA on PEQ016_size7: BFS path edges 18,633,363; proof-parent path edges 15,275,609; shorter/equal/longer 845,378/1,582,340/410,569. This supports implementing Section 5 carefully, but the proof-parent path is not uniformly better on all families.",
        "qg_smoke_after_patch": "iso_icl_repgen006 solved in 0.47s with 16,869 theory conflicts, 2,473,699 explain calls, 6,223,995 BFS visits, and 7,446,302 trail entries. iso_brn_repgen033 solved in 0.02s with 596 theory conflicts, 17,120 explain calls, and 125,013 BFS visits.",
        "focused_verification": "ctest --test-dir build -R primo_euf_solver_tests --output-on-failure passed after the patch. Broader make/fuzz gates are required before commit.",
        "verification": "make test, make check, make asan-test, make lint, make docs, and QF_UF FuzzSMT 1000 against Z3 all passed. Fuzz results: PASS 1000, sat 893, unsat 107, wrong 0, crash 0, timeout 0, bug files 0."
      },
      "evidence_status": "current_local",
      "notes": "This is a CC review and hygiene patch, not reference parity. The next substantive CC implementation target remains a paper-derived Section 5 Explain design with reason-quality safeguards. Earlier failed bounded-search caching is not revived because prior sampled runs had zero hits."
    },
    {
      "id": "2026-07-20-local-cc-compact-trail-audit",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "local_profile",
      "scope": "FlatCongruenceClosure rollback-trail representation audit on SEQ/PEQ/NEQ/QG rows",
      "commit": "6e76de0 plus current compact TrailEntry working-tree patch",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Reviewed src/theory/equality/flat_congruence_closure.{hpp,cpp}; changed TrailEntry to keep only scalar hot undo data and store use-list/disequality-list vector snapshots in checkpointed side payload arrays; ran ./build/primo_euf_solver_tests and local ./build/primo --quiet --stats smoke comparisons. Also ran an option ablation for --qf-uf-preprocess=strong and --euf-explain-search=bidirectional on selected SEQ/PEQ/QG rows.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats",
        "version": "local build from 6e76de0 plus working-tree compact-trail patch"
      },
      "inputs": {
        "instances": [
          "tmp/QF_UF/SEQ/SEQ026_size7.smt2",
          "tmp/QF_UF/PEQ/PEQ003_size10.smt2",
          "tmp/QF_UF/PEQ/PEQ014_size10.smt2",
          "tmp/QF_UF/PEQ/PEQ004_size9.smt2",
          "tmp/QF_UF/PEQ/PEQ016_size7.smt2",
          "tmp/QF_UF/PEQ/PEQ002_size8.smt2",
          "tmp/QF_UF/NEQ/NEQ027_size8.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2"
        ],
        "timeout_seconds": "18 for the strong/bidirectional ablation; 25 to 30 for compact-trail smoke comparisons"
      },
      "artifacts": {
        "strong_bidir_ablation_csv": "results/local-strong-bidir-ablation-20260720.csv",
        "compact_trail_smoke_csv": "results/local-cc-compact-trail-smoke-20260720.csv",
        "compact_trail_prev_current_csv": "results/local-cc-compact-trail-prev-current-20260720.csv"
      },
      "summary": {
        "cc_review": "No new congruence-discovery or explanation soundness bug was found in the inspected paths. The implementation remains a Section 3 affected-use-list/signature-lookup closure with causal adjacency-BFS explanations; the Section 4-5 proof-forest Explain algorithm is still missing.",
        "accepted_change": "TrailEntry no longer embeds std::vector payload fields in every undo record. UseListRestore and DisequalityListRestore entries now point into side payload vectors, and checkpoints store those side-vector sizes so pop() truncates payload state with the main trail.",
        "smoke_results": "Current compact-trail build solved SEQ026_size7 default in 9.789s, SEQ026_size7 strong+bidir in 7.251s, PEQ016_size7 in 3.586s, NEQ027_size8 in 0.470s, and iso_brn_repgen033 in 0.027s. Answers matched expected sat/unsat and main BFS/conflict counters matched the existing search shape.",
        "prev_current_caveat": "The preserved /tmp/primo-cc-prev checkout is not an exact immediate parent of this patch, so its trail-entry counts also reflect earlier CC changes. The paired run is evidence that answers and main search shape are preserved, not an isolated wall-time proof for the storage-layout patch.",
        "strong_bidir_ablation": "On selected rows, strong+bidir matched tuned LLM2SMT on SEQ026_size7 (6.753s) and helped PEQ014_size10 (4.894s), but timed out PEQ003_size10 at 18s and regressed iso_brn_repgen033 sat from about 0.025s to about 2.160s. This option combination is not default-ready; it remains a SMAC candidate only.",
        "fuzz": "QF_UF FuzzSMT merge gate against Z3 passed 1000/1000 cases with seed 2026072003: sat 888, unsat 112, wrong 0, crash 0, timeout 0, bug files 0."
      },
      "verification": {
        "passed": [
          "cmake --build build --target primo_euf_solver_tests -j2",
          "./build/primo_euf_solver_tests",
          "make test",
          "make check",
          "make asan-test",
          "make lint",
          "make docs",
          "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver ./build/primo --refs z3 --logic QF_UF --count 1000 --seed 2026072003 --timeout 5 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-cc-compact-trail-1000",
          "local stats smoke runs listed in artifacts"
        ]
      },
      "evidence_status": "current_local",
      "notes": "This is a CC rollback-layout optimization and option-ablation record. It is not a proof-forest Explain implementation and not reference parity."
    },
    {
      "id": "2026-07-20-local-narrow-auto-phase-seq-review",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "local_profile",
      "scope": "Narrow --theory-phase=auto after profiling non-iso SEQ035_size6 and mixed PEQ/NEQ/QG guards",
      "commit": "7658757 plus current working-tree narrowed auto-phase patch",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": "SMAC 112142 still running validation on e47a020; not evidence for this patch"
      },
      "command": "Ranked results/local-current-mixed39-primo-llm-z3-20260720.csv; profiled tmp/QF_UF/SEQ/SEQ035_size6.smt2 with ./build/primo --quiet --stats under default, --theory-phase=auto, --theory-phase=polarity, propagation modes, portfolio, finite-domain preprocessing toggles, tuned /tmp/llm2smt, and /workspace/contrib/local/bin/z3. Then removed the broad balanced finite-domain branch from resolve_theory_phase_mode so --theory-phase=auto only selects polarity for finite-domain/UF-symmetry shapes with at most 25 pure-negative atoms and at least 100 pure-positive atoms.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats and ./build/primo --quiet --stats --theory-phase=auto"
      },
      "inputs": {
        "target": "tmp/QF_UF/SEQ/SEQ035_size6.smt2",
        "mixed_manifest_source": "results/local-current-mixed39-primo-llm-z3-20260720.csv",
        "timeout_seconds": "12 for mixed39, 15 to 20 for focused ablations"
      },
      "artifacts": {
        "ranked_gaps": "results/local-current-mixed39-ranked-gaps-20260720.csv",
        "seq035_diagnostic": "results/local-seq035-size6-diagnostic-20260720.csv",
        "seq035_propagation_ablation": "results/local-seq035-prop-ablation-20260720.csv",
        "seq035_portfolio_ablation": "results/local-portfolio-seq035-ablation-20260720.csv",
        "phase_structure": "results/local-phase-auto-structure-20260720.csv",
        "broad_auto_mixed39": "results/local-mixed39-phase-auto-current-20260720.csv",
        "narrow_auto_mixed39": "results/local-mixed39-narrow-auto-current-20260720.csv"
      },
      "summary": {
        "target_gap": "On the local mixed39 ranking, SEQ035_size6 is a cheap non-iso gap: Primo default around 1.1 to 1.3s, Z3 around 0.036s in the existing artifact, and tuned LLM2SMT around 5.2 to 5.7s locally.",
        "diagnosis": "SEQ035_size6 is dominated by SAT search and EUF conflict callbacks over finite-domain choices. Default negative phase had about 639k EUF assignments and 47.5k theory conflicts. --theory-phase=auto/polarity reduced this to about 145k assignments and 14.4k conflicts. Propagation off/model modes timed out, and ground congruence or bidirectional explanation made this row worse.",
        "portfolio_rejection": "The existing --qf-uf-portfolio=basic-polarity did not capture the SEQ035 win. With 500, 2000, and 10000 conflict caps it fell back on SEQ035 and added overhead on PEQ/NEQ/Goel guards.",
        "selector_change": "The previous auto resolver also selected polarity for balanced finite-domain PEQ rows with hundreds of pure-negative atoms. The patch removes that broad branch and keeps only the low-negative positive-dominated branch.",
        "focused_after_patch": "After rebuilding ./build/primo, --theory-phase=auto selected polarity on SEQ035_size6 and SEQ026_size7 but not on PEQ002_size7, PEQ004_size9, or PEQ013_size8. SEQ035 improved from about 1.11s to 0.29s; SEQ026_size7 improved from about 9.42s to 7.94s.",
        "mixed39_after_patch": "Post-patch mixed39 local run solved 36/39 for both default and narrowed auto. PAR2 was 123.156 for default and 123.648 for narrowed auto in this noisy run; selected rows were SEQ026_size6, SEQ035_size6, and SEQ026_size7. This is not default-promotion evidence.",
        "decision": "Accepted as a narrowing of the explicit --theory-phase=auto heuristic because it avoids known broad PEQ selections while preserving SEQ low-negative wins. Not promoted to the command-line default pending SLURM/full-manifest evidence."
      },
      "verification": {
        "passed": [
          "cmake --build build --target primo -j2",
          "ctest --test-dir build -R 'primo_boolean_solver_tests|primo_euf_solver_tests' --output-on-failure",
          "make test",
          "make check",
          "make asan-test",
          "make lint",
          "make docs",
          "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet --theory-phase=auto' --refs z3 --logic QF_UF --count 1000 --seed 2026072004 --timeout 5 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-narrow-auto-phase-1000",
          "focused SEQ/PEQ selector smoke listed above"
        ]
      },
      "evidence_status": "current_local",
      "notes": "This patch changes an explicit tuning mode, not the default profile. It narrows auto phase based on current profiling and rejects both broad auto defaulting and the existing basic-polarity portfolio for this target. The QF_UF FuzzSMT gate for --theory-phase=auto passed 1000/1000 cases against Z3 with seed 2026072004: sat 895, unsat 105, wrong 0, crash 0, timeout 0, bug files 0."
    },
    {
      "id": "2026-07-20-local-cc-invariant-review",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "local_profile",
      "scope": "Focused FlatCongruenceClosure review against documented Nieuwenhuis-Oliveras Section 3/5 invariants",
      "commit": "bf30266 plus current working-tree CC invariant patch",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Reviewed docs/papers/fast-congruence-closure*.md, src/theory/equality/flat_congruence_closure.{hpp,cpp}, and tests/unit/euf_solver_tests.cpp; ran ./build/primo_euf_solver_tests and ./build/primo --quiet --stats --euf-proof-forest-diagnostics on SEQ035_size6, PEQ002_size7, NEQ027_size8, and qg7/iso_icl_repgen006.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats --euf-proof-forest-diagnostics"
      },
      "inputs": {
        "instances": [
          "tmp/QF_UF/SEQ/SEQ035_size6.smt2",
          "tmp/QF_UF/PEQ/PEQ002_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ027_size8.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2"
        ],
        "timeout_seconds": 20
      },
      "artifacts": {
        "proof_forest_diagnostic_csv": "results/local-cc-proof-forest-diagnostic-review-20260720.csv"
      },
      "summary": {
        "audit": "No new Section 3 congruence-discovery or rollback soundness bug was found. Two invariant issues were fixed: conflicting duplicate flat definitions for one result id are now rejected, and proof-parent diagnostics now store merge-edge indices and obey recursive explanation causal bounds.",
        "documentation_correction": "Older paper notes overclaimed that lookup entries always agree with current representatives and that use lists are exact. The implementation intentionally allows stale lookup keys and duplicate-tolerant use lists; docs now state current-signature probing and process-time deduplication.",
        "diagnostic_shape": "Proof-parent LCAs were present on all four sampled rows after the bound-aware diagnostic change. Proof-path edge totals were lower than BFS on NEQ027_size8 (114301 vs 120736) but higher on SEQ035_size6 (1998243 vs 1949077), PEQ002_size7 (8331362 vs 7120376), and iso_icl_repgen006 (2810149 vs 2722807). This confirms that a naive proof-path replacement is not safe default performance work.",
        "decision": "Accepted as correctness/diagnostic hygiene and documentation synchronization. It is not reference parity and not a Section 5 Explain implementation."
      },
      "verification": {
        "passed": [
          "clang-format -i src/theory/equality/flat_congruence_closure.hpp src/theory/equality/flat_congruence_closure.cpp tests/unit/euf_solver_tests.cpp",
          "cmake --build build --target primo_euf_solver_tests -j2",
          "./build/primo_euf_solver_tests",
          "./build/primo --quiet --stats --euf-proof-forest-diagnostics tmp/QF_UF/NEQ/NEQ027_size8.smt2",
          "local four-row proof-forest diagnostic CSV listed in artifacts"
        ],
        "pending": [
          "make test",
          "make check",
          "make asan-test",
          "make lint",
          "make docs",
          "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --seed 2026072005 --timeout 5 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-cc-invariant-review-1000"
        ]
      },
      "evidence_status": "current_local",
      "notes": "The remaining CC performance target is still a paper-derived Section 5 Explain design with reason-quality safeguards. The diagnostic parent forest is only a bounded path-length probe. QF_UF FuzzSMT passed 1000/1000 against Z3 with seed 2026072005: sat 892, unsat 108, wrong 0, crash 0, timeout 0, bug files 0."
    },
    {
      "id": "2026-07-20-local-cc-cleanroom-proof-diagnostic-review",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "local_profile",
      "scope": "Clean-room FlatCongruenceClosure review against Nieuwenhuis-Oliveras Section 3 and Section 5 explanation obligations",
      "commit": "f5549ea",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Reviewed src/theory/equality/flat_congruence_closure.{hpp,cpp}, tests/unit/euf_solver_tests.cpp, docs/papers/fast-congruence-closure-implementation.md, allowed high-level behavior in /tmp/llm2smt/src/theories/euf, and Nieuwenhuis-Oliveras Fast congruence closure and extensions Sections 3 and 5; ran ./build/primo_euf_solver_tests and local proof-forest diagnostic probes.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats [--euf-proof-forest-diagnostics]"
      },
      "references": [
        {
          "name": "LLM2SMT",
          "argv": "clean-room behavior/design inspection only, no source copied"
        },
        {
          "name": "Nieuwenhuis-Oliveras",
          "argv": "Fast congruence closure and extensions, Information and Computation 205 (2007), Sections 3 and 5"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 2,
        "timeout_seconds": 20,
        "manifest": null,
        "instances": [
          "tmp/QF_UF/NEQ/NEQ023_size7.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen005.smt2"
        ]
      },
      "artifacts": {
        "summary": "results/local-cc-cleanroom-proof-diagnostic-review-20260720.csv",
        "results": "/tmp/neq023-*.err and /tmp/iso005-*.err local scratch, not committed",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "audit": "No new active Section 3 congruence-discovery or rollback soundness bug was found in Primo's emitted-default path. The current hotspot remains explanation traversal: iso_icl_repgen005 reported 7832965 explain calls and 5341921 BFS searches.",
        "clean_room_reference_observation": "The allowed reference checkout exposes a proof-producing explanation path with a per-call auxiliary union-find and SAT decision callback behavior. This was used only as behavioral evidence; no source, comments, tests, build logic, or docs were copied.",
        "diagnostic_limitation": "Primo's --euf-proof-forest-diagnostics mode records representative parent paths only. A real Section 5 proof edge must also account for the original endpoint in the merged class when that endpoint is not the representative, so the diagnostic can understate the work and reason size of a full proof-forest Explain replacement.",
        "local_shape": "NEQ023_size7 proof-parent diagnostics: 26728 queries, 44734 proof path edges versus 49176 BFS path edges, shorter/equal/longer 3907/22025/796, missing LCA 0. iso_icl_repgen005: 5341921 queries, 9482620 proof path edges versus 9390461 BFS path edges, shorter/equal/longer 331218/4547349/463354, missing LCA 0.",
        "decision": "Do not replace BFS with the current representative-only proof-parent diagnostic. The next CC implementation should be a paper-derived Section 5 Explain design with endpoint-label obligations, auxiliary union-find/highest-node mechanics, and reason-quality safeguards."
      },
      "verification": {
        "passed": [
          "./build/primo_euf_solver_tests",
          "timeout 30s ./build/primo --quiet --stats --euf-proof-forest-diagnostics tmp/QF_UF/NEQ/NEQ023_size7.smt2",
          "timeout 30s ./build/primo --quiet --stats --euf-proof-forest-diagnostics tmp/QF_UF/QG-classification/qg7/iso_icl_repgen005.smt2",
          "python3 -m json.tool docs/run-log.json",
          "make docs"
        ],
        "pending": [
          "make test",
          "make check",
          "make asan-test",
          "make lint",
          "fresh fuzz gate, required before any future solver-behavior change is presented as complete"
        ]
      },
      "evidence_status": "current_local",
      "notes": "This is review evidence and documentation synchronization only; it does not change solver behavior and is not reference parity."
    },
    {
      "id": "2026-07-20-local-euf-proof-forest-explain-option",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "local_profile",
      "scope": "Default-off FlatCongruenceClosure proof-forest explanation experiment based on Nieuwenhuis-Oliveras Section 5.2",
      "commit": "066c021",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Ran local default/bidirectional/proof-forest matrix over NEQ, PEQ, SEQ, and QG iso representatives; ran focused unit tests, make test/check/asan-test/lint/docs, clang-tidy, include-cleaner, and a QF_UF FuzzSMT 1000-case gate against Z3.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats [--euf-explain-search=bidirectional|proof-forest]"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "z3, used by fuzz_external.py as answer reference"
        },
        {
          "name": "Nieuwenhuis-Oliveras",
          "argv": "Fast congruence closure and extensions, Information and Computation 205 (2007), Section 5.2"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 2026072006,
        "count": 1000,
        "timeout_seconds": 5,
        "manifest": null,
        "instances": [
          "tmp/QF_UF/NEQ/NEQ023_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ027_size8.smt2",
          "tmp/QF_UF/PEQ/PEQ019_size7.smt2",
          "tmp/QF_UF/SEQ/SEQ035_size6.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen005.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen_sk011.smt2"
        ]
      },
      "artifacts": {
        "summary": "results/local-proof-forest-explain-matrix-20260720.csv",
        "results": "results/local-proof-forest-explain-matrix-20260720.csv",
        "logs": "fuzz-results/qf_uf-fuzzsmt-proof-forest-explain-1000/summary.csv",
        "bugs": "fuzz-results/qf_uf-fuzzsmt-proof-forest-explain-1000/bugs"
      },
      "summary": {
        "implementation": "Added --euf-explain-search=proof-forest as a default-off experimental explanation mode. It keeps Primo's existing CC merge/search code but replaces equality explanation with a Section-5.2-shaped proof-parent walk, per-call auxiliary union-find/highest-node state, endpoint detour obligations, and congruence child obligations.",
        "local_matrix": "NEQ023_size7 regressed from 0.378s default to 0.926s proof_forest; NEQ027_size8 improved from 0.430s to 0.406s; PEQ019_size7 improved from 0.844s to 0.650s but bidirectional was 0.430s; SEQ035_size6 improved from 1.253s to 1.195s but bidirectional was 0.561s; iso_icl_repgen005 was neutral/slightly worse at 1.987s default versus 2.008s proof_forest; iso_brn_repgen_sk011 improved from 0.753s to 0.389s but bidirectional was 0.166s.",
        "fuzz": "QF_UF FuzzSMT passed 1000/1000 against Z3 with seed 2026072006: sat 882, unsat 118, wrong 0, crash 0, timeout 0, bug files 0.",
        "decision": "Do not promote proof-forest explanation to the default. The experiment improves some pure equality cases but is not reference parity, regresses NEQ023_size7, remains neutral on the iso_icl representative, and rebuilds scratch auxiliary state per explanation. Keep it as a review knob for the next CC investigation."
      },
      "verification": {
        "passed": [
          "cmake --build build --target primo_euf_solver_tests primo -j2",
          "./build/primo_euf_solver_tests",
          "timeout 20s ./build/primo --quiet --stats --euf-explain-search=proof-forest tmp/QF_UF/NEQ/NEQ023_size7.smt2",
          "timeout 20s ./build/primo --quiet --stats --euf-explain-search=proof-forest tmp/QF_UF/QG-classification/qg7/iso_icl_repgen005.smt2",
          "make test",
          "make check",
          "make asan-test",
          "make lint",
          "make docs",
          "git diff --check",
          "git ls-files 'src/*.cpp' 'src/**/*.cpp' 'tests/**/*.cpp' | grep -v generated | xargs -n 8 clang-tidy -p build --quiet",
          "clang-tidy -p build --quiet --checks=-*,misc-include-cleaner src/theory/equality/flat_congruence_closure.cpp src/smt/check_sat.cpp src/main.cpp tests/unit/euf_solver_tests.cpp",
          "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet --euf-explain-search=proof-forest' --refs z3 --logic QF_UF --count 1000 --seed 2026072006 --timeout 5 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-proof-forest-explain-1000"
        ],
        "warnings": [
          "Whole-tree clang-tidy emitted analyzer warnings from generated src/smtlib/antlr sources; no changed CC file warning was emitted in the regular run.",
          "misc-include-cleaner reported paired-header-provided FlatTermId/FlatDefinition/sat::Lit declarations in flat_congruence_closure.cpp; treated as advisory and left unchanged."
        ],
        "pending": [
          "SLURM mixed-suite comparison before any default promotion",
          "Profile the next slow equality-family target before adding more CC logic"
        ]
      },
      "evidence_status": "current_local",
      "notes": "This is a CC review/proof-explanation experiment, not a performance fix. It documents a rejected default and leaves the broader reference-parity goal open."
    },
    {
      "id": "2026-07-20-local-neq016-cc-profile-lookup-rejected",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "local_profile",
      "scope": "Fresh current-head QF_UF gap triage, NEQ016_size7 CC profiling, and rejected ApplyKey lookup-table experiment",
      "commit": "89dd4b3 plus rejected local source experiment, reverted before recording",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Ranked stale QF_UF artifacts with scripts/rank_qfuf_gaps.py; probed 57 historically bad rows from results/user-primo-html-2026-07-18/parsed.csv against current ./build/primo; profiled NEQ016_size7 default and proof-forest modes with perf; built /tmp/primo-baseline-89dd4b3 from commit 89dd4b3 for a partial A/B of a custom open-addressed ApplyKey lookup table, then reverted the source change after regressions.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats [--euf-explain-search=proof-forest]"
      },
      "references": [
        {
          "name": "LLM2SMT",
          "argv": "/tmp/llm2smt/build/bin/llm2smt"
        },
        {
          "name": "Z3/cvc5/historical references",
          "argv": "Existing parsed and SLURM CSV artifacts only for candidate selection"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 57,
        "timeout_seconds": 5,
        "manifest": null,
        "instances": [
          "tmp/QF_UF/NEQ/NEQ016_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ041_size9.smt2",
          "tmp/QF_UF/PEQ/PEQ016_size7.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_nogen007.smt2",
          "tmp/QF_UF/2018-Goel-hwbench/QF_UF_sokoban.1.prop1_ab_br_max.smt2"
        ]
      },
      "artifacts": {
        "summary": "results/local-gap-triage-20260720/current-head-probe.csv",
        "results": "results/local-gap-triage-20260720/qfuf-gaps-vs-refs.csv and results/local-gap-triage-20260720/lookup-table-ab-matrix.csv",
        "logs": "results/local-profile-neq016-20260720/perf-default-flat.txt, results/local-profile-neq016-20260720/perf-default-children.txt, results/local-profile-neq016-20260720/perf-proof-flat.txt, results/local-profile-neq016-20260720/perf-proof-children.txt",
        "bugs": null
      },
      "summary": {
        "fresh_triage": "Several old SLURM/user rows are stale for current HEAD: NEQ041_size6, iso_brn_repgen033, and Goel sokoban.1 all solved locally in under 0.1s. A fresh 57-row current-head probe still found slow local cases, led by QG iso/gensys ICL timeouts at 5s and non-iso NEQ016_size7 at 4.48s.",
        "neq016_stats": "NEQ016_size7 default solved unsat in 5.76s with 57,206 theory conflicts, 1,090,260 assignments, 6,146,238 merges, 26,641,764 lookup probes, 8,570,703 explain calls, 2,939,459 BFS searches, and 109,691,307 trail entries. Proof-forest mode solved in 2.99s with fewer assignments/conflicts but remains default-off because prior mixed-suite evidence was not default-safe.",
        "profile": "perf default top self costs: explain_equal_into 16.6%, restore_trail_entry 9.3%, CaDiCaL propagate 8.6%, ApplyKey unordered_map find 7.2%, merge_classes 6.2%, process_use_list 6.1%. In proof mode the top costs shifted to restore_trail_entry 12.2%, merge_classes 8.7%, ApplyKey find 8.6%, process_use_list 6.7%, and TrailEntry vector emplace 7.4%.",
        "rejected_experiment": "A custom open-addressed signature table was tested and reverted. Partial A/B against 89dd4b3 was mixed: NEQ041_size8 default improved 1.343s to 1.279s and NEQ041_size9 proof improved 4.314s to 4.031s, but PEQ016_size7 regressed 3.626s to 5.078s default and 2.226s to 3.708s proof; PEQ002_size7 regressed about 24-25%.",
        "decision": "Do not replace unordered_map ApplyKey lookup with the tested open-addressed table. Keep the profiler evidence: the next useful CC work should focus on reducing rollback/trail volume or search decisions/conflict count, not only raw signature-table lookup."
      },
      "verification": {
        "passed": [
          "cmake --build build --target primo_euf_solver_tests primo -j2",
          "./build/primo_euf_solver_tests",
          "timeout 20s ./build/primo --quiet --stats tmp/QF_UF/NEQ/NEQ016_size7.smt2",
          "timeout 20s ./build/primo --quiet --stats --euf-explain-search=proof-forest tmp/QF_UF/NEQ/NEQ016_size7.smt2",
          "perf record -F 999 -g -o results/local-profile-neq016-20260720/perf-default.data -- timeout 20s ./build/primo --quiet tmp/QF_UF/NEQ/NEQ016_size7.smt2",
          "perf record -F 999 -g -o results/local-profile-neq016-20260720/perf-proof.data -- timeout 20s ./build/primo --quiet --euf-explain-search=proof-forest tmp/QF_UF/NEQ/NEQ016_size7.smt2"
        ],
        "warnings": [
          "The broad A/B matrix was interrupted after 43 rows because several iso ICL cases were near the 12s per-run cap; completed rows were sufficient to reject the source experiment.",
          "perf warned that kernel address maps were restricted; userspace symbols were still collected and reported.",
          "No solver source change from the rejected lookup-table experiment remains in the worktree."
        ],
        "pending": [
          "Fresh SLURM evaluation is needed before treating old full-suite gap CSVs as current evidence"
        ]
      },
      "evidence_status": "current_local",
      "notes": "This entry records progress and a rejected local experiment only. It does not claim reference parity or a default performance improvement."
    },
    {
      "id": "2026-07-20-local-flatcc-parent-restore-batching",
      "started_at": "2026-07-20",
      "recorded_at": "2026-07-20",
      "kind": "local_benchmark",
      "scope": "FlatCongruenceClosure parent rollback batching using ClassMembersMerge suffix records",
      "commit": "24d5b4b",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "Implemented a sparse rollback change that removes per-member Parent trail entries and restores moved parent_ representatives in the existing ClassMembersMerge rollback entry; compared ./build/primo against /tmp/primo-baseline-89dd4b3/build/primo on selected NEQ, PEQ, QG, and Goel rows with --stats.",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats [--euf-explain-search=proof-forest]"
      },
      "references": [
        {
          "name": "Primo baseline",
          "argv": "/tmp/primo-baseline-89dd4b3/build/primo built from commit 89dd4b3"
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 12,
        "timeout_seconds": 15,
        "manifest": null,
        "instances": [
          "tmp/QF_UF/NEQ/NEQ016_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ031_size10.smt2",
          "tmp/QF_UF/NEQ/NEQ041_size8.smt2",
          "tmp/QF_UF/NEQ/NEQ041_size9.smt2",
          "tmp/QF_UF/PEQ/PEQ002_size7.smt2",
          "tmp/QF_UF/PEQ/PEQ011_size8.smt2",
          "tmp/QF_UF/PEQ/PEQ014_size9.smt2",
          "tmp/QF_UF/PEQ/PEQ016_size7.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_nogen007.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen004.smt2",
          "tmp/QF_UF/2018-Goel-hwbench/QF_UF_sokoban.1.prop1_ab_br_max.smt2"
        ]
      },
      "artifacts": {
        "summary": "results/local-gap-triage-20260720/parent-restore-ab-matrix.csv",
        "results": "results/local-gap-triage-20260720/parent-restore-repeat-matrix.csv",
        "logs": "fuzz-results/qf_uf-fuzzsmt-parent-restore-1000/summary.csv",
        "bugs": null
      },
      "summary": {
        "implementation": "The class merge trail no longer records one Parent entry per moved class member. ClassMembersMerge rollback restores the moved suffix to the old representative list and resets parent_[member] to that representative for each restored member.",
        "trail_counts": "Trail entries dropped on every completed single-run matrix row: NEQ016_size7 default 109,691,307 -> 84,296,375; PEQ016_size7 default 51,838,864 -> 38,064,369; iso_icl_repgen004 default 31,326,926 -> 26,234,053; Goel sokoban.1 default 95,510 -> 44,571.",
        "timing": "Single-run timing was mixed but without the prior PEQ blow-up pattern: NEQ031_size10 default 2.846s -> 2.817s, PEQ002_size7 proof 2.403s -> 2.219s, PEQ011_size8 proof 3.685s -> 3.763s, iso_icl_nogen007 default 5.053s -> 5.300s. Partial three-rep medians were favorable on NEQ016_size7 default 4.357s -> 4.254s, NEQ016_size7 proof 2.756s -> 2.632s, PEQ016_size7 default 3.595s -> 3.413s, PEQ016_size7 proof 2.163s -> 2.107s, with NEQ041_size9 default a small regression 3.621s -> 3.682s.",
        "fuzz": "QF_UF FuzzSMT passed 1000/1000 against Z3 with seed 2026072007: sat 895, unsat 105, wrong 0, crash 0, timeout 0, bug files 0.",
        "decision": "Accept as a narrow rollback representation improvement and trail-volume reduction, not as reference parity or a headline speedup. Fresh SLURM evidence is still required before claiming mixed-suite performance improvement."
      },
      "verification": {
        "passed": [
          "cmake --build build --target primo_euf_solver_tests primo -j2",
          "./build/primo_euf_solver_tests",
          "python3 local A/B scripts recorded in parent-restore-ab-matrix.csv and parent-restore-repeat-matrix.csv",
          "make test",
          "make check",
          "make asan-test",
          "make lint",
          "make docs",
          "clang-tidy -p build --quiet src/theory/equality/flat_congruence_closure.cpp tests/unit/euf_solver_tests.cpp",
          "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --seed 2026072007 --timeout 5 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-parent-restore-1000"
        ],
        "warnings": [
          "The partial three-rep timing matrix was interrupted after 41 rows; completed medians were enough to check the largest NEQ/PEQ rows, but this is still local evidence only.",
          "misc-include-cleaner repeated paired-header advisory warnings for FlatTermId, FlatDefinition, and sat::Lit in flat_congruence_closure.cpp; the normal clang-tidy run on touched files was clean."
        ],
        "pending": [
          "commit exact hash after source commit"
        ]
      },
      "evidence_status": "current_local",
      "notes": "This change reduces rollback/trail memory traffic in the current CC implementation. It does not address SAT search quality, explanation reason quality, or the remaining iso ICL timeouts."
    },
    {
      "id": "2026-07-20-local-flatcc-review-diagnostic-guard",
      "recorded_at": "2026-07-20",
      "kind": "local_profile",
      "scope": "Current-head FlatCongruenceClosure review on NEQ and iso single instances",
      "commit": "f6126d3",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo and build-gprof/primo",
        "notes": "Release stats matrix used build/primo. gprof sample used a separate RelWithDebInfo -pg build in build-gprof."
      },
      "command": {
        "profile": "rm -f gmon.out; /usr/bin/time -f 'elapsed %e' ./build-gprof/primo --quiet --stats tmp/QF_UF/NEQ/NEQ016_size7.smt2 >/tmp/primo-gprof-neq016.out 2>/tmp/primo-gprof-neq016.err; gprof ./build-gprof/primo gmon.out > results/local-gap-triage-20260720/cc-review-neq016-gprof.txt",
        "matrix": "python3 local single-instance matrix over default, bidirectional, proof-forest, proof diagnostics, lazy, and no-online variants"
      },
      "benchmark": {
        "suite": "QF_UF local single-instance CC review",
        "logic": "QF_UF",
        "timeout_seconds": 30,
        "instances": [
          "tmp/QF_UF/NEQ/NEQ016_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ023_size7.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_brn_repgen033.smt2"
        ]
      },
      "artifacts": {
        "summary": "results/local-gap-triage-20260720/cc-review-single-instance-matrix.csv",
        "profile": "results/local-gap-triage-20260720/cc-review-neq016-gprof.txt",
        "post_change_profile": "results/local-gap-triage-20260720/cc-review-neq016-after-diagnostic-guard-gprof.txt",
        "fuzz": "fuzz-results/qf_uf-fuzzsmt-cc-diagnostic-guard-1000/summary.csv"
      },
      "summary": {
        "profile": "Current-head NEQ016_size7 gprof put FlatCongruenceClosure::explain_equal_into first at 19.41% self time, followed by CaDiCaL::Internal::propagate 11.84%, merge_classes 9.54%, process_use_list 7.57%, append_use_tracked 7.24%, notify_assignment 5.92%, and restore_trail_entry 3.62%. The default run made 8,570,703 explain calls, 2,939,459 BFS searches, 84,296,375 trail entries, and 26,642,726 use-list appends.",
        "option_matrix": "NEQ016_size7 default 4.316s, bidirectional 3.512s, proof-forest 2.677s; NEQ023_size7 default 0.389s, bidirectional 0.354s, proof-forest 0.946s; iso_icl_repgen006 default 0.467s and proof-forest 0.381s; iso_brn_repgen033 default 0.029s. Lazy EUF timed out at 30s on all four matrix rows.",
        "implementation": "Guard proof_forest_path_length at the caller so default explanations do not call the proof-forest diagnostic helper when diagnostics are disabled. Replace the hot maintain_proof_forest helper calls with direct flag checks in node growth and merge paths.",
        "fuzz": "QF_UF FuzzSMT passed 1000/1000 against Z3 with seed 2026072008: sat 898, unsat 102, wrong 0, crash 0, timeout 0.",
        "decision": "Accept as a narrow no-op diagnostic overhead cleanup. The profile still points to explanation reason generation, merge/use-list maintenance, and SAT search interaction as the real remaining CC work."
      },
      "verification": {
        "passed": [
          "cmake --build build --target primo_euf_solver_tests primo -j2",
          "./build/primo_euf_solver_tests",
          "python3 -m json.tool docs/run-log.json >/tmp/run-log.pretty.json",
          "make test",
          "make check",
          "make asan-test",
          "make lint",
          "make docs",
          "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --seed 2026072008 --timeout 5 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-cc-diagnostic-guard-1000"
        ],
        "pending": [],
        "warnings": [
          "perf stat returned rc=234 with no counters in this container, so gprof was used instead.",
          "The special -pg build produced GCC warning noise in preprocessing but built successfully; normal verification remains on build/.",
          "Post-change gprof still attributes samples and calls from merge_classes to proof_forest_path_length even though the source no longer has such a call path; treat that symbol line as gprof attribution noise and rely on source inspection plus stats counters for disabled diagnostic behavior."
        ]
      },
      "evidence_status": "current_local",
      "notes": "This review found no new Section 3 congruence-discovery correctness bug. It found a small disabled-diagnostic overhead and confirmed proof-forest mode remains mixed: useful for NEQ016 and iso_icl_repgen006 locally, but regressive on NEQ023."
    },
    {
      "id": "2026-07-20-local-flatcc-review-proof-forest-recheck",
      "recorded_at": "2026-07-20T06:10:27+02:00",
      "kind": "local_profile",
      "scope": "Current-head FlatCongruenceClosure review after diagnostic-guard cleanup",
      "commit": "0be41eb",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo",
        "notes": "Same local binary; reference checkout /tmp/llm2smt inspected only for design/behavior signals under the Primo clean-room policy."
      },
      "command": {
        "mode_matrix": "python3 local matrix over default, proof-forest, bidirectional, euf-prop=off, euf-prop=off with proof-forest, and theory-phase=polarity on NEQ016_size7, NEQ023_size7, and iso_icl_repgen005 with a 20s per-run timeout",
        "size8_capped": "python3 local matrix over default, proof-forest, bidirectional, and top-level-or-tseitin on NEQ016_size8 with --max-theory-conflicts 50000",
        "size8_direct_probe": "/usr/bin/time -f 'elapsed %e' ./build/primo --quiet --stats --euf-explain-search=proof-forest tmp/QF_UF/NEQ/NEQ016_size8.smt2"
      },
      "benchmark": {
        "suite": "QF_UF local single-instance CC review",
        "logic": "QF_UF",
        "timeout_seconds": 20,
        "instances": [
          "tmp/QF_UF/NEQ/NEQ016_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ023_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ016_size8.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen005.smt2"
        ]
      },
      "artifacts": {
        "mode_matrix": "results/local-gap-triage-20260720/cc-review-20260720-mode-matrix.csv",
        "size8_capped": "results/local-gap-triage-20260720/cc-review-20260720-neq016-size8-capped.csv",
        "mixed_gap_matrix": "results/local-gap-triage-20260720/current-head-primo-mixed-neq-10s.csv",
        "ranked_gaps": "results/local-gap-triage-20260720/current-head-ranked-gaps-mixed-neq-10s.csv"
      },
      "summary": {
        "mode_matrix": "NEQ016_size7 default 4.377s, proof-forest 2.426s, bidirectional 3.676s, euf-prop=off timeout20, phase-polarity 5.851s. NEQ023_size7 default 0.350s, proof-forest 1.015s, bidirectional 0.356s, euf-prop=off timeout20. iso_icl_repgen005 default 2.104s, proof-forest 2.038s, bidirectional 2.251s, euf-prop=off timeout20.",
        "size8_capped": "On NEQ016_size8 with --max-theory-conflicts 50000: default 3.642s and 9.52M explain calls; proof-forest 2.490s and 11.14M explain calls; bidirectional 3.165s and 7.75M explain calls; top-level-or-tseitin 3.614s and 8.68M explain calls.",
        "size8_direct_probe": "The direct proof-forest solve attempt on NEQ016_size8 was interrupted after 68.80s, so proof-forest is not an immediate default/profile fix for the timeout row.",
        "decision": "No source change accepted. The review found no new Section 3 CC discovery/rollback defect. It strengthens the diagnosis that online EUF propagation is required and that the remaining CC-specific gap is recursive explanation/reason quality, not lookup/use-list discovery alone."
      },
      "verification": {
        "passed": [
          "python3 -m json.tool docs/run-log.json >/tmp/run-log.pretty.json"
        ],
        "pending": [
          "make docs if this documentation-only evidence commit is kept",
          "broader SLURM comparison before making any headline solver-performance claim"
        ],
        "warnings": [
          "No behavior-changing source patch was made in this review, so fuzzing was not rerun.",
          "All results are local single-instance evidence and must not be reported as SLURM benchmark parity."
        ]
      },
      "evidence_status": "current_local",
      "notes": "This entry records the requested additional CC review. It keeps the proof-forest experiment default-off and points the next implementation step at a paper-derived reason-quality/proof-forest policy rather than another blind option flip."
    },
    {
      "id": "2026-07-20-local-flatcc-rejected-proof-forest-lazy-init",
      "recorded_at": "2026-07-20T06:15:42+02:00",
      "kind": "local_profile",
      "scope": "Rejected FlatCongruenceClosure proof-forest auxiliary union-find lazy initialization experiment",
      "commit": "563c2bb",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo",
        "notes": "Temporary source patch was applied, measured, and reverted before this run-log entry."
      },
      "command": {
        "build_and_test": "cmake --build build --target primo_euf_solver_tests primo -j2 && ./build/primo_euf_solver_tests",
        "mode_matrix": "python3 local matrix over default and --euf-explain-search=proof-forest on NEQ016_size7, NEQ023_size7, and iso_icl_repgen005",
        "size8_capped": "python3 local matrix over default and --euf-explain-search=proof-forest on NEQ016_size8 with --max-theory-conflicts 50000"
      },
      "benchmark": {
        "suite": "QF_UF local single-instance rejected CC experiment",
        "logic": "QF_UF",
        "timeout_seconds": 20,
        "instances": [
          "tmp/QF_UF/NEQ/NEQ016_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ023_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ016_size8.smt2",
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen005.smt2"
        ]
      },
      "artifacts": {
        "mode_matrix": "results/local-gap-triage-20260720/cc-proof-forest-lazy-init-matrix.csv",
        "size8_capped": "results/local-gap-triage-20260720/cc-proof-forest-lazy-init-neq016-size8-capped.csv"
      },
      "summary": {
        "implementation_attempt": "Replace full per-explanation initialization of proof_explain_parent_ and proof_explain_highest_ with generation-stamped lazy initialization of touched nodes. A sentinel handling bug was fixed during the attempt; focused EUF tests then passed.",
        "mode_matrix": "With the temporary patch: NEQ016_size7 proof-forest 2.537s versus default 4.362s; NEQ023_size7 proof-forest 0.941s versus default 0.373s; iso_icl_repgen005 proof-forest 2.163s versus default 2.039s. This did not improve the mixed proof-forest profile.",
        "size8_capped": "With the temporary patch on NEQ016_size8 and --max-theory-conflicts 50000: default 3.496s, proof-forest 2.796s. The previous same-commit proof-forest capped run was 2.490s, so the patch made the most relevant proof-forest probe worse.",
        "decision": "Rejected and reverted. The proof-forest gap is not dominated by auxiliary array initialization; focus remains on proof path obligations, reason shape, and SAT search effects."
      },
      "verification": {
        "passed": [
          "cmake --build build --target primo_euf_solver_tests primo -j2",
          "./build/primo_euf_solver_tests",
          "python3 -m json.tool docs/run-log.json >/tmp/run-log.pretty.json"
        ],
        "pending": [
          "make docs before committing this documentation-only rejected-experiment record"
        ],
        "warnings": [
          "No accepted solver behavior change remains from this experiment.",
          "Fuzzing was not rerun because the source patch was rejected and reverted."
        ]
      },
      "evidence_status": "rejected",
      "notes": "This entry intentionally records a reverted experiment so future CC reviews do not repeat the same auxiliary-UF lazy initialization attempt without a stronger reason."
    },
    {
      "id": "2026-07-20-local-finite-domain-eqdefs-neq-peq-probe",
      "recorded_at": "2026-07-20T06:22:00+02:00",
      "kind": "local_benchmark",
      "scope": "Finite-domain equality-definition and EUF decision-callback triage for NEQ/PEQ gaps",
      "commit": "06838e9",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo",
        "reference_checkout": "/tmp/llm2smt"
      },
      "command": {
        "eqdefs_matrix": "python3 local matrix over default, --finite-domain-equality-definitions, unbounded auto equality definitions, --qf-uf-preprocess=strong, and strong+eqdefs on NEQ016_size7, NEQ016_size8, and PEQ002_size8",
        "reference_decision_inspection": "rg/sed inspection of /tmp/llm2smt main propagator and EUF solver cb_decide declarations/implementations under clean-room policy"
      },
      "benchmark": {
        "suite": "QF_UF local single-instance preprocessing probe",
        "logic": "QF_UF",
        "timeout_seconds": 30,
        "instances": [
          "tmp/QF_UF/NEQ/NEQ016_size7.smt2",
          "tmp/QF_UF/NEQ/NEQ016_size8.smt2",
          "tmp/QF_UF/PEQ/PEQ002_size8.smt2"
        ]
      },
      "artifacts": {
        "eqdefs_matrix": "results/local-gap-triage-20260720/finite-domain-eqdefs-neq-peq-probe.csv"
      },
      "summary": {
        "eqdefs": "Forced finite-domain equality definitions generated no clauses on NEQ016_size7 or NEQ016_size8. On PEQ002_size8, unbounded forced equality definitions generated 10,752 clauses from 448 candidate pairs but slowed the 50,000-theory-conflict capped run from 6.244s default to 6.605s or worse.",
        "decision_callback": "The local reference checkout exposes cb_decide in the combined propagator, but rg found no EUF-specific cb_decide override; the EUF path appears to inherit the default no-op decision callback. Primo also has no EUF cb_decide path and currently uses phase plus propagation/conflict clauses.",
        "decision": "Do not promote finite-domain equality definitions for NEQ/PEQ from this evidence. Do not treat EUF decision hints as an established reference gap for these rows; they remain a possible future experiment only."
      },
      "verification": {
        "passed": [
          "python3 -m json.tool docs/run-log.json >/tmp/run-log.pretty.json"
        ],
        "pending": [
          "make docs before committing this documentation-only evidence record"
        ],
        "warnings": [
          "No accepted solver behavior change was made.",
          "The reference checkout was inspected for behavior only; no code, comments, tests, or build logic were copied."
        ]
      },
      "evidence_status": "current_local",
      "notes": "This probe redirects the NEQ/PEQ work away from the existing observed-pair equality-definition pass and away from assuming an EUF SAT-decision callback is missing relative to the inspected reference checkout."
    },
    {
      "id": "2026-07-20-local-rejected-euf-prop-unconditional-backoff",
      "recorded_at": "2026-07-20T06:30:00+02:00",
      "kind": "local_benchmark",
      "scope": "Rejected online EUF propagation auto-interval policy experiment",
      "commit": "5ed82b7",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo",
        "notes": "Temporary source patch was applied, measured, and reverted before this run-log entry."
      },
      "command": {
        "interval_probe": "python3 local matrix over default, --euf-prop=online --prop-interval 256, --euf-prop=online --prop-interval 1024, and --euf-prop=conflict on NEQ016_size7, NEQ016_size8, PEQ002_size8, and iso_icl005",
        "patched_micro_manifest": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/bench_qf_uf_full.py --root . --manifest results/local-gap-triage-20260720/current-head-mixed-neq-manifest.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --timeout 10 --out results/local-gap-triage-20260720/euf-prop-adaptive-unconditional-mixed-neq-10s.csv --summary results/local-gap-triage-20260720/euf-prop-adaptive-unconditional-mixed-neq-10s-summary.csv"
      },
      "benchmark": {
        "suite": "QF_UF local 51-row mixed NEQ/PEQ/QG/SEQ/Goel micro-manifest",
        "logic": "QF_UF",
        "timeout_seconds": 10,
        "manifest": "results/local-gap-triage-20260720/current-head-mixed-neq-manifest.txt"
      },
      "artifacts": {
        "interval_probe": "results/local-gap-triage-20260720/euf-prop-interval-probe.csv",
        "patched_matrix": "results/local-gap-triage-20260720/euf-prop-adaptive-unconditional-probe.csv",
        "patched_manifest": "results/local-gap-triage-20260720/euf-prop-adaptive-unconditional-mixed-neq-10s.csv",
        "patched_summary": "results/local-gap-triage-20260720/euf-prop-adaptive-unconditional-mixed-neq-10s-summary.csv",
        "baseline_manifest": "results/local-gap-triage-20260720/current-head-primo-mixed-neq-10s.csv",
        "baseline_summary": "results/local-gap-triage-20260720/current-head-primo-mixed-neq-10s-summary.csv"
      },
      "summary": {
        "implementation_attempt": "In auto online EUF propagation, back off the propagation discovery interval after every candidate scan, including productive scans, instead of resetting the interval to --prop-interval after a delivered propagation. Explicit --euf-prop=online remains fixed-interval because adaptive backoff is disabled there.",
        "single_instance_probe": "Fixed larger intervals were mixed: online-256 improved the NEQ016_size8 50,000-conflict capped run from 3.570s default to 3.332s, but online-1024 and conflict-only did not consistently help, and PEQ/iso changes were small.",
        "micro_manifest": "On the 51-row micro-manifest, the temporary patch kept solved=48, wrong=0, timeouts=3, but PAR2 worsened from 126.470931 to 126.607646. Candidate scans dropped from 227,870 to 114,965, but total explain calls and theory conflicts increased.",
        "regressions": "Top local slowdowns included PEQ016_size7 +0.332s, NEQ015_size6 +0.230s, PEQ002_size7 +0.226s, NEQ023_size7 +0.132s, PEQ004_size9 +0.116s, iso_icl_repgen005 +0.056s, and iso_icl_repgen006 +0.049s.",
        "decision": "Rejected and reverted. Less frequent auto propagation reduces scan work but perturbs SAT/EUF search enough to worsen this mixed local slice."
      },
      "verification": {
        "passed": [
          "python3 -m json.tool docs/run-log.json >/tmp/run-log.pretty.json",
          "make docs"
        ],
        "pending": [],
        "warnings": [
          "No accepted solver behavior change remains from this experiment.",
          "Fuzzing was not rerun because the source patch was rejected and reverted.",
          "Evidence is local; no SLURM headline claim is made."
        ]
      },
      "evidence_status": "rejected",
      "notes": "This result rejects a tempting reference-inspired auto-backoff policy as a default. Future propagation work should target reason quality or candidate usefulness, not only fewer scans."
    },
    {
      "id": "2026-07-20-local-cadical-search-statistics",
      "recorded_at": "2026-07-20T07:15:00+02:00",
      "kind": "debugging",
      "scope": "Expose CaDiCaL SAT search counters for EUF/CC performance triage",
      "commit": "6c41d1a",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo",
        "notes": "Instrumentation change in working tree; no solver search behavior intended."
      },
      "command": {
        "unit": "cmake --build . --target primo_boolean_solver_tests primo -j2 && ./primo_boolean_solver_tests",
        "smoke": "./build/primo --quiet --stats --max-theory-conflicts 100 tmp/QF_UF/NEQ/NEQ016_size8.smt2"
      },
      "benchmark": {
        "suite": "Single local NEQ smoke instance",
        "logic": "QF_UF",
        "timeout_seconds": null,
        "instances": [
          "tmp/QF_UF/NEQ/NEQ016_size8.smt2"
        ]
      },
      "artifacts": {},
      "summary": {
        "change": "Publish CaDiCaL-owned search counters as :sat.conflicts, :sat.decisions, and :sat.propagations alongside existing Primo-owned SAT clause counters.",
        "smoke_result": "The capped NEQ016_size8 run returned unknown at :euf.theory-conflicts 100 and reported :sat.conflicts 2, :sat.decisions 2579, and :sat.propagations 7916.",
        "interpretation": "The counters separate SAT search work from EUF/CC work in local performance triage. They are not a performance improvement by themselves; small formulas can still report zero conflicts or decisions when solved by simplification, unit propagation, or an external EUF conflict."
      },
      "verification": {
        "passed": [
          "cmake --build . --target primo_boolean_solver_tests primo -j2 && ./primo_boolean_solver_tests",
          "./build/primo --quiet --stats --max-theory-conflicts 100 tmp/QF_UF/NEQ/NEQ016_size8.smt2",
          "python3 -m json.tool docs/run-log.json >/tmp/run-log.pretty.json",
          "git diff --check",
          "make test",
          "make docs",
          "make lint",
          "make tidy"
        ],
        "pending": [],
        "warnings": [
          "No default solver behavior change is intended.",
          "Fuzzing is not required for this instrumentation-only change unless later edits alter preprocessing, SAT interaction, or EUF behavior."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Added because previous local CSVs left SAT conflicts and decisions empty, making NEQ and diamond-equality slowdowns hard to attribute during CC review."
    },
    {
      "id": "2026-07-20-local-flat-cc-review-changed-terms",
      "recorded_at": "2026-07-20T08:20:00+02:00",
      "kind": "profile",
      "scope": "FlatCongruenceClosure review, proof-forest probe, and changed-term rollback fix",
      "commit": "ba0fc9e",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo and build-gprof/primo",
        "notes": "Clean-room review against Primo docs and Nieuwenhuis-Oliveras design notes; /tmp/llm2smt was used only for option and behavior comparison."
      },
      "command": {
        "gprof_build": "cmake -S . -B build-gprof -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/workspace/contrib/local -DCMAKE_CXX_FLAGS_RELEASE='-O2 -g -pg -DNDEBUG' -DCMAKE_EXE_LINKER_FLAGS='-pg' && cmake --build build-gprof --target primo -j2",
        "gprof_iso": "./build-gprof/primo --quiet --stats tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2",
        "proof_forest_probe": "for mode in one-sided bidirectional proof-forest; do ./build/primo --quiet --stats --euf-explain-search $mode tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2; done",
        "fuzz": "make fuzzsmt"
      },
      "benchmark": {
        "suite": "Local CC review probes",
        "logic": "QF_UF",
        "timeout_seconds": 20,
        "instances": [
          "tmp/QF_UF/QG-classification/qg7/iso_icl_repgen006.smt2",
          "tmp/QF_UF/NEQ/NEQ027_size8.smt2"
        ]
      },
      "artifacts": {
        "gprof_stdout": "/tmp/gprof-iso.out",
        "gprof_stderr": "/tmp/gprof-iso.err",
        "fuzz_summary": "fuzz-results/qf_uf-fuzzsmt/summary.csv"
      },
      "summary": {
        "gprof": "On iso_icl_repgen006, gprof put FlatCongruenceClosure::explain_equal_into first at 20.69% self time, merge_classes also 20.69%, OnlineEufPropagator::notify_assignment 13.79%, and process_use_list 6.90%. The same run reported :sat.conflicts 215, :sat.decisions 39519, :euf.incremental.explain-calls 2473699, and :euf.incremental.explain-bfs-searches 1449645.",
        "proof_forest_probe": "On iso_icl_repgen006, one-sided and bidirectional both took about 0.44-0.45s locally. The default-off proof-forest mode took about 0.37s, removed BFS searches, and reduced direct/congruence edge work, but increased total explain calls to 3468464 and changed SAT conflicts from 215 to 395. It remains a candidate, not a default.",
        "review_findings": "Two independent clean-room review agents found no concrete Section 3 lookup/use-list/explanation causal-edge soundness bug. They did identify documentation overclaim risk around proof-forest mode and a changed_terms_ rollback bug when notifications are drained after a checkpoint.",
        "accepted_fix": "drain_changed_terms now lowers active checkpoint changed-term baselines so pop cannot resurrect already-consumed notifications. add_definition also registers self-applications in one affected use list instead of appending the same result twice.",
        "local_smoke_after_fix": "iso_icl_repgen006 and NEQ027_size8 retained the same SAT/EUF search-counter shape after the fix; these rows do not exercise the self-application duplicate case."
      },
      "verification": {
        "passed": [
          "cmake --build build --target primo_euf_solver_tests primo -j2 && ./build/primo_euf_solver_tests",
          "make asan-test",
          "make fuzzsmt",
          "python3 -m json.tool docs/run-log.json >/tmp/run-log.pretty.json",
          "git diff --check",
          "make test",
          "make docs",
          "make lint"
        ],
        "pending": [],
        "warnings": [
          "FuzzSMT gate was the repository's 20-case local smoke target, not the 1000+ merge gate requested for default-profile promotions.",
          "No SLURM headline benchmark claim is made."
        ]
      },
      "evidence_status": "current_local",
      "notes": "This closes one concrete CC rollback issue and strengthens proof-forest tests/documentation, but it does not close the broad reference performance gap. The remaining CC work is explanation quality and proof-forest policy, not another SAT phase knob."
    },
    {
      "id": "2026-07-20-local-rejected-proof-forest-hybrid",
      "recorded_at": "2026-07-20T09:05:00+02:00",
      "kind": "local_benchmark",
      "scope": "Mixed-manifest proof-forest and hybrid proof-forest explanation policy evaluation",
      "commit": "628abbe",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo and /tmp/llm2smt/build/bin/llm2smt",
        "notes": "Temporary source experiments for proof-obligation caching and hybrid-proof-forest mode were measured and reverted before this run-log entry."
      },
      "command": {
        "default": "python3 scripts/bench_qf_uf_full.py --root . --manifest results/local-gap-triage-20260720/current-head-mixed-neq-manifest.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --timeout 10 --out results/local-proof-forest-20260720/default-51.csv --summary results/local-proof-forest-20260720/default-51-summary.csv",
        "proof_forest": "python3 scripts/bench_qf_uf_full.py --root . --manifest results/local-gap-triage-20260720/current-head-mixed-neq-manifest.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --solver-arg=--euf-explain-search --solver-arg=proof-forest --timeout 10 --out results/local-proof-forest-20260720/proof-forest-51.csv --summary results/local-proof-forest-20260720/proof-forest-51-summary.csv",
        "proof_forest_cache_patch": "same command with temporary proof-forest internal proof-obligation cache patch, writing results/local-proof-forest-20260720/proof-forest-cache-51.csv",
        "hybrid_patch": "same command with temporary --euf-explain-search=hybrid-proof-forest mode, writing results/local-proof-forest-20260720/hybrid-proof-forest-51.csv",
        "llm2smt_reference": "python3 scripts/bench_qf_uf_full.py --root . --manifest results/local-gap-triage-20260720/current-head-mixed-neq-manifest.txt --solver /tmp/llm2smt/build/bin/llm2smt --solver-arg=--quiet --solver-arg=--stats --solver-arg=--preprocess-passes --solver-arg=4 --solver-arg=--eq-bridge --solver-arg=--uf-symmetry-breaking --solver-arg=--prop-interval --solver-arg=32 --solver-arg=--prop-assign-threshold --solver-arg=0.25 --solver-arg=--prop-delivery-budget --solver-arg=1000 --timeout 10 --out results/local-proof-forest-20260720/llm2smt-tuned-51.csv --summary results/local-proof-forest-20260720/llm2smt-tuned-51-summary.csv"
      },
      "benchmark": {
        "suite": "51-row local mixed QG/NEQ/PEQ/SEQ/Goel manifest",
        "logic": "QF_UF",
        "timeout_seconds": 10,
        "manifest": "results/local-gap-triage-20260720/current-head-mixed-neq-manifest.txt"
      },
      "artifacts": {
        "default": "results/local-proof-forest-20260720/default-51.csv",
        "default_summary": "results/local-proof-forest-20260720/default-51-summary.csv",
        "proof_forest": "results/local-proof-forest-20260720/proof-forest-51.csv",
        "proof_forest_summary": "results/local-proof-forest-20260720/proof-forest-51-summary.csv",
        "proof_forest_cache": "results/local-proof-forest-20260720/proof-forest-cache-51.csv",
        "hybrid": "results/local-proof-forest-20260720/hybrid-proof-forest-51.csv",
        "llm2smt_reference": "results/local-proof-forest-20260720/llm2smt-tuned-51.csv"
      },
      "summary": {
        "default": "solved 48/51, wrong 0, timeouts 3, PAR2 127.272",
        "proof_forest": "solved 47/51, wrong 0, timeouts 4, PAR2 140.418. It helped SEQ026_size7 by 4.081s, NEQ016_size7 by 1.817s, and PEQ016_size7 by 1.036s, but timed out on PEQ003_size10 where default solved in 8.934s and regressed NEQ046_size6 by 3.821s.",
        "proof_forest_cache_patch": "solved 47/51, wrong 0, timeouts 4, PAR2 140.244. The internal proof-obligation cache was only a 0.174 PAR2 improvement over proof-forest and did not remove the extra PEQ timeout.",
        "hybrid_patch": "solved 48/51, wrong 0, timeouts 3, PAR2 128.702. The thresholded hybrid avoided the extra PEQ timeout but missed the main proof-forest wins and remained 1.430 PAR2 worse than default.",
        "llm2smt_reference": "The local tuned LLM2SMT run solved 43/51 with PAR2 229.053 at 10s on this workstation, so it is not used as headline reference evidence for this slice. It was used only to keep option parity visible.",
        "decision": "Rejected. Do not promote proof-forest, proof-obligation caching, or the first hybrid threshold as default behavior. Keep proof-forest as an explicit tuning knob; the next CC direction needs either a better reason-quality guard or a fuller paper-grounded proof-forest/reorientation design."
      },
      "verification": {
        "passed": [
          "cmake --build build --target primo_euf_solver_tests primo -j2 && ./build/primo_euf_solver_tests for the temporary proof-obligation-cache and hybrid patches",
          "source patches reverted; git diff was empty before recording this documentation-only entry",
          "python3 -m json.tool docs/run-log.json >/tmp/run-log.pretty.json",
          "make docs"
        ],
        "pending": [],
        "warnings": [
          "Evidence is local-only and timing-sensitive.",
          "No accepted solver behavior change remains from the temporary patches.",
          "No SLURM headline benchmark claim is made."
        ]
      },
      "evidence_status": "rejected",
      "notes": "This matrix explains why the tempting iso_icl_repgen006 proof-forest win is not enough: mixed PEQ/NEQ/SEQ guard rows expose regressions that erase the targeted wins."
    },
    {
      "id": "2026-07-20-local-flatcc-size8-ablation-review",
      "recorded_at": "2026-07-20T07:09:31+02:00",
      "kind": "local_benchmark",
      "scope": "Fresh FlatCongruenceClosure review on hard size8 NEQ/PEQ rows after rejected proof-forest hybrid experiment",
      "commit": "9a40248",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo",
        "notes": "No solver source changes were made. This records focused option ablation and proof-forest diagnostic evidence requested during the CC review."
      },
      "command": {
        "option_ablation": "local shell loop over default, --euf-prop=conflict, --euf-prop=off, --euf-prop=online --prop-delivery-budget 0, --euf-prop=online --prop-assign-threshold 1, --euf-explain-search=bidirectional, --euf-explain-search=proof-forest, --pure-theory-filter=off, and --theory-phase=polarity on tmp/QF_UF/NEQ/NEQ016_size8.smt2 and tmp/QF_UF/PEQ/PEQ002_size8.smt2 with 20s timeout",
        "proof_diagnostics": "for f in tmp/QF_UF/NEQ/NEQ016_size8.smt2 tmp/QF_UF/PEQ/PEQ002_size8.smt2; do ./build/primo --quiet --stats --max-theory-conflicts 50000 [$mode] $f; done, with modes default, --euf-proof-forest-diagnostics, and --euf-explain-search=proof-forest"
      },
      "benchmark": {
        "suite": "two local QF_UF equality-family hard rows",
        "logic": "QF_UF",
        "timeout_seconds": 20,
        "manifest": "tmp/QF_UF/NEQ/NEQ016_size8.smt2 and tmp/QF_UF/PEQ/PEQ002_size8.smt2"
      },
      "artifacts": {
        "terminal_capture": "not persisted as CSV; summarized in this run-log entry"
      },
      "summary": {
        "NEQ016_size8_ablation": "At 20s, default, conflict-only, propagation-off, bidirectional, proof-forest, pure-filter-off, and polarity all returned unknown. Default reported 214507 EUF conflicts, 45.6M explain calls, 15.1M BFS searches, 160.7M BFS visits, 311.5M trail entries, 100.6M use-list appends, and CaDiCaL stats of 0 conflicts and 0 decisions. Propagation-off shifted work into CaDiCaL, with 32188 SAT conflicts and 10.1M decisions, but still timed out.",
        "PEQ002_size8_ablation": "Default and conflict-only both solved unsat in about 16.6s with the same shape: 95096 EUF conflicts, about 31.6M explain calls, 9.5M BFS searches, 226.1M trail entries, and 68.6M use-list appends. Propagation-off timed out at 20s. Raising the online assignment threshold to 1.0 and proof-forest mode also timed out with CaDiCaL reporting 0 internal conflicts and 0 decisions, showing that excessive external EUF callback work can starve ordinary SAT search on this family.",
        "NEQ016_size8_capped": "With --max-theory-conflicts 50000, default took 3.44s with 9.52M explain calls, 3.19M BFS searches, 35.6M BFS visits, 11,571 conflicts over 64 reason literals, and max reason length 157. Proof-forest diagnostics classified path lengths as 619,935 shorter than BFS, 2,170,290 equal, and 396,685 longer. Emitting proof-forest reasons took 2.87s at the cap, but increased explain length from 2.34M to 2.77M and conflicts over 64 literals from 11,571 to 16,790.",
        "PEQ002_size8_capped": "With --max-theory-conflicts 50000, default took 6.49s with 16.23M explain calls, 4.86M BFS searches, 48.1M BFS visits, 17,578 conflicts over 64 reason literals, and max reason length 173. Diagnostics classified proof paths as 482,784 shorter, 2,809,126 equal, and 1,570,485 longer. Emitting proof-forest reasons took 4.05s at the cap but worsened reason quality sharply: total explain length 4.61M, 29,491 conflicts over 64 literals, and max reason length 283.",
        "decision": "Do not promote proof-forest, bidirectional BFS, higher online propagation threshold, or propagation-off from this evidence. The CC Section 3 discovery and rollback code still has no newly identified invariant violation. The actionable CC gap is a paper-derived explanation policy that preserves the traversal win of proof-forest on NEQ without emitting longer clauses that regress PEQ/SAT search."
      },
      "verification": {
        "passed": [
          "python3 -m json.tool docs/run-log.json >/tmp/run-log.pretty.json",
          "make docs"
        ],
        "pending": [],
        "warnings": [
          "Evidence is local-only and not a SLURM headline benchmark.",
          "No accepted solver behavior change was made, so no fuzz gate was run for this evidence-only entry."
        ]
      },
      "evidence_status": "current_local",
      "notes": "The review argues against treating CC as a simple Section 3 correctness failure. Current performance is dominated by recursive explanation and learned-reason quality; proof-forest path traversal alone can be faster per fixed conflict budget while hurting full-solve search through larger clauses."
    },
    {
      "id": "2026-07-20-local-rejected-guarded-proof-forest",
      "recorded_at": "2026-07-20T07:18:32+02:00",
      "kind": "local_benchmark",
      "scope": "Rejected guarded proof-forest explanation mode with fixed short-reason fallback",
      "commit": "cf40d28",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo",
        "notes": "Temporary source patch added --euf-explain-search=guarded-proof-forest. It constructed a proof-forest reason first, emitted it only when the reason had at most 64 literals, and otherwise fell back to the default BFS reason. The source patch was reverted after measurement."
      },
      "command": {
        "build_and_test": "cmake --build build --target primo_euf_solver_tests primo -j2 && ./build/primo_euf_solver_tests",
        "matrix": "python3 local loop over default, --euf-explain-search=proof-forest, and temporary --euf-explain-search=guarded-proof-forest on 11 NEQ/PEQ/SEQ/QG rows with 20s timeout, writing results/local-guarded-proof-forest-20260720/matrix.csv"
      },
      "benchmark": {
        "suite": "11-row local mixed QF_UF CC guard matrix",
        "logic": "QF_UF",
        "timeout_seconds": 20,
        "manifest": "NEQ016_size7, NEQ023_size7, NEQ016_size8, PEQ002_size8, PEQ003_size10, PEQ016_size7, SEQ026_size7, SEQ035_size6, iso_icl_repgen005, iso_icl_repgen006, iso_brn_repgen033"
      },
      "artifacts": {
        "matrix": "results/local-guarded-proof-forest-20260720/matrix.csv"
      },
      "summary": {
        "default": "solved 10/11, PAR2 87.543",
        "proof_forest": "solved 8/11, PAR2 134.979",
        "guarded_proof_forest": "solved 8/11, PAR2 145.813",
        "notable_rows": "Guarded proof forest improved iso_icl_repgen005 from 2.190s default to 1.851s and iso_icl_repgen006 from 0.552s to 0.432s, but timed out on NEQ016_size8, PEQ002_size8, and PEQ003_size10. It also regressed NEQ023_size7 from 0.398s default to 0.974s and SEQ026_size7 from 9.829s default to 14.036s.",
        "decision": "Rejected and reverted. A post-construction 64-literal guard is too late and too expensive: it preserves the PEQ timeouts and loses to both default and proof-forest PAR2 on this mixed matrix. The next CC explanation design needs an earlier proof-obligation or path-shape predictor, or a fuller Section 4/5 reorientation policy that avoids constructing and then discarding large proof reasons."
      },
      "verification": {
        "passed": [
          "cmake --build build --target primo_euf_solver_tests primo -j2 && ./build/primo_euf_solver_tests for the temporary patch",
          "source patch reverted; git diff was empty before recording this documentation-only entry",
          "python3 -m json.tool docs/run-log.json >/tmp/run-log.pretty.json",
          "make docs"
        ],
        "pending": [],
        "warnings": [
          "Evidence is local-only and timing-sensitive.",
          "No accepted solver behavior change remains from the temporary patch.",
          "No fuzz gate was run because the behavior-changing source patch was rejected and reverted."
        ]
      },
      "evidence_status": "rejected",
      "notes": "This rejected experiment is stronger evidence than the previous proof-forest-only matrix: a simple reason-length fallback cannot recover the proof-forest wins without PEQ/SEQ regressions."
    },
    {
      "id": "2026-07-20-local-rejected-early-guarded-proof-forest",
      "recorded_at": "2026-07-20T07:27:07+02:00",
      "kind": "local_benchmark",
      "scope": "Rejected early-abort guarded proof-forest explanation mode",
      "commit": "710bb85",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo",
        "notes": "Temporary source patch added --euf-explain-search=early-guarded-proof-forest. It maintained proof parents, attempted proof-forest explanation only at top-level queries, aborted proof construction as soon as the partial reason exceeded 64 literals, and then fell back to the default BFS reason. The source patch was reverted after measurement."
      },
      "command": {
        "build_and_test": "cmake --build build --target primo_euf_solver_tests primo -j2 && ./build/primo_euf_solver_tests",
        "matrix": "python3 local loop over default, --euf-explain-search=proof-forest, and temporary --euf-explain-search=early-guarded-proof-forest on 11 NEQ/PEQ/SEQ/QG rows with 20s timeout, writing results/local-early-guarded-proof-forest-20260720/matrix.csv"
      },
      "benchmark": {
        "suite": "11-row local mixed QF_UF CC guard matrix",
        "logic": "QF_UF",
        "timeout_seconds": 20,
        "manifest": "NEQ016_size7, NEQ023_size7, NEQ016_size8, PEQ002_size8, PEQ003_size10, PEQ016_size7, SEQ026_size7, SEQ035_size6, iso_icl_repgen005, iso_icl_repgen006, iso_brn_repgen033"
      },
      "artifacts": {
        "matrix": "results/local-early-guarded-proof-forest-20260720/matrix.csv"
      },
      "summary": {
        "default": "solved 10/11, PAR2 86.570",
        "proof_forest": "solved 8/11, PAR2 135.384",
        "early_guarded_proof_forest": "solved 8/11, PAR2 144.929",
        "notable_rows": "Early-guarded proof forest still timed out on NEQ016_size8, PEQ002_size8, and PEQ003_size10. It improved iso_icl_repgen005 from 2.012s default to 1.864s and iso_icl_repgen006 from 0.512s to 0.445s, but regressed NEQ023_size7 from 0.370s to 0.959s and SEQ026_size7 from 9.618s to 13.340s.",
        "decision": "Rejected and reverted. Early literal-count abort did not fix the PEQ timeouts and did not beat the previous post-construction guard. The remaining proof-forest direction needs a different mechanism: predict bad proof obligations before maintaining/attempting the proof forest, or implement a fuller Section 4/5 reorientation policy rather than another fixed-size fallback."
      },
      "verification": {
        "passed": [
          "cmake --build build --target primo_euf_solver_tests primo -j2 && ./build/primo_euf_solver_tests for the temporary patch",
          "source patch reverted; git diff was empty before recording this documentation-only entry",
          "python3 -m json.tool docs/run-log.json >/tmp/run-log.pretty.json",
          "make docs"
        ],
        "pending": [],
        "warnings": [
          "Evidence is local-only and timing-sensitive.",
          "No accepted solver behavior change remains from the temporary patch.",
          "No fuzz gate was run because the behavior-changing source patch was rejected and reverted."
        ]
      },
      "evidence_status": "rejected",
      "notes": "This closes the obvious fixed 64-literal guard variants: both post-construction fallback and early-abort fallback lose the same mixed guard matrix."
    },
    {
      "id": "2026-07-20-local-cc-review-proof-diagnostics-and-fifo",
      "recorded_at": "2026-07-20T07:42:22+02:00",
      "kind": "local_benchmark",
      "scope": "CC implementation review: proof diagnostics and rejected FIFO pending-order experiment",
      "commit": "3a152f8",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo",
        "notes": "Clean-room source review inspected /tmp/llm2smt for behavior only. The temporary FIFO patch changed FlatCongruenceClosure pending merge draining order and was reverted after measurement."
      },
      "command": {
        "proof_diagnostic_matrix": "python3 local loop over default, --euf-proof-forest-diagnostics, and --euf-explain-search proof-forest on NEQ023_size7, NEQ027_size8, PEQ019_size7, and PEQ002_size8 with 25s timeout, writing results/local-cc-review-20260720/cc-review-matrix.csv",
        "fifo_probe": "Temporary patch changed FlatCongruenceClosure::propagate from LIFO pending_.back()/pop_back() to FIFO pending_.front()/erase(begin); built with cmake --build build --target primo_euf_solver_tests primo -j4; ran ./build/primo_euf_solver_tests and local 25s probes on NEQ023_size7, NEQ027_size8, PEQ019_size7, PEQ002_size8, and iso_icl_repgen006; source patch reverted."
      },
      "benchmark": {
        "suite": "Focused local NEQ/PEQ/QG CC review rows",
        "logic": "QF_UF",
        "timeout_seconds": 25,
        "manifest": "NEQ023_size7, NEQ027_size8, PEQ019_size7, PEQ002_size8, iso_icl_repgen006 for FIFO only"
      },
      "artifacts": {
        "proof_diagnostic_matrix": "results/local-cc-review-20260720/cc-review-matrix.csv",
        "fifo_probe": "terminal-recorded local output; summarized in this entry"
      },
      "summary": {
        "proof_diagnostics": "Default versus proof-forest was mixed: NEQ023_size7 default 0.367s, proof_forest 1.007s; NEQ027_size8 default 0.456s, proof_forest 0.417s; PEQ019_size7 default 0.898s, proof_forest 0.645s; PEQ002_size8 default 15.708s, proof_forest timed out at 25.006s.",
        "proof_path_counters": "Proof diagnostics found no missing LCA in the measured rows. Examples: NEQ023_size7 had shorter/equal/longer proof-parent paths 3907/22025/796; PEQ002_size8 had 940785/5455359/3105126.",
        "fifo_probe": "FIFO pending order changed search: NEQ023_size7 regressed to 0.851s with 21479 SAT conflicts; NEQ027_size8 improved slightly to 0.435s; PEQ019_size7 improved to 0.709s with fewer explain calls; PEQ002_size8 solved in 17.717s but remained slower than default; iso_icl_repgen006 was 0.472s.",
        "decision": "Rejected and reverted. The Section 3 representative/use-list/lookup implementation still looks structurally covered by current oracle tests, while explanation graph shape and pending-order-induced proof shape remain the CC-specific performance gap. Neither proof-forest mode nor FIFO pending order is default-ready."
      },
      "verification": {
        "passed": [
          "cmake --build build --target primo_euf_solver_tests primo -j4 for temporary FIFO patch",
          "./build/primo_euf_solver_tests for temporary FIFO patch",
          "source patch reverted before documentation commit",
          "python3 -m json.tool docs/run-log.json >/tmp/run-log-check.json"
        ],
        "pending": [
          "make docs after documentation edit",
          "git status --short and git log --oneline -3 before final"
        ],
        "warnings": [
          "Evidence is local-only and timing-sensitive.",
          "No accepted solver behavior change remains from the temporary FIFO patch.",
          "No fuzz gate was run because this is a rejected source experiment plus documentation."
        ]
      },
      "evidence_status": "rejected",
      "notes": "This review supports more CC work, but specifically on paper-derived explanation/reorientation and reason-shape control, not on broad claims that Section 3 congruence discovery is missing."
    },
    {
      "id": "2026-07-20-local-rejected-proof-forest-obligation-cache",
      "recorded_at": "2026-07-20T07:46:18+02:00",
      "kind": "local_benchmark",
      "scope": "Rejected proof-forest completed-obligation cache",
      "commit": "53a6442",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo",
        "notes": "Temporary source patch added a bounded per-reason explanation_cache_ check/emplace around each recursive proof-forest obligation in FlatCongruenceClosure::explain_equal_with_proof_forest_into. The patch was reverted after measurement."
      },
      "command": {
        "build_and_test": "cmake --build build --target primo_euf_solver_tests primo -j4 && ./build/primo_euf_solver_tests",
        "matrix": "python3 local loop over default and temporary proof-forest obligation-cache patch on NEQ023_size7, NEQ027_size8, PEQ019_size7, PEQ002_size8, iso_icl_repgen006, and iso_icl_repgen005 with 25s timeout, writing results/local-proof-forest-obligation-cache-20260720/matrix.csv"
      },
      "benchmark": {
        "suite": "Focused local NEQ/PEQ/QG proof-forest cache rows",
        "logic": "QF_UF",
        "timeout_seconds": 25,
        "manifest": "NEQ023_size7, NEQ027_size8, PEQ019_size7, PEQ002_size8, iso_icl_repgen006, iso_icl_repgen005"
      },
      "artifacts": {
        "matrix": "results/local-proof-forest-obligation-cache-20260720/matrix.csv"
      },
      "summary": {
        "proof_forest_cache": "NEQ023_size7 0.959s, NEQ027_size8 0.428s, PEQ019_size7 0.674s, PEQ002_size8 timeout at 25.009s, iso_icl_repgen006 0.510s, iso_icl_repgen005 2.269s.",
        "cache_signal": "The temporary cache reported zero :euf.incremental.explain-cache-hits on every proof_forest_cache row, including PEQ002_size8 with 58,922,813 explain calls.",
        "decision": "Rejected and reverted. The proof-forest auxiliary union-find already skips the repeated obligations this cache could eliminate. The proof-forest regressions are dominated by first-time proof obligations, emitted reason shape, and resulting SAT search, not by missing completed-obligation memoization."
      },
      "verification": {
        "passed": [
          "cmake --build build --target primo_euf_solver_tests primo -j4 for temporary patch",
          "./build/primo_euf_solver_tests for temporary patch",
          "source patch reverted before documentation edit"
        ],
        "pending": [
          "python3 -m json.tool docs/run-log.json",
          "make docs",
          "git status --short and git log --oneline -3 before final"
        ],
        "warnings": [
          "Evidence is local-only and timing-sensitive.",
          "No accepted solver behavior change remains from the temporary patch.",
          "No fuzz gate was run because the behavior-changing patch was rejected and reverted."
        ]
      },
      "evidence_status": "rejected",
      "notes": "This narrows the next CC target: avoid another memoization pass and focus on proof obligation/reorientation policy or choose a different performance lever."
    },
    {
      "id": "2026-07-20-local-online-conflict-final-check-reuse",
      "recorded_at": "2026-07-20T09:12:00+02:00",
      "kind": "local_benchmark",
      "scope": "Reuse online/conflict propagator's incremental closure for the final per-solve EUF conflict check instead of rebuilding one from the complete assignment",
      "commit": "b281ceb",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo",
        "notes": "Differential run compared a pre-fix binary (build/primo_before, git checkout with the two check_sat.cpp hunks reverted) against the fixed build/primo."
      },
      "command": {
        "build_and_test": "cmake --build build -j14 && ctest --test-dir build --output-on-failure",
        "differential": "for f in $(shuf -n 500 <(find fuzz-results -iname '*.smt2')); do timeout 3 ./build/primo_before --quiet --euf-prop=conflict \"$f\"; timeout 3 ./build/primo --quiet --euf-prop=conflict \"$f\"; done, diffed per-file",
        "stats_comparison": "./build/primo_before --quiet --stats --euf-prop=conflict benchmarks/regression/qf_uf/online_reason_cache.smt2; ./build/primo --quiet --stats --euf-prop=conflict benchmarks/regression/qf_uf/online_reason_cache.smt2"
      },
      "benchmark": {
        "suite": "500-file random sample of locally cached fuzz-results/**/*.smt2 QF_UF instances, plus benchmarks/regression/qf_uf/online_reason_cache.smt2",
        "logic": "QF_UF",
        "timeout_seconds": 3
      },
      "artifacts": {
        "note": "Differential run used session scratch files under /tmp, not preserved as repo artifacts; result distribution and stats deltas are recorded in the summary below."
      },
      "summary": {
        "differential": "500/500 files agreed between pre-fix and fixed binaries under --euf-prop=conflict (454 sat, 46 unsat on both sides), 0 mismatches.",
        "stats_delta": "On online_reason_cache.smt2 under --euf-prop=conflict: :euf.incremental.merges 17630 to 17485, :euf.incremental.lookup-probes 17945 to 17619, :euf.incremental.disequality-checks 12570 to 12268. :euf.checks stayed at 1, confirming the online/conflict propagator resolves the assignment internally in one solve() call in these instances, so the eliminated rebuild is a fixed one-time O(atoms) pass per solve rather than one per theory conflict.",
        "decision": "Accepted. Also fixes a stats double-counting artifact where the rebuilt closure's counters were published on top of the propagator's own accumulated counters."
      },
      "verification": {
        "passed": [
          "cmake --build build -j14 (all targets) then ctest --test-dir build --output-on-failure: 7/7 passed",
          "500-file differential run: 0 mismatches",
          "clang-format --dry-run --Werror on changed files: clean",
          "bash scripts/build_docs.sh: build succeeded"
        ],
        "pending": [],
        "warnings": [
          "Local-only evidence; no SLURM/full-benchmark-scale confirmation of the performance delta.",
          "Sample corpus is locally cached fuzz-results output, not a tracked/reproducible manifest."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Two new regression tests added in the same commit: one pins that --euf-prop=conflict resolves in a single outer theory-check pass, one guards the EufEngine::Lazy + Online/Conflict combination (no persistent closure to reuse) against silently reporting Sat on an unsat instance."
    },
    {
      "id": "2026-07-22-local-reoriented-proof-forest-mixed",
      "recorded_at": "2026-07-22T00:00:00+02:00",
      "kind": "local_benchmark",
      "scope": "New paper-correct Section 4/5.2 proof forest (ProofForest, raw-endpoint edges, reoriented on every union) integrated as --euf-explain-search=reoriented-proof-forest, benchmarked against the two cases that sank the prior representative-based proof-forest attempt",
      "commit": "uncommitted (branch euf-explain-lca-ancestor-stamp)",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build-feature-rel/primo (Release)",
        "notes": "Read Nieuwenhuis and Oliveras (2007, doi:10.1016/j.ic.2006.08.009), Sections 4 and 5.1-5.5 directly before implementing. New standalone class src/theory/equality/proof_forest.{hpp,cpp}, unit-tested against hand-derived cases (not copied from paper diagrams) plus the existing randomized 180-step interleaved-backtracking oracle test, under default and ASAN suites."
      },
      "command": {
        "unit_tests": "cmake --build build --target primo_euf_solver_tests -j14 && ./build/primo_euf_solver_tests; same under build-asan",
        "benchmark": "/usr/bin/time -f '%e s' build-feature-rel/primo --quiet [--euf-explain-search=reoriented-proof-forest] tmp/QF_UF/{PEQ/PEQ002_size8,NEQ/NEQ016_size7}.smt2; build-feature-gprof/primo (Release, -pg) with gprof for profiling"
      },
      "benchmark": {
        "suite": "2-file targeted matrix: the two cases documented in docs/papers/fast-congruence-closure-implementation.md as having sunk the prior (representative-based) proof-forest attempt",
        "logic": "QF_UF",
        "manifest": "PEQ002_size8, NEQ016_size7"
      },
      "artifacts": {
        "note": "Single uncontended local runs, not preserved as repo artifacts; see docs/papers/fast-congruence-closure.md 2026-07-22 status section for the full table."
      },
      "summary": {
        "correctness": "Both files still solved unsat (sound) under the new mode. Randomized 180-step oracle test with interleaved backtracking passes for the new mode under default and ASAN builds.",
        "explain_cost": "explain-calls dropped 100-170x versus the default BFS explainer: PEQ002_size8 31,655,604 -> 183,286; NEQ016_size7 5,352,993 -> 45,228, matching the paper's near-linear Explain complexity bound.",
        "neq016_size7": "Real modest win: SAT conflicts 18,221 -> 11,013 (-40%), wall time 3.5s -> 3.1s.",
        "peq002_size8": "Real loss: theory conflicts 99,698 -> 179,492 (+80%), wall time 15.5s -> 35.5s. gprof shows the extra cost is not in ProofForest itself (~5% combined self-time) but in CaDiCaL::Closure::find_subsuming_clause, whose absolute self-time rose ~10x (1.27s -> 12.11s) -- the larger/more-numerous clauses this mode produces make CaDiCaL's own clause-database subsumption bookkeeping far more expensive.",
        "bug_fixed_before_measuring": "ProofForest::explain originally reset its auxiliary union-find with an eager O(n) assign on every top-level call; with ~180K calls on PEQ002_size8 this alone dominated wall time. Fixed with the generation-stamp pattern already used elsewhere in this file.",
        "decision": "Kept as an opt-in mode, not promoted to default. Reproduces the same mixed correct-but-not-high-quality-explanation pattern every prior (differently broken) proof-forest attempt hit, now with a provably paper-correct implementation ruling out 'the tree was built wrong' as the explanation. Points at Section 5.5's structural-class nodes (documented separately as the paper's own fix for redundant/lower-quality explanations) as the next thing to try, not another variant of plain reorientation."
      },
      "verification": {
        "passed": [
          "cmake --build build --target primo_euf_solver_tests primo -j14 && ./build/primo_euf_solver_tests",
          "ASAN build and test suite (build-asan), ASAN_OPTIONS=detect_leaks=1:strict_init_order=1",
          "clang-format --dry-run --Werror on all changed files",
          "bash scripts/build_docs.sh"
        ],
        "pending": [
          "Broader local matrix beyond these 2 files",
          "SLURM full-corpus comparison",
          "Fuzz gate (opfuzz/yinyang) -- not run this session"
        ],
        "warnings": [
          "2-file matrix only; do not generalize beyond 'mixed, instance-dependent' without more evidence.",
          "No fuzz gate run yet for this new solver behavior; do not treat as fully validated for soundness beyond the oracle test and these 2 files."
        ]
      },
      "evidence_status": "current_local",
      "notes": "This is the first proof-forest attempt where the underlying tree construction itself is verified correct against the actual paper text (not memory or a reference solver), via hand-derived tests plus the existing randomized oracle. The mixed benchmark result is therefore attributable to the paper's own documented explanation-quality gap (Section 5.4), not to a construction bug, which is new information: previous rejected attempts could not distinguish 'wrong construction' from 'inherent quality gap' because none of them had a verified-correct construction to compare against."
    },
    {
      "id": "2026-07-22-local-structural-proof-forest-correct-perf-blocked",
      "recorded_at": "2026-07-22T00:00:00+02:00",
      "kind": "local_benchmark",
      "scope": "Section 5.5 structural-class proof-forest nodes (ProofForest::coalesce_into_structural_class/resolve) integrated as --euf-explain-search=structural-proof-forest, on top of the reoriented-proof-forest baseline",
      "commit": "uncommitted (branch euf-explain-lca-ancestor-stamp)",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build-rel/primo (Release)",
        "notes": "Re-read Section 5.5 and Theorem 21 in Nieuwenhuis and Oliveras (2007, doi:10.1016/j.ic.2006.08.009); corrected a wrong prior characterization of 'structural class' (it is congruence-produced terms sharing one (function,argument) representative pair, not constants pre-merged by direct equations). Hand-derived unit tests built directly from the paper's own Example 22 and Example 23, plus the existing randomized 180-step interleaved-backtracking oracle test extended to this mode, under default and ASAN/UBSan builds."
      },
      "command": {
        "unit_tests": "cmake --build build-rel --target primo_euf_solver_tests -j$(nproc) && ./build-rel/primo_euf_solver_tests; same under a freshly configured ASAN+UBSan build (PRIMO_SANITIZERS=address,undefined)",
        "benchmark": "/usr/bin/time -f 'WALL %e s' timeout 90 build-rel/primo --quiet --stats [mode] tmp/QF_UF/{PEQ/PEQ002_size8,NEQ/NEQ016_size7}.smt2"
      },
      "benchmark": {
        "suite": "2-file targeted matrix: same PEQ002_size8/NEQ016_size7 pair used for the reoriented-proof-forest run",
        "logic": "QF_UF",
        "manifest": "PEQ002_size8, NEQ016_size7"
      },
      "artifacts": {
        "note": "Single uncontended local runs, not preserved as repo artifacts; see docs/papers/fast-congruence-closure.md 2026-07-22 structural-class status section for the full writeup."
      },
      "summary": {
        "correctness": "Three distinct soundness bugs found and fixed during implementation, all the same root cause (a node's own signature can be rehashed and rediscovered congruent more than once, so naively resolving to 'current identity' and linking through that silently drops a bridge fact from the explanation): (1) ProofForest::explain only alias-resolved the top-level query, not obligations produced mid-walk; (2) re-coalescing an already-aliased member needs its old alias materialized into a real tree edge first, not overwritten; (3) the same applies to the canonical side and to direct-equation endpoints, plus a has_incoming_edge_ tracker was needed since a self-rooted node can already have a real incoming edge a naive parent_[node]==node check would miss. After all three fixes: hand-derived Example 22/23 tests pass, and the 180-step randomized backtracking oracle test passes under both default and ASAN/UBSan builds.",
        "peq002_size8": "29.82s wall, 151,420 theory conflicts -- solves correctly, and faster than reoriented-proof-forest's 38.51s/169,270 conflicts on this same machine/build.",
        "neq016_size7": "Does not finish within 180s (reoriented-proof-forest: 3.29s/40,897 conflicts; default: 3.82s/37,931 conflicts on the same run). Stats captured mid-run show it is not stuck in a single call -- 5,120+ backtracks and 3.4M+ trail entries already recorded, versus ~750K assignments other modes need for this file -- so this looks like a real blowup, not a literal infinite loop. Working hypothesis, not confirmed: materialize()'s retroactive reversals happen outside the normal Union-driven growth pattern Lemma 13's amortized O(log n) bound depends on ('each reversal at least doubles the reversed edge's tree size'), and may violate that invariant. Not investigated further this session.",
        "decision": "Correctness verified and complete. Performance is blocked on the NEQ016_size7 regression -- explicitly not promoted, and not benchmarked to a conclusion against reoriented-proof-forest. Kept as an opt-in mode (--euf-explain-search=structural-proof-forest), off by default, so this does not affect any other mode. User explicitly chose to stop and document rather than continue profiling this session."
      },
      "verification": {
        "passed": [
          "cmake --build build-rel --target primo_euf_solver_tests primo_boolean_solver_tests primo -j$(nproc); ./build-rel/primo_euf_solver_tests (exit 0); (cd build-rel && ./primo_boolean_solver_tests) (exit 0, needs to run from the build dir for its relative benchmark path)",
          "Freshly configured Debug+ASAN+UBSan build (cmake -DCMAKE_BUILD_TYPE=Debug -DPRIMO_SANITIZERS=address,undefined): primo_euf_solver_tests exit 0"
        ],
        "pending": [
          "NEQ016_size7 performance regression root-caused and fixed",
          "Broader local matrix beyond these 2 files",
          "SLURM full-corpus comparison",
          "Fuzz gate (opfuzz/yinyang) -- not run this session"
        ],
        "warnings": [
          "Do not enable structural-proof-forest for any benchmarking or production use until the NEQ016_size7 regression is understood -- it can apparently make some instances dramatically (50x+) slower, not just differently-shaped.",
          "2-file matrix only; do not generalize beyond these two specific outcomes."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Continuation of the reoriented-proof-forest session's own stated next step. The three soundness bugs were all found via the same 180-step randomized oracle test already in the suite (extended to cover this new mode), each requiring a targeted hand-trace of the actual proof-forest state (parent_/alias_ arrays) at the failing step to diagnose -- not caught by the hand-derived Example 22/23 tests alone, which is itself useful evidence that the randomized oracle test is pulling real weight beyond the hand-derived cases."
    },
    {
      "id": "2026-07-22-structural-proof-forest-fuzz-found-crash-fix",
      "recorded_at": "2026-07-22T00:00:00+02:00",
      "kind": "fuzz",
      "scope": "Fuzzing-found crash in --euf-explain-search=structural-proof-forest (a fourth instance of the alias-vs-real-tree-edge dead-end bug class), fixed, then a corrected clean 334-file benchmark comparison against default and reoriented-proof-forest",
      "commit": "6362c4c",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build-rel/primo (Release) for benchmarking; build-asan-ws/primo (Debug, PRIMO_SANITIZERS=address,undefined) for fuzzing",
        "notes": "Prompted directly ('I thought we were fuzzing this????') after a manual benchmark-diffing investigation was already underway; switched to scripts/fuzz_external.py --fuzzer fuzzsmt against z3, which found the bug in the first 500 generated QF_UF instances -- far faster than the benchmark-diffing approach that was already in progress."
      },
      "command": {
        "fuzz_initial": "python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver 'build-rel/primo --quiet --euf-explain-search=structural-proof-forest' --refs z3 --logic QF_UF --count 500 --timeout 5 --seed 1 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2'",
        "minimize": "ddsmt <bug-file> <out> ./check_bug.sh, where check_bug.sh greps primo's output for 'failed to explain disequality conflict'; shrank a 58-line fuzzsmt instance to 8 lines in two passes",
        "fuzz_regression": "Same fuzz_external.py invocation but --count 2000 --seed 2 against the ASAN/UBSan build, after the fix",
        "benchmark": "python3 scripts/bench_qf_uf_full.py --root tmp/QF_UF --manifest benchmarks/user-primo-html334-2026-07-18.txt --solver build-rel/primo --solver-arg=--quiet --solver-arg=--stats [--solver-arg=--euf-explain-search=<mode>] --timeout 10 --shards 14 --shard-index <0..13>, run locally across all 3 modes (default, reoriented-proof-forest, structural-proof-forest), 14-way sharded"
      },
      "benchmark": {
        "suite": "Full 334-row primo.html QF_UF subset, this project's standard option-comparison corpus",
        "logic": "QF_UF",
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt"
      },
      "artifacts": {
        "note": "results/structural-proof-forest-334-local/{default,reoriented,structural}/shard-*.csv (local, not committed); fuzz bug reproductions were in a scratchpad directory, not preserved."
      },
      "summary": {
        "bug": "has_incoming_edge_ (added to gate ProofForest::coalesce_into_structural_class's cheap alias fast path, see the previous run's fix 3) only covered real union_nodes e_prime targets, not coalesce_into_structural_class's own fast-path alias targets. A node that only ever gained an incoming *alias* edge still looked eligible for the fast path and could be fast-aliased away itself; a later materialize()-created real tree edge from whoever pointed at it would then dead-end at its self-rooted parent_, since the ordinary tree walk (nearest_common_ancestor/explain_along_path) only follows parent_ and never consults alias_ past the initial query. Surfaced as an uncaught std::logic_error from FlatCongruenceClosure::check_disequality -- a different call path than explain_equal, which is why the existing hand-derived and randomized-oracle unit tests missed it entirely.",
        "how_found": "6 out of the first 500 fuzzsmt-generated QF_UF instances crashed against z3 as reference, all the same root cause. This is also what caused 179/334 (54%) 'unsupported' failures on the primo.html benchmark subset in the prior (uncorrected) benchmark run, which had been misread as a performance-only issue before the crash was noticed in the raw per-file answer column.",
        "fix": "Mark has_incoming_edge_[canonical] inside coalesce_into_structural_class's fast alias-path branch too, trailed for backtracking exactly like union_nodes already does for has_incoming_edge_[e_prime].",
        "verification": "All 6 original crash reproductions now solve correctly. Unit tests (primo_euf_solver_tests) and boolean solver tests pass under default and a freshly-configured ASAN/UBSan build. A follow-up 2000-instance fuzzsmt-against-z3 round against the ASAN/UBSan build came back 2000/2000 PASS, 0 crashes, 0 reference disagreements.",
        "corrected_benchmark": "With the crash gone, the 334-file sweep at a 10s timeout is now a clean comparison for the first time: default 270/334 solved (PAR2 7.500), reoriented-proof-forest 259/334 (PAR2 7.982), structural-proof-forest 232/334 (PAR2 9.329). structural-proof-forest is a consistent net loss across the corpus (43/334 files disagree with reoriented-proof-forest on solved/timeout, and the large majority of those favor reoriented). NEQ016_size7 standalone still does not finish in 60+ seconds under structural-proof-forest (versus 3.1s for default and reoriented-proof-forest), confirming the single-file finding from the prior (crash-confounded) run was real and representative, not an artifact of the crash."
      },
      "verification": {
        "passed": [
          "cmake --build build-rel --target primo_euf_solver_tests primo_boolean_solver_tests primo -j$(nproc); ./build-rel/primo_euf_solver_tests (exit 0); (cd build-rel && ./primo_boolean_solver_tests) (exit 0)",
          "Freshly configured Debug+ASAN+UBSan build: primo_euf_solver_tests exit 0",
          "6/6 original fuzz-found crash reproductions now solve correctly",
          "2000-instance fuzzsmt-against-z3 round against the ASAN/UBSan build: 2000/2000 PASS, 0 bugs"
        ],
        "pending": [
          "structural-proof-forest performance regression itself (why it is slower, not just confirmation that it is) -- not investigated this session",
          "SLURM full-corpus comparison",
          "Broader fuzz campaign (opfuzz/yinyang, not just fuzzsmt) -- not run this session"
        ],
        "warnings": [
          "structural-proof-forest is now believed crash-free but is a confirmed, consistent net performance loss on the standard 334-file corpus -- do not enable for any production or default-candidate use."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Direct lesson recorded here because it changed how this specific bug was found: user prompted 'I thought we were fuzzing this????' partway through a slower manual benchmark-diffing investigation of what was, at the time, believed to be purely a performance regression. Switching to the existing fuzz_external.py tooling found the actual root cause (a crash, not a pure slowdown) in under a minute of fuzzing versus a full prior session of hand-tracing. For a stateful data structure like this proof forest, the fuzz gate should run during development of a new mode, not only as a post-hoc benchmark exercise."
    },
    {
      "id": "2026-07-23-structural-proof-forest-depth-and-memoization-fix",
      "recorded_at": "2026-07-23T00:00:00+02:00",
      "kind": "local_benchmark",
      "scope": "Two profiling-found performance bugs in --euf-explain-search=structural-proof-forest fixed on top of the earlier crash fix: unenforced Lemma 13 size-based tree rebalancing, and unmemoized alias-bridge obligations within a single Explain call",
      "commit": "ebcd2f3",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build-rel/primo (Release) for benchmarking/perf; build-asan-ws/primo (Debug, PRIMO_SANITIZERS=address,undefined) for fuzzing; build-gprof/primo and perf record for profiling",
        "notes": "User pushed back on treating a single-file (NEQ016_size7) slowdown as conclusive ('regression on 1 problem itself is not necessarily an issue'), prompting the full 334-file sweep that first surfaced the crash (recorded separately). After the crash fix, the corrected 334-file sweep still showed a real, broad performance loss, so this entry profiles and fixes that."
      },
      "command": {
        "profile_gprof": "cmake --build build-gprof --target primo; ./build-gprof/primo --quiet --euf-explain-search=structural-proof-forest tmp/QF_UF/PEQ/PEQ002_size8.smt2 (completes, clean gmon.out); gprof build-gprof/primo gmon.out",
        "profile_perf": "perf record -g -o perf.data -- timeout 20 ./build-rel/primo --quiet --euf-explain-search=structural-proof-forest tmp/QF_UF/NEQ/NEQ016_size7.smt2 (bounded window since the process did not terminate on its own pre-fix); perf report --no-children --sort=overhead,symbol",
        "instrumentation": "Temporary static counters/fprintf added directly in ProofForest::union_nodes (max reversal-batch size seen) and ProofForest::explain (top-level call count, obligations processed, seed_and_resolve call/hop counts), removed after each finding was confirmed",
        "benchmark": "python3 scripts/bench_qf_uf_full.py --root tmp/QF_UF --manifest benchmarks/user-primo-html334-2026-07-18.txt --solver build-rel/primo --solver-arg=--quiet --solver-arg=--stats [--solver-arg=--euf-explain-search=<mode>] --timeout 10 --shards 14 --shard-index <0..13>, run locally across all 3 modes, before and after each fix",
        "fuzz_regression": "python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver '<asan-build>/primo --quiet --euf-explain-search=structural-proof-forest' --refs z3 --logic QF_UF --count 2000 --timeout 5 --seed <3/4> --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2', run after each fix"
      },
      "benchmark": {
        "suite": "Full 334-row primo.html QF_UF subset, this project's standard option-comparison corpus",
        "logic": "QF_UF",
        "manifest": "benchmarks/user-primo-html334-2026-07-18.txt"
      },
      "artifacts": {
        "note": "results/structural-proof-forest-334-local/{default,reoriented,structural}/shard-*.csv (local, not committed, overwritten between the pre-fix and post-fix sweeps); perf.data and gmon.out were scratch, not preserved."
      },
      "summary": {
        "profile_finding": "perf record on NEQ016_size7 (20s bounded window, process did not terminate pre-fix) showed ~76% of all samples inside ProofForest::explain and its two NCA-search helpers: aux_find 38%, explain 19%, nearest_common_ancestor 13%, explain_along_path 6%. Every other function, including all of FlatCongruenceClosure's own merge/backtrack machinery, was individually under 0.1%. This is the inverse of every other mode's profile.",
        "bug_1_tree_depth": "Lemma 13's amortized O(log n) reversal bound requires every Union to reverse the smaller side's path. reoriented-proof-forest's direct-equation caller already does this (chooses e/e' by live class_size_ before calling union_nodes). coalesce_into_structural_class's fallback branch (member vs canonical, chosen by lookup-table arrival order) and materialize (always reverses the alias source's path) had no size discipline at all, and live class_size_ stops being an accurate proxy for real tree size once fast-path aliasing exists (an aliased member inflates its live class without adding real tree depth). Fixed by adding ProofForest's own size_ tracking and making union_nodes itself swap which physical node plays e vs e' when the caller's choice disagrees with tracked size -- sound regardless of caller intent, since a tree edge's label proves its two endpoints equal however it is attached. Verified via direct instrumentation: max real tree depth stayed at 46 after 200,000 union_nodes calls post-fix, versus growing unboundedly before.",
        "bug_2_memoization": "Fixing bug 1 alone did not fix NEQ016_size7 (still did not finish in 30s). Further instrumentation showed seed_and_resolve (explain's alias-chain walker) called over 1 billion times in 15 seconds against only ~5,000 top-level Explain calls in that window; alias-chain hop count itself stayed flat (max 1 hop, confirming bug 1's fix was working and this was a separate issue). The auxiliary union-find already deduplicates repeat tree-edge congruence obligations reached via explain_along_path's NCA walk (the mechanism Section 5.2's own complexity argument depends on), but nothing deduplicated repeat alias-bridge obligations reached via seed_and_resolve -- a coalesced node's bridge obligations were pushed once per referencing obligation, not once per Explain call, and structural-class coalescing routinely produces a few popular hub canonical nodes referenced many times within one call. Fixed with the same generation-stamped mark pattern already used for aux_generation_/ancestor_generation_ in this file (seed_marks_/seed_generation_): a node's bridge obligations are now pushed at most once per top-level Explain call.",
        "result": "NEQ016_size7 standalone: 180s+ (not finishing) -> 3.67s, in line with default (3.11s) and reoriented-proof-forest (3.05s). 334-file sweep (10s timeout): solved 232->248 (PAR2 9.329->8.643); reoriented-proof-forest in the same post-fix run was 254/8.279, so the gap closed from 27 files behind to 6 files behind, and file-level divergence dropped from 43/334 to 20/334. Not yet a clear win over reoriented-proof-forest, but no longer a clear, broad loss.",
        "verification": "Unit tests and a freshly-configured ASAN/UBSan build pass after each of the two fixes. A 2000-instance fuzzsmt-against-z3 round against the ASAN/UBSan build came back 2000/2000 PASS after each fix (0 crashes, 0 disagreements) -- confirms neither fix introduced a new soundness issue, including the size-based e/e' swap in union_nodes, which changes the internal tree shape for every mode sharing that function (reoriented-proof-forest included) but was argued sound because a tree edge's label does not depend on which physical node carries it; the existing full test suite (including reoriented-proof-forest's own tests) still passes unchanged."
      },
      "verification": {
        "passed": [
          "cmake --build build-rel --target primo_euf_solver_tests primo -j$(nproc); ./build-rel/primo_euf_solver_tests (exit 0) after each fix",
          "Freshly configured Debug+ASAN+UBSan build: primo_euf_solver_tests exit 0 after each fix",
          "2000-instance fuzzsmt-against-z3 round against the ASAN/UBSan build after each fix: 2000/2000 PASS, 0 bugs",
          "NEQ016_size7 standalone: 3.67s under structural-proof-forest post-fix, versus 180s+ (not finishing) pre-fix"
        ],
        "pending": [
          "The remaining 6-file gap to reoriented-proof-forest on the 334-file corpus -- not profiled further this session",
          "SLURM full-corpus comparison",
          "Broader fuzz campaign (opfuzz/yinyang, not just fuzzsmt)"
        ],
        "warnings": [
          "Absolute solved-counts for default and reoriented-proof-forest shift by a handful of files between sweeps run at different times, from shared-core contention during the 14-way parallel local run, not from any code change to those modes -- compare structural's relative position within a single sweep, not absolute counts across sweeps."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Direct continuation of the crash-fix session (2026-07-22-structural-proof-forest-fuzz-found-crash-fix): after that fix, the 334-file sweep was clean but still showed a real, broad performance loss, which this entry profiles and fixes down to a 6-file gap. The pattern across all three fixes this branch has needed for structural-proof-forest (crash, tree-depth, memoization) is the same: profile/fuzz first, hypothesize second -- every one of the three was found by direct measurement (fuzzing or perf/gprof plus targeted instrumentation), not by reasoning about the code in isolation, and in two of the three cases an earlier hypothesis based on reasoning alone (the crash's suspected cause, and the depth fix being assumed sufficient on its own) turned out to be incomplete or wrong until measured."
    },
    {
      "id": "2026-07-25-slurm-qfuf-fuzz-gate-113366",
      "recorded_at": "2026-07-25T12:20:10+01:00",
      "kind": "slurm_fuzz",
      "scope": "QF_UF fuzz gate for origin/euf-explain-lca-ancestor-stamp at 0292767",
      "commit": "0292767",
      "environment": {
        "type": "slurm",
        "host": "<slurm-cluster>",
        "slurm_job_id": "113366",
        "remote_workdir": "<remote-workdir>",
        "binary": "<remote-workdir>/build-slurm-rel/primo --quiet",
        "binary_version": "primo 0.1.0; git: 0292767; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "notes": "Remote source was synced from /tmp/primo-qfuf-review-0292767. The branch preflight excludes .git, so the temporary remote workspace patched the generated revision fallback from unknown to 0292767 before rebuilding; this should be fixed in the reproducibility script before relying on unattended SLURM preflight for version stamping. Private host, user, and absolute home-directory details are intentionally redacted."
      },
      "command": {
        "validate_sbatch": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qfuf_fuzz_gate.sbatch",
        "bash_n": "bash -n scripts/slurm_qfuf_fuzz_gate.sbatch",
        "workspace_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --ssh-config <ssh-config> --remote <slurm-alias> --remote-dir <remote-workdir> --local-dir . --target primo --jobs 4",
        "submit": "sbatch --export=ALL,PRIMO_WORKDIR=<remote-workdir>,PRIMO_FUZZ_SOLVER=<remote-workdir>/build-slurm-rel/primo,PATH=<remote-workdir>/.venv-yinyang/bin:<remote-workdir>/contrib/local/bin:$PATH scripts/slurm_qfuf_fuzz_gate.sbatch",
        "fuzzsmt": "SLURM tasks 0-5: python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver '<remote-workdir>/build-slurm-rel/primo --quiet' --refs z3 --logic QF_UF --count 500 --timeout 5 --seed 213366+shard --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2'",
        "opfuzz": "SLURM task 6: scripts/yinyang_fuzz.sh --typefuzz opfuzz --seeds benchmarks/seeds/qf_uf --solver '<remote-workdir>/build-slurm-rel/primo --quiet' --ref 'z3 model_validate=true' --seconds 120 --iterations 200 --solver-timeout 5",
        "typefuzz": "SLURM tasks 7-8: scripts/yinyang_fuzz.sh --typefuzz typefuzz over unsat/sat QF_UF seed partitions; both tasks failed inside the mutator before producing Primo-vs-reference bugs"
      },
      "fuzzer": {
        "logic": "QF_UF",
        "reference": "z3 / z3 model_validate=true",
        "generators": [
          "FuzzSMT",
          "opfuzz from the YinYang package",
          "typefuzz from the YinYang package (failed internally on the selected QF_UF seeds)"
        ],
        "seed": "FuzzSMT 213366..213371; in-repo QF_UF seeds for opfuzz/typefuzz",
        "timeout_seconds": 5
      },
      "artifacts": {
        "remote_root": "<remote-workdir>/fuzz-results/qfuf-gate-113366",
        "remote_logs": "<remote-workdir>/logs/primo-qfuf-fuzz-gate-113366-*",
        "fuzzsmt_summaries": "<remote-workdir>/fuzz-results/qfuf-gate-113366/fuzzsmt-*/summary.csv",
        "bug_dirs": "All inspected FuzzSMT and opfuzz bug directories were empty; typefuzz failed before producing bug artifacts."
      },
      "summary": {
        "slurm_tasks_completed": 7,
        "slurm_tasks_failed": 2,
        "fuzzsmt_total": 3000,
        "fuzzsmt_pass": 3000,
        "fuzzsmt_answers": {
          "sat_sat": 2697,
          "unsat_unsat": 303
        },
        "wrong_answer": 0,
        "crash": 0,
        "timeout": 0,
        "error": 0,
        "opfuzz_seeds_processed": 3,
        "opfuzz_valid_seed_files": 3,
        "opfuzz_bug_triggers": 0,
        "opfuzz_solver_calls_seen_in_log": ">=1068",
        "typefuzz_failed_tasks": 2,
        "typefuzz_failure": "YinYang internal runtime error in GenTypeAwareMutation.py:127, msg 'A', on the selected custom-sort QF_UF seeds; no Primo wrong answer or crash was reported by those tasks."
      },
      "verification": {
        "passed": [
          "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qfuf_fuzz_gate.sbatch",
          "bash -n scripts/slurm_qfuf_fuzz_gate.sbatch",
          "SLURM preflight reported the intended Primo commit 0292767 and CaDiCaL cadical-3.0.0-7b99c07 after the temporary remote revision-stamp fallback patch",
          "FuzzSMT 3000/3000 generated QF_UF cases matched Z3 with 0 wrong answers, crashes, timeouts, or harness errors",
          "opfuzz processed the available QF_UF seeds without bug triggers"
        ],
        "pending": [
          "A clean typefuzz/YinYang custom-sort QF_UF leg remains incomplete because the installed mutator failed internally on these seeds",
          "Fix SLURM workspace preparation so synced workspaces retain or inject the exact commit stamp without a temporary remote patch",
          "Redact existing pre-review SLURM user/host/home-path details on this QF_UF branch before publishing or pushing it"
        ],
        "warnings": [
          "This is sufficient evidence for a FuzzSMT merge gate on 0292767 plus an opfuzz smoke leg, but not a fully clean combined YinYang/typefuzz campaign."
        ]
      },
      "evidence_status": "current_slurm_partial",
      "notes": "No solver disagreements, crashes, or timeouts were found in the successful FuzzSMT/opfuzz portions. The failed typefuzz leg is classified as a fuzzer/tooling blocker rather than a Primo correctness failure because it failed inside the mutator before solver comparison artifacts were produced."
    },
    {
      "id": "2026-07-25-slurm-qfuf-typefuzz-rerun-113403",
      "recorded_at": "2026-07-25T14:11:09+01:00",
      "kind": "slurm_fuzz",
      "scope": "QF_UF typefuzz rerun completing the failed YinYang leg from SLURM job 113366",
      "commit": "0292767",
      "tooling_commit": {
        "repository": "git@github.com:MikolasJanota/yinyang.git",
        "commit": "3458e8e2fc523bab85ed0f714f019097ae6495fc",
        "summary": "Handle QF_UF custom sorts in typefuzz"
      },
      "environment": {
        "type": "slurm",
        "host": "<slurm-cluster>",
        "slurm_job_id": "113403",
        "remote_workdir": "<remote-workdir>",
        "binary": "<remote-workdir>/build-slurm-rel/primo --quiet",
        "binary_version": "primo 0.1.0; git: 0292767; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "notes": "Patched YinYang was installed into <remote-workdir>/.venv-yinyang from a synced checkout under <remote-workdir>/vendor/yinyang-fork. Private host, user, and absolute home-directory details are intentionally redacted."
      },
      "command": {
        "local_yinyang_verification": "In /tmp/yinyang-fork at 3458e8e: PYTHONPATH=. python tests/RunUnitTests.py; timeout 120 typefuzz --iterations 100 --timeout 5 'z3 model_validate=true;z3 model_validate=true' /tmp/yinyang-qfuf-seeds",
        "remote_smoke": "PATH=<remote-workdir>/.venv-yinyang/bin:<remote-workdir>/contrib/local/bin:$PATH timeout 120 typefuzz --iterations 100 --timeout 5 'z3 model_validate=true;z3 model_validate=true' benchmarks/seeds/qf_uf",
        "validate_sbatch": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qfuf_fuzz_gate.sbatch",
        "bash_n": "bash -n scripts/slurm_qfuf_fuzz_gate.sbatch",
        "workspace_check": "From a detached 0292767 worktree: python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --ssh-config <ssh-config> --remote <slurm-alias> --remote-dir <remote-workdir> --local-dir . --target primo --jobs 4",
        "submit": "sbatch --array=7-8 --export=ALL,PRIMO_WORKDIR=<remote-workdir>,PRIMO_FUZZ_SOLVER=<remote-workdir>/build-slurm-rel/primo,PATH=<remote-workdir>/.venv-yinyang/bin:<remote-workdir>/contrib/local/bin:$PATH scripts/slurm_qfuf_fuzz_gate.sbatch"
      },
      "fuzzer": {
        "logic": "QF_UF",
        "generator": "typefuzz from patched YinYang fork",
        "reference": "z3 model_validate=true",
        "seed": "benchmarks/seeds/qf_uf, three custom-sort QF_UF seeds",
        "iterations_per_task": 100,
        "timeout_seconds": 5,
        "tasks": [
          7,
          8
        ]
      },
      "artifacts": {
        "remote_root": "<remote-workdir>/fuzz-results/qfuf-gate-113403",
        "remote_logs": "<remote-workdir>/logs/primo-qfuf-fuzz-gate-113403-{7,8}.{out,err}",
        "bug_dirs": "<remote-workdir>/fuzz-results/qfuf-gate-113403/yinyang/task-{7,8}/bugs, both empty"
      },
      "summary": {
        "slurm_tasks_completed": 2,
        "slurm_tasks_failed": 0,
        "typefuzz_tasks": 2,
        "typefuzz_seed_files_per_task": 3,
        "typefuzz_valid_seed_files_per_task": 3,
        "typefuzz_invalid_seed_files": 0,
        "typefuzz_bug_triggers": 0,
        "solver_calls_seen_in_logs": {
          "task_7": ">=450",
          "task_8": ">=446",
          "remote_interactive_smoke": ">=566",
          "local_smoke": ">=558"
        },
        "wrong_answer": 0,
        "crash": 0,
        "timeout": 0,
        "error": 0
      },
      "verification": {
        "passed": [
          "YinYang focused regression tests for custom uninterpreted sorts passed",
          "YinYang unit suite passed locally: 15/15 tests",
          "Local typefuzz over the three QF_UF seeds completed with 3 valid seeds and 0 bug triggers",
          "Remote interactive typefuzz smoke over the three QF_UF seeds completed with 3 valid seeds and 0 bug triggers",
          "SLURM job 113403 tasks 7 and 8 completed with exit code 0:0",
          "Both SLURM typefuzz bug directories were empty",
          "YinYang fork commit 3458e8e was pushed to git@github.com:MikolasJanota/yinyang.git master"
        ],
        "pending": [
          "The SLURM version-stamp issue remains: synced Primo workspaces without .git still need an explicit revision-stamp path or environment override"
        ]
      },
      "evidence_status": "current_slurm",
      "notes": "This rerun addresses the typefuzz blocker from 2026-07-25-slurm-qfuf-fuzz-gate-113366. Together, jobs 113366 and 113403 give QF_UF 0292767 a clean 3000-case FuzzSMT gate, opfuzz smoke, and patched typefuzz/YinYang mutation coverage over the in-repo custom-sort QF_UF seeds."
    },
    {
      "id": "2026-07-25-slurm-main-qfuf-fuzz-gate-113416",
      "recorded_at": "2026-07-25T15:55:00+01:00",
      "kind": "slurm_fuzz",
      "scope": "Fresh QF_UF fuzz gate after merging QF_UF work onto main",
      "commit": "c81319e",
      "tooling_commit": {
        "repository": "git@github.com:MikolasJanota/yinyang.git",
        "commit": "3458e8e2fc523bab85ed0f714f019097ae6495fc",
        "summary": "Handle QF_UF custom sorts in typefuzz"
      },
      "environment": {
        "type": "slurm",
        "host": "<slurm-cluster>",
        "slurm_job_id": "113416",
        "remote_workdir": "<remote-workdir>",
        "binary": "<remote-workdir>/build-slurm-rel/primo --quiet",
        "binary_version": "primo 0.1.0; git: c81319e; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "notes": "The remote workspace was synced from main and then the tracked logs/results/fuzz-results directories were synced as well so the remote git checkout reported a clean c81319e stamp. Patched YinYang was installed into <remote-workdir>/.venv-yinyang from a synced checkout under <remote-workdir>/vendor/yinyang-fork. Private host, user, and absolute home-directory details are intentionally redacted."
      },
      "command": {
        "validate_sbatch": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qfuf_fuzz_gate.sbatch",
        "bash_n": "bash -n scripts/slurm_qfuf_fuzz_gate.sbatch",
        "workspace_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --ssh-config <ssh-config> --remote <slurm-alias> --remote-dir <remote-workdir> --local-dir . --target primo --jobs 4",
        "remote_typefuzz_smoke": "PATH=<remote-workdir>/.venv-yinyang/bin:<remote-workdir>/contrib/local/bin:$PATH timeout 120 typefuzz --iterations 20 --timeout 5 'z3 model_validate=true;z3 model_validate=true' benchmarks/seeds/qf_uf",
        "submit": "sbatch --export=ALL,PRIMO_WORKDIR=<remote-workdir>,PRIMO_FUZZ_SOLVER=<remote-workdir>/build-slurm-rel/primo,PATH=<remote-workdir>/.venv-yinyang/bin:<remote-workdir>/contrib/local/bin:$PATH scripts/slurm_qfuf_fuzz_gate.sbatch",
        "fuzzsmt": "SLURM tasks 0-5: python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver '<remote-workdir>/build-slurm-rel/primo --quiet' --refs z3 --logic QF_UF --count 500 --timeout 5 --seed 213416+shard --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2'",
        "opfuzz": "SLURM task 6: scripts/yinyang_fuzz.sh --typefuzz opfuzz --seeds benchmarks/seeds/qf_uf --solver '<remote-workdir>/build-slurm-rel/primo --quiet' --ref 'z3 model_validate=true' --seconds 1500 --iterations 200 --solver-timeout 5",
        "typefuzz": "SLURM tasks 7-8: scripts/yinyang_fuzz.sh --typefuzz typefuzz --seeds benchmarks/seeds/qf_uf --solver '<remote-workdir>/build-slurm-rel/primo --quiet' --ref 'z3 model_validate=true' --seconds 1500 --iterations 100 --solver-timeout 5"
      },
      "fuzzer": {
        "logic": "QF_UF",
        "generator": "FuzzSMT plus opfuzz and typefuzz from patched YinYang fork",
        "reference": "z3 / z3 model_validate=true",
        "seed": "FuzzSMT seeds 213416..213421; benchmarks/seeds/qf_uf for opfuzz and typefuzz",
        "timeout_seconds": 5,
        "tasks": [
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8
        ]
      },
      "artifacts": {
        "remote_root": "<remote-workdir>/fuzz-results/qfuf-gate-113416",
        "remote_logs": "<remote-workdir>/logs/primo-qfuf-fuzz-gate-113416-{0..8}.{out,err}",
        "fuzzsmt_summaries": "<remote-workdir>/fuzz-results/qfuf-gate-113416/fuzzsmt/shard-*/summary.csv",
        "bug_dirs": "All inspected FuzzSMT, opfuzz, and typefuzz bug directories were empty."
      },
      "summary": {
        "slurm_tasks_completed": 9,
        "slurm_tasks_failed": 0,
        "fuzzsmt_total": 3000,
        "fuzzsmt_pass": 3000,
        "fuzzsmt_answers": {
          "sat_sat": 2668,
          "unsat_unsat": 332
        },
        "opfuzz_seeds_processed": 3,
        "opfuzz_valid_seed_files": 3,
        "opfuzz_invalid_seed_files": 0,
        "opfuzz_bug_triggers": 0,
        "typefuzz_tasks": 2,
        "typefuzz_seed_files_per_task": 3,
        "typefuzz_valid_seed_files_per_task": 3,
        "typefuzz_invalid_seed_files": 0,
        "typefuzz_bug_triggers": 0,
        "wrong_answer": 0,
        "crash": 0,
        "timeout": 0,
        "error": 0
      },
      "verification": {
        "passed": [
          "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qfuf_fuzz_gate.sbatch",
          "bash -n scripts/slurm_qfuf_fuzz_gate.sbatch",
          "SLURM preflight reported Primo commit c81319e and CaDiCaL cadical-3.0.0-7b99c07",
          "Remote typefuzz smoke over benchmarks/seeds/qf_uf processed 3 valid seeds with 0 bug triggers",
          "SLURM job 113416 tasks 0-8 completed with exit code 0:0",
          "FuzzSMT 3000/3000 generated QF_UF cases matched Z3 with 0 wrong answers, crashes, timeouts, or harness errors",
          "opfuzz processed the available QF_UF seeds without bug triggers",
          "typefuzz processed the available QF_UF seeds in both tasks without bug triggers",
          "All inspected bug directories were empty"
        ],
        "pending": [
          "Make the SLURM workspace preparation script preserve tracked artifact directories or inject an explicit revision override so a clean commit stamp does not require manual artifact-dir sync."
        ]
      },
      "evidence_status": "current_slurm",
      "notes": "Fresh main fuzz evidence after the QF_UF branch fast-forward merge. The only setup issue was the known revision-stamp fragility caused by syncing a git checkout while excluding tracked artifact directories; syncing those directories restored a clean c81319e stamp before the submitted job."
    },
    {
      "id": "2026-07-27-local-qfuf-diseq-diagnostics-smoke-2960394",
      "recorded_at": "2026-07-27T00:00:00+02:00",
      "kind": "benchmark",
      "scope": "Local smoke run for opt-in QF_UF disequality-propagation diagnostic counters",
      "commit": "2960394",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null,
        "binary": "build/primo --quiet",
        "binary_version": "primo 0.1.0; git: 2960394; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "notes": "No private host or absolute home-directory details are recorded."
      },
      "command": {
        "build": "cmake --build build --target primo",
        "manifest": "find benchmarks/seeds/qf_uf benchmarks/smoke/qf_uf benchmarks/regression/qf_uf -type f -name '*.smt2' -print | sort | sed 's#^benchmarks/##' > results/qfuf-diseq-diagnostics-2960394-local/manifest.txt",
        "run": "python3 scripts/bench_qf_uf_full.py --repo . --root benchmarks --manifest results/qfuf-diseq-diagnostics-2960394-local/manifest.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --solver-arg=--euf-diseq-prop-diagnostics --timeout 5 --out results/qfuf-diseq-diagnostics-2960394-local/results.csv --summary results/qfuf-diseq-diagnostics-2960394-local/summary.csv --log-dir results/qfuf-diseq-diagnostics-2960394-local/logs",
        "summarize": "python3 scripts/summarize_qfuf_diseq_diagnostics.py results/qfuf-diseq-diagnostics-2960394-local/results.csv --out results/qfuf-diseq-diagnostics-2960394-local/diseq-summary.csv --top 10"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats --euf-diseq-prop-diagnostics"
      },
      "references": [],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 9,
        "timeout_seconds": 5,
        "manifest": "results/qfuf-diseq-diagnostics-2960394-local/manifest.txt"
      },
      "artifacts": {
        "summary": "results/qfuf-diseq-diagnostics-2960394-local/summary.csv",
        "results": "results/qfuf-diseq-diagnostics-2960394-local/results.csv",
        "diagnostic_summary": "results/qfuf-diseq-diagnostics-2960394-local/diseq-summary.csv",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "total": 9,
        "solved": 9,
        "wrong": 0,
        "timeouts": 0,
        "par2": 0.048436,
        "diagnostic_totals": {
          ":euf.diseq-prop.assigned-app-disequalities": 100,
          ":euf.diseq-prop.source-unary-candidates": 0,
          ":euf.diseq-prop.source-unary-existing-arg-atom": 0,
          ":euf.diseq-prop.flat-same-function-candidates": 50,
          ":euf.diseq-prop.flat-same-function-existing-arg-atom": 50,
          ":euf.diseq-prop.guarded-function-guard-candidates": 0,
          ":euf.diseq-prop.guarded-argument-guard-candidates": 0
        },
        "active_files": {
          ":euf.diseq-prop.assigned-app-disequalities": 1,
          ":euf.diseq-prop.flat-same-function-candidates": 1,
          ":euf.diseq-prop.flat-same-function-existing-arg-atom": 1
        },
        "top_file": "benchmarks/regression/qf_uf/online_reason_cache.smt2"
      },
      "verification": {
        "passed": [
          "python3 -m py_compile scripts/summarize_qfuf_diseq_diagnostics.py",
          "The diagnostic run solved all 9 local QF_UF inputs with 0 wrong answers and 0 timeouts",
          "The summarizer produced aggregate totals and top-file output"
        ],
        "pending": [
          "Run the same diagnostic flag on the weak QF_UF manifests under tmp/QF_UF on SLURM; the local tmp/QF_UF corpus and SLURM SSH config were unavailable in this workspace."
        ]
      },
      "evidence_status": "current_local_smoke",
      "notes": "This validates the diagnostic evidence pipeline only. It is not sufficient evidence to accept or reject H1 for weak QF_UF benchmark families."
    },
    {
      "id": "2026-07-27-local-qfuf-diseq-diagnostics-weak-4ada99d",
      "recorded_at": "2026-07-27T00:00:00+02:00",
      "kind": "benchmark",
      "scope": "Local QF_UF disequality-propagation diagnostic run on weak NEQ/PEQ/SEQ manifests",
      "commit": "4ada99d",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null,
        "binary": "build/primo --quiet",
        "binary_version": "primo 0.1.0; git: 4ada99d; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "notes": "The external QF_UF.tar.zst archive was inspected for relative paths, extracted into ignored tmp/QF_UF, and added to .gitignore so the corpus tarball is not accidentally staged."
      },
      "command": {
        "archive_list": "tar --zstd -tf QF_UF.tar.zst",
        "archive_path_scan": "tar --zstd -tf QF_UF.tar.zst | rg -n <private-path-and-host-patterns>",
        "extract": "mkdir -p tmp/QF_UF && tar --zstd -xf QF_UF.tar.zst -C tmp/QF_UF --strip-components=2",
        "build": "cmake --build build --target primo",
        "manifest": "Create results/qfuf-diseq-diagnostics-4ada99d-weak-local-rerun/manifest.txt from the de-duplicated union of qfuf-smac-neq-validate, qfuf-smac-gap-train, and qfuf-smac-gap-validate with tmp/QF_UF/ stripped.",
        "run": "python3 scripts/bench_qf_uf_full.py --repo . --root tmp/QF_UF --manifest results/qfuf-diseq-diagnostics-4ada99d-weak-local-rerun/manifest.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --solver-arg=--euf-diseq-prop-diagnostics --timeout 60 --out results/qfuf-diseq-diagnostics-4ada99d-weak-local-rerun/results.csv --summary results/qfuf-diseq-diagnostics-4ada99d-weak-local-rerun/summary.csv --log-dir results/qfuf-diseq-diagnostics-4ada99d-weak-local-rerun/logs",
        "summarize": "python3 scripts/summarize_qfuf_diseq_diagnostics.py results/qfuf-diseq-diagnostics-4ada99d-weak-local-rerun/results.csv --out results/qfuf-diseq-diagnostics-4ada99d-weak-local-rerun/diseq-summary.csv --top 21"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats --euf-diseq-prop-diagnostics"
      },
      "references": [],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 21,
        "timeout_seconds": 60,
        "manifest": "results/qfuf-diseq-diagnostics-4ada99d-weak-local-rerun/manifest.txt"
      },
      "artifacts": {
        "summary": "results/qfuf-diseq-diagnostics-4ada99d-weak-local-rerun/summary.csv",
        "results": "results/qfuf-diseq-diagnostics-4ada99d-weak-local-rerun/results.csv",
        "diagnostic_summary": "results/qfuf-diseq-diagnostics-4ada99d-weak-local-rerun/diseq-summary.csv",
        "logs": "results/qfuf-diseq-diagnostics-4ada99d-weak-local-rerun/logs",
        "bugs": null
      },
      "summary": {
        "total": 21,
        "solved": 20,
        "wrong": 0,
        "timeouts": 1,
        "timed_out_with_stats": 1,
        "par2": 230.868646,
        "families": {
          "NEQ": {
            "total": 10,
            "solved": 9,
            "timeouts": 1,
            "wrong": 0
          },
          "PEQ": {
            "total": 8,
            "solved": 8,
            "timeouts": 0,
            "wrong": 0
          },
          "SEQ": {
            "total": 3,
            "solved": 3,
            "timeouts": 0,
            "wrong": 0
          }
        },
        "diagnostic_totals": {
          ":euf.diseq-assignments": 15017654,
          ":euf.diseq-prop.assigned-app-disequalities": 1,
          ":euf.diseq-prop.source-unary-candidates": 0,
          ":euf.diseq-prop.source-unary-existing-arg-atom": 0,
          ":euf.diseq-prop.flat-same-function-candidates": 0,
          ":euf.diseq-prop.flat-same-function-existing-arg-atom": 0,
          ":euf.diseq-prop.guarded-function-guard-candidates": 0,
          ":euf.diseq-prop.guarded-argument-guard-candidates": 0
        },
        "active_files": {
          ":euf.diseq-prop.assigned-app-disequalities": 1
        },
        "timeout_files": [
          "tmp/QF_UF/NEQ/NEQ016_size8.smt2"
        ],
        "top_diagnostic_file": "tmp/QF_UF/SEQ/SEQ035_size6.smt2"
      },
      "verification": {
        "passed": [
          "QF_UF.tar.zst listed 7503 relative SMT-LIB paths under non-incremental/QF_UF",
          "Archive path scan found no absolute paths, parent traversal entries, IP-like strings, or private-looking identifiers",
          "The three weak manifests resolved with 0 missing files after extraction",
          "build/primo --version reported git 4ada99d",
          "The diagnostic run completed with 20 solved, 1 timeout, and 0 wrong answers",
          "The diagnostic summary found zero source-unary, flat same-function, or guarded target opportunities"
        ],
        "pending": [
          "A full 7503-file diagnostic campaign was not run locally because the weak-manifest result already rejects H1/H2 for the targeted NEQ/PEQ/SEQ weak set and a full run is better suited to SLURM."
        ]
      },
      "evidence_status": "current_local",
      "notes": "This is negative evidence for implementing f(a) != f(b) -> a != b propagation as the next performance technique on the targeted weak manifests. The weak files contain many assigned disequality literals, but almost none are app-result disequalities with SAT-visible target atoms."
    },
    {
      "id": "2026-07-27-local-qfuf-ackermann-diagnostics-weak-451feb2",
      "recorded_at": "2026-07-27T00:00:00+02:00",
      "kind": "benchmark",
      "scope": "Local QF_UF Ackermann cost diagnostic run on weak NEQ/PEQ/SEQ manifests",
      "commit": "451feb2",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null,
        "binary": "build/primo --quiet",
        "binary_version": "primo 0.1.0; git: 451feb2; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "notes": "The external QF_UF.tar.zst archive remained ignored and extracted under ignored tmp/QF_UF. No archive contents or private path metadata were added."
      },
      "command": {
        "build": "cmake --build build --target primo -j2",
        "manifest": "Create results/qfuf-ackermann-diagnostics-451feb2-weak-local/manifest.txt from the de-duplicated union of qfuf-smac-neq-validate, qfuf-smac-gap-train, and qfuf-smac-gap-validate with tmp/QF_UF/ stripped.",
        "run": "python3 scripts/bench_qf_uf_full.py --repo . --root tmp/QF_UF --manifest results/qfuf-ackermann-diagnostics-451feb2-weak-local/manifest.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --solver-arg=--euf-ackermann-diagnostics --solver-arg=--euf-diseq-prop-diagnostics --timeout 60 --out results/qfuf-ackermann-diagnostics-451feb2-weak-local/results.csv --summary results/qfuf-ackermann-diagnostics-451feb2-weak-local/summary.csv --log-dir results/qfuf-ackermann-diagnostics-451feb2-weak-local/logs",
        "summarize_ackermann": "python3 scripts/summarize_qfuf_ackermann_diagnostics.py results/qfuf-ackermann-diagnostics-451feb2-weak-local/results.csv --out results/qfuf-ackermann-diagnostics-451feb2-weak-local/ackermann-summary.csv --top 21",
        "summarize_diseq": "python3 scripts/summarize_qfuf_diseq_diagnostics.py results/qfuf-ackermann-diagnostics-451feb2-weak-local/results.csv --out results/qfuf-ackermann-diagnostics-451feb2-weak-local/diseq-summary.csv --top 21"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats --euf-ackermann-diagnostics --euf-diseq-prop-diagnostics"
      },
      "references": [
        {
          "kind": "paper",
          "citation": "Roberto Bruttomesso, Alessandro Cimatti, Anders Franzen, Alberto Griggio, Alessandro Santuari, and Roberto Sebastiani, To Ackermann-ize or not to Ackermann-ize? On Efficiently Handling Uninterpreted Function Symbols in SMT(EUF union T), LPAR 2006.",
          "use": "Cost-model motivation only; no Ackermann rewriting or clause generation was implemented."
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 21,
        "timeout_seconds": 60,
        "manifest": "results/qfuf-ackermann-diagnostics-451feb2-weak-local/manifest.txt"
      },
      "artifacts": {
        "summary": "results/qfuf-ackermann-diagnostics-451feb2-weak-local/summary.csv",
        "results": "results/qfuf-ackermann-diagnostics-451feb2-weak-local/results.csv",
        "ackermann_summary": "results/qfuf-ackermann-diagnostics-451feb2-weak-local/ackermann-summary.csv",
        "diseq_summary": "results/qfuf-ackermann-diagnostics-451feb2-weak-local/diseq-summary.csv",
        "logs": "results/qfuf-ackermann-diagnostics-451feb2-weak-local/logs",
        "bugs": null
      },
      "summary": {
        "total": 21,
        "solved": 20,
        "wrong": 0,
        "timeouts": 1,
        "timed_out_with_stats": 1,
        "par2": 212.654533,
        "families": {
          "NEQ": {
            "total": 10,
            "solved": 9,
            "timeouts": 1,
            "wrong": 0
          },
          "PEQ": {
            "total": 8,
            "solved": 8,
            "timeouts": 0,
            "wrong": 0
          },
          "SEQ": {
            "total": 3,
            "solved": 3,
            "timeouts": 0,
            "wrong": 0
          }
        },
        "ackermann_totals": {
          ":euf.ackermann.applications": 88539,
          ":euf.ackermann.function-symbols": 218,
          ":euf.ackermann.eligible-symbols": 218,
          ":euf.ackermann.unary-symbols": 107,
          ":euf.ackermann.nary-symbols": 111,
          ":euf.ackermann.estimated-constraints": 133942973,
          ":euf.ackermann.estimated-equalities": 404721026,
          ":euf.ackermann.estimated-clause-lits": 404721026,
          ":euf.ackermann.max-symbol-applications": 51762,
          ":euf.ackermann.max-symbol-arity": 50,
          ":euf.ackermann.symbols-cost-le-100": 65,
          ":euf.ackermann.symbols-cost-le-1000": 102,
          ":euf.ackermann.symbols-cost-le-10000": 150
        },
        "timeout_file": {
          "file": "tmp/QF_UF/NEQ/NEQ016_size8.smt2",
          "applications": 1307,
          "function_symbols": 4,
          "eligible_symbols": 4,
          "unary_symbols": 3,
          "nary_symbols": 1,
          "estimated_constraints": 599212,
          "estimated_equalities": 1789752,
          "max_symbol_applications": 1088,
          "max_symbol_arity": 2,
          "symbols_cost_le_100": 0,
          "symbols_cost_le_1000": 0,
          "symbols_cost_le_10000": 3,
          "euf_assignments": 8868487,
          "diseq_assignments": 5762805,
          "incremental_conflicts": 335002,
          "explain_bfs_searches": 20343911,
          "explain_bfs_visited": 228643107
        },
        "diseq_diagnostic_totals": {
          ":euf.diseq-assignments": 15663172,
          ":euf.diseq-prop.assigned-app-disequalities": 1,
          ":euf.diseq-prop.source-unary-candidates": 0,
          ":euf.diseq-prop.flat-same-function-candidates": 0,
          ":euf.diseq-prop.guarded-function-guard-candidates": 0,
          ":euf.diseq-prop.guarded-argument-guard-candidates": 0
        },
        "top_full_ackermann_cost_file": "tmp/QF_UF/NEQ/NEQ015_size6.smt2"
      },
      "verification": {
        "passed": [
          "build/primo --version reported git 451feb2",
          "The diagnostic run completed with 20 solved, 1 timeout, and 0 wrong answers",
          "The Ackermann summary estimated 404,721,026 full equality/clause literals across the weak manifest",
          "The timeout row had zero eligible symbols at pair-cost <= 100 or <= 1000 and three at pair-cost <= 10000",
          "The paired disequality diagnostic again found zero source-unary, flat same-function, or guarded target opportunities"
        ],
        "pending": [
          "A full 7503-file Ackermann diagnostic campaign was not run locally; use SLURM before promoting any partial-Ackermannization experiment.",
          "No Ackermann rewriting or clause generation was implemented, so this run is negative design evidence rather than a behavior-change fuzz gate."
        ]
      },
      "evidence_status": "current_local",
      "notes": "This rejects full Ackermannization as the next QF_UF weak-set technique. The paper remains relevant as a cost model and for future bounded PARTIAL-style preprocessing, but the measured weak rows have too many repeated applications for eager full Ackermann constraints."
    },
    {
      "id": "2026-07-28-local-qfuf-dynamic-ackermann-shadow-weak-b74acfe",
      "recorded_at": "2026-07-28T00:00:00+02:00",
      "kind": "benchmark",
      "scope": "Local QF_UF dynamic Ackermann shadow diagnostic run on weak NEQ/PEQ/SEQ manifests",
      "commit": "b74acfe",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null,
        "binary": "build/primo --quiet",
        "binary_version": "primo 0.1.0; git: b74acfe; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "notes": "The diagnostic is default-off and shadow-only: no dynamic Ackermann clauses were added and no missing SAT atoms were created."
      },
      "command": {
        "build": "cmake --build build --target primo -j2",
        "manifest": "Create results/qfuf-dynamic-ack-shadow-b74acfe-weak-local/manifest.txt from the de-duplicated union of qfuf-smac-neq-validate, qfuf-smac-gap-train, and qfuf-smac-gap-validate with tmp/QF_UF/ stripped.",
        "run": "python3 scripts/bench_qf_uf_full.py --repo . --root tmp/QF_UF --manifest results/qfuf-dynamic-ack-shadow-b74acfe-weak-local/manifest.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --solver-arg=--euf-dynamic-ackermann-shadow --timeout 60 --out results/qfuf-dynamic-ack-shadow-b74acfe-weak-local/results.csv --summary results/qfuf-dynamic-ack-shadow-b74acfe-weak-local/summary.csv --log-dir results/qfuf-dynamic-ack-shadow-b74acfe-weak-local/logs",
        "summarize": "python3 scripts/summarize_qfuf_dynamic_ackermann_shadow.py results/qfuf-dynamic-ack-shadow-b74acfe-weak-local/results.csv --out results/qfuf-dynamic-ack-shadow-b74acfe-weak-local/dynamic-ack-shadow-summary.csv --top 21"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats --euf-dynamic-ackermann-shadow"
      },
      "references": [
        {
          "kind": "design_note",
          "path": "docs/qfuf-disequality-propagation.md",
          "use": "Local dynamic-Ackermann shadow diagnostic design and acceptance criteria."
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 21,
        "timeout_seconds": 60,
        "manifest": "results/qfuf-dynamic-ack-shadow-b74acfe-weak-local/manifest.txt"
      },
      "artifacts": {
        "summary": "results/qfuf-dynamic-ack-shadow-b74acfe-weak-local/summary.csv",
        "results": "results/qfuf-dynamic-ack-shadow-b74acfe-weak-local/results.csv",
        "dynamic_ackermann_shadow_summary": "results/qfuf-dynamic-ack-shadow-b74acfe-weak-local/dynamic-ack-shadow-summary.csv",
        "logs": "results/qfuf-dynamic-ack-shadow-b74acfe-weak-local/logs",
        "bugs": null
      },
      "summary": {
        "total": 21,
        "solved": 20,
        "wrong": 0,
        "timeouts": 1,
        "timed_out_with_stats": 1,
        "par2": 260.742822,
        "families": {
          "NEQ": {
            "total": 10,
            "solved": 9,
            "timeouts": 1,
            "wrong": 0
          },
          "PEQ": {
            "total": 8,
            "solved": 8,
            "timeouts": 0,
            "wrong": 0
          },
          "SEQ": {
            "total": 3,
            "solved": 3,
            "timeouts": 0,
            "wrong": 0
          }
        },
        "dynamic_ackermann_shadow_totals": {
          ":euf.dynamic-ack.shadow.invocations": 2600,
          ":euf.dynamic-ack.shadow.result-pairs": 2591128,
          ":euf.dynamic-ack.shadow.arg-atoms-missing": 1815988,
          ":euf.dynamic-ack.shadow.sat-visible-clauses": 913175,
          ":euf.dynamic-ack.shadow.satisfied": 177398,
          ":euf.dynamic-ack.shadow.unit": 1246,
          ":euf.dynamic-ack.shadow.conflicting": 0,
          ":euf.dynamic-ack.shadow.result-diseq-assigned": 2443,
          ":euf.dynamic-ack.shadow.all-args-eq-assigned": 1270,
          ":euf.dynamic-ack.shadow.width-total": 2735598,
          ":euf.dynamic-ack.shadow.max-width": 28,
          ":euf.dynamic-ack.shadow.width-le-3": 913175,
          ":euf.dynamic-ack.shadow.width-gt-3": 0
        },
        "timeout_file": {
          "file": "tmp/QF_UF/NEQ/NEQ016_size8.smt2",
          "invocations": 913,
          "result_pairs": 467456,
          "arg_atoms_missing": 0,
          "sat_visible_clauses": 467456,
          "unit": 90,
          "conflicting": 0,
          "satisfied": 98951,
          "result_diseq_assigned": 0,
          "all_args_eq_assigned": 98,
          "width_total": 1402368,
          "max_width": 3,
          "width_le_3": 467456,
          "width_gt_3": 0,
          "explain_bfs_searches": 16292208,
          "explain_bfs_visited": 181221389
        },
        "top_unit_file": "tmp/QF_UF/NEQ/NEQ015_size6.smt2"
      },
      "verification": {
        "passed": [
          "build/primo --version reported git b74acfe",
          "The diagnostic run completed with 20 solved, 1 timeout, and 0 wrong answers",
          "The shadow summary found 1,246 unit candidate clauses and zero conflicting candidate clauses",
          "Every SAT-visible candidate in the run had width <= 3",
          "The timeout row had 90 unit hits over 467,456 SAT-visible candidates"
        ],
        "pending": [
          "No real dynamic Ackermann clause addition was implemented yet.",
          "The shadow pass adds measurable diagnostic overhead and is not evidence for default behavior.",
          "A capped real-clause experiment still needs a selector, focused tests, fuzzing, and SLURM comparison before any merge/default claim."
        ]
      },
      "evidence_status": "current_local",
      "notes": "The result supports trying a bounded, default-off real dynamic Ackermann clause experiment, because low-width unit opportunities exist on the weak rows. It rejects an unbounded SAT-visible clause generator: useful unit hits are sparse compared with 2.59M inspected result pairs and 913k SAT-visible candidates."
    },
    {
      "id": "2026-07-28-qfuf-dynamic-ackermann-real-f83828f-weak-local",
      "date": "2026-07-28",
      "kind": "benchmark",
      "scope": "QF_UF weak NEQ/PEQ/SEQ manifest, local real dynamic Ackermann clause experiment requiring SLURM revalidation",
      "commit": "f83828f",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null,
        "binary": "build/primo --quiet",
        "binary_version": "primo 0.1.0; git: f83828f; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "notes": "This local run is not headline apples-to-apples evidence. Same-binary SLURM A/B revalidation is required before treating the experiment as accepted or rejected."
      },
      "command": {
        "build": "cmake --build build --target primo",
        "manifest": "cp results/qfuf-dynamic-ack-shadow-b74acfe-weak-local/manifest.txt results/qfuf-dynamic-ack-f83828f-weak-local/manifest.txt",
        "run": "python3 scripts/bench_qf_uf_full.py --repo . --root tmp/QF_UF --manifest results/qfuf-dynamic-ack-f83828f-weak-local/manifest.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --solver-arg=--euf-dynamic-ackermann --timeout 60 --out results/qfuf-dynamic-ack-f83828f-weak-local/results.csv --summary results/qfuf-dynamic-ack-f83828f-weak-local/summary.csv --log-dir results/qfuf-dynamic-ack-f83828f-weak-local/logs",
        "summarize": "python3 scripts/summarize_qfuf_dynamic_ackermann.py results/qfuf-dynamic-ack-f83828f-weak-local/results.csv --out results/qfuf-dynamic-ack-f83828f-weak-local/dynamic-ack-summary.csv"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --stats --euf-dynamic-ackermann"
      },
      "references": [
        {
          "kind": "design_note",
          "path": "docs/qfuf-disequality-propagation.md",
          "use": "Local warning for scan-based dynamic Ackermann clause experiment."
        },
        {
          "kind": "previous_local_baseline",
          "id": "2026-07-28-qfuf-dynamic-ackermann-shadow-b74acfe-weak-local",
          "use": "Same 21-file weak manifest and timeout; shadow baseline solved 20/21 with PAR2 260.742822."
        }
      ],
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 21,
        "timeout_seconds": 60,
        "manifest": "results/qfuf-dynamic-ack-f83828f-weak-local/manifest.txt"
      },
      "artifacts": {
        "summary": "results/qfuf-dynamic-ack-f83828f-weak-local/summary.csv",
        "results": "results/qfuf-dynamic-ack-f83828f-weak-local/results.csv",
        "dynamic_ackermann_summary": "results/qfuf-dynamic-ack-f83828f-weak-local/dynamic-ack-summary.csv",
        "logs": "results/qfuf-dynamic-ack-f83828f-weak-local/logs",
        "bugs": null
      },
      "summary": {
        "total": 21,
        "solved": 18,
        "wrong": 0,
        "timeouts": 3,
        "timed_out_with_stats": 3,
        "par2": 506.863169,
        "families": {
          "NEQ": {
            "total": 10,
            "solved": 9,
            "timeouts": 1,
            "wrong": 0
          },
          "PEQ": {
            "total": 8,
            "solved": 7,
            "timeouts": 1,
            "wrong": 0
          },
          "SEQ": {
            "total": 3,
            "solved": 2,
            "timeouts": 1,
            "wrong": 0
          }
        },
        "dynamic_ackermann_totals": {
          ":euf.dynamic-ack.candidates": 5020,
          ":euf.dynamic-ack.candidates-inspected": 546770890,
          ":euf.dynamic-ack.clauses-added": 990,
          ":euf.dynamic-ack.unit-clauses": 990,
          ":euf.dynamic-ack.conflict-clauses": 0,
          ":euf.dynamic-ack.duplicate-skips": 98010161,
          ":euf.dynamic-ack.nonunit-skips": 397947543,
          ":euf.dynamic-ack.satisfied-skips": 50812193,
          ":euf.dynamic-ack.width-skips": 0,
          ":euf.dynamic-ack.cap-hits": 0
        },
        "regressed_timeout_files": [
          "tmp/QF_UF/PEQ/PEQ013_size8.smt2",
          "tmp/QF_UF/SEQ/SEQ026_size7.smt2"
        ]
      },
      "verification": {
        "passed": [
          "make check passed before the f83828f implementation commit",
          "make docs passed before the f83828f implementation commit",
          "make asan-test passed before the f83828f implementation commit",
          "make tidy passed before the f83828f implementation commit",
          "make include-cleaner completed as an advisory whole-tree scan with existing warnings",
          "The focused run completed with 0 wrong answers"
        ],
        "pending": [
          "No fuzz gate was run for f83828f because the focused benchmark rejected the implementation before correctness promotion.",
          "No SLURM headline benchmark was run because the local focused gate regressed solved count and PAR2."
        ]
      },
      "evidence_status": "needs_revalidation",
      "notes": "Local warning only. The scan-based selector added 990 unit clauses and no conflicts, but repeatedly rescanned 546.8M candidates, producing two additional local timeouts and much worse local PAR2 on the weak manifest. A same-binary SLURM A/B comparison of f83828f default versus --euf-dynamic-ackermann is still required for an apples-to-apples decision."
    },
    {
      "id": "2026-07-29-qfuf-diseq-ackermann-fuzzsmt-480b41d-1000",
      "date": "2026-07-29",
      "kind": "fuzz",
      "scope": "QF_UF FuzzSMT merge gate for default-off watched disequality Ackermann propagation",
      "commit": "480b41d",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null,
        "binary": "build/primo --quiet --euf-diseq-ackermann",
        "binary_version": "primo 0.1.0; git: 480b41d; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "notes": "Local merge-gate fuzzing only. This is correctness evidence for the default-off option, not headline performance evidence."
      },
      "command": {
        "install_reference": "make contrib-z3",
        "run": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet --euf-diseq-ackermann' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 480411 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-diseq-ack-480b41d-1000-z3"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --euf-diseq-ackermann"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 480411,
        "count": 1000,
        "timeout_seconds": 5,
        "fuzzer_args": "-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-diseq-ack-480b41d-1000-z3/summary.csv",
        "generated": "fuzz-results/qf_uf-fuzzsmt-diseq-ack-480b41d-1000-z3/generated",
        "bugs": "fuzz-results/qf_uf-fuzzsmt-diseq-ack-480b41d-1000-z3/bugs"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong_answer": 0,
        "crash": 0,
        "parser_or_type_errors": 0,
        "timeouts": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "ours": {
          "sat": 893,
          "unsat": 107
        },
        "refs": {
          "sat": 893,
          "unsat": 107
        }
      },
      "verification": {
        "passed": [
          "make contrib-z3 installed the local z3 reference wrapper",
          "1000 generated QF_UF FuzzSMT cases all matched z3 with --euf-diseq-ackermann enabled"
        ],
        "invalidated": [
          "Earlier local attempts in fuzz-results/qf_uf-fuzzsmt-diseq-ack-480b41d-1000 and fuzz-results/qf_uf-fuzzsmt-diseq-ack-480b41d-1000-rerun are not evidence because the first lacked FuzzSMT and the second lacked a z3 reference command."
        ]
      },
      "evidence_status": "current_local",
      "notes": "This satisfies the local merge-gate fuzz requirement for the new default-off solver option. It does not replace SLURM campaign evidence before any default or headline performance promotion."
    },
    {
      "id": "2026-07-29-slurm-qfuf-drop-diseq-ackermann-117301",
      "date": "2026-07-29",
      "kind": "benchmark",
      "scope": "SLURM default versus --euf-diseq-ackermann comparison on the 124-row interesting.txt QF_UF drop manifest",
      "commit": "546738e",
      "environment": {
        "type": "slurm",
        "host": "<slurm-cluster>",
        "slurm_job_id": "117301",
        "binary": "<remote-workdir>/build-slurm-rel/primo --quiet --stats",
        "binary_version": "primo 0.1.0; git: 546738e-dirty; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "notes": "The dirty suffix is caused by the SLURM preparation workflow excluding tracked artifact directories and rebuilding the vendored CaDiCaL checkout; solver source and benchmark manifest were synced from commit 546738e."
      },
      "command": {
        "manifest_source": "user-supplied interesting.txt drop manifest, stored only as tracked relative paths",
        "manifest": "benchmarks/interesting-drop-2026-07-29.txt",
        "validate_sbatch": "python3 scripts/slurm_validate_sbatch.py /tmp/primo-qfuf-drop-diseq-ack-compare.sbatch",
        "bash_n": "bash -n /tmp/primo-qfuf-drop-diseq-ack-compare.sbatch",
        "workspace_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --ssh-config <ssh-config> --remote <slurm-alias> --remote-dir <remote-workdir> --local-dir . --target primo --jobs 4",
        "submit": "sbatch /tmp/primo-qfuf-drop-diseq-ack-compare.sbatch with PRIMO_WORKDIR=<remote-workdir>, 2 variants x 4 shards, timeout 30s",
        "default": "python3 scripts/bench_qf_uf_full.py --repo <remote-workdir> --root tmp --solver <remote-workdir>/build-slurm-rel/primo --solver-arg=--quiet --solver-arg=--stats --timeout 30 --manifest benchmarks/interesting-drop-2026-07-29.txt --shards 4 --shard-index <0..3>",
        "heuristic": "same command with --solver-arg=--euf-diseq-ackermann",
        "render": "standard-library local aggregation over collected shard CSVs into results/qfuf-drop-diseqack-117301/report.html"
      },
      "solver": {
        "name": "Primo",
        "variants": {
          "default": "./build-slurm-rel/primo --quiet --stats",
          "diseq_ack": "./build-slurm-rel/primo --quiet --stats --euf-diseq-ackermann"
        }
      },
      "inputs": {
        "generator": null,
        "logic": "QF_UF",
        "seed": null,
        "count": 124,
        "timeout_seconds": 30,
        "manifest": "benchmarks/interesting-drop-2026-07-29.txt",
        "families": {
          "Goel": 4,
          "NEQ": 17,
          "PEQ": 23,
          "QG": 74,
          "SEQ": 6
        }
      },
      "artifacts": {
        "summary_json": "results/qfuf-drop-diseqack-117301/summary.json",
        "summary_csv": "results/qfuf-drop-diseqack-117301/summary.csv",
        "comparison_csv": "results/qfuf-drop-diseqack-117301/comparison.csv",
        "default_csv": "results/qfuf-drop-diseqack-117301/default-merged.csv",
        "heuristic_csv": "results/qfuf-drop-diseqack-117301/diseq_ack-merged.csv",
        "html": "results/qfuf-drop-diseqack-117301/report.html",
        "logs": "results/qfuf-drop-diseqack-117301/slurm-logs"
      },
      "summary": {
        "default": {
          "total": 124,
          "solved": 113,
          "timeouts": 11,
          "errors": 0,
          "unsupported": 0,
          "wrong": 0,
          "par2": 1316.963966,
          "seconds_sum": 987.37247
        },
        "diseq_ack": {
          "total": 124,
          "solved": 115,
          "timeouts": 9,
          "errors": 0,
          "unsupported": 0,
          "wrong": 0,
          "par2": 1229.483639,
          "seconds_sum": 959.808992
        },
        "delta": {
          "diseq_ack_minus_default_par2": -87.480327,
          "diseq_ack_minus_default_seconds": -27.563478,
          "answer_or_status_mismatches": 2,
          "wrong_rows_total": 0,
          "heuristic_faster_by_at_least_1s": 11,
          "heuristic_slower_by_at_least_1s": 3
        },
        "families": {
          "Goel": {
            "default_solved": 4,
            "diseq_ack_solved": 4,
            "default_timeouts": 0,
            "diseq_ack_timeouts": 0,
            "delta_par2": -0.656913
          },
          "NEQ": {
            "default_solved": 16,
            "diseq_ack_solved": 16,
            "default_timeouts": 1,
            "diseq_ack_timeouts": 1,
            "delta_par2": -10.031986
          },
          "PEQ": {
            "default_solved": 16,
            "diseq_ack_solved": 18,
            "default_timeouts": 7,
            "diseq_ack_timeouts": 5,
            "delta_par2": -74.393422
          },
          "QG": {
            "default_solved": 72,
            "diseq_ack_solved": 72,
            "default_timeouts": 2,
            "diseq_ack_timeouts": 2,
            "delta_par2": -2.178046
          },
          "SEQ": {
            "default_solved": 5,
            "diseq_ack_solved": 5,
            "default_timeouts": 1,
            "diseq_ack_timeouts": 1,
            "delta_par2": -0.21996
          }
        },
        "status_changes": [
          {
            "file": "tmp/QF_UF/PEQ/PEQ003_size10.smt2",
            "default": "timeout unknown",
            "diseq_ack": "ok unsat",
            "default_seconds": 30.037461,
            "diseq_ack_seconds": 28.163454,
            "diseq_ack_propagated": 0
          },
          {
            "file": "tmp/QF_UF/PEQ/PEQ014_size10.smt2",
            "default": "timeout unknown",
            "diseq_ack": "ok unsat",
            "default_seconds": 30.037316,
            "diseq_ack_seconds": 27.030698,
            "diseq_ack_propagated": 0
          }
        ],
        "diseq_ack_stats": {
          ":euf.diseq-ack.candidates": 4922,
          ":euf.diseq-ack.queue-pushes": 15204418,
          ":euf.diseq-ack.queue-pops": 8160494,
          ":euf.diseq-ack.unit": 231570,
          ":euf.diseq-ack.conflict": 5,
          ":euf.diseq-ack.propagated": 231570,
          ":euf.diseq-ack.reason-lits": 361457,
          ":euf.diseq-ack.satisfied-skips": 434222,
          ":euf.diseq-ack.missing-arg-atom": 40448,
          ":euf.diseq-ack.width-skips": 0,
          ":euf.diseq-ack.queue-budget-cutoffs": 0,
          ":euf.diseq-ack.per-symbol-cutoffs": 17457,
          "active_candidate_rows": 81
        }
      },
      "verification": {
        "passed": [
          "Manifest contained 124 benchmark-relative QF_UF rows and every row resolved under tmp/QF_UF locally before submission.",
          "Validated local sbatch wrapper with scripts/slurm_validate_sbatch.py and bash -n.",
          "Immediately before sbatch, check-only preflight confirmed the remote binary reported git 546738e and CaDiCaL cadical-3.0.0-7b99c07.",
          "SLURM job 117301 tasks 0-7 completed with exit code 0:0.",
          "Default and heuristic variants had zero wrong answers; the two answer/status mismatches are default timeout versus heuristic unsat."
        ],
        "limitations": [
          "The run used a 30s timeout on the 124-row interesting drop only; it is not a full QF_UF campaign or default-promotion result.",
          "The benchmark harness family field is coarse in this run because the manifest rows include QF_UF/ prefixes and the command used --root tmp; family summaries were derived from the file paths during HTML/report aggregation.",
          "The two favorable PEQ status changes had zero delivered diseq-Ackermann propagations in their per-file stats, so they should not be claimed as direct Ackermann-propagation wins without repeat/noise analysis."
        ]
      },
      "evidence_status": "current_slurm",
      "notes": "The watched disequality-Ackermann option is correctness-clean on this focused SLURM comparison and improves solved count by 2 at 30s, all from PEQ rows. It remains default-off: the direct Ackermann watcher was active mainly on QG rows, QG only improved slightly in aggregate, and the PEQ status changes did not show delivered Ackermann propagations."
    },
    {
      "id": "2026-07-29-local-qg-iso-icl-repgen013-phase-timing-f0e35e7",
      "date": "2026-07-29",
      "kind": "profile",
      "scope": "Focused local phase-timing sanity check for QG-classification/qg6/iso_icl_repgen013 comparing default and --euf-diseq-ackermann",
      "commit": "f0e35e7",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "./build/primo --quiet --stats",
        "binary_version": "primo 0.1.0; git f0e35e7"
      },
      "command": {
        "manifest": "/tmp/primo-qg-iso-icl-repgen013.txt containing QG-classification/qg6/iso_icl_repgen013.smt2",
        "default": "python3 scripts/bench_qf_uf_full.py --repo . --root tmp/QF_UF --manifest /tmp/primo-qg-iso-icl-repgen013.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --timeout 30 --out results/qg-iso-icl-repgen013-phase-f0e35e7/default.csv --summary results/qg-iso-icl-repgen013-phase-f0e35e7/default-summary.csv",
        "heuristic": "same command with --solver-arg=--euf-diseq-ackermann and diseq_ack output paths",
        "render": "python3 scripts/render_benchmark_matrix_html.py --title 'QG iso_icl_repgen013 phase timing' --timeout 30 --metadata commit=f0e35e7 --variant default=results/qg-iso-icl-repgen013-phase-f0e35e7/default.csv --variant diseq_ack=results/qg-iso-icl-repgen013-phase-f0e35e7/diseq_ack.csv --strip-prefix tmp/QF_UF/ --strip-suffix .smt2 --out results/qg-iso-icl-repgen013-phase-f0e35e7/matrix.html --summary-json results/qg-iso-icl-repgen013-phase-f0e35e7/matrix-summary.json"
      },
      "inputs": {
        "logic": "QF_UF",
        "count": 1,
        "timeout_seconds": 30,
        "files": [
          "tmp/QF_UF/QG-classification/qg6/iso_icl_repgen013.smt2"
        ]
      },
      "artifacts": {
        "default_csv": "results/qg-iso-icl-repgen013-phase-f0e35e7/default.csv",
        "heuristic_csv": "results/qg-iso-icl-repgen013-phase-f0e35e7/diseq_ack.csv",
        "html": "results/qg-iso-icl-repgen013-phase-f0e35e7/matrix.html",
        "summary_json": "results/qg-iso-icl-repgen013-phase-f0e35e7/matrix-summary.json"
      },
      "summary": {
        "default": {
          "status": "ok",
          "answer": "unsat",
          "harness_seconds": 4.926206,
          "time_parse_us": 1599,
          "time_frontend_us": 653,
          "time_preprocessing_us": 5399,
          "time_solve_us": 4913906,
          "time_total_us": 4921592,
          "diseq_ack_propagated": 0,
          "diseq_ack_queue_pops": 0,
          "euf_theory_conflicts": 102337,
          "sat_conflicts": 64947,
          "sat_decisions": 249644
        },
        "diseq_ack": {
          "status": "ok",
          "answer": "unsat",
          "harness_seconds": 5.161605,
          "time_parse_us": 1332,
          "time_frontend_us": 807,
          "time_preprocessing_us": 5977,
          "time_solve_us": 5149851,
          "time_total_us": 5157991,
          "diseq_ack_candidates": 64,
          "diseq_ack_propagated": 19299,
          "diseq_ack_queue_pops": 225061,
          "euf_theory_conflicts": 103129,
          "sat_conflicts": 59045,
          "sat_decisions": 246124
        }
      },
      "verification": {
        "passed": [
          "make build rebuilt Primo at f0e35e7 before the focused run",
          "Both variants returned ok unsat with zero wrong-answer indication in the harness CSVs",
          "The generated matrix HTML includes :time.*-us counters by default"
        ],
        "limitations": [
          "Single local run only; timing deltas are not performance evidence beyond diagnosing phase dominance",
          "CLI file I/O and process startup are excluded from :time.total-us but included in harness seconds"
        ]
      },
      "evidence_status": "current_local",
      "notes": "The suspicious near-equal times are not caused by parsing or preprocessing: parse, frontend, and preprocessing are below 10 ms on both variants. The work difference is in solving: --euf-diseq-ackermann produced 19299 pending Ackermann propagations and performed 225061 queue pops, while this single repeat was slower by about 0.24s. Later callback-delivery instrumentation at a6a1907 showed that pending propagation counts can substantially overstate literals actually returned through CaDiCaL, so this entry is phase-dominance evidence, not direct delivery evidence or a proven heuristic win."
    },
    {
      "id": "2026-07-29-local-qg-iso-icl-repgen013-ack-callback-delivery-a6a1907",
      "date": "2026-07-29",
      "kind": "diagnostic",
      "scope": "Focused local check of whether --euf-diseq-ackermann propagations are actually returned to CaDiCaL on QG-classification/qg6/iso_icl_repgen013",
      "commit": "a6a1907",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "./build/primo --quiet --stats",
        "binary_version": "primo 0.1.0; git a6a1907; Release; CaDiCaL cadical-3.0.0-7b99c07"
      },
      "command": {
        "manifest": "/tmp/primo-qg-iso-icl-repgen013.txt containing QG-classification/qg6/iso_icl_repgen013.smt2",
        "default": "python3 scripts/bench_qf_uf_full.py --repo . --root tmp/QF_UF --manifest /tmp/primo-qg-iso-icl-repgen013.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --timeout 30 --out results/qg-iso-icl-repgen013-ack-returned-a6a1907/default.csv --summary results/qg-iso-icl-repgen013-ack-returned-a6a1907/default-summary.json",
        "heuristic": "same command with --solver-arg=--euf-diseq-ackermann and diseq_ack output paths",
        "render": "python3 scripts/render_benchmark_matrix_html.py --variant default=results/qg-iso-icl-repgen013-ack-returned-a6a1907/default.csv --variant diseq_ack=results/qg-iso-icl-repgen013-ack-returned-a6a1907/diseq_ack.csv --timeout 30 --title \"QG iso_icl_repgen013 Ackermann delivery check\" --out results/qg-iso-icl-repgen013-ack-returned-a6a1907/matrix.html --summary-json results/qg-iso-icl-repgen013-ack-returned-a6a1907/matrix-summary.json"
      },
      "inputs": {
        "logic": "QF_UF",
        "count": 1,
        "timeout_seconds": 30,
        "files": [
          "tmp/QF_UF/QG-classification/qg6/iso_icl_repgen013.smt2"
        ]
      },
      "artifacts": {
        "default_csv": "results/qg-iso-icl-repgen013-ack-returned-a6a1907/default.csv",
        "heuristic_csv": "results/qg-iso-icl-repgen013-ack-returned-a6a1907/diseq_ack.csv",
        "html": "results/qg-iso-icl-repgen013-ack-returned-a6a1907/matrix.html",
        "summary_json": "results/qg-iso-icl-repgen013-ack-returned-a6a1907/matrix-summary.json"
      },
      "summary": {
        "default": {
          "status": "ok",
          "answer": "unsat",
          "harness_seconds": 5.082254,
          "time_parse_us": 2038,
          "time_frontend_us": 1041,
          "time_preprocessing_us": 8757,
          "time_solve_us": 5064670,
          "time_total_us": 5076555,
          "diseq_ack_candidates": 0,
          "diseq_ack_propagated_pending": 0,
          "diseq_ack_returned_to_cadical": 0,
          "diseq_ack_pending_cleared": 0,
          "diseq_ack_queue_pops": 0,
          "diseq_ack_reason_lits": 0,
          "stored_euf_propagations_legacy_counter": 44,
          "sat_conflicts": 64947,
          "sat_decisions": 249644,
          "sat_propagations": 6296216,
          "incremental_explain_calls": 3478598,
          "incremental_explain_bfs_searches": 2027954,
          "incremental_merges": 2801685,
          "incremental_disequality_checks": 1376759
        },
        "diseq_ack": {
          "status": "ok",
          "answer": "unsat",
          "harness_seconds": 4.856749,
          "time_parse_us": 1330,
          "time_frontend_us": 660,
          "time_preprocessing_us": 5632,
          "time_solve_us": 4845008,
          "time_total_us": 4852656,
          "diseq_ack_candidates": 64,
          "diseq_ack_propagated_pending": 19299,
          "diseq_ack_returned_to_cadical": 817,
          "diseq_ack_pending_cleared": 18482,
          "diseq_ack_queue_pops": 225061,
          "diseq_ack_reason_lits": 38068,
          "stored_euf_propagations_legacy_counter": 19339,
          "sat_conflicts": 59045,
          "sat_decisions": 246124,
          "sat_propagations": 5890154,
          "incremental_explain_calls": 3541291,
          "incremental_explain_bfs_searches": 2052397,
          "incremental_merges": 2705813,
          "incremental_disequality_checks": 1297436
        },
        "interpretation": {
          "pending_to_return_ratio": "19299 pending Ackermann propagations, 817 actually returned through cb_propagate, 18482 cleared before callback return",
          "search_delta": "Ackermann mode reduced SAT conflicts from 64947 to 59045, decisions from 249644 to 246124, and SAT propagations from 6296216 to 5890154, while increasing explain calls from 3478598 to 3541291.",
          "phase_delta": "Parse, frontend, and preprocessing stayed below 13 ms combined; the run is solve dominated in both variants."
        }
      },
      "verification": {
        "passed": [
          "make build rebuilt Primo at a6a1907 before the focused run",
          "Both variants returned ok unsat with zero wrong-answer indication in the harness CSVs",
          "matrix-summary.json validates as JSON and the generated HTML includes the new ack-ret and ack-clear counters",
          "make check, make lint, and make docs passed before committing the instrumentation change"
        ],
        "limitations": [
          "Single local repeat only; elapsed-time delta is not reliable performance evidence",
          "This run diagnoses callback delivery accounting and phase timing only; it is not a SLURM benchmark or fuzz gate",
          "The legacy :euf.propagation.delivered counter counts stored propagations, not necessarily callback-returned literals"
        ]
      },
      "evidence_status": "current_local",
      "notes": "The mechanism is working but the earlier propagated/delivered wording overstated direct SAT-level delivery. On this instance most Ackermann literals are produced while processing an assignment batch and then cleared before CaDiCaL asks for another cb_propagate result. The actually returned literals still alter search counters, but the effect is small enough that elapsed time can flip between repeats."
    },
    {
      "id": "2026-07-29-main-qfuf-diseq-ackermann-fuzzsmt-cbe280f-1000",
      "date": "2026-07-29",
      "kind": "fuzz",
      "scope": "Fresh QF_UF FuzzSMT merge gate for the main squash commit with the default-off disequality Ackermann mode enabled.",
      "commit": "cbe280f",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "./build/primo --quiet --euf-diseq-ackermann",
        "binary_version": "primo 0.1.0; git cbe280f; build Release; CaDiCaL cadical-3.0.0-7b99c07"
      },
      "command": {
        "build": "make build",
        "run": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet --euf-diseq-ackermann' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 280411 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-diseq-ack-cbe280f-1000-z3"
      },
      "fuzzer": {
        "generator": "fuzzsmt",
        "reference_solver": "z3",
        "logic": "QF_UF",
        "count": 1000,
        "seed": 280411,
        "timeout_seconds": 5,
        "fuzzer_args": "-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2"
      },
      "artifacts": {
        "summary_csv": "fuzz-results/qf_uf-fuzzsmt-diseq-ack-cbe280f-1000-z3/summary.csv",
        "generated_dir": "fuzz-results/qf_uf-fuzzsmt-diseq-ack-cbe280f-1000-z3/generated",
        "bugs_dir": "fuzz-results/qf_uf-fuzzsmt-diseq-ack-cbe280f-1000-z3/bugs"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong_answer": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "unknown_output": 0,
        "reference_disagreement": 0,
        "bug_files": 0
      },
      "verification": {
        "passed": [
          "make build rebuilt Primo at cbe280f before fuzzing",
          "1000 generated QF_UF cases all reported PASS against z3",
          "fuzz-results/qf_uf-fuzzsmt-diseq-ack-cbe280f-1000-z3/bugs contained zero files"
        ],
        "limitations": [
          "Local merge gate only; not a full SLURM campaign",
          "The option remains default-off and this run is not evidence for default promotion or a performance claim"
        ]
      },
      "evidence_status": "current_local",
      "notes": "This records the fresh correctness gate for the exact main commit that received the curated QF_UF disequality Ackermann merge."
    },
    {
      "id": "2026-07-29-qfuf-get-model-fuzzsmt-bcb482d",
      "started_at": "2026-07-29T18:43:00+02:00",
      "recorded_at": "2026-07-29",
      "kind": "fuzz",
      "scope": "QF_UF get-model implementation answer comparison over FuzzSMT generated cases",
      "commit": "bcb482d",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "slurm_job_id": null
      },
      "command": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-model-bcb482d > fuzz-results/qf_uf-fuzzsmt-model-bcb482d.log",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 0,
        "count": 1000,
        "timeout_seconds": 5,
        "manifest": null
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-model-bcb482d/summary.csv",
        "results": "fuzz-results/qf_uf-fuzzsmt-model-bcb482d/generated",
        "logs": "fuzz-results/qf_uf-fuzzsmt-model-bcb482d.log",
        "bugs": "fuzz-results/qf_uf-fuzzsmt-model-bcb482d/bugs"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "parser_or_type_error": 0,
        "reference_disagreement": 0,
        "sat": 897,
        "unsat": 103
      },
      "evidence_status": "current",
      "notes": "Fresh local merge-gate answer comparison for the QF_UF model-printing change. Generated bugs directory is empty. This does not validate model syntax by itself; see the paired Dolmen entry for get-model validation over the same generated files."
    },
    {
      "id": "2026-07-29-qfuf-get-model-dolmen-bcb482d",
      "started_at": "2026-07-29T18:44:00+02:00",
      "recorded_at": "2026-07-29",
      "kind": "model-validation",
      "scope": "Dolmen validation of Primo QF_UF get-model responses over the FuzzSMT generated corpus",
      "commit": "bcb482d",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "slurm_job_id": null
      },
      "command": "PATH=/tmp/primo-opam-root/primo-system/bin:$PATH python3 scripts/validate_qfuf_models_with_dolmen.py --solver ./build/primo --solver-arg=--quiet --timeout 5 --dolmen-timeout 10 --out results/qfuf-dolmen-fuzzsmt-bcb482d fuzz-results/qf_uf-fuzzsmt-model-bcb482d/generated/*.smt2 > results/qfuf-dolmen-fuzzsmt-bcb482d.log",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet with :produce-models true and appended get-model"
      },
      "references": [
        {
          "name": "Dolmen",
          "argv": "dolmen 0.10 --check-model=true -r response.rsmt2 problem.smt2"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 0,
        "count": 1000,
        "timeout_seconds": 5,
        "manifest": "fuzz-results/qf_uf-fuzzsmt-model-bcb482d/generated/*.smt2"
      },
      "artifacts": {
        "summary": "results/qfuf-dolmen-fuzzsmt-bcb482d/summary.csv",
        "results": "results/qfuf-dolmen-fuzzsmt-bcb482d",
        "logs": "results/qfuf-dolmen-fuzzsmt-bcb482d.log",
        "bugs": null
      },
      "summary": {
        "total": 1000,
        "pass": 897,
        "not_sat": 103,
        "model_error": 0,
        "solver_error": 0,
        "solver_timeout": 0,
        "dolmen_timeout": 0,
        "crash": 0,
        "unsupported": 0
      },
      "evidence_status": "current",
      "notes": "Dolmen was installed in a temporary OPAM root under /tmp for local validation; no Dolmen files are vendored or committed. Dolmen rejected the initial bare abstract-value form, which led to typed abstract values of the form (as @uc_<sort>_<n> Sort); this entry records the passing rerun on commit bcb482d."
    },
    {
      "id": "2026-07-29-qfuf-model-preprocessing-fuzzsmt-6a6336c",
      "started_at": "2026-07-29T19:05:00+02:00",
      "recorded_at": "2026-07-29",
      "kind": "fuzz",
      "scope": "QF_UF model-preprocessing reconstruction answer comparison over FuzzSMT generated cases",
      "commit": "6a6336c",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "slurm_job_id": null
      },
      "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 633611 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt-model-prepro-6a6336c-1000-z3 > fuzz-results/qf_uf-fuzzsmt-model-prepro-6a6336c-1000-z3.log",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet",
        "reported_version": "primo 0.1.0, git 6a6336c, Release, CaDiCaL cadical-3.0.0-7b99c07"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 633611,
        "count": 1000,
        "timeout_seconds": 5,
        "fuzzer_args": "-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2",
        "manifest": null
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt-model-prepro-6a6336c-1000-z3/summary.csv",
        "results": "fuzz-results/qf_uf-fuzzsmt-model-prepro-6a6336c-1000-z3/generated",
        "logs": "fuzz-results/qf_uf-fuzzsmt-model-prepro-6a6336c-1000-z3.log",
        "bugs": "fuzz-results/qf_uf-fuzzsmt-model-prepro-6a6336c-1000-z3/bugs"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "parser_or_type_error": 0,
        "reference_disagreement": 0,
        "sat": 893,
        "unsat": 107,
        "bug_files": 0
      },
      "evidence_status": "current_local",
      "notes": "Fresh local merge-gate answer comparison after enabling solved-constant substitution under get-model via preprocessing model reconstruction assignments. Generated bugs directory is empty. This is correctness evidence for the local branch, not SLURM performance evidence."
    },
    {
      "id": "2026-07-29-qfuf-model-preprocessing-dolmen-6a6336c",
      "started_at": "2026-07-29T19:06:00+02:00",
      "recorded_at": "2026-07-29",
      "kind": "model-validation",
      "scope": "Dolmen validation of Primo QF_UF get-model responses over the model-preprocessing FuzzSMT corpus",
      "commit": "6a6336c",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "slurm_job_id": null
      },
      "command": "PATH=/tmp/primo-opam-root/primo-system/bin:$PATH python3 scripts/validate_qfuf_models_with_dolmen.py --solver ./build/primo --solver-arg=--quiet --timeout 5 --dolmen-timeout 10 --out results/qfuf-dolmen-fuzzsmt-model-prepro-6a6336c fuzz-results/qf_uf-fuzzsmt-model-prepro-6a6336c-1000-z3/generated/*.smt2 > results/qfuf-dolmen-fuzzsmt-model-prepro-6a6336c.log",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet with :produce-models true and appended get-model",
        "reported_version": "primo 0.1.0, git 6a6336c, Release, CaDiCaL cadical-3.0.0-7b99c07"
      },
      "references": [
        {
          "name": "Dolmen",
          "argv": "dolmen 0.10 --check-model=true -r response.rsmt2 problem.smt2"
        }
      ],
      "inputs": {
        "generator": "fuzzsmt",
        "logic": "QF_UF",
        "seed": 633611,
        "count": 1000,
        "timeout_seconds": 5,
        "manifest": "fuzz-results/qf_uf-fuzzsmt-model-prepro-6a6336c-1000-z3/generated/*.smt2"
      },
      "artifacts": {
        "summary": "results/qfuf-dolmen-fuzzsmt-model-prepro-6a6336c/summary.csv",
        "results": "results/qfuf-dolmen-fuzzsmt-model-prepro-6a6336c",
        "logs": "results/qfuf-dolmen-fuzzsmt-model-prepro-6a6336c.log",
        "bugs": null
      },
      "summary": {
        "total": 1000,
        "pass": 893,
        "not_sat": 107,
        "model_error": 0,
        "solver_error": 0,
        "solver_timeout": 0,
        "dolmen_timeout": 0,
        "crash": 0,
        "unsupported": 0
      },
      "evidence_status": "current_local",
      "notes": "Dolmen was installed in a temporary OPAM root under /tmp for local validation; no Dolmen files are vendored or committed. This validates the printed models against the original SMT-LIB problems after preprocessing reconstruction."
    },
    {
      "id": "2026-07-23-slurm-qfuf-smac-gap-explain-modes-113148",
      "started_at": "2026-07-23",
      "recorded_at": "2026-07-23",
      "kind": "slurm_smac",
      "scope": "First real (80-trial) SMAC run over the widened qfuf-gap config space, adding reoriented-proof-forest/structural-proof-forest to euf_explain_search, to test whether propagation/explain-mode tuning helps the known-hard NEQ016_size8/PEQ002_size8-adjacent files. A same-day lightweight 24-trial local run (8s timeout, 3-unique-instance intensifier subsample) had already come back inconclusive/negative; this is the follow-up with a real budget on the cluster.",
      "commit": "f3388b5",
      "environment": {
        "type": "slurm",
        "host": "node-head submit, ran on node-07",
        "slurm_job_id": "113148",
        "remote_workdir": "<slurm-workdir>"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/llm2smt_slurm_ssh_config --remote-dir <slurm-workdir> (synced f3388b5, rebuilt CaDiCaL + build-slurm-rel/primo, verified version); sbatch scripts/slurm_qfuf_smac.sbatch with script defaults (TRIALS=80 TIMEOUT=45 VALIDATION_TIMEOUT=120 SEED=20260718, train/validate = benchmarks/qfuf-smac-gap-{train,validate}.txt, no guard manifest)",
      "solver": {
        "name": "Primo",
        "argv": "<slurm-workdir>/build-slurm-rel/primo",
        "version": "primo 0.1.0; git: f3388b5; cadical: cadical-3.0.0-7b99c07"
      },
      "inputs": {
        "train_manifest": "benchmarks/qfuf-smac-gap-train.txt",
        "validate_manifest": "benchmarks/qfuf-smac-gap-validate.txt",
        "guard_manifest": null,
        "trials": 80,
        "train_timeout_seconds": 45,
        "validation_timeout_seconds": 120,
        "seed": 20260718
      },
      "artifacts": {
        "remote_out_dir": "<slurm-workdir>/results/smac/qfuf-gap-113148",
        "remote_stdout": "<slurm-workdir>/logs/primo-qfuf-smac-113148.out",
        "local_result": "results/smac/qfuf-gap-113148/result.json",
        "local_incumbent": "results/smac/qfuf-gap-113148/incumbent.json",
        "local_target_runs": "results/smac/qfuf-gap-113148/target-runs.csv",
        "local_trial_summary": "results/smac/qfuf-gap-113148/trial-summary.csv",
        "local_validation_runs": "results/smac/qfuf-gap-113148/validation-runs.csv",
        "local_stdout": "logs/primo-qfuf-smac-113148.out"
      },
      "summary": {
        "submission": "Job 113148 completed with sacct state COMPLETED, exit 0:0, elapsed 00:38:03.",
        "purpose": "Test whether SMAC can find an option combination (including the now-tunable reoriented-proof-forest/structural-proof-forest explain modes and prop_budget/prop_delivery/prop_interval/prop_threshold) that helps NEQ016_size8, PEQ002_size8, PEQ013_size8, PEQ014_size10, PEQ003_size10 (the qfuf-smac-gap validate manifest) beyond the default profile.",
        "incumbent": "--preprocessing-adaptive-extra-passes=8 --preprocessing-adaptive-shrink-percent=3 --no-eq-bridge --finite-domain-equality-definitions --preprocess=auto --euf-engine=incremental --euf-explain-search=bidirectional --euf-prop=auto --no-finite-domain-post-amo --euf-prop-budget=500 --euf-prop-delivery=unlimited --prop-interval=32 --prop-assign-threshold=0.50 --theory-phase=polarity",
        "validation_cost": "default 440.90 versus incumbent 1049.25 (7-file validate manifest, 120s timeout, cost = 2x timeout on timeout/error)",
        "per_file": "default: NEQ015_size6 ok 12.3s, NEQ016_size8 TIMEOUT, PEQ002_size8 ok 43.4s, PEQ003_size10 ok 26.6s, PEQ013_size8 ok 70.3s, PEQ014_size10 ok 21.5s, SEQ026_size7 ok 26.8s. incumbent: NEQ015_size6 ok 12.8s, NEQ016_size8 TIMEOUT (unchanged), PEQ002_size8 ok 56.0s (regressed), PEQ003_size10 TIMEOUT (regressed from 26.6s solved), PEQ013_size8 TIMEOUT (regressed from 70.3s solved), PEQ014_size10 TIMEOUT (regressed from 21.5s solved), SEQ026_size7 ok 20.5s (improved).",
        "decision": "Reject the incumbent. SMAC intensification only compares configs against 3 of the 8 train instances at a time (abstract_intensifier.py 'Cut instance-seed keys to 3 entries'), so an 80-trial budget still overfits to that subsample: the incumbent regressed 3 of 7 validate files from solved to timeout while only marginally improving 1, and NEQ016_size8 (the original motivating file) stayed unsolved either way. Confirms the qualitative conclusion already reached by profiling (docs/euf.md): these hard files are search-heuristic-bound, not option/propagation-tuning-bound, and no SMAC budget explored here changes that."
      },
      "evidence_status": "rejected",
      "notes": "Direct follow-up to the user asking whether propagation could be made more aggressive for structural-proof-forest and whether SMAC tuning could help the known-hard files. A same-day 24-trial local smoke run (8s timeout) had already shown the same qualitative pattern (incumbent regressing on the validate set) but was too small a budget to trust; this real 80-trial cluster run confirms the negative result was not a budget artifact. euf_explain_search=bidirectional (already the default) remained the intensifier's SMAC-selected choice throughout -- reoriented-proof-forest/structural-proof-forest, now tunable after this session's config-space fix, were sampled during the run but never became incumbent, consistent with the primo.html finding that these hard files' cost is dominated by CDCL search rather than EUF explain-mode choice."
    },
    {
      "id": "2026-07-23-qf-lra-milestone1-fuzz-smoke-gate",
      "started_at": "2026-07-23",
      "recorded_at": "2026-07-23",
      "kind": "fuzz",
      "scope": "Fuzz-gate smoke check for QF_LRA Milestone 1 (frontend + batch Simplex tableau), required by AGENTS.md before treating a new logic as minimally working. Two rounds: first round found a real coverage bug (let-bound literal coefficients unrecognized), second round re-verified after the fix.",
      "commit": "d5d6943 (bug found and fixed within this same session; a9f3d3d is the commit this entry is recorded against)",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build-asan-ws/primo (Debug, ASAN+UBSan)"
      },
      "command": "PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver ./build-asan-ws/primo --refs z3 --logic QF_LRA --count 300 --timeout 5 --fuzzer-args '-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_lra-smoke2 --seed 1",
      "benchmark": {
        "suite": "fuzzsmt-generated QF_LRA, referenced against z3",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "fuzz-results/qf_lra-smoke/ (round 1, pre-fix) and fuzz-results/qf_lra-smoke2/ (round 2, post-fix) -- local, not committed (gitignored)."
      },
      "summary": {
        "round1_pre_fix": "300 cases: 257 UNSUPPORTED_INPUT (sat refs), 38 UNSUPPORTED_INPUT (unsat refs), 5 CRASH, 0 PASS. Nearly universal UNSUPPORTED_INPUT traced to a real bug: build_times/build_divide recognized a literal `*`/`/` operand by pattern-matching the raw S-expression before ever calling build_term, so a let-bound alias of a literal (e.g. `(let ((c 3)) (* c x))`) was never recognized as a coefficient, even though it resolves to one after build_term's own let-binding lookup. fuzzsmt let-binds nearly every literal in its QF_LRA output, so this rejected almost all fuzzer-generated input.",
        "fix": "Rewrote build_times/build_divide to build both operands via build_term first (which already resolves let-bindings, definitions, and nested arithmetic that constant-folds via TermManager's own mk_plus/mk_times), then check the *resulting* term's TermKind::Rational-ness -- simpler than the original raw-syntax-matching design, not just more correct. The top-level bare-numeral-atom fast path was also simplified to a plain util::Rational::parse(expr.atom) check inside build_term's Atom branch, since compound literal forms (`(- lit)`, `(/ lit n)`) are now handled correctly by the ordinary build_minus/build_divide recursive-build path with no special-casing needed.",
        "round2_post_fix": "Same 300-case campaign re-run after the fix: 251 UNSUPPORTED_INPUT (sat refs), 17 UNSUPPORTED_INPUT (unsat refs), 20 PASS (unsat/unsat), 3 PASS (sat/sat), 6 CRASH, 3 TIMEOUT (5s budget). Zero wrong-answer disagreements against z3 across both rounds -- the critical soundness property held throughout.",
        "crash_triage": "All 6 crashes share one signature: AddressSanitizer stack-overflow inside primo::smtlib::SExpr's recursive copy constructor, triggered purely by S-expression nesting depth, before any theory-specific code runs. Confirmed NOT QF_LRA-specific: reproduced the same fuzzer settings against QF_UF (100 cases) with zero crashes, but QF_UF's fuzzsmt output at these settings averaged ~136 lines/file versus QF_LRA's ~534 lines/file (fuzzsmt's arithmetic term generator produces deeper nesting) -- QF_LRA just happens to hit the same latent, pre-existing, theory-agnostic parser-robustness gap more often, not a new one. Out of scope for this milestone; tracked as a follow-up (would need converting SExpr copying and/or build_term's recursion to be iterative, or adding an explicit depth limit).",
        "remaining_unsupported_input": "Manually sampled several post-fix UNSUPPORTED_INPUT cases: overwhelmingly the known, explicitly-tested disequality gap (\"QF_LRA disequality (a negated Real equality) is not yet supported\") -- fuzzsmt generates many equalities that end up negated somewhere in the formula. This is an intentional, documented Milestone 1 scope boundary (case-splitting for disequality isn't implemented yet), not an unknown bug."
      },
      "verification": {
        "passed": [
          "primo_rational_tests, primo_linear_polynomial_tests, primo_lra_atom_tests, primo_lra_tableau_tests, primo_qf_lra_solver_tests, and the full existing suite (12 targets total): exit 0 under both Release and Debug+ASAN+UBSan builds, before and after the fix.",
          "300-case fuzzsmt QF_LRA campaign against z3 (ASAN/UBSan build): zero wrong-answer disagreements, both before and after the fix."
        ],
        "pending": [
          "Disequality (case-split) support -- not implemented this milestone.",
          "The pre-existing SExpr recursive-copy stack-overflow on deeply-nested input -- not fixed, out of scope for QF_LRA work specifically.",
          "A larger merge/campaign-tier fuzz gate (per AGENTS.md's three-tier discipline) before describing QF_LRA as supported/default rather than a Milestone-1 first cut."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Direct continuation of implementing the QF_LRA plan's Milestone 1 (see /home/user/.claude/plans/piped-wondering-fairy.md). This is the first time this project's fuzz-gate discipline has been applied to a brand-new logic rather than an existing one's modification, and it caught a real, high-impact coverage bug (not a crash or soundness bug) that manual/unit testing had completely missed, since none of the hand-written unit tests happened to use let-bindings around literals."
    },
    {
      "id": "2026-07-24-qf-lra-milestone2-fuzz-regression-check",
      "started_at": "2026-07-24",
      "recorded_at": "2026-07-24",
      "kind": "fuzz",
      "scope": "Regression check for QF_LRA Milestone 2 (LraTableau push/pop, PreparedLraTheory/find_incremental_lra_theory_conflict wired into solve_qf_lra, replacing Milestone 1's per-round-renormalize path). LraTableau's copy constructor is now exercised on every SAT round (via `LraTableau tableau = prepared.base_tableau;`), a materially different code path from Milestone 1's fresh-tableau-per-round approach, so re-running the fuzz gate was worthwhile rather than assuming Milestone 1's result still applied.",
      "commit": "79020e3",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build-asan-ws/primo (Debug, ASAN+UBSan)"
      },
      "command": "PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver ./build-asan-ws/primo --refs z3 --logic QF_LRA --count 300 --timeout 5 --fuzzer-args '-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_lra-milestone2 --seed 1",
      "benchmark": {
        "suite": "fuzzsmt-generated QF_LRA, referenced against z3",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "fuzz-results/qf_lra-milestone2/ -- local, not committed (gitignored)."
      },
      "summary": {
        "result": "300 cases: 250 UNSUPPORTED_INPUT (sat refs), 17 UNSUPPORTED_INPUT (unsat refs), 20 PASS (unsat/unsat), 3 PASS (sat/sat), 5 CRASH, 5 TIMEOUT. Zero wrong-answer disagreements against z3 -- consistent with the Milestone 1 post-fix baseline (same seed, same fuzzer args), confirming the PreparedLraTheory/copy-based rewrite didn't introduce a regression. Crash/UNSUPPORTED_INPUT breakdown matches the already-triaged Milestone 1 causes (the pre-existing SExpr stack-overflow, and the known disequality gap) -- not re-triaged individually since the signatures are identical to the prior run."
      },
      "verification": {
        "passed": [
          "Full existing suite (12 targets) under both Release and Debug+ASAN+UBSan builds, including the new push/pop-specific LraTableau tests.",
          "300-case fuzzsmt QF_LRA campaign against z3 (ASAN/UBSan build): zero wrong-answer disagreements."
        ],
        "pending": [
          "LraTableau's push/pop are implemented and unit-tested but not yet exercised by solve_qf_lra's per-round-copy wiring -- real cross-round trail reuse is Milestone 3 (OnlineLraPropagator)."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Direct continuation of Milestone 2 (see /home/user/.claude/plans/piped-wondering-fairy.md and the 2026-07-23 Milestone 1 fuzz-gate entry). No new bugs found this round -- included primarily as a regression check given how much of solve_qf_lra's internal control flow changed (copy-based per-round tableau construction is a new code path relative to Milestone 1's fresh-add_row-per-round approach), not because a specific concern was being chased down."
    },
    {
      "id": "2026-07-24-qf-lra-milestone3a-online-propagator-fuzz",
      "started_at": "2026-07-24",
      "recorded_at": "2026-07-24",
      "kind": "fuzz",
      "scope": "Merge-gate fuzz check for QF_LRA Milestone 3a (OnlineLraPropagator: trail-synced CaDiCaL external-propagator integration, conflict-detection only, no bound propagation). This exercises genuinely new machinery relative to Milestones 1-2: LraTableau::push()/pop() are now driven by real DPLL(T) backtracking across arbitrary decision-level trees via notify_new_decision_level/notify_backtrack, not just the hand-derived push/pop unit tests or Milestone 2's per-round-copy path. Larger count than the Milestone 1/2 smoke runs (500 vs 300) given this is a merge-gate-tier change per AGENTS.md's three-tier fuzz discipline, not a smoke-tier one.",
      "commit": "3a97cd6",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build-asan-ws/primo (Debug, ASAN+UBSan)"
      },
      "command": "PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver ./build-asan-ws/primo --refs z3 --logic QF_LRA --count 500 --timeout 5 --fuzzer-args '-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_lra-milestone3a --seed 1",
      "benchmark": {
        "suite": "fuzzsmt-generated QF_LRA, referenced against z3",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "fuzz-results/qf_lra-milestone3a/ -- local, not committed (gitignored)."
      },
      "summary": {
        "result": "500 cases: 394 UNSUPPORTED_INPUT (sat refs), 24 UNSUPPORTED_INPUT (unsat refs), 38 PASS (unsat/unsat), 24 PASS (sat/sat), 7 CRASH, 13 TIMEOUT. Zero wrong-answer disagreements against z3 (62 PASS total, up from 23 in the Milestone 1/2 runs at 300 cases). All 7 crashes individually re-run and reconfirmed as the identical pre-existing SExpr recursive-copy-constructor stack-overflow already triaged in the Milestone 1 entry (2026-07-23) as theory-agnostic and out of scope -- not re-triaged from scratch, just spot-checked to rule out a new failure mode hiding among them."
      },
      "verification": {
        "passed": [
          "Full existing suite (12 targets) under both Release and Debug+ASAN+UBSan builds.",
          "500-case fuzzsmt QF_LRA campaign against z3 (ASAN/UBSan build): zero wrong-answer disagreements."
        ],
        "pending": [
          "Bound propagation (Milestone 3b) -- explicitly deferred, not scheduled, per user direction that it isn't needed for completeness.",
          "A campaign-tier fuzz gate (>=3000 cases) before describing QF_LRA as supported/default -- this is still a merge-gate-tier check (Milestone 4's job)."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Direct continuation of Milestone 3a (see /home/user/.claude/plans/piped-wondering-fairy.md). The disequality gap continues to dominate UNSUPPORTED_INPUT counts (same root cause as Milestones 1-2's runs) -- not a new finding, just consistently reproduced."
    },
    {
      "id": "2026-07-24-qf-lra-disequality-fuzz",
      "started_at": "2026-07-24",
      "recorded_at": "2026-07-24",
      "kind": "fuzz",
      "scope": "Regression/coverage check for QF_LRA disequality support (Real equality desugared to (t1<=t2 AND t2<=t1) at parse time, so NOT(t1=t2) is handled by ordinary Boolean-structure CDCL branching, not tableau-level case-splitting). Disequality had been the dominant cause of UnsupportedInput in every prior QF_LRA fuzz campaign (Milestones 1, 2, 3a).",
      "commit": "6acf42d",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build-asan-ws/primo (Debug, ASAN+UBSan)"
      },
      "command": "PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver ./build-asan-ws/primo --refs z3 --logic QF_LRA --count 500 --timeout 5 --fuzzer-args '-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_lra-disequality --seed 1",
      "benchmark": {
        "suite": "fuzzsmt-generated QF_LRA, referenced against z3",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "fuzz-results/qf_lra-disequality/ -- local, not committed (gitignored)."
      },
      "summary": {
        "result": "500 cases (same seed/args as the Milestone 3a run): 349 PASS (sat/sat), 60 PASS (unsat/unsat) -- 409 total, up from 62 in the pre-disequality-fix run. Zero UNSUPPORTED_INPUT (down from 418/500). Zero wrong-answer disagreements against z3. 79 TIMEOUT (sat refs) + 5 TIMEOUT (unsat refs) -- up from 13 total previously, expected: formulas that were instantly rejected as Unsupported before are now fully attempted, and some are genuinely hard to solve without theory propagation (Milestone 3b, deferred). 7 CRASH, individually re-run and reconfirmed as the identical pre-existing SExpr stack-overflow already triaged in the Milestone 1 entry (2026-07-23).",
        "real_benchmark_followup": "A real-world QF_LRA corpus is available locally at tmp/QF_LRA (1753 .smt2 files across 17 families: meti-tarski, LassoRanker, sc, sal, 2019-ezsmt, DTP-Scheduling, uart, tta_startup, 2017-Heizmann-UltimateInvariantSynthesis, spider_benchmarks, miplib, clock_synchro, TM, keymaera, latendresse, tropical-matrix, check). A 30-file sample from 2017-Heizmann-UltimateInvariantSynthesis timed out 30/30 at 5s; direct inspection of one file (233 lines, 107 assertions) with --stats showed genuine active search (6869 decisions, 690 conflicts, 66373 propagations within 15s, still inside the first backend.solve() call) rather than a hang -- strong evidence that the lack of theory propagation (Milestone 3b, deferred as not required for completeness) is a real practical performance bottleneck on realistic-size formulas, distinct from the completeness question. A more diverse 82-file sample (5 files per family) is running to get a fuller picture; see the next run-log entry for results."
      },
      "verification": {
        "passed": [
          "Full existing suite (12 targets) under both Release and Debug+ASAN+UBSan builds.",
          "500-case fuzzsmt QF_LRA campaign against z3 (ASAN/UBSan build): zero wrong-answer disagreements."
        ],
        "pending": [
          "Real-benchmark evaluation against tmp/QF_LRA -- in progress, see follow-up entry.",
          "Milestone 3b (bound propagation) -- increasingly looks important for practical performance on real formulas, not just a nice-to-have; priority to revisit given this finding."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Direct continuation of the disequality-support work (see /home/user/.claude/plans/piped-wondering-fairy.md). The real-benchmark timeout finding is the more consequential result of this session even though it wasn't the primary target -- it reframes Milestone 3b from 'deferred, revisit later' to 'likely the next real priority for making QF_LRA practically useful,' independent of the completeness argument that justified deferring it in the first place."
    },
    {
      "id": "2026-07-24-qf-lra-real-benchmark-diverse-sample",
      "started_at": "2026-07-24",
      "recorded_at": "2026-07-24",
      "kind": "benchmark",
      "scope": "First real-world (non-fuzzer) benchmark evaluation of QF_LRA, against a local corpus at tmp/QF_LRA (1753 .smt2 files across 17 families: meti-tarski, LassoRanker, sc, sal, 2019-ezsmt, DTP-Scheduling, uart, tta_startup, 2017-Heizmann-UltimateInvariantSynthesis, spider_benchmarks, miplib, clock_synchro, TM, keymaera, latendresse, tropical-matrix, check; not committed to the repo). A diverse 5-files-per-family sample (82 files total) was used rather than the full corpus, to get a representative cross-section quickly given real per-file solve times vary hugely by family.",
      "commit": "6acf42d",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo (Release)"
      },
      "command": "python3 scripts/bench_qf_uf_full.py --root /workspace/tmp/QF_LRA --manifest /tmp/qf_lra_diverse_manifest.txt --solver ./build/primo --solver-arg=--quiet --timeout 10 --out results/qf-lra-diverse.csv --summary results/qf-lra-diverse-summary.csv (manifest: first 5 files per family, sorted; reused bench_qf_uf_full.py as-is -- it's already fully generic aside from cosmetic QF_UF-specific family-name remapping that doesn't apply to this corpus's already-clean family names)",
      "benchmark": {
        "suite": "tmp/QF_LRA diverse sample (5 files/family x 17 families = 82 files)",
        "logic": "QF_LRA",
        "manifest": "/tmp/qf_lra_diverse_manifest.txt (not committed, ephemeral)"
      },
      "artifacts": {
        "note": "results/qf-lra-diverse.csv, results/qf-lra-diverse-summary.csv -- local, not committed (gitignored)."
      },
      "summary": {
        "result": "82 files, 10s timeout: 45 solved (19 sat, 26 unsat), 37 timeout, 0 unsupported, 0 wrong (out of 74 files with a checkable :status). PAR2 805.5. Solve rate is heavily family-dependent, not uniform: 6 families 100% solved within 10s (DTP-Scheduling, keymaera, meti-tarski, sal, spider_benchmarks, check), 4 families 0% solved (2017-Heizmann-UltimateInvariantSynthesis, LassoRanker, latendresse, tropical-matrix), the rest partial. The 0%-solved families are exactly the ones with large formulas (invariant synthesis, lasso ranking termination arguments) -- consistent with the earlier single-file investigation (2026-07-24 disequality entry) showing genuine but slow search progress without theory propagation.",
        "significance": "Zero wrong answers and zero unsupported across a completely different, much larger and more structurally realistic distribution than fuzzsmt's generated formulas is meaningful independent soundness/coverage evidence -- this is the first time QF_LRA has been evaluated against anything other than synthetic fuzzer output or hand-written unit tests. The solved-rate split by family reinforces (does not merely repeat) the propagation-importance finding: it's not that QF_LRA is broadly too slow, it's specifically the large/complex families that stall, matching the theory-propagation-starved-search hypothesis rather than e.g. a uniform per-atom overhead problem."
      },
      "verification": {
        "passed": [
          "82-file diverse real-benchmark sample: 0 wrong answers against SMT-LIB :status metadata, 0 unsupported."
        ],
        "pending": [
          "Full 1753-file tmp/QF_LRA corpus -- not yet run (only a 82-file diverse sample and a 30-file single-family sample so far).",
          "Investigating whether Milestone 3b (propagation) would move the 0%-solved families materially, versus them being hard for other reasons (tableau size, pivoting-rule choice, etc.) -- not yet isolated."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Direct continuation of the disequality-support and real-benchmark-evaluation work this session (see /home/user/.claude/plans/piped-wondering-fairy.md). tmp/QF_LRA itself is a large (2.5GB) local extraction, analogous to tmp/QF_UF's role for the QF_UF benchmark workflows in docs/experiments.md -- not committed to the repo, consistent with how tmp/QF_UF is handled."
    },
    {
      "id": "2026-07-24-qf-lra-yinyang-mutation-real-seeds",
      "started_at": "2026-07-24",
      "recorded_at": "2026-07-24",
      "kind": "fuzz",
      "scope": "First mutation-based (yinyang/typefuzz) differential fuzz campaign for QF_LRA, seeded from real benchmark files rather than generator (fuzzsmt) output -- complements the grammar-generator fuzz gates already run for Milestones 1/2/3a/disequality. Seeds: benchmarks/seeds/qf_lra_real/ (14 small <5KB .smt2 files hand-picked from tmp/QF_LRA's best-performing families in the diverse-sample benchmark run: keymaera, sal, spider_benchmarks, check, DTP-Scheduling).",
      "commit": "8a57bd0",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build-asan-ws/primo (Debug, ASAN+UBSan)"
      },
      "command": "PATH=\"$PWD/.venv/bin:$PWD/contrib/local/bin:$PATH\" scripts/yinyang_fuzz.sh --seeds benchmarks/seeds/qf_lra_real --solver 'build-asan-ws/primo --quiet' --ref 'z3 model_validate=true' --seconds 240 --iterations 60 --solver-timeout 5 --bugs fuzz-results/qf_lra-yinyang/bugs --scratch fuzz-results/qf_lra-yinyang/scratch",
      "benchmark": {
        "suite": "typefuzz mutation fuzzing, seeded from real tmp/QF_LRA benchmark files, referenced against z3 (model_validate=true)",
        "logic": "QF_LRA",
        "manifest": "benchmarks/seeds/qf_lra_real/ (14 files, committed)"
      },
      "artifacts": {
        "note": "fuzz-results/qf_lra-yinyang/ -- local, not committed (gitignored)."
      },
      "summary": {
        "result": "14/14 seeds processed, 14 valid, 0 invalid. ~1700 solver calls over ~4 minutes wall clock (~18 calls/s, ~50% mutation-acceptance efficiency, ~9 mutants/s). 0 bug triggers found -- no wrong-answer disagreements against z3 and no crashes across the whole run.",
        "significance": "First differential fuzz evidence combining real-world formula structure (via seeding) with adversarial mutation (via typefuzz), rather than either pure grammar-generation (fuzzsmt) or pure real-benchmark replay (the diverse-sample run) alone. Zero bugs is a positive but modest signal given the run was intentionally small/local (~1700 calls) -- see the Slurm follow-up note below for scaling this up properly."
      },
      "verification": {
        "passed": [
          "14/14 real seeds valid and processed by typefuzz.",
          "0 bug triggers (wrong-answer or crash) over ~1700 mutation-fuzzed solver calls against z3."
        ],
        "pending": [
          "Only a small local run so far (~1700 calls, 4 minutes) -- not yet a campaign-tier (AGENTS.md, >=3000 cases) run.",
          "User direction (2026-07-24): future fuzz campaigns, including mutation-based ones, should run on Slurm rather than locally in-session, to actually reach campaign scale."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Direct continuation of 'we got also tmp/QF_LRA that could be used to seed fuzzer, we should also start evaluating on realy bench' -- this is the seed-fuzzer half; the real-benchmark-evaluation half is the preceding run-log entry (2026-07-24-qf-lra-real-benchmark-diverse-sample). benchmarks/seeds/qf_lra_real/ is now committed alongside this entry."
    },
    {
      "id": "2026-07-24-qf-lra-milestone3b-propagation-fuzz",
      "started_at": "2026-07-24",
      "recorded_at": "2026-07-24",
      "kind": "fuzz",
      "scope": "Merge-gate fuzz campaign for QF_LRA Milestone 3b (same-slack bound propagation, Dutertre & de Moura Section 4.2's 'deriving satisfied atoms'), prioritized over Milestone 4 per explicit user direction after real-benchmark evidence that lack of propagation was a practical bottleneck. Implemented in two steps: (1) PreparedLraTheory dedupes tableau slack variables by exact LinearPolynomial content (a prerequisite -- propagation needs atoms to share a slack, which essentially never happened under the old one-slack-per-atom scheme), (2) OnlineLraPropagator scans atoms sharing a just-asserted atom's slack and eagerly propagates entailed true/false atoms via new LraTableau::upper_bound()/lower_bound() accessors.",
      "commit": "d00134b",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build-asan-ws/primo (Debug, ASAN+UBSan)"
      },
      "command": "PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver ./build-asan-ws/primo --refs z3 --logic QF_LRA --count 500 --timeout 5 --fuzzer-args '-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_lra-milestone3b --seed 1",
      "benchmark": {
        "suite": "fuzzsmt-generated QF_LRA, referenced against z3",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "fuzz-results/qf_lra-milestone3b/ -- local, not committed (gitignored)."
      },
      "summary": {
        "result": "First run (before the bug fix below): 255 PASS, 16 TIMEOUT, 229 CRASH -- a real regression, all crashes the SAME new bug (CaDiCaL abort 'external reason clause must contain the propagated literal'), not the pre-existing SExpr recursion issue. Root cause: OnlineLraPropagator::notify_backtrack cleared its entire reasons_ map unconditionally on every backtrack, including entries for literals that remained assigned after backtracking to new_level -- CaDiCaL's conflict analysis (explain_external_propagations) legitimately asked for such a literal's reason later and got an empty clause back. Fixed by only erasing a reasons_ entry when its literal's var is actually popped from the propagator's own var_trail_ (mirroring how assigned_ is already scoped), leaving pending_ (undelivered candidates only, always safe to drop) as the sole thing cleared unconditionally. Re-ran the same 500-case campaign after the fix: 424 PASS, 69 TIMEOUT, 7 CRASH, 0 WRONG -- all 7 crashes individually reconfirmed (via direct stack-trace inspection) as the identical pre-existing SExpr stack-overflow already triaged in the Milestone 1 entry, not a new issue.",
        "significance": "This is the second real bug (after the let-bound-literal and real-equality-misclassification bugs in Milestone 1) caught by the project's fuzz-gate discipline rather than shipped -- a subtle backtracking/reason-clause-lifetime bug that unit tests alone (which don't exercise deep, varied DPLL(T) backtracking patterns) would have been very unlikely to catch. Reinforces that the merge-gate tier (500 cases) is pulling real weight for propagator-touching changes, exactly as it did for Milestone 3a."
      },
      "verification": {
        "passed": [
          "Full existing suite (12 targets, including 2 new bound-propagation-specific solver tests) under both Release and Debug+ASAN+UBSan builds, after the fix.",
          "500-case fuzzsmt QF_LRA campaign against z3 (ASAN/UBSan build), post-fix: zero wrong-answer disagreements, zero new crash signatures."
        ],
        "pending": [
          "Campaign-tier (>=3000 case) fuzz gate -- not yet run for QF_LRA at all (Milestone 4's bar); still only smoke/merge-gate tiers so far across every QF_LRA milestone."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Direct continuation of the QF_LRA Milestone 3b work (see /home/user/.claude/plans/piped-wondering-fairy.md). The crash-rate jump (7 -> 229 -> back to 7) during this single milestone is a clean before/during-bug/after-fix signal, kept in one entry rather than split, since it's the same investigation."
    },
    {
      "id": "2026-07-24-qf-lra-milestone3b-real-benchmark-recheck",
      "started_at": "2026-07-24",
      "recorded_at": "2026-07-24",
      "kind": "benchmark",
      "scope": "Re-ran the same 82-file diverse real-benchmark sample from the pre-Milestone-3b run (2026-07-24-qf-lra-real-benchmark-diverse-sample) against the Milestone 3b build, to measure same-slack bound propagation's real-world impact -- the actual motivation for prioritizing this milestone.",
      "commit": "d00134b",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo (Release)"
      },
      "command": "python3 scripts/bench_qf_uf_full.py --root /workspace/tmp/QF_LRA --manifest /tmp/qf_lra_diverse_manifest.txt --solver ./build/primo --solver-arg=--quiet --timeout 10 --out results/qf-lra-diverse-3b.csv --summary results/qf-lra-diverse-3b-summary.csv (identical manifest/args to the pre-3b run, for a like-for-like comparison)",
      "benchmark": {
        "suite": "tmp/QF_LRA diverse sample (5 files/family x 17 families = 82 files), identical manifest to the pre-3b baseline run",
        "logic": "QF_LRA",
        "manifest": "/tmp/qf_lra_diverse_manifest.txt (not committed, ephemeral)"
      },
      "artifacts": {
        "note": "results/qf-lra-diverse-3b.csv, results/qf-lra-diverse-3b-summary.csv -- local, not committed (gitignored)."
      },
      "summary": {
        "result": "44/82 solved (18 sat, 26 unsat), 38 timeout, 0 unsupported, 0 wrong. PAR2 809.3. Versus the pre-3b baseline (45/82 solved, PAR2 805.5): essentially no material aggregate change on this particular sample, within the noise of wall-clock timing on a shared machine (several 'ok' results took 2-5s for formulas that should be near-instant, suggesting load-related timing noise on this run). Family-by-family, the previously-0%-solved families are still 0% (2017-Heizmann-UltimateInvariantSynthesis, LassoRanker, tropical-matrix) and the previously-100%-solved families are still ~100%.",
        "significance": "A genuinely neutral result, reported honestly rather than spun: same-slack bound propagation alone did not move this sample's hardest families. This is consistent with (not contradicting) the milestone's design scope -- propagation here only relates atoms sharing the *exact same* tableau slack, and the hardest families (invariant synthesis, lasso ranking) likely need either scale-invariant polynomial matching (atoms like x<=5 vs 2x<=10 currently get separate slacks) or the paper's stronger row-based/interval propagation across different variables (both explicitly out of scope for 3b) to see a similar win. The milestone's value is independently confirmed at the unit-test level instead (qf_lra_solver_tests.cpp's same_slack_propagation_* tests show propagation measurably avoiding SAT decisions on hand-built cases where atoms do share a slack) -- this benchmark sample apparently just doesn't have much of that specific pattern in its hardest files."
      },
      "verification": {
        "passed": [
          "82-file diverse real-benchmark sample: 0 wrong answers, 0 unsupported, comparable to the pre-3b baseline."
        ],
        "pending": [
          "Whether scale-invariant polynomial matching or row-based propagation would move the still-0%-solved families -- not isolated/tested.",
          "Full 1753-file tmp/QF_LRA corpus -- still not run (only diverse and single-family samples so far)."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Direct continuation of the Milestone 3b real-benchmark-evaluation follow-up promised in the plan. See the companion fuzz-gate entry (2026-07-24-qf-lra-milestone3b-propagation-fuzz) for the correctness side of this milestone."
    },
    {
      "id": "2026-07-24-sexpr-and-build-term-recursion-removed",
      "started_at": "2026-07-24",
      "recorded_at": "2026-07-24",
      "kind": "fuzz",
      "scope": "Theory-agnostic robustness fix, prompted by the same pre-existing SExpr stack-overflow crash resurfacing in essentially every QF_LRA fuzz campaign this session. Per explicit user direction ('we shouldn't be using recursion ever, we should have explicit stack'), replaced every recursive tree-walk in the SMT-LIB frontend with an explicit-stack/heap-based iterative equivalent: smtlib::SExpr's copy constructor and destructor (ast.cpp), parser.cpp's parse_one (recursive descent), and check_sat.cpp's Frontend::build_term (the whole recursive-descent term builder, replaced by a continuation-passing TermBuilder driven by an explicit pending_ stack).",
      "commit": "1e43a99",
      "environment": {
        "type": "local+slurm",
        "host": "workspace (local dev/ASAN verification) + llm2smt-slurm (campaign fuzz gate)",
        "binary": "build/primo (Release), build-asan-ws/primo (Debug+ASAN+UBSan), build-slurm-rel/primo (remote Release)"
      },
      "command": "Local: full unit suite (Release + ASAN/UBSan) incl. two new synthetic-depth regression tests (200000-deep nested list in smtlib_parser_tests, 50000-deep nested + in qf_lra_solver_tests); 500-case QF_LRA + 300-case QF_UF fuzzsmt-vs-z3 campaigns under ASAN/UBSan (scripts/fuzz_external.py). Remote: python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/llm2smt_slurm_ssh_config --remote-dir <slurm-workdir>, then sbatch scripts/slurm_qfuf_fuzz_gate.sbatch (env-overridden for QF_LRA: PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA, QF_LRA-tuned FUZZSMT_ARGS, opfuzz/yinyang seeded from benchmarks/seeds/qf_lra_real) as job 113267 -- 6 fuzzsmt shards x 500 cases = 3000 cases (campaign tier) plus 1 opfuzz task + 2 yinyang mutation shards, all vs z3.",
      "benchmark": {
        "suite": "fuzzsmt (QF_LRA and QF_UF) + opfuzz/yinyang mutation, referenced against z3",
        "logic": "QF_LRA and QF_UF (build_term is shared code)",
        "manifest": null
      },
      "artifacts": {
        "note": "fuzz-results/qf_lra-recursion-fix/, fuzz-results/qf_uf-recursion-fix/ (local, pre-Slurm-submission verification), remote fuzz-results/qfuf-gate-113267/ on llm2smt-slurm -- none committed (gitignored / remote)."
      },
      "summary": {
        "result": "Two bugs found and fixed in sequence, each caught before landing cleanly: (1) SExpr's recursive copy ctor/destructor and parser.cpp's recursive parse_one both replaced with iterative algorithms (Frame-stack based) -- fixed all 7 crashes from the prior Milestone 3b fuzz-gate entry (confirmed: same corpus files, re-run after this fix alone, all 7 stopped crashing). (2) Frontend::build_term's own recursive descent turned out to be a SEPARATE, deeper bug: even with SExpr fixed, a synthetic 200000-deep nested `+` still segfaulted (Release build) via TermManager::mk_plus's call chain through build_term/build_ite/etc, and ASAN's larger stack frames meant it was actually THIS bug, not the SExpr one, causing all 7 of the Milestone 3b fuzz-gate crashes under ASAN. Fixed via TermBuilder, a continuation-passing iterative driver. Caught a genuine design mistake in the first TermBuilder attempt during local testing (before it ever reached fuzzing): only child-descent was trampolined, not continuation delivery, so long chains still recursed natively via direct k(...) calls -- fixed by routing every continuation invocation through resume() too. Local verification (500 QF_LRA + 300 QF_UF fuzzsmt cases, ASAN/UBSan): 0 crashes, 0 wrong answers, both up from a 7/500 crash rate before the fix. A campaign-tier (3000+ case) QF_LRA fuzz gate was additionally submitted to the llm2smt-slurm cluster (job 113267) for independent confirmation at scale, per standing project guidance that campaign-tier fuzzing belongs on Slurm rather than run locally.",
        "significance": "Removes a theory-agnostic crash class that had been present (and repeatedly rediscovered/re-triaged as 'pre-existing, out of scope') since Milestone 1's fuzz gate. Also a notable methodological point: the Milestone 3b fuzz-gate's crash count (~7/500, stable across several campaigns) was consistently attributed to the SExpr issue by inspection of the stack trace signature, but was actually dominated by the build_term recursion once examined under ASAN's stack-frame overhead -- a reminder that superficially-similar 'stack-overflow' signatures can have different root causes, and that fixing the first plausible cause doesn't guarantee the crash is gone (confirmed here only by re-running the exact same crashing files after each fix in isolation)."
      },
      "verification": {
        "passed": [
          "Full unit suite (12 targets, incl. 2 new synthetic-depth regression tests) under Release and Debug+ASAN+UBSan.",
          "500-case QF_LRA + 300-case QF_UF fuzzsmt-vs-z3 campaigns (ASAN/UBSan): 0 crashes (down from 7/500), 0 wrong answers.",
          "Hand-crafted chained-`=`-with-`ite` sat/unsat cases against z3 (TermBuilder's most intricate rewritten piece).",
          "200000-deep nested-list smtlib_parser_tests case; 50000-deep nested-`+` qf_lra_solver_tests case; both previously guaranteed to crash, now pass under Release and ASAN/UBSan."
        ],
        "pending": [
          "Slurm job 113267 (campaign-tier QF_LRA fuzz gate, 3000+ fuzzsmt cases + opfuzz/yinyang mutation) -- submitted, not yet complete as of this entry; results to be recorded in a follow-up run-log entry.",
          "Remote build-slurm-fuzz (ASAN+UBSan) build failed on llm2smt-slurm (linker could not find /usr/lib64/libasan.so.6.0.0 despite libasan being present under versioned GCCcore module paths) -- the Slurm campaign above runs the Release build only; local ASAN/UBSan coverage (above) substitutes for now. Worth revisiting the remote toolchain/library path separately."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Prompted mid-session by explicit, repeated user direction: first specifically about the recurring SExpr crash, then generalized to 'we shouldn't be using recursion ever, we should have explicit stack' as a standing principle (see feedback_no_recursion_explicit_stack memory). Also prompted a correction to an earlier session belief that no Slurm cluster was reachable from this sandbox -- it is, via SSH (see feedback_fuzzing_on_slurm memory's 2026-07-24 correction)."
    },
    {
      "id": "2026-07-24-qf-lra-milestone4a-dantzig-local-fuzz",
      "started_at": "2026-07-24",
      "recorded_at": "2026-07-24",
      "kind": "fuzz",
      "scope": "Local merge-gate-tier fuzz verification for Milestone 4a (LraTableau::PivotingRule::Dantzig, an opt-in alternative to the default Bland's-rule Check/Pivot selection, with an anti-cycling fallback to Bland's rule after a heuristic pivot-count threshold within one check() call). Same 500-case fuzzsmt-vs-z3 campaign shape used for every other QF_LRA milestone this session, run with --lra-pivoting-rule dantzig.",
      "commit": "67bdcb5",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build-asan-ws/primo (Debug, ASAN+UBSan)"
      },
      "command": "PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver \"./build-asan-ws/primo --quiet --lra-pivoting-rule dantzig\" --refs z3 --logic QF_LRA --count 500 --timeout 5 --fuzzer-args '-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_lra-dantzig-smoke --seed 1",
      "benchmark": {
        "suite": "fuzzsmt-generated QF_LRA, referenced against z3, --lra-pivoting-rule dantzig",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "fuzz-results/qf_lra-dantzig-smoke/ -- local, not committed (gitignored)."
      },
      "summary": {
        "result": "421 PASS, 79 TIMEOUT, 0 CRASH, 0 WRONG -- closely matches the same-seed default-Bland baseline (423 PASS, 77 TIMEOUT, 0 CRASH, 0 WRONG from the 2026-07-24 recursion-fix entry), well within run-to-run noise. Zero wrong-answer disagreements against z3 under the new pivoting rule.",
        "significance": "Confirms Dantzig's correctness (not just its termination-guarantee reasoning) before relying on it for the campaign-tier gate. Also confirms it doesn't materially change the crash-rate profile versus Bland -- no new crash signatures introduced by the alternative selection logic."
      },
      "verification": {
        "passed": [
          "Full unit suite (12 targets, incl. 3 new lra_tableau_tests.cpp Dantzig cases and 1 new qf_lra_solver_tests.cpp Dantzig case) under Release and Debug+ASAN+UBSan.",
          "500-case fuzzsmt QF_LRA campaign with --lra-pivoting-rule dantzig (ASAN/UBSan): 0 crashes, 0 wrong answers."
        ],
        "pending": [
          "Campaign-tier (>=3000 case) confirmation -- see the companion Slurm entry."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Milestone 4a (Dantzig pivoting rule). See docs/arithmetic.md and docs/papers/fast-linear-arithmetic-dpllt.md for the design writeup."
    },
    {
      "id": "2026-07-24-qf-lra-milestone4b-slurm-campaign-setup",
      "started_at": "2026-07-24",
      "recorded_at": "2026-07-24",
      "kind": "fuzz",
      "scope": "Milestone 4b: campaign-tier (>=3000 case) QF_LRA fuzz gate on the llm2smt-slurm cluster, the promotion gate for calling QF_LRA supported/default (AGENTS.md). Submitted against the final post-Milestone-4a commit (superseding the earlier 2026-07-24 job 113267, which tested a pre-M4 commit and, it turned out, ran against a broken remote toolchain -- see below).",
      "commit": "605caad",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo (remote Release)"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/llm2smt_slurm_ssh_config --remote-dir <slurm-workdir>; then sbatch scripts/slurm_qfuf_fuzz_gate.sbatch with QF_LRA env overrides (see the 113267 entry) plus TYPEFUZZ=<remote .venv-yinyang>/bin/typefuzz and PATH prepended with contrib/local/bin -- job 113319 (6 fuzzsmt shards x 500 = 3000 cases, 2 yinyang mutation shards) plus a small supplementary job 113328 (the single opfuzz task, resubmitted separately after fixing a PATH gap specific to that task).",
      "benchmark": {
        "suite": "fuzzsmt (QF_LRA, 6 shards x 500 cases) + yinyang typefuzz mutation (2 shards) + opfuzz (1 task), all seeded/referenced against z3",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Remote fuzz-results/qfuf-gate-113319/ and .../qfuf-gate-113328/ on llm2smt-slurm -- not committed."
      },
      "summary": {
        "result": "Two real infrastructure bugs found and fixed while getting this campaign running (neither is a Primo correctness issue): (1) the first submission (job 113267, against the pre-M4 commit) completed in ~1 second with 'fuzzsmt is not installed; skipping external fuzzing' -- slurm_prepare_benchmark_workspace.py only builds the primo binary, not the fuzzsmt/z3 tooling scripts/fuzz_external.py depends on, so that job silently did nothing rather than actually fuzzing. Fixed by running `make contrib-fuzzsmt contrib-z3` remotely and setting up a .venv-yinyang venv with yinyang/z3-solver installed for opfuzz/typefuzz. (2) The very next slurm_prepare_benchmark_workspace.py sync (to pick up the M4 commits) then clobbered that remote contrib/local with the LOCAL machine's contrib/local via rsync (contrib/local wasn't excluded), reintroducing the same failure via a different symptom (fuzzsmt's wrapper script has a host-specific absolute jarfile path baked in at install time) -- fixed by excluding contrib/local and contrib/src from the rsync (commit 605caad), then re-provisioning remotely. A remaining minor PATH gap (opfuzz specifically resolves via bare PATH lookup, not the TYPEFUZZ override) was caught and fixed with a small supplementary single-task job (113328) rather than restarting the whole array. As of this entry, job 113319's core fuzzsmt shards (0-5) are running (confirmed genuinely executing, not instantly completing); yinyang shards (7-8) already completed cleanly (14/14 seeds valid, 0 bug triggers); opfuzz (113328) is running. Full campaign results to be recorded in a follow-up entry once complete.",
        "significance": "The 'no crashes in 500 cases' evidence this session has relied on for QF_LRA milestones was always genuine (run locally, directly observed), but this is a reminder that remote/CI-style fuzz infrastructure needs its own end-to-end verification (did it actually run real cases?) rather than trusting a clean exit code alone -- job 113267's 1-second 'success' would have been a false promotion signal if not directly inspected."
      },
      "verification": {
        "passed": [
          "Remote fuzzsmt/z3/yinyang tooling confirmed working via direct smoke invocations after each fix.",
          "Yinyang mutation shards (113319 tasks 7-8): 14/14 real seeds valid, 0 bug triggers."
        ],
        "pending": [
          "job 113319's 6 fuzzsmt shards (3000 cases) and job 113328's opfuzz task -- still running as of this entry; results pending, to be recorded once complete."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Per feedback_fuzzing_on_slurm memory: campaign-tier fuzzing belongs on Slurm, checked back on periodically rather than tight-polled. This entry intentionally records the infra-debugging process in detail since it's a real, reusable fix (scripts/slurm_prepare_benchmark_workspace.py) other campaigns benefit from too, not just this one."
    },
    {
      "id": "2026-07-24-qf-lra-milestone4b-slurm-campaign-result",
      "started_at": "2026-07-24",
      "recorded_at": "2026-07-24",
      "kind": "fuzz",
      "scope": "Result of Milestone 4b's campaign-tier QF_LRA fuzz gate on llm2smt-slurm (jobs 113319 + 113328, see the companion 2026-07-24-qf-lra-milestone4b-slurm-campaign-setup entry for the infrastructure fixes needed to get this running). Default (Bland pivoting rule) configuration, against the final post-Milestone-4a commit -- the promotion gate for calling QF_LRA supported/default per AGENTS.md (>=3000 cases plus a seed-mutation campaign).",
      "commit": "605caad",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config)",
        "binary": "build-slurm-rel/primo (remote Release)"
      },
      "command": "sbatch scripts/slurm_qfuf_fuzz_gate.sbatch (QF_LRA env overrides, see prior entry) as jobs 113319 (6 fuzzsmt shards x 500 cases + 2 yinyang mutation shards) and 113328 (1 opfuzz task, resubmitted separately after a PATH fix); results aggregated via a remote python csv scan across the 6 shard summary.csv files.",
      "benchmark": {
        "suite": "fuzzsmt (QF_LRA, 6 shards x 500 = 3000 cases) + yinyang typefuzz mutation (2 shards) + opfuzz (1 task), all seeded/referenced against z3; mutation/opfuzz seeded from benchmarks/seeds/qf_lra_real (14 real-benchmark files)",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Remote fuzz-results/qfuf-gate-113319/ and .../qfuf-gate-113328/ on llm2smt-slurm -- not committed, not copied locally (aggregated counts pulled back via a remote python one-liner instead of the raw per-file CSVs)."
      },
      "summary": {
        "result": "fuzzsmt: 3000/3000 cases -- 2851 PASS, 149 TIMEOUT, 0 CRASH, 0 WRONG. opfuzz: 14/14 real seeds valid, 0 bug triggers. yinyang typefuzz (2 shards): 14/14 real seeds valid each, 0 bug triggers each. Fully clean campaign: no wrong-answer disagreements against z3, no crashes, no unsupported-input rejections, across both generator-based (fuzzsmt) and mutation-based (opfuzz/yinyang) fuzzing, seeded from both synthetic and real-world formulas.",
        "significance": "Clears AGENTS.md's campaign-tier fuzz-gate bar (>=3000 cases plus a seed-mutation campaign) for QF_LRA at its current feature set (Milestones 1-4a: full frontend, incremental trail-based tableau, online conflict-detecting + same-slack-propagating CaDiCaL propagator, disequality via Boolean-level desugaring, opt-in Dantzig pivoting with Bland fallback, iterative/non-recursive frontend). This is the promotion gate Milestone 4 was scoped around -- docs/arithmetic.md and docs/papers/fast-linear-arithmetic-dpllt.md should drop the 'experimental' framing as of this result."
      },
      "verification": {
        "passed": [
          "3000-case campaign-tier fuzzsmt-vs-z3 QF_LRA run: 0 crashes, 0 wrong answers, 0 unsupported.",
          "opfuzz + 2 yinyang typefuzz mutation shards, seeded from 14 real QF_LRA benchmark files: 0 bug triggers across all three."
        ],
        "pending": [
          "This campaign covered the default (Bland) pivoting rule only, not --lra-pivoting-rule dantzig at campaign scale (Dantzig has only the 500-case local ASAN merge-gate-tier confirmation from the companion entry) -- acceptable per the milestone's own scoping decision (Dantzig is opt-in, not the default being promoted).",
          "Remote build is Release-only (ASAN+UBSan build still broken on llm2smt-slurm, see feedback_fuzzing_on_slurm memory) -- local ASAN/UBSan coverage from earlier entries substitutes."
        ]
      },
      "evidence_status": "current_local",
      "notes": "Completes Milestone 4 (both 4a and 4b). See docs/arithmetic.md/docs/papers/fast-linear-arithmetic-dpllt.md for the promotion-status update this result justifies."
    },
    {
      "id": "2026-07-25-qf-lra-real-equality-lowering-smoke-gate",
      "started_at": "2026-07-25",
      "recorded_at": "2026-07-25",
      "kind": "fuzz",
      "scope": "Local merge-gate-tier (500-case) fuzz smoke test for the competitiveness-roadmap item 1 redesign: Real-equality lowering (previously And(Le,Le) desugaring in Frontend::mk_theory_equality at parse time) moved to a new lower_real_equalities preprocessing pass run once, at the end of the preprocessing pipeline, immediately before the has_equality/has_arithmetic theory dispatch -- so solve-eqs and other Equality-aware preprocessing passes see genuine Real Equality nodes. Highest-risk surface: re-touches the disequality encoding that already cleared Milestone 4b's campaign-tier gate, so this smoke test specifically checks nothing regressed before scheduling a fresh campaign-tier confirmation.",
      "commit": "6b868f4",
      "environment": {
        "type": "local",
        "host": "workspace container",
        "binary": "build-asan-ws/primo (ASAN+UBSan)"
      },
      "command": "PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver ./build-asan-ws/primo --refs z3 --logic QF_LRA --count 500 --timeout 5 --fuzzer-args '-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_lra-real-equality-lowering --seed 1",
      "benchmark": {
        "suite": "fuzzsmt (QF_LRA, 500 cases), seeded/referenced against z3",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "fuzz-results/qf_lra-real-equality-lowering/{generated,bugs,summary.csv} (not committed) -- bugs/ holds all 83 TIMEOUT cases (fuzz_external.py copies every non-PASS/non-UNKNOWN_INVOLVED outcome there, timeouts included, not just crashes/wrong-answers)."
      },
      "summary": {
        "result": "500/500 cases: 417 PASS, 83 TIMEOUT, 0 CRASH, 0 REF_DISAGREEMENT, 0 UNSUPPORTED_INPUT, 0 UNKNOWN_INVOLVED.",
        "significance": "No regression from moving Real-equality lowering out of the frontend into a late preprocessing pass: disequality (NOT(a=b)), distinct, and ordinary equality/solve-eqs formulas all still solve correctly against z3 at this sample size, with zero wrong-answer disagreements or unsupported-input rejections. Clears the local merge-gate bar; a fresh campaign-tier (>=3000 case) Slurm run is still needed before this is as trusted as Milestone 4b's already campaign-fuzzed disequality behavior."
      },
      "verification": {
        "passed": [
          "500-case merge-gate-tier fuzzsmt-vs-z3 QF_LRA run under ASAN+UBSan: 0 crashes, 0 wrong answers, 0 unsupported-input rejections.",
          "Full unit test suite (Release + ASAN/UBSan) green, including new solve-eqs-fires-for-Real-equality and lower_real_equalities-specific tests, and the pre-existing disequality/distinct regression tests unchanged."
        ],
        "pending": [
          "Campaign-tier (>=3000 case) Slurm confirmation, per AGENTS.md's bar for re-touching already-campaign-fuzzed behavior (this redesign changes when/how the disequality-enabling And(Le,Le) lowering happens)."
        ]
      },
      "evidence_status": "current_local",
      "notes": "See docs/preprocessing.md's 'Real-Equality Lowering' section and docs/arithmetic.md's Disequality bullet/Milestone-roadmap entry for the design this run verifies. Commit 6b868f4 (code+tests), 1585d7d (docs)."
    },
    {
      "id": "2026-07-25-qf-lra-real-equality-lowering-slurm-campaign-result",
      "started_at": "2026-07-25",
      "recorded_at": "2026-07-25",
      "kind": "fuzz",
      "scope": "Campaign-tier (>=3000 case) QF_LRA fuzz gate on llm2smt-slurm confirming competitiveness-roadmap item 1's redesign (moving Real-equality And(Le,Le) lowering from Frontend::mk_theory_equality at parse time to a new lower_real_equalities pass at the end of preprocessing, commit 6b868f4/1585d7d/bdd827c). This re-touches the disequality encoding that already cleared Milestone 4b's campaign-tier gate (2026-07-24), so per AGENTS.md a fresh campaign-tier confirmation was required before treating the new design as equally trustworthy, not just the local merge-gate smoke test (2026-07-25-qf-lra-real-equality-lowering-smoke-gate) that would normally suffice for a preprocessing-only change.",
      "commit": "bdd827c",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo (remote Release)"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/llm2smt_slurm_ssh_config --remote-dir <slurm-workdir>; then sbatch --export=ALL,PRIMO_FUZZ_SOLVER=.../build-slurm-rel/primo,PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA,PRIMO_FUZZ_FUZZSMT_ARGS='-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2',PRIMO_FUZZ_OPFUZZ_SEEDS=.../benchmarks/seeds/qf_lra_real,PRIMO_FUZZ_YINYANG_SEEDS=.../benchmarks/seeds/qf_lra_real scripts/slurm_qfuf_fuzz_gate.sbatch (with TYPEFUZZ and PATH set to include contrib/local/bin and .venv-yinyang/bin, per the Milestone 4b setup) as job 113357 -- 9 tasks (6 fuzzsmt shards x 500 = 3000 cases, 1 opfuzz task, 2 yinyang typefuzz mutation shards), all completed cleanly on the first submission with no queue wait and no infrastructure fixes needed this time (both bugs found during Milestone 4b's setup were already fixed/provisioned).",
      "benchmark": {
        "suite": "fuzzsmt (QF_LRA, 6 shards x 500 = 3000 cases) + yinyang typefuzz mutation (2 shards) + opfuzz (1 task), all seeded/referenced against z3; mutation/opfuzz seeded from benchmarks/seeds/qf_lra_real (14 real-benchmark files)",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Remote fuzz-results/qfuf-gate-113357/ on llm2smt-slurm -- not committed, aggregated counts pulled back via a remote python one-liner across the 6 shard summary.csv files plus the opfuzz/yinyang bugs directory listings."
      },
      "summary": {
        "result": "fuzzsmt: 3000/3000 cases -- 2854 PASS, 146 TIMEOUT, 0 CRASH, 0 WRONG, 0 UNSUPPORTED_INPUT. opfuzz: 14/14 real seeds valid, 0 bug triggers. yinyang typefuzz (2 shards): 14/14 real seeds valid each, 0 bug triggers each. Fully clean campaign, matching Milestone 4b's own result shape (2851 PASS/149 TIMEOUT out of 3000 there vs. 2854/146 here -- within normal fuzzsmt-generation variance, not a regression).",
        "significance": "Confirms the redesign (Real-equality lowering moved from parse time to the end of preprocessing) introduced no regression in the disequality/solve-eqs-sensitive behavior it re-touches: zero wrong-answer disagreements against z3, zero crashes, zero unsupported-input rejections, across both generator-based (fuzzsmt) and mutation-based (opfuzz/yinyang) fuzzing, seeded from both synthetic and real-world formulas. Competitiveness-roadmap item 1 (docs/arithmetic.md) is now done and verified to the same standard as Milestone 4b's already-promoted disequality behavior."
      },
      "verification": {
        "passed": [
          "3000-case campaign-tier fuzzsmt-vs-z3 QF_LRA run against the redesigned lowering pass: 0 crashes, 0 wrong answers, 0 unsupported-input rejections.",
          "opfuzz + 2 yinyang typefuzz mutation shards, seeded from 14 real QF_LRA benchmark files: 0 bug triggers across all three.",
          "Local 500-case merge-gate smoke test under ASAN+UBSan (companion entry) and the full unit suite (Release + ASAN/UBSan) were also clean prior to this campaign run."
        ],
        "pending": []
      },
      "evidence_status": "current_local",
      "notes": "Completes competitiveness-roadmap item 1 (LRA-aware solve-eqs via the Real-equality-lowering redesign). See docs/arithmetic.md's Milestone-roadmap entry and docs/preprocessing.md's 'Real-Equality Lowering' section for the design this campaign verifies."
    },
    {
      "id": "2026-07-25-qf-lra-gaussian-elimination-slurm-smoke-gate",
      "started_at": "2026-07-25",
      "recorded_at": "2026-07-25",
      "kind": "fuzz",
      "scope": "Merge-gate-tier (500-case) fuzz smoke test for the new opt-in --gaussian-elimination QF_LRA solve-eqs extension (commit 1470b5c/4901358): Gauss-Jordan row reduction over asserted linear equality systems, feeding the same solved-constant candidate/accept-reject pipeline the plain bare-variable recognizer uses. Run on llm2smt-slurm rather than locally, per explicit user correction during this session that all fuzzing -- including small merge-gate smoke checks, not just campaign-tier gates -- should be dispatched to Slurm (see feedback_fuzzing_on_slurm memory).",
      "commit": "4901358",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --gaussian-elimination (remote Release)"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/llm2smt_slurm_ssh_config --remote-dir <slurm-workdir>; then sbatch --array=0-0 --export=ALL,PATH=<contrib/local/bin prepended>,PRIMO_FUZZ_SOLVER='.../build-slurm-rel/primo --gaussian-elimination',PRIMO_FUZZ_FUZZSMT_SHARDS=1,PRIMO_FUZZ_FUZZSMT_COUNT=500,PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA,PRIMO_FUZZ_FUZZSMT_ARGS='-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2',PRIMO_FUZZ_OPFUZZ_TASKS=0,PRIMO_FUZZ_YINYANG_SHARDS=0 scripts/slurm_qfuf_fuzz_gate.sbatch -- the existing QF_LRA campaign sbatch template, shard/task counts turned down to a single 500-case fuzzsmt task for a smoke-tier run. First submission (job 113405) hit the known 'fuzzsmt is not installed' silent-no-op failure mode from forgetting to prepend contrib/local/bin to PATH in --export=...; fixed and resubmitted as job 113406.",
      "benchmark": {
        "suite": "fuzzsmt (QF_LRA, 500 cases), seeded/referenced against z3",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Remote fuzz-results/qfuf-gate-113406/ on llm2smt-slurm -- not committed. Aggregated via a remote python csv scan of fuzzsmt/shard-0/summary.csv."
      },
      "summary": {
        "result": "500/500 cases: 471 PASS, 29 TIMEOUT, 0 CRASH, 0 WRONG, 0 UNSUPPORTED_INPUT.",
        "significance": "First fuzz evidence for the new Gaussian-elimination solve-eqs extension: no wrong-answer disagreements against z3, no crashes, no unsupported-input rejections, with the opt-in flag explicitly enabled (the default off-path is unaffected either way and already covered by existing QF_LRA campaigns). Clears merge-gate tier; campaign-tier (>=3000 case) confirmation on Slurm still needed before promoting this from opt-in to default-on, per docs/arithmetic.md's Milestone roadmap and docs/preprocessing.md's 'Gaussian Elimination' section."
      },
      "verification": {
        "passed": [
          "500-case merge-gate-tier fuzzsmt-vs-z3 QF_LRA run with --gaussian-elimination explicitly enabled: 0 crashes, 0 wrong answers, 0 unsupported-input rejections.",
          "Full unit test suite (Release + ASAN/UBSan) green, including new Gaussian-elimination-specific unit tests (joint 2-equation system, single-equation-with-coefficient, equation-cap bail-out, contradictory-system soundness)."
        ],
        "pending": [
          "Campaign-tier (>=3000 case) Slurm confirmation before promoting --gaussian-elimination from opt-in to default-on."
        ]
      },
      "evidence_status": "current_local",
      "notes": "See docs/preprocessing.md's 'Gaussian Elimination (opt-in)' section and docs/arithmetic.md's Milestone-roadmap follow-up entry under competitiveness-roadmap item 1 for the design this run verifies. Commits: 1470b5c (code+tests), 4901358 (docs)."
    },
    {
      "id": "2026-07-25-qf-lra-gaussian-elimination-slurm-campaign-result",
      "started_at": "2026-07-25",
      "recorded_at": "2026-07-25",
      "kind": "fuzz",
      "scope": "Campaign-tier (>=3000 case) QF_LRA fuzz gate on llm2smt-slurm for the opt-in --gaussian-elimination solve-eqs extension (commit 1470b5c/4901358/036600e), following on from the companion merge-gate smoke test (2026-07-25-qf-lra-gaussian-elimination-slurm-smoke-gate, job 113406). This is the promotion gate for moving CheckSatOptions::gaussian_elimination from opt-in (default false) to default-on, per the staged rollout decided when the feature was designed (mirroring how Dantzig pivoting was rolled out).",
      "commit": "036600e",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --gaussian-elimination (remote Release)"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/llm2smt_slurm_ssh_config --remote-dir <slurm-workdir>; then sbatch --export=ALL,PATH=<contrib/local/bin + .venv-yinyang/bin prepended>,TYPEFUZZ=<remote .venv-yinyang/bin/typefuzz>,PRIMO_FUZZ_SOLVER='.../build-slurm-rel/primo --gaussian-elimination',PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA,PRIMO_FUZZ_FUZZSMT_ARGS='-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2',PRIMO_FUZZ_OPFUZZ_SEEDS=.../benchmarks/seeds/qf_lra_real,PRIMO_FUZZ_YINYANG_SEEDS=.../benchmarks/seeds/qf_lra_real scripts/slurm_qfuf_fuzz_gate.sbatch (default 9-task layout: 6 fuzzsmt shards x 500 = 3000 cases, 1 opfuzz task, 2 yinyang typefuzz mutation shards) as job 113407 -- completed cleanly on the first submission, no infrastructure issues (PATH/TYPEFUZZ set correctly from the start this time, learning from job 113405's earlier PATH gap).",
      "benchmark": {
        "suite": "fuzzsmt (QF_LRA, 6 shards x 500 = 3000 cases) + yinyang typefuzz mutation (2 shards) + opfuzz (1 task), all seeded/referenced against z3; mutation/opfuzz seeded from benchmarks/seeds/qf_lra_real (14 real-benchmark files)",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Remote fuzz-results/qfuf-gate-113407/ on llm2smt-slurm -- not committed, aggregated via a remote python csv scan across the 6 shard summary.csv files plus the opfuzz/yinyang bugs directory listings and log tails confirming real seed processing."
      },
      "summary": {
        "result": "fuzzsmt: 3000/3000 cases -- 2854 PASS, 146 TIMEOUT, 0 CRASH, 0 WRONG, 0 UNSUPPORTED_INPUT. opfuzz: 14/14 real seeds valid, 0 bug triggers. yinyang typefuzz (2 shards): 14/14 real seeds valid each, 0 bug triggers each. Fully clean campaign, matching the shape of the main real-equality-lowering campaign (job 113357: 2854 PASS/146 TIMEOUT out of 3000) almost exactly.",
        "significance": "Clears the campaign-tier bar for the new Gaussian-elimination solve-eqs machinery (row reduction over asserted linear equality systems): zero wrong-answer disagreements against z3, zero crashes, zero unsupported-input rejections, across both generator-based (fuzzsmt) and mutation-based (opfuzz/yinyang) fuzzing, seeded from both synthetic and real-world formulas, with the opt-in flag explicitly enabled throughout. This is the evidence the staged-rollout decision (opt-in first, promote once campaign-fuzzed) was waiting on -- see the companion docs/arithmetic.md/docs/preprocessing.md update promoting CheckSatOptions::gaussian_elimination's default to true."
      },
      "verification": {
        "passed": [
          "3000-case campaign-tier fuzzsmt-vs-z3 QF_LRA run with --gaussian-elimination enabled: 0 crashes, 0 wrong answers, 0 unsupported-input rejections.",
          "opfuzz + 2 yinyang typefuzz mutation shards, seeded from 14 real QF_LRA benchmark files, all with --gaussian-elimination enabled: 0 bug triggers across all three.",
          "Prior merge-gate-tier (500-case) Slurm smoke test (job 113406) and full unit suite (Release + ASAN/UBSan) were also clean prior to this campaign run."
        ],
        "pending": []
      },
      "evidence_status": "current_local",
      "notes": "Completes the verification staging for the Gaussian-elimination solve-eqs follow-up under competitiveness-roadmap item 1. See docs/preprocessing.md's 'Gaussian Elimination' section and docs/arithmetic.md's Milestone-roadmap entry for the promotion-status update this result justifies."
    },
    {
      "id": "2026-07-25-qf-lra-row-propagation-slurm-smoke-gate",
      "started_at": "2026-07-25",
      "recorded_at": "2026-07-25",
      "kind": "fuzz",
      "scope": "Merge-gate-tier (500-case) fuzz smoke test for the new opt-in --lra-row-propagation QF_LRA extension (commit 6661352/45fa2bc): row-based/interval bound propagation, generalizing Milestone 3b's same-slack propagation to a derived (not just directly-asserted) bound via compute_implied_bound. Run on llm2smt-slurm per the standing correction that all fuzzing, including merge-gate smoke checks, should be dispatched there rather than run locally.",
      "commit": "45fa2bc",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --lra-row-propagation (remote Release)"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/llm2smt_slurm_ssh_config --remote-dir <slurm-workdir>; then sbatch --array=0-0 --export=ALL,PATH=<contrib/local/bin prepended>,PRIMO_FUZZ_SOLVER='.../build-slurm-rel/primo --lra-row-propagation',PRIMO_FUZZ_FUZZSMT_SHARDS=1,PRIMO_FUZZ_FUZZSMT_COUNT=500,PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA,PRIMO_FUZZ_FUZZSMT_ARGS='-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2',PRIMO_FUZZ_OPFUZZ_TASKS=0,PRIMO_FUZZ_YINYANG_SHARDS=0 scripts/slurm_qfuf_fuzz_gate.sbatch -- single 500-case fuzzsmt task as job 113434, completed cleanly on first submission (PATH set correctly from the start).",
      "benchmark": {
        "suite": "fuzzsmt (QF_LRA, 500 cases), seeded/referenced against z3",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Remote fuzz-results/qfuf-gate-113434/ on llm2smt-slurm -- not committed. Aggregated via a remote python csv scan of fuzzsmt/shard-0/summary.csv."
      },
      "summary": {
        "result": "500/500 cases: 468 PASS, 32 TIMEOUT, 0 CRASH, 0 WRONG, 0 UNSUPPORTED_INPUT.",
        "significance": "First fuzz evidence for row-based/interval bound propagation: no wrong-answer disagreements against z3, no crashes, no unsupported-input rejections, with the opt-in flag explicitly enabled -- correctness held despite the new multi-literal-reason plumbing (pending_/reasons_/cb_add_reason_clause_lit widened from single-literal to vector<sat::Lit>) and the single_variable_slack/variable_for_single_slack indirection needed to find a row term's actual bound. Clears merge-gate tier; campaign-tier (>=3000 case) confirmation still needed before promoting from opt-in to default-on, per docs/arithmetic.md's Milestone roadmap."
      },
      "verification": {
        "passed": [
          "500-case merge-gate-tier fuzzsmt-vs-z3 QF_LRA run with --lra-row-propagation explicitly enabled: 0 crashes, 0 wrong answers, 0 unsupported-input rejections.",
          "Full unit test suite (Release + ASAN/UBSan) green, including new row_based_propagation_drives_boolean_structure/can_reach_a_conflict tests and the pre-existing same-slack propagation tests (unaffected by the pending_/reasons_ type widening).",
          "Quick 17-file real-benchmark re-run (docs/run-log.json, same session): mechanism fires on real formulas (verified via :lra.row-propagations, up to thousands on some files) though doesn't move the sat/unsat outcome on that narrow sample -- expected, mirrors Milestone 3b's own finding."
        ],
        "pending": [
          "Campaign-tier (>=3000 case) Slurm confirmation before promoting --lra-row-propagation from opt-in to default-on."
        ]
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's 'Row-based/interval bound propagation' section and Milestone-roadmap entry for the design this run verifies. Commits: 6661352 (code+tests), 45fa2bc (docs)."
    },
    {
      "id": "2026-07-25-qf-lra-soi-simplex-quick-eval",
      "started_at": "2026-07-25",
      "recorded_at": "2026-07-25",
      "kind": "benchmark",
      "scope": "Quick 17-file real-benchmark comparison (the same tmp/QF_LRA sample used for items 1-2's own quick-evals, one file per family, 5s timeout) between --lra-pivoting-rule bland (default) and soi (competitiveness-roadmap item 4, commit fc06922), to see whether SOI-Simplex's global sum-of-infeasibilities objective moves any of the sample's timeout cases. Also re-ran bland at the same time (rather than trusting an earlier session measurement) for an apples-to-apples comparison, since borderline 5s-timeout cases can be sensitive to system load.",
      "commit": "fc06922",
      "environment": {
        "type": "local",
        "host": "workspace container",
        "binary": "build/primo (Release)"
      },
      "benchmark": {
        "suite": "tmp/QF_LRA quick-eval sample (17 files, one per real-benchmark family)",
        "logic": "QF_LRA",
        "manifest": "/tmp/quick_qflra_manifest.txt"
      },
      "artifacts": {
        "note": "Not committed -- one-off manual comparison, not a fuzz run."
      },
      "summary": {
        "result": "Both bland and soi solved the identical 7/17 files (DTP-Scheduling, check, keymaera, meti-tarski, sal, spider_benchmarks, tta_startup), same sat/unsat answers, 0 disagreements. The remaining 10 files still time out under both.",
        "significance": "SOI-Simplex's global objective did not move this narrow sample -- matching items 1 (solve-eqs) and 2 (row-based propagation)'s own quick-eval findings that neither more preprocessing nor more propagation reach nor a different Simplex search objective individually closes this sample's timeouts. Strengthens the case for running item 0 (empirical z3/cvc5 baseline, still not done) to understand what's actually gating these families before investing further engineering effort guided by literature-plausibility alone. Note: an earlier session turn's own memory of item 2's baseline said 6/17 for bland; this fresh re-measurement got 7/17 for bland on the same sample just now -- likely timing variance near the 5s cutoff on a shared machine, not a regression (not chased further, doesn't affect this entry's bland-vs-soi comparison since both were measured in the same run)."
      },
      "verification": {
        "passed": [
          "17-file real-benchmark comparison: 0 wrong-answer disagreements between bland and soi."
        ],
        "pending": []
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's Milestone-roadmap entry for competitiveness-roadmap item 4 and docs/papers/lra-related-work.md's updated SOI-Simplex entry."
    },
    {
      "id": "2026-07-25-qf-lra-soi-simplex-slurm-smoke-gate",
      "started_at": "2026-07-25",
      "recorded_at": "2026-07-25",
      "kind": "fuzz",
      "scope": "Merge-gate-tier (500-case) fuzz smoke test for the new opt-in --lra-pivoting-rule soi (SOI-Simplex, competitiveness-roadmap item 4, commit fc06922/0cd1c34/bcdf7ef): the full King/Barrett/Dutertre FMCAD 2013 algorithm (incremental f-row, breakpoint-sorted DeltaVio walk, multi-row conflict + QuickXplain minimization). Run on llm2smt-slurm per the standing correction that all fuzzing, including merge-gate smoke checks, should be dispatched there.",
      "commit": "bcdf7ef",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --lra-pivoting-rule soi (remote Release)"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/llm2smt_slurm_ssh_config --remote-dir <slurm-workdir>; then sbatch --array=0-0 --export=ALL,PATH=<contrib/local/bin prepended>,PRIMO_FUZZ_SOLVER='.../build-slurm-rel/primo --lra-pivoting-rule soi',PRIMO_FUZZ_FUZZSMT_SHARDS=1,PRIMO_FUZZ_FUZZSMT_COUNT=500,PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA,PRIMO_FUZZ_FUZZSMT_ARGS='-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2',PRIMO_FUZZ_OPFUZZ_TASKS=0,PRIMO_FUZZ_YINYANG_SHARDS=0 scripts/slurm_qfuf_fuzz_gate.sbatch -- single 500-case fuzzsmt task as job 113439, completed cleanly on first submission.",
      "benchmark": {
        "suite": "fuzzsmt (QF_LRA, 500 cases), seeded/referenced against z3",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Remote fuzz-results/qfuf-gate-113439/ on llm2smt-slurm -- not committed."
      },
      "summary": {
        "result": "500/500 cases: 324 PASS, 176 TIMEOUT, 0 CRASH, 0 WRONG, 0 UNSUPPORTED_INPUT. Job took 18m28s wall-clock (vs. ~4m for the analogous Gaussian-elimination/row-propagation merge-gate runs) and the timeout rate (176/500, ~35%) is notably higher than those runs' (~25-32/500, ~5-6%).",
        "significance": "Correctness is clean: no crashes, no wrong-answer disagreements against z3, no unsupported-input rejections. The elevated timeout rate is a performance observation, not a correctness concern -- consistent with the paper's own framing (SOI-Simplex trades extra per-pivot analysis, the breakpoint-sorted DeltaVio walk over every Flex(f) candidate, for robustness on HARD instances specifically, not necessarily average-case speed on typical/random ones). fuzzsmt-generated formulas are often large synthetic instances requiring many pivots, where SOI's higher per-pivot cost compounds; this doesn't contradict the quick-eval finding (identical 7/17 on the small real-benchmark sample) since that sample's hard cases were dominated by a different bottleneck (still timing out regardless of pivoting rule) rather than pivot-count-bound cases SOI would help with."
      },
      "verification": {
        "passed": [
          "500-case merge-gate-tier fuzzsmt-vs-z3 QF_LRA run with --lra-pivoting-rule soi: 0 crashes, 0 wrong answers, 0 unsupported-input rejections.",
          "Full unit test suite (Release + ASAN/UBSan) green, including the Fig-6-paper-reproduction test and the heap-use-after-free fix found during manual smoke testing prior to this run."
        ],
        "pending": [
          "Campaign-tier (>=3000 case) Slurm confirmation before promoting --lra-pivoting-rule soi from opt-in to default-on (not currently planned given the elevated timeout rate suggests it isn't a clear win as-is).",
          "If SOI is pursued further, the elevated timeout rate suggests the per-pivot cost (full breakpoint-walk over every Flex(f) candidate, not the paper's own further-optimized incremental variant) may need profiling/optimization before it's competitive with Bland/Dantzig on typical instances, separately from its robustness value on genuinely hard ones."
        ]
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's 'SOI-Simplex pivoting' section for the design this run verifies, and the companion 2026-07-25-qf-lra-soi-simplex-quick-eval entry for the real-benchmark comparison."
    },
    {
      "id": "2026-07-25-qf-lra-competitiveness-item0-empirical-baseline",
      "started_at": "2026-07-25",
      "recorded_at": "2026-07-25",
      "kind": "benchmark",
      "scope": "Competitiveness-roadmap item 0: empirical Primo-vs-z3/cvc5 baseline over a new reusable stratified sample (benchmarks/qf-lra-stratified-sample.txt, up to 15 files per family, all 17 QF_LRA corpus families, fixed seed=42, 237 files total), 10s timeout, on llm2smt-slurm (jobs 113461 for z3/cvc5 + 113464 for a corrected primo-only re-run, commit f62af5b). Two real sbatch-script bugs were found and fixed along the way (not caught until inspecting task logs): a semicolon-vs-space delimiter collision that shifted array-task indices and dropped cvc5 off the end of the range (job 113450, cancelled), and an argparse nargs='+' gotcha where a multi-word solver command's own flag (--quiet) was left as an unrecognized argument (job 113461 task 0, primo, failed immediately) -- fixed by routing extra words through --solver-arg instead. A broken cvc5 install (missing libc++ shared libraries) was also found and fixed on both the local sandbox and the remote before this could run at all -- see the companion contrib/install_cvc5.py fix (commit ac52a7c).",
      "commit": "f62af5b",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --quiet (remote Release) vs. contrib/local/bin/{z3,cvc5}"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py ...; then sbatch scripts/slurm_qf_lra_solver_compare.sbatch (new reusable template, one array task per solver) -- job 113461 (z3, cvc5; primo task failed) + job 113464 (primo-only re-run into the same results/qf-lra-solver-compare-113461/ output directory after the argparse fix).",
      "benchmark": {
        "suite": "benchmarks/qf-lra-stratified-sample.txt (237 files, up to 15/family across all 17 QF_LRA corpus families)",
        "logic": "QF_LRA",
        "manifest": "benchmarks/qf-lra-stratified-sample.txt"
      },
      "artifacts": {
        "note": "Remote results/qf-lra-solver-compare-113461/{primo,z3,cvc5}.csv and *-summary.csv pulled back locally (not committed -- large per-file detail, reproducible from the manifest)."
      },
      "summary": {
        "result": "Solved (of 237): primo 102 (43%), z3 167 (70%), cvc5 150 (63%). PAR2 (10s timeout): primo 2799, z3 1531, cvc5 1885. Zero 3-way disagreements on concrete sat/unsat answers across all 237 files -- Primo's answers, where it produces one, are never wrong relative to either reference solver. Per-family breakdown is NOT uniform: Primo fully matches z3/cvc5 (15/15 or 2/2) on keymaera, meti-tarski, sal, spider_benchmarks, check, and is close on DTP-Scheduling (11 vs 15/13); on 2017-Heizmann-UltimateInvariantSynthesis, LassoRanker, and tropical-matrix all three solvers struggle roughly equally (these are genuinely hard for everyone, matching earlier quick-eval findings). But on TM (4 vs 15/14), sc (4 vs 13/12), uart (3 vs 13/12), 2019-ezsmt (3 vs 10/7), tta_startup (8 vs 14/13), and miplib (1 vs 6/5), Primo is specifically and substantially behind while z3/cvc5 mostly solve these within the same 10s budget. Spot-checking TM/uart's primo failures: purely TIMEOUT (not wrong-answer, not error, not unsupported) -- and the cases Primo DOES solve in these families solve fast (1.9-8.8s), suggesting a threshold effect (some difficulty/size crossing point) rather than uniform slowness.",
        "significance": "First genuine empirical evidence of WHERE Primo is behind, rather than inferring from a 17-file one-per-family sample dominated by the 'hard for everyone' families. This broader, family-stratified sample reveals a *different*, more tractable-looking set of gap families (TM, sc, uart, 2019-ezsmt, tta_startup, miplib) that the earlier narrow sample never surfaced -- these are prime candidates for follow-up investigation (e.g. profiling what's actually slow on a representative TM/uart timeout case) before further committing to items 2/3/4's engineering directions, since none of those (row-based propagation, SOI-Simplex) were evaluated against this specific, more informative family set."
      },
      "verification": {
        "passed": [
          "Zero wrong-answer disagreements across all 237 files, primo vs. z3 vs. cvc5 (3-way cross-check, not just against embedded :status metadata)."
        ],
        "pending": [
          "Root-cause investigation of the TM/sc/uart/2019-ezsmt/tta_startup/miplib timeout gap -- not yet profiled to determine what's actually the bottleneck (Simplex search itself, preprocessing overhead, something else)."
        ]
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's Milestone-roadmap entry for competitiveness-roadmap item 0. benchmarks/qf-lra-stratified-sample.txt and scripts/slurm_qf_lra_solver_compare.sbatch are both reusable for future QF_LRA (or QF_UF, via --root/manifest overrides) solver comparisons."
    },
    {
      "id": "2026-07-25-qf-lra-pivot-allocation-fix-slurm-smoke-gate",
      "started_at": "2026-07-25",
      "recorded_at": "2026-07-25",
      "kind": "fuzz",
      "scope": "Merge-gate-tier (500-case) fuzz smoke test for the LraTableau::pivot()/set_soi_direction() allocation fix (commit 04a6c73), following up on item 0's empirical baseline by profiling (perf) the 3 most dramatic Primo-timeout-but-z3/cvc5-instant cases it surfaced: tmp/QF_LRA/sc/sc-21.induction3.cvc.smt2, tmp/QF_LRA/uart/uart-18.induction.cvc.smt2, tmp/QF_LRA/TM/p5-zenonumeric_s5.smt2. perf showed 50-60% of runtime in malloc/free/GMP-allocation machinery, with pivot()'s per-affected-row combine step (a fresh std::unordered_map<LraVarId, Rational> built and torn down for every row touched by every pivot) as the dominant contributor; set_soi_direction() had the identical pattern. Fixed by replacing both with a reused member vector, sort-merged instead of hashed (a first attempt that just reused an unordered_map member did NOT help -- unordered_map is node-based, so every element is its own heap allocation regardless of container reuse; confirmed by re-profiling). Run on llm2smt-slurm per the standing policy that all fuzzing, including merge-gate smoke checks, is dispatched to Slurm rather than run locally.",
      "commit": "04a6c73",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --quiet (remote Release)"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py; then sbatch --array=0-0 --export=ALL,PATH=<contrib/local/bin prepended>,PRIMO_FUZZ_SOLVER='.../build-slurm-rel/primo --quiet',PRIMO_FUZZ_FUZZSMT_SHARDS=1,PRIMO_FUZZ_FUZZSMT_COUNT=500,PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA,PRIMO_FUZZ_FUZZSMT_ARGS='-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2',PRIMO_FUZZ_OPFUZZ_TASKS=0,PRIMO_FUZZ_YINYANG_SHARDS=0 scripts/slurm_qfuf_fuzz_gate.sbatch -- job 113938, no new CLI flag needed since this fix is unconditional (not opt-in), so the default pivoting path was exercised directly.",
      "benchmark": {
        "suite": "fuzzsmt (QF_LRA, 500 cases), seeded/referenced against z3",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Remote fuzz-results/qfuf-gate-113938/ on llm2smt-slurm -- not committed. Aggregated via a remote python csv scan of fuzzsmt/shard-0/summary.csv."
      },
      "summary": {
        "result": "500/500 cases: 471 PASS, 29 TIMEOUT, 0 CRASH, 0 WRONG, 0 UNSUPPORTED_INPUT.",
        "significance": "No wrong-answer disagreements against z3 and no crashes from this hot-path pivot rewrite -- the highest-risk part of this change (same trail/undo machinery item 4's SOI-Simplex work already flagged as its own highest-risk surface). Re-timing the 3 profiled files after the fix: TM/p5-zenonumeric_s5 dropped from 20.58s to 11.05s (~47% faster, wall-clock, single local run); sc-21 and uart-18 improved more modestly and noisily (sc-21 56.28s->47.85s; uart-18 21.27s->22.09s, within measurement noise) -- re-profiling confirmed the allocator overhead from this specific combine step is gone, but rows_/occurs_in_ themselves (both still std::unordered_map<LraVarId,...>, keyed by a dense small integer that could instead index a flat vector) remain a second, larger allocation source in the same pivot()/set_soi_direction() hot path, not yet addressed. None of the 3 files solve anywhere near z3/cvc5's <1s either way -- this fix reduces one real constant-factor cost, it does not close the competitiveness gap item 0 measured."
      },
      "verification": {
        "passed": [
          "500-case merge-gate-tier fuzzsmt-vs-z3 QF_LRA run, default pivoting path (no new flag): 0 crashes, 0 wrong-answer disagreements.",
          "Full local suite (Release + ASAN/UBSan) green before submitting."
        ],
        "pending": [
          "Campaign-tier (>=3000 case) Slurm confirmation, matching the discipline other QF_LRA changes this cycle went through, before treating this as equally trustworthy for anything beyond the merge-gate bar.",
          "The larger rows_/occurs_in_ unordered_map-to-vector conversion this profiling run surfaced as the next allocation bottleneck -- not started."
        ]
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's Milestone-roadmap entry for this fix. Directly follows up on item 0's empirical baseline (docs/run-log.json id 2026-07-25-qf-lra-competitiveness-item0-empirical-baseline), which identified TM/sc/uart/2019-ezsmt/tta_startup/miplib as the families where Primo specifically lags z3/cvc5."
    },
    {
      "id": "2026-07-26-qf-lra-rows-occurs-in-vectorization-slurm-smoke-gate",
      "started_at": "2026-07-25",
      "recorded_at": "2026-07-26",
      "kind": "fuzz",
      "scope": "Merge-gate-tier (500-case x2) fuzz smoke test for commit 2222b8f: converting LraTableau::rows_/occurs_in_/soi_directions_ from std::unordered_map<LraVarId, ...> to dense std::vector<...> indexed directly by LraVarId. Follow-up to the combine_scratch_ fix (id 2026-07-25-qf-lra-pivot-allocation-fix-slurm-smoke-gate): re-profiling that fix on the same 3 files (perf) showed std::__detail::_Map_base was still hot -- rows_/occurs_in_ were themselves unordered_map, so every pivot's rows_.erase+emplace and occurs_in_ insert/erase was its own per-call heap-allocated map-node churn. Since LraVarId is a dense index into vars_ (already a plain vector) and add_variable()/add_row() are only ever called during initial tableau setup before the first push()/check() (a documented class contract), sizing rows_/occurs_in_/soi_directions_ in lockstep with vars_ makes every index always valid, eliminating that map-node churn entirely. Ran two merge-gate jobs on llm2smt-slurm (per the standing all-fuzzing-on-Slurm policy): job 113939 (default Bland pivoting path) and job 113940 (--lra-pivoting-rule soi, since this change also touches soi_directions_/FRowTrailEntry undo, exercised more heavily under SOI).",
      "commit": "2222b8f",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --quiet [--lra-pivoting-rule soi] (remote Release)"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py; then two sbatch --array=0-0 submissions of scripts/slurm_qfuf_fuzz_gate.sbatch with PRIMO_FUZZ_FUZZSMT_SHARDS=1,PRIMO_FUZZ_FUZZSMT_COUNT=500,PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA,PRIMO_FUZZ_FUZZSMT_ARGS='-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2',PRIMO_FUZZ_OPFUZZ_TASKS=0,PRIMO_FUZZ_YINYANG_SHARDS=0 -- job 113939 with PRIMO_FUZZ_SOLVER='.../build-slurm-rel/primo --quiet', job 113940 with PRIMO_FUZZ_SOLVER='.../build-slurm-rel/primo --quiet --lra-pivoting-rule soi'.",
      "benchmark": {
        "suite": "fuzzsmt (QF_LRA, 500 cases x2), seeded/referenced against z3",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Remote fuzz-results/qfuf-gate-113939/ and qfuf-gate-113940/ on llm2smt-slurm -- not committed. Aggregated via a remote python csv scan of each fuzzsmt/shard-0/summary.csv."
      },
      "summary": {
        "result": "Job 113939 (Bland): 500/500 cases, 480 PASS, 20 TIMEOUT, 0 CRASH, 0 WRONG. Job 113940 (SOI): 500/500 cases, 338 PASS, 162 TIMEOUT, 0 CRASH, 0 WRONG. SOI's materially higher timeout rate matches its already-documented characteristic from when it was first introduced (see the SOI-Simplex pivoting section) -- not a regression from this change, just SOI's existing per-pivot cost being what it is.",
        "significance": "No wrong-answer disagreements against z3 and no crashes on either pivoting path -- confirms the vectorization (which re-touches the same trail/undo machinery this session already flagged as the highest-risk surface, and specifically rewrote rebuild_occurs_in_index()'s iteration to be is_basic-gated instead of map-presence-gated) didn't break anything under either default or SOI-heavy exercise. Re-profiling (perf) after this fix confirmed std::__detail::_Map_base is gone from the hot path entirely; the remaining allocation is GMP's own -- mpq_class's arithmetic operators (used throughout util::Rational) canonicalize (GCD-reduce) on every add/multiply by design, an inherent cost of exact rational arithmetic that this kind of container-level fix cannot remove. Wall-clock, single local runs on the 3 profiled files: sc-21 47.85s->43.24s, uart-18 22.09s->18.04s, TM/p5-zenonumeric_s5 11.05s->8.62s (down from the original pre-fix 20.58s, ~58% faster overall). None of the 3 files reach z3/cvc5's sub-1s times either way -- this closes a second real constant-factor cost on top of the first, it does not close the competitiveness gap item 0 measured."
      },
      "verification": {
        "passed": [
          "500-case merge-gate-tier fuzzsmt-vs-z3 QF_LRA run on both the default (Bland) and --lra-pivoting-rule soi paths: 0 crashes, 0 wrong-answer disagreements on either.",
          "Full local suite (Release + ASAN/UBSan) green before submitting, including all existing SOI-specific white-box tests (Fig 6 worked example, push/pop, multi-row conflict, quickxplain).",
          ":sat.decisions/:sat.conflicts identical to the pre-vectorization commit on all 3 profiled files -- confirms pure performance change, no behavior difference."
        ],
        "pending": [
          "Campaign-tier (>=3000 case) Slurm confirmation, matching the discipline other QF_LRA changes this cycle went through, before treating this as equally trustworthy for anything beyond the merge-gate bar."
        ]
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's Milestone-roadmap entry for this fix. Directly follows up on the combine_scratch_ fix (docs/run-log.json id 2026-07-25-qf-lra-pivot-allocation-fix-slurm-smoke-gate), which itself followed up on item 0's empirical baseline."
    },
    {
      "id": "2026-07-26-qf-lra-pivot-allocation-fixes-slurm-campaign-result",
      "started_at": "2026-07-26",
      "recorded_at": "2026-07-26",
      "kind": "fuzz",
      "scope": "Campaign-tier (>=3000 case) QF_LRA fuzz gate on llm2smt-slurm for the two pivot-allocation fixes to LraTableau (commit 04a6c73's combine_scratch_ fix + commit 2222b8f's rows_/occurs_in_/soi_directions_ vectorization), following the companion merge-gate smoke tests (2026-07-25-qf-lra-pivot-allocation-fix-slurm-smoke-gate job 113938, 2026-07-26-qf-lra-rows-occurs-in-vectorization-slurm-smoke-gate jobs 113939/113940). Both fixes touch the default (unconditional, not opt-in) pivoting path and its highest-risk surface (the trail/undo machinery), so this campaign is the promotion-confidence gate closing out the 'pending' campaign-tier verification item both prior entries flagged, mirroring the discipline Milestone 4b and the Gaussian-elimination feature (job 113407) went through before being trusted beyond merge-gate tier.",
      "commit": "2222b8f",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --quiet (remote Release, default Bland pivoting path)"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py; then sbatch --export=ALL,PATH=<contrib/local/bin + .venv-yinyang/bin prepended>,TYPEFUZZ=<remote .venv-yinyang/bin/typefuzz>,PRIMO_FUZZ_SOLVER='.../build-slurm-rel/primo --quiet',PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA,PRIMO_FUZZ_FUZZSMT_ARGS='-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2',PRIMO_FUZZ_OPFUZZ_SEEDS=.../benchmarks/seeds/qf_lra_real,PRIMO_FUZZ_YINYANG_SEEDS=.../benchmarks/seeds/qf_lra_real scripts/slurm_qfuf_fuzz_gate.sbatch (default 9-task layout: 6 fuzzsmt shards x 500 = 3000 cases, 1 opfuzz task, 2 yinyang typefuzz mutation shards) as job 113941 -- completed cleanly on the first submission.",
      "benchmark": {
        "suite": "fuzzsmt (QF_LRA, 6 shards x 500 = 3000 cases) + yinyang typefuzz mutation (2 shards) + opfuzz (1 task), all seeded/referenced against z3; mutation/opfuzz seeded from benchmarks/seeds/qf_lra_real (14 real-benchmark files)",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Remote fuzz-results/qfuf-gate-113941/ on llm2smt-slurm -- not committed, aggregated via a remote python csv scan across the 6 shard summary.csv files plus the opfuzz/yinyang bugs directory listings and log tails confirming real seed processing."
      },
      "summary": {
        "result": "fuzzsmt: 3000/3000 cases -- 2857 PASS, 143 TIMEOUT, 0 CRASH, 0 WRONG (per-shard: 477/23, 472/28, 475/25, 480/20, 481/19, 472/28). opfuzz (task 6): 14/14 real seeds valid, 0 bug triggers. yinyang typefuzz (tasks 7 and 8): 14/14 real seeds valid each, 0 bug triggers each.",
        "significance": "Fully clean campaign-tier result on both fixes together, promoting them from merge-gate-tier to the same trust level as Milestone 4b's own default-path confirmation. This closes out the 'pending' verification item both prior merge-gate entries flagged. The two fixes are now as trusted as any other default-on QF_LRA behavior -- no wrong-answer disagreements against z3, no crashes, across a broad fuzzsmt distribution plus real-benchmark-seeded mutation testing on both the generator and mutation-fuzzing axes."
      },
      "verification": {
        "passed": [
          "3000-case campaign-tier fuzzsmt-vs-z3 QF_LRA run: 0 crashes, 0 wrong-answer disagreements.",
          "opfuzz + 2 yinyang typefuzz mutation shards, all 14/14 real QF_LRA seeds valid, 0 bug triggers across all 3 mutation tasks."
        ],
        "pending": []
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's Milestone-roadmap entry for the pivot-allocation fix. Closes out the campaign-tier verification gap left open by 2026-07-25-qf-lra-pivot-allocation-fix-slurm-smoke-gate and 2026-07-26-qf-lra-rows-occurs-in-vectorization-slurm-smoke-gate."
    },
    {
      "id": "2026-07-26-qf-lra-violated-vars-worklist-slurm-fuzz-result",
      "started_at": "2026-07-26",
      "recorded_at": "2026-07-26",
      "kind": "fuzz",
      "scope": "Merge-gate (both pivoting paths) plus campaign-tier (default path) QF_LRA fuzz gate on llm2smt-slurm for roadmap item 5 (commit 80b617b): LraTableau::check()'s Bland/Dantzig violated-variable scan and SOI's error-var collection converted from an O(vars_.size()) linear scan to iterating an incrementally-maintained std::set<LraVarId> violated_vars_. Three jobs: 113950 (Bland merge-gate, 500 fuzzsmt cases), 113951 (--lra-pivoting-rule soi merge-gate, 500 cases), 113952 (Bland campaign-gate, 3000 fuzzsmt cases + opfuzz + 2 yinyang typefuzz mutation shards on benchmarks/seeds/qf_lra_real). SOI was not run at campaign tier, consistent with the precedent set for the two pivot-allocation fixes (SOI stays opt-in, merge-gate-tier confirmation only).",
      "commit": "80b617b",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --quiet [--lra-pivoting-rule soi] (remote Release)"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py; then sbatch --array=0-0 scripts/slurm_qfuf_fuzz_gate.sbatch twice (jobs 113950 Bland, 113951 soi -- PRIMO_FUZZ_FUZZSMT_SHARDS=1, PRIMO_FUZZ_FUZZSMT_COUNT=500, PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA, PRIMO_FUZZ_FUZZSMT_ARGS='-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2', PRIMO_FUZZ_OPFUZZ_TASKS=0, PRIMO_FUZZ_YINYANG_SHARDS=0); then sbatch scripts/slurm_qfuf_fuzz_gate.sbatch with its default 9-task array (job 113952, Bland only -- same PRIMO_FUZZ_FUZZSMT_ARGS, PRIMO_FUZZ_OPFUZZ_SEEDS/PRIMO_FUZZ_YINYANG_SEEDS=.../benchmarks/seeds/qf_lra_real, TYPEFUZZ=.../.venv-yinyang/bin/typefuzz).",
      "benchmark": {
        "suite": "fuzzsmt (QF_LRA, 500 cases x2 merge-gate + 6 shards x 500 = 3000 cases campaign) + yinyang typefuzz mutation (2 shards) + opfuzz (1 task) for the campaign job, all seeded/referenced against z3; mutation/opfuzz seeded from benchmarks/seeds/qf_lra_real (14 real-benchmark files)",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Remote fuzz-results/qfuf-gate-113950/, -113951/, -113952/ on llm2smt-slurm -- not committed, aggregated via remote python csv scans plus opfuzz/yinyang bugs directory listings and log tails confirming real seed processing."
      },
      "summary": {
        "result": "Merge-gate: job 113950 (Bland) 500/500 -- 473 PASS, 27 TIMEOUT, 0 CRASH, 0 WRONG. Job 113951 (SOI) 500/500 -- 334 PASS, 166 TIMEOUT, 0 CRASH, 0 WRONG (SOI's higher timeout rate matches its already-documented characteristic, not a regression). Campaign-gate: job 113952 (Bland) fuzzsmt 3000/3000 -- 2883 PASS, 117 TIMEOUT, 0 CRASH, 0 WRONG (per-shard: 488/12, 478/22, 473/27, 478/22, 477/23, 489/11); opfuzz (task 6) 14/14 real seeds valid, 0 bug triggers; yinyang typefuzz (tasks 7, 8) 14/14 real seeds valid each, 0 bug triggers each.",
        "significance": "Fully clean at both merge-gate and campaign-gate tiers -- promotes item 5's violated_vars_ worklist to the same trust level as the two pivot-allocation fixes it builds on. Locally measured (see docs/arithmetic.md): :sat.decisions/:sat.conflicts/:lra.pivots/:lra.online-check-calls bit-identical to the pre-item-5 commit on all 3 profiled files (pure perf change, confirmed no selection-order change), with wall-clock further improved: uart-18 18.04s->12.45s (~31% faster), TM/p5-zenonumeric_s5 8.62s->6.54s (~24% faster), sc-21 slightly faster. Stacked with the two prior allocation fixes, TM/p5 is now roughly 2.5x faster than the original pre-optimization baseline (20.58s->6.54s), though still far from z3/cvc5's sub-1s times on these specific files."
      },
      "verification": {
        "passed": [
          "Merge-gate: 0 crashes, 0 wrong-answer disagreements on both Bland and SOI pivoting paths.",
          "Campaign-gate: 0 crashes, 0 wrong-answer disagreements across 3000 fuzzsmt cases plus opfuzz and 2 yinyang mutation shards, all seeded from real QF_LRA benchmarks.",
          "Full local suite (Release + ASAN/UBSan) green, including a new push/pop regression test targeting violated_vars_'s rebuild-after-pop invariant."
        ],
        "pending": []
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's Milestone-roadmap entry and /home/user/.claude/plans/piped-wondering-fairy.md's item 5 section for the full design. Item 6 (deferring LraTableau::check() to CaDiCaL's cb_has_external_clause) is next per the plan's own stated sequencing."
    },
    {
      "id": "2026-07-26-qf-lra-deferred-check-slurm-fuzz-result",
      "started_at": "2026-07-26",
      "recorded_at": "2026-07-26",
      "kind": "fuzz",
      "scope": "Merge-gate and campaign-tier QF_LRA fuzz gate on llm2smt-slurm, on BOTH pivoting paths, for roadmap item 6 (commit 28f573d): deferring OnlineLraPropagator's Check/Pivot repair from every assigned literal (notify_assignment_lit) to CaDiCaL's cb_has_external_clause callback, which is only asked once per quiescence point. Four jobs: 114174 (Bland merge-gate, 500 fuzzsmt cases), 114175 (soi merge-gate, 500 cases), 114182 (Bland campaign-gate, 3000 fuzzsmt cases + opfuzz + 2 yinyang typefuzz mutation shards on benchmarks/seeds/qf_lra_real), 114183 (soi campaign-gate, same layout). Unlike item 5 (SOI only merge-gate-tier), this item required campaign-gate confirmation on BOTH paths per the plan, since it touches CaDiCaL protocol integration rather than an internal-only data structure.",
      "commit": "28f573d",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --quiet [--lra-pivoting-rule soi] (remote Release)"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py; then sbatch --array=0-0 scripts/slurm_qfuf_fuzz_gate.sbatch twice for merge-gate (jobs 114174 Bland, 114175 soi -- PRIMO_FUZZ_FUZZSMT_SHARDS=1, PRIMO_FUZZ_FUZZSMT_COUNT=500, PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA, PRIMO_FUZZ_FUZZSMT_ARGS='-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2', PRIMO_FUZZ_OPFUZZ_TASKS=0, PRIMO_FUZZ_YINYANG_SHARDS=0); then sbatch scripts/slurm_qfuf_fuzz_gate.sbatch (default 9-task array) twice for campaign-gate (jobs 114182 Bland, 114183 soi -- same PRIMO_FUZZ_FUZZSMT_ARGS, PRIMO_FUZZ_OPFUZZ_SEEDS/PRIMO_FUZZ_YINYANG_SEEDS=.../benchmarks/seeds/qf_lra_real, TYPEFUZZ=.../.venv-yinyang/bin/typefuzz), run concurrently on the same node.",
      "benchmark": {
        "suite": "fuzzsmt (QF_LRA, 500 cases x2 merge-gate + 6 shards x 500 = 3000 cases x2 campaign) + yinyang typefuzz mutation (2 shards x2) + opfuzz (1 task x2), all seeded/referenced against z3; mutation/opfuzz seeded from benchmarks/seeds/qf_lra_real (14 real-benchmark files)",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Remote fuzz-results/qfuf-gate-114174/, -114175/, -114182/, -114183/ on llm2smt-slurm -- not committed, aggregated via remote python csv scans plus opfuzz/yinyang bugs directory listings and log tails confirming real seed processing."
      },
      "summary": {
        "result": "Merge-gate: job 114174 (Bland) 500/500 -- 477 PASS, 23 TIMEOUT, 0 CRASH, 0 WRONG. Job 114175 (soi) 500/500 -- 339 PASS, 161 TIMEOUT, 0 CRASH, 0 WRONG. Campaign-gate: job 114182 (Bland) fuzzsmt 3000/3000 -- 2860 PASS, 140 TIMEOUT, 0 CRASH, 0 WRONG; opfuzz+2 yinyang shards, 14/14 real seeds valid each, 0 bug triggers each. Job 114183 (soi) fuzzsmt 3000/3000 -- 2024 PASS, 976 TIMEOUT, 0 CRASH, 0 WRONG (soi's much higher timeout rate under this campaign's args matches its already-documented characteristic, not a regression); opfuzz+2 yinyang shards, 14/14 real seeds valid each, 0 bug triggers each.",
        "significance": "Fully clean at both tiers on both pivoting paths -- the highest verification bar any QF_LRA change has been held to this cycle, matching the plan's explicit requirement for this item given it touches CaDiCaL protocol integration (conflict-detection timing) rather than an internal-only data structure. A real bug was caught and fixed during local testing before this fuzzing even started (see commit 28f573d's message: a stale needs_check_ flag could let a later direct bound conflict get silently overwritten by a stale tableau_.check() result) -- the existing black-box test suite (not fuzzing) is what caught it, reinforcing that full-suite-before-fuzzing discipline. Measured locally (see docs/arithmetic.md): :lra.online-check-calls dropped 57-95% across the 3 profiled files (largest drop on the most propagation-heavy file, TM/p5-zenonumeric_s5); wall-clock further improved: sc-21 40.93s->23.11s, uart-18 12.45s->6.24s, TM/p5-zenonumeric_s5 6.54s->4.21s. Unlike items 5 and the two allocation fixes, :sat.decisions/:sat.conflicts/:lra.pivots are NOT bit-identical to the pre-item-6 commit -- expected, since deferring conflict discovery legitimately reshapes the search trajectory (still fully correct, just a different valid path, matching the exact same reordering effect observed with the earlier pivot-allocation fixes)."
      },
      "verification": {
        "passed": [
          "Merge-gate: 0 crashes, 0 wrong-answer disagreements on both Bland and soi pivoting paths.",
          "Campaign-gate: 0 crashes, 0 wrong-answer disagreements across 3000 fuzzsmt cases plus opfuzz and 2 yinyang mutation shards, on BOTH pivoting paths, all seeded from real QF_LRA benchmarks.",
          "Full local suite (Release + ASAN/UBSan) green, including a new black-box test asserting :lra.online-check-calls stays bounded by decisions+conflicts+1 regardless of how many extra atoms propagation resolves alongside."
        ],
        "pending": []
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's Milestone-roadmap entry and /home/user/.claude/plans/piped-wondering-fairy.md's item 6 section for the full design. This closes out all of the QF_LRA competitiveness roadmap's currently-planned items (0-6). Stacked across items 0's baseline profiling through item 6, the 3 originally-profiled files went from (pre-optimization baseline) sc-21 56.28s/uart-18 21.27s/TM-p5 20.58s to (post item 6) sc-21 23.11s/uart-18 6.24s/TM-p5 4.21s -- roughly 2.4x-4.9x faster depending on the file -- while remaining far from z3/cvc5's sub-1s times on these same files, confirming these fixes closed real constant-factor and call-volume costs without closing the underlying competitiveness gap item 0 measured."
    },
    {
      "id": "2026-07-26-qf-lra-competitiveness-post-items-0-6-rerun",
      "started_at": "2026-07-26",
      "recorded_at": "2026-07-26",
      "kind": "benchmark",
      "scope": "Re-ran item 0's exact 237-file QF_LRA stratified-sample comparison (benchmarks/qf-lra-stratified-sample.txt, 10s timeout) against the current code (commit 28f573d, after the two pivot-allocation fixes plus roadmap items 5-6) to see whether the broader benchmark set -- not just the 3 hand-picked worst-case files profiled along the way -- shows improvement. Job 114200 (primo/z3/cvc5, all 3 tasks). In hindsight this was more than necessary: z3/cvc5 are unchanged binaries and re-running them just reproduced their own prior numbers within jitter (PAR2 1532 vs 1531, 1887 vs 1885) -- a future re-run like this should submit only the primo task and diff against the existing z3.csv/cvc5.csv (see the new feedback_dont_rerun_unchanged_reference_solvers memory).",
      "commit": "28f573d",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --quiet (remote Release) vs. contrib/local/bin/{z3,cvc5}"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py; then sbatch scripts/slurm_qf_lra_solver_compare.sbatch (default array 0-2, default manifest/timeout/solvers) as job 114200.",
      "benchmark": {
        "suite": "benchmarks/qf-lra-stratified-sample.txt (same 237-file sample as item 0's original baseline)",
        "logic": "QF_LRA",
        "manifest": "benchmarks/qf-lra-stratified-sample.txt"
      },
      "artifacts": {
        "note": "Remote results/qf-lra-solver-compare-114200/{primo,z3,cvc5}.csv pulled back to results/qf-lra-solver-compare-114200/ locally (not committed, matching the original baseline's handling). Rendered as a colored HTML comparison table via the new scripts/render_solver_compare_html.py and published as an Artifact."
      },
      "summary": {
        "result": "Solved (of 237): primo 108 (45.6%, up from 102/43.0%), z3 167 (70.5%, unchanged), cvc5 150 (63.3%, unchanged). PAR2: primo 2676s (down from 2799s), z3 1532s (~unchanged), cvc5 1887s (~unchanged). Zero 3-way disagreements, same as the original baseline. Per previously-lagging family (primo solved / 15, vs. the original baseline in parens): TM 6 (was 4), sc 5 (was 4), uart 4 (was 3), 2019-ezsmt 3 (was 3, unchanged), tta_startup 9 (was 8), miplib 1 (was 1, unchanged).",
        "significance": "A real but modest aggregate improvement (+6 files, +2.6 points, PAR2 down ~4.4%) from items 0-6's combined perf work -- consistent with, and explained by, the fact that the 3 profiled files' dramatic per-file speedups (2.4x-4.9x) only flip a file from timeout to solved within this sample's fixed 10s budget if its post-fix time actually drops under 10s (e.g. uart-18's 21.27s->6.24s would; sc-21's 56.28s->23.11s would not). Confirms the item 0-6 thread's own honest framing: these were real, verified constant-factor and call-volume fixes on the Simplex engine's mechanics, not a fix for the underlying competitiveness gap -- most of the previously-identified gap families (TM/sc/uart/2019-ezsmt/tta_startup/miplib) remain substantially behind z3/cvc5, and the two families that didn't move at all (2019-ezsmt, miplib) are candidates for a fresh round of profiling if this gap is revisited."
      },
      "verification": {
        "passed": [
          "Zero wrong-answer disagreements across all 237 files, primo vs. z3 vs. cvc5, same as the original baseline."
        ],
        "pending": []
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's Milestone-roadmap items 0-6 summary for the narrative. scripts/render_solver_compare_html.py (new, commit 9df3094) is now the standard way to visualize a solver-comparison result -- see feedback_dont_rerun_unchanged_reference_solvers memory for both standing directives established this round (don't re-run unchanged reference solvers; always render this table)."
    },
    {
      "id": "2026-07-26-qf-lra-bidirectional-row-propagation-slurm-smoke-gate",
      "started_at": "2026-07-26",
      "recorded_at": "2026-07-26",
      "kind": "fuzz",
      "scope": "Merge-gate-tier (500-case) fuzz smoke test for roadmap item 7 (commit 461c38d): bidirectional row-based propagation, opt-in via --lra-bidirectional-row-propagation (requires --lra-row-propagation also on). Following the discovery (job 114200's 9 dramatic-gap-file investigation) that z3/cvc5 both win via far more complete propagation than pivoting, this item extended item 2's existing row-based propagation with the reverse direction: deriving a bound on one of a row's *other* terms from the row's own bound plus its remaining terms, not just deriving the row's own bound. Empirical result on the 9 dramatic-gap files was genuinely mixed (see docs/arithmetic.md and the commit message for the full breakdown) -- not being promoted to default-on, so only merge-gate-tier confirmation (not campaign-tier) is warranted here, matching the precedent for other opt-in, not-promoted features (e.g. SOI-Simplex pivoting).",
      "commit": "461c38d",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --quiet --lra-row-propagation --lra-bidirectional-row-propagation (remote Release)"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py; then sbatch --array=0-0 --export=ALL,PATH=<contrib/local/bin prepended>,PRIMO_FUZZ_SOLVER='.../build-slurm-rel/primo --quiet --lra-row-propagation --lra-bidirectional-row-propagation',PRIMO_FUZZ_FUZZSMT_SHARDS=1,PRIMO_FUZZ_FUZZSMT_COUNT=500,PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA,PRIMO_FUZZ_FUZZSMT_ARGS='-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2',PRIMO_FUZZ_OPFUZZ_TASKS=0,PRIMO_FUZZ_YINYANG_SHARDS=0 scripts/slurm_qfuf_fuzz_gate.sbatch -- job 114203.",
      "benchmark": {
        "suite": "fuzzsmt (QF_LRA, 500 cases), seeded/referenced against z3",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Remote fuzz-results/qfuf-gate-114203/ on llm2smt-slurm -- not committed, aggregated via a remote python csv scan of fuzzsmt/shard-0/summary.csv."
      },
      "summary": {
        "result": "500/500 cases: 483 PASS, 17 TIMEOUT, 0 CRASH, 0 WRONG.",
        "significance": "No wrong-answer disagreements against z3 and no crashes with both new flags explicitly enabled. Confirms the reverse-direction propagation logic (compute_implied_child_bound's sign-rule rearrangement) is sound, not just locally unit-tested. Empirical performance evidence (see docs/arithmetic.md) shows this item's own effect is genuinely mixed across the 9 files it was designed to help -- wall-clock wins on 3/9, losses on 4/9, roughly flat on 2/9 -- so it stays opt-in rather than being promoted, this merge-gate result is the appropriate final trust bar for it given that decision."
      },
      "verification": {
        "passed": [
          "500-case merge-gate-tier fuzzsmt-vs-z3 QF_LRA run with both --lra-row-propagation and --lra-bidirectional-row-propagation explicitly enabled: 0 crashes, 0 wrong-answer disagreements.",
          "Full local suite (Release + ASAN/UBSan) green, including two new black-box tests for the reverse-direction propagation."
        ],
        "pending": []
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's Milestone-roadmap entry for item 7 and /home/user/.claude/plans/piped-wondering-fairy.md's item 7 section for the full design and empirical results. This closes out all of the QF_LRA competitiveness roadmap's currently-planned items (0-7). The underlying TM/sc/uart-vs-z3/cvc5 gap remains substantially open -- z3/cvc5 both still win primarily via far fewer pivots (not cheaper ones), and this item's mixed result suggests row-rearrangement propagation alone isn't the missing piece for most of these files."
    },
    {
      "id": "2026-07-26-qf-lra-theory-decisions-nine-file-comparison",
      "started_at": "2026-07-26",
      "recorded_at": "2026-07-27",
      "kind": "benchmark",
      "scope": "Roadmap item 8 (commit 17f8faf): theory-guided decisions via CaDiCaL's cb_decide, --lra-theory-decisions vs. default, on the 9 dramatic-gap files from job 114200 (both z3 and cvc5 solve in <1s, Primo timed out at 10s in that sample). Re-derived the exact 9 filenames from the local results/qf-lra-solver-compare-114200/{primo,z3,cvc5}.csv (status=='ok' for z3/cvc5 with seconds<1.0, status=='timeout' for primo), matching the file list already named in docs/arithmetic.md's item 7 entry. Ran each file with and without --lra-theory-decisions at a 60s timeout (looser than the 10s solver-compare budget, to see whether the flag changes the eventual outcome not just whether it clears one fixed budget), reporting :sat.decisions, :lra.pivots, and wall-clock for each.",
      "commit": "17f8faf",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --quiet [--lra-theory-decisions] (remote Release)"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py; then, directly via ssh (not sbatch -- single-file timing runs, not a batch fuzz campaign), for each of the 9 files: timeout 60 build-slurm-rel/primo --quiet --stats [--lra-theory-decisions] <file>, wall-clock timed via date +%s.%N before/after.",
      "benchmark": {
        "suite": "tmp/QF_LRA/{TM/p-DepotsNum_s8.msat.smt2, TM/p6-zenonumeric_s5.smt2, sc/sc-17.induction3.cvc.smt2, sc/sc-19.induction3.cvc.smt2, sc/sc-21.induction3.cvc.smt2, sc/sc-27.induction.cvc.smt2, uart/uart-16.induction.cvc.smt2, uart/uart-17.induction.cvc.smt2, uart/uart-18.induction.cvc.smt2}",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Raw per-file output captured in the session transcript only -- not saved as a separate file/CSV, given only 9 files and a single before/after comparison per file (unlike the 237-file solver-compare runs, which do get their own results/ directory)."
      },
      "summary": {
        "result": "TM/p6-zenonumeric_s5: 57.5s->13.9s (-76%), decisions 128,313->20,326, pivots 113,806->11,018. TM/p-DepotsNum_s8: 52.4s->45.8s (-13%), decisions 19,666->47,431 (more), pivots 83,172->44,798 (fewer). uart-17: 19.2s->17.9s (-7%). sc-17/sc-19/sc-21: all flip from solved (25-49s) to timed-out at the 60s budget. sc-27: timed-out either way, more pivots with the flag (9,270->22,842). uart-16: 14.5s->43.4s (~3x slower). uart-18: 13.0s->20.4s (~1.6x slower). 0 wrong-answer disagreements (every completed run's Sat/Unsat verdict was unchanged by the flag).",
        "significance": "Genuinely mixed, with real regressions, not just a wash -- the highest-variance result of any QF_LRA competitiveness-roadmap item to date. One file (TM/p6) shows the mechanism can deliver a dramatic win (decision-guidance genuinely mattering, not just reshuffling pivots elsewhere), but three sc-family files regress from solved to unsolved within the same time budget, and two uart files get markedly slower while still solving. Decision counts frequently increase even where pivots drop, suggesting the cost-ranking scan's own per-decision overhead (and its effect on which decisions actually get made) isn't a uniform win. Not recommended for default-on promotion on this evidence -- see docs/arithmetic.md's item 8 entry for the full write-up."
      },
      "verification": {
        "passed": [],
        "pending": []
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's Milestone-roadmap entry for item 8 and /home/user/.claude/plans/piped-wondering-fairy.md's item 8 section for the full design, literature trail (including the retracted CaDiCaL-freezing hypothesis), and this same empirical breakdown."
    },
    {
      "id": "2026-07-26-qf-lra-theory-decisions-slurm-fuzz-gate",
      "started_at": "2026-07-26",
      "recorded_at": "2026-07-27",
      "kind": "fuzz",
      "scope": "Merge-gate-tier (500-case) and campaign-gate-tier fuzz confirmation for roadmap item 8 (commit 17f8faf): theory-guided decisions via CaDiCaL's cb_decide, opt-in via --lra-theory-decisions. Unlike item 7 (where campaign-tier was skipped after the mixed result led to a not-promoted decision), the plan for this item explicitly called for campaign-gate confirmation regardless of the promotion decision, given its larger risk surface (new per-decision hot-path bookkeeping, bypasses VSIDS on essentially every decision rather than only opportunistically).",
      "commit": "17f8faf",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --quiet --lra-theory-decisions (remote Release)"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py; then sbatch --array=0-0 --export=ALL,PATH=<contrib/local/bin prepended>,PRIMO_FUZZ_SOLVER='.../primo --quiet --lra-theory-decisions',PRIMO_FUZZ_FUZZSMT_SHARDS=1,PRIMO_FUZZ_FUZZSMT_COUNT=500,PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA,PRIMO_FUZZ_FUZZSMT_ARGS='-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2',PRIMO_FUZZ_OPFUZZ_TASKS=0,PRIMO_FUZZ_YINYANG_SHARDS=0 scripts/slurm_qfuf_fuzz_gate.sbatch for merge-gate (job 114204); then sbatch (default 9-task array) with PRIMO_FUZZ_FUZZSMT_LOGIC/ARGS as above, PRIMO_FUZZ_OPFUZZ_SEEDS/PRIMO_FUZZ_YINYANG_SEEDS=.../benchmarks/seeds/qf_lra_real, TYPEFUZZ=.../.venv-yinyang/bin/typefuzz for campaign-gate (job 114205). Job 114205's opfuzz task (task 6) failed with 'opfuzz not found' since the sbatch script's opfuzz path (--typefuzz opfuzz, a bare PATH lookup, distinct from the TYPEFUZZ override which only applies to the yinyang-typefuzz tasks) wasn't on PATH in this non-interactive submission -- re-ran just that one task as job 114214 (--array=6-6, PATH with .venv-yinyang/bin prepended, PRIMO_FUZZ_OUT_ROOT pointed back at job 114205's own results directory so both jobs' output live under one place) rather than re-running the whole campaign; fuzzsmt shards and yinyang shards from job 114205 itself were unaffected by this and did not need re-running.",
      "benchmark": {
        "suite": "Merge-gate: fuzzsmt (QF_LRA, 500 cases), seeded/referenced against z3. Campaign-gate: fuzzsmt (QF_LRA, 6 shards x 500 = 3000 cases) + opfuzz (1 task, 200 iterations/seed) + yinyang typefuzz mutation (2 shards, 100 iterations/seed), opfuzz/yinyang seeded from benchmarks/seeds/qf_lra_real (14 real-benchmark files), all referenced/model-validated against z3.",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Remote fuzz-results/qfuf-gate-114204/ (merge-gate) and fuzz-results/qfuf-gate-114205/ (campaign-gate, including job 114214's opfuzz re-run output under its own opfuzz/task-6/) on llm2smt-slurm -- not committed, aggregated via remote python csv scans of fuzzsmt/shard-*/summary.csv and log tails/bugs-directory listings for opfuzz/yinyang."
      },
      "summary": {
        "result": "Merge-gate (job 114204): 500/500 cases -- 488 PASS, 12 TIMEOUT, 0 CRASH, 0 WRONG. Campaign-gate (job 114205 fuzzsmt+yinyang, job 114214 opfuzz re-run): fuzzsmt 3000/3000 across 6 shards -- 2909 PASS, 91 TIMEOUT, 0 CRASH, 0 WRONG; opfuzz 14/14 real seeds valid, 0 invalid, 0 bug triggers (~5,500+ solver calls); yinyang typefuzz mutation, 2 shards, 0 bug triggers in either shard's bugs directory.",
        "significance": "No wrong-answer disagreements against z3 and no crashes anywhere across merge-gate or campaign-gate, with --lra-theory-decisions explicitly enabled throughout -- confirms cb_decide's cost-ranking logic (estimate_assertion_cost, the rotating candidate scan) is sound under fuzzing, not just the two hand-built black-box unit tests. Per the plan, this campaign-gate confirmation was obtained regardless of the promotion decision (see the companion nine-file-comparison entry, 2026-07-26-qf-lra-theory-decisions-nine-file-comparison, for why item 8 is staying opt-in and not being promoted to default-on despite this clean fuzz result)."
      },
      "verification": {
        "passed": [
          "500-case merge-gate-tier fuzzsmt-vs-z3 QF_LRA run with --lra-theory-decisions explicitly enabled: 0 crashes, 0 wrong-answer disagreements.",
          "3000-case campaign-gate-tier fuzzsmt-vs-z3 QF_LRA run, same flag: 0 crashes, 0 wrong-answer disagreements.",
          "Campaign-gate opfuzz (14/14 real qf_lra_real seeds valid) and yinyang typefuzz mutation (2 shards) against the same seed corpus: 0 bug triggers in either.",
          "Full local suite (Release + ASAN/UBSan) green, including two new black-box tests (free-win path and cost-ranked-no-free-candidate path)."
        ],
        "pending": []
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's Milestone-roadmap entry for item 8 and /home/user/.claude/plans/piped-wondering-fairy.md's item 8 section for the full design and both empirical results (this fuzz-soundness result plus the separate nine-file wall-clock/decision/pivot comparison). This closes out all of the QF_LRA competitiveness roadmap's currently-planned items (0-8)."
    },
    {
      "id": "2026-07-27-qf-lra-theory-decisions-cost-ranking-retired",
      "started_at": "2026-07-27",
      "recorded_at": "2026-07-27",
      "kind": "benchmark",
      "scope": "Re-investigation of roadmap item 8's mixed nine-file result (commit 17f8faf), prompted by an explicit user request to check for a missed performance issue rather than accepting 'mixed result' as final. Added a temporary debug env-var gate (PRIMO_DEBUG_THEORY_DECIDE_CHEAP) to OnlineLraPropagator::cb_decide() that bypasses estimate_assertion_cost entirely -- supplies the next unassigned arithmetic atom's literal with no per-candidate ranking at all -- to isolate whether the regressions were caused by the ranking's own arithmetic overhead or by the ranking producing worse decisions than a naive stable order would.",
      "commit": "17f8faf",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --quiet --lra-theory-decisions, with PRIMO_DEBUG_THEORY_DECIDE_CHEAP=1 for the cheap-mode runs (remote Release, manual rsync since the tree was intentionally dirty during this debug round-trip -- prepare_benchmark_workspace.py's dirty-tree guard was bypassed deliberately for this one-off investigation, not routinely)"
      },
      "command": "Manual rsync (same exclude list as scripts/slurm_prepare_benchmark_workspace.py's rsync_repo) plus a manual remote cmake --build, since the debug patch was intentionally uncommitted; then direct ssh timing runs (timeout 60, --stats) of each of the 9 dramatic-gap files under baseline, PRIMO_DEBUG_THEORY_DECIDE_CHEAP=1, and the full cost-ranked --lra-theory-decisions, comparing :sat.decisions, :lra.pivots, and wall-clock.",
      "benchmark": {
        "suite": "Same 9-file dramatic-gap list as the 2026-07-26-qf-lra-theory-decisions-nine-file-comparison entry",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Raw per-file output captured in the session transcript only, matching the original nine-file-comparison entry's handling."
      },
      "summary": {
        "result": "Cheap mode (no ranking) beat BOTH plain VSIDS and the cost-ranked design on 8/9 files, often by 40-96%: TM/p-DepotsNum_s8 52.4s->11.3s, TM/p6-zenonumeric_s5 57.5s->2.1s, sc-17 25.7s->11.4s (solved -- cost-ranked timed out), sc-19 40.8s->19.2s (solved -- cost-ranked timed out), sc-21 49.1s->29.9s (solved -- cost-ranked timed out), sc-27 timeout->23.1s SOLVED (neither baseline nor cost-ranked ever solved this file), uart-16 14.5s->15.0s (flat, cost-ranked was 43.4s), uart-17 19.2s->19.1s (flat), uart-18 13.0s->13.8s (flat, cost-ranked was 20.4s).",
        "significance": "Conclusively isolates the cause of item 8's original mixed result: estimate_assertion_cost's per-candidate ranking was not merely expensive overhead, it was actively selecting worse decisions than a plain stable round-robin order would -- the three sc-family solved-to-timeout regressions were VSIDS beating the 'smarter'-looking heuristic outright, and a heuristic with NO domain knowledge at all (just 'decide arithmetic atoms before Boolean structure, in a fixed order') beat it too. Directly led to retiring the cost-ranked design (commit fc28dbc) in favor of the plain round-robin -- see the companion 2026-07-27-qf-lra-theory-decisions-round-robin-fix entry for the corrected design's own full verification."
      },
      "verification": {
        "passed": [],
        "pending": []
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's Milestone-roadmap entry for item 8 for the full corrected write-up (both the retired cost-ranked design and the round-robin fix are documented there for the historical trail)."
    },
    {
      "id": "2026-07-27-qf-lra-theory-decisions-round-robin-fix",
      "started_at": "2026-07-27",
      "recorded_at": "2026-07-27",
      "kind": "fuzz",
      "scope": "Verification of roadmap item 8's corrected design (commit fc28dbc): replaces the retired cost-ranked cb_decide (see the companion 2026-07-27-qf-lra-theory-decisions-cost-ranking-retired entry) with a plain round-robin -- OnlineLraPropagator::cb_decide() supplies the next not-yet-decided arithmetic atom's TRUE literal each call, advancing a persistent cursor, with no per-candidate cost computation at all. Full suite (Release + ASAN/UBSan) green, two black-box tests rewritten for the new design's actual semantics (decision order and conflict-driven correctness rather than cost ranking). Re-ran merge-gate and campaign-gate Slurm fuzz plus the official (non-debug) 9-file dramatic-gap comparison against the corrected binary.",
      "commit": "fc28dbc",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --quiet [--lra-theory-decisions] (remote Release)"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py (clean tree, commit fc28dbc); then sbatch --array=0-0 ... PRIMO_FUZZ_SOLVER='.../primo --quiet --lra-theory-decisions', PRIMO_FUZZ_FUZZSMT_SHARDS=1, PRIMO_FUZZ_FUZZSMT_COUNT=500, PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA for merge-gate (job 114234); then sbatch (default 9-task array) with PRIMO_FUZZ_OPFUZZ_SEEDS/PRIMO_FUZZ_YINYANG_SEEDS=.../benchmarks/seeds/qf_lra_real, TYPEFUZZ=.../.venv-yinyang/bin/typefuzz, and PATH including .venv-yinyang/bin upfront this time (fixing the PATH omission that broke job 114205's opfuzz task) for campaign-gate (job 114235); then, directly via ssh, the official (non-debug) 9-file baseline-vs-theory-decisions timing comparison against the corrected binary.",
      "benchmark": {
        "suite": "Merge-gate: fuzzsmt (QF_LRA, 500 cases) vs. z3. Campaign-gate: fuzzsmt (6 shards x 500 = 3000 cases) + opfuzz + yinyang typefuzz mutation against benchmarks/seeds/qf_lra_real (14 real files), all vs. z3. Plus the same 9-file dramatic-gap list as the original comparison.",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Remote fuzz-results/qfuf-gate-114234/ (merge-gate) and fuzz-results/qfuf-gate-114235/ (campaign-gate) on llm2smt-slurm -- not committed. Nine-file comparison output captured in the session transcript only."
      },
      "summary": {
        "result": "Merge-gate (job 114234): 500/500 -- 482 PASS, 18 TIMEOUT, 0 CRASH, 0 WRONG. Campaign-gate (job 114235): fuzzsmt 3000/3000 across 6 shards -- 2911 PASS, 89 TIMEOUT, 0 CRASH, 0 WRONG; opfuzz 14/14 real seeds valid, 0 bug triggers; yinyang typefuzz mutation, 2 shards, 0 bug triggers either shard. Nine-file comparison (corrected design vs. plain VSIDS): TM/p-DepotsNum_s8 53.3s->11.1s (-79%), TM/p6-zenonumeric_s5 59.1s->2.0s (-97%), sc-17 26.3s->11.2s (-57%), sc-19 42.9s->18.8s (-56%), sc-21 50.9s->29.7s (-42%), sc-27 timeout(60s)->22.3s SOLVED, uart-16 14.5s->14.5s flat (decisions -31%), uart-17 19.3s->18.3s (-5%), uart-18 13.0s->13.2s flat (decisions -59%). No file regresses.",
        "significance": "7/9 clear wins (often 40-97%), 2/9 flat wall-clock but still substantially fewer decisions, and sc-27 -- unsolved by both plain VSIDS and the original cost-ranked design at this budget -- is now solved. Zero net regressions across all 9 files. No wrong-answer disagreements or crashes anywhere in merge-gate or campaign-gate fuzz. This is the strongest single-item empirical result across the whole QF_LRA competitiveness roadmap (items 0-8) -- staying opt-in via --lra-theory-decisions pending an explicit default-on promotion decision, since this evidence is from the same 9 hand-picked files every item since item 7 has been measured against, not yet re-verified against item 0's broader 237-file stratified sample."
      },
      "verification": {
        "passed": [
          "500-case merge-gate-tier fuzzsmt-vs-z3 QF_LRA run with the corrected --lra-theory-decisions: 0 crashes, 0 wrong-answer disagreements.",
          "3000-case campaign-gate-tier fuzzsmt-vs-z3 QF_LRA run, same flag: 0 crashes, 0 wrong-answer disagreements.",
          "Campaign-gate opfuzz (14/14 real qf_lra_real seeds valid) and yinyang typefuzz mutation (2 shards) against the same seed corpus: 0 bug triggers in either.",
          "Full local suite (Release + ASAN/UBSan) green, including two rewritten black-box tests.",
          "Nine-file dramatic-gap re-comparison: 7/9 wins, 2/9 flat, 0/9 regressions, sc-27 newly solved."
        ],
        "pending": [
          "Broader 237-file stratified-sample re-verification (item 0's original comparison) before any default-on promotion decision."
        ]
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's Milestone-roadmap entry for item 8 and /home/user/.claude/plans/piped-wondering-fairy.md's item 8 section for the full corrected design and both empirical results (this one plus the diagnostic that led to it). This closes out all of the QF_LRA competitiveness roadmap's currently-planned items (0-8)."
    },
    {
      "id": "2026-07-27-qf-lra-theory-decisions-237-file-verification",
      "started_at": "2026-07-27",
      "recorded_at": "2026-07-27",
      "kind": "benchmark",
      "scope": "Broader 237-file stratified-sample re-verification of roadmap item 8's corrected round-robin design (commit fc28dbc), requested by the user before any default-on promotion decision -- the dramatic 9-file result (2026-07-27-qf-lra-theory-decisions-round-robin-fix) is from the same hand-picked 'both z3 and cvc5 solve in <1s, Primo timed out' files every item since item 7 has been measured against, not a representative sample. Only the primo task was resubmitted (--lra-theory-decisions), diffed against the unchanged z3.csv/cvc5.csv from job 114200, per the standing practice of not re-running reference solvers that haven't changed.",
      "commit": "fc28dbc",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --quiet --lra-theory-decisions (remote Release) vs. contrib/local/bin/{z3,cvc5} (unchanged, results reused from job 114200)"
      },
      "command": "sbatch --array=0-0 --export=ALL,PRIMO_COMPARE_SOLVERS='primo=build-slurm-rel/primo --quiet --lra-theory-decisions' scripts/slurm_qf_lra_solver_compare.sbatch as job 114244 (default manifest/timeout: benchmarks/qf-lra-stratified-sample.txt, 10s).",
      "benchmark": {
        "suite": "benchmarks/qf-lra-stratified-sample.txt (same 237-file sample as item 0's baseline)",
        "logic": "QF_LRA",
        "manifest": "benchmarks/qf-lra-stratified-sample.txt"
      },
      "artifacts": {
        "note": "Remote results/qf-lra-solver-compare-114244/primo.csv pulled back to results/qf-lra-solver-compare-114244/ locally (not committed), z3.csv/cvc5.csv copied over unchanged from results/qf-lra-solver-compare-114200/. Rendered as a colored per-instance HTML table via scripts/render_solver_compare_html.py and published as an Artifact."
      },
      "summary": {
        "result": "Solved (of 237): primo-with-theory-decisions 106 (44.7%, DOWN from 108/45.6% pre-item-8), z3 167 (unchanged, reused), cvc5 150 (unchanged, reused). PAR2: 2682.0s, up slightly from 2675.6s (+0.2%). 0 wrong-answer disagreements. 4 files regress from solved to unsolved (LassoRanker/CooperatingT2/p-43.t2.c_Iteration5_Loop_4-pieceTemplate, sal/gasburner/gasburner-prop3-19, tta_startup/simple_startup_8nodes.synchro.induct, uart-10.base) against only 2 that newly solve.",
        "significance": "The dramatic 9-dramatic-gap-file win (7/9 faster by 40-97%, sc-27 newly solved, zero regressions on that sample) does NOT generalize to the broader, more representative 237-file sample -- aggregate result is roughly flat, slightly negative. The round-robin decision order that dominates on the TM/sc/uart 'dramatic-gap' family (Boolean-guarded chains of many similar arithmetic atoms, where any stable order beats VSIDS's churn) is a wash-to-net-negative once families with different structure (LassoRanker, sal, tta_startup) are included in the sample. Confirms this is a real, useful but narrow lever, not a general-purpose improvement -- staying opt-in, not promoted to default-on. Also a concrete process lesson for this roadmap: the 9-file dramatic-gap sample is good for *finding* candidate techniques but not sufficient on its own for a promotion decision; the 237-file broader sample (as used for items 0-6's own promotion decisions) is the real bar."
      },
      "verification": {
        "passed": [],
        "pending": []
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's Milestone-roadmap entry for item 8 for the final, complete writeup (retired cost-ranked design -> round-robin fix -> 9-file win -> 237-file non-generalization -> final not-promoted decision). This closes out all of the QF_LRA competitiveness roadmap's currently-planned items (0-8), with item 8 staying opt-in."
    },
    {
      "id": "2026-07-27-qf-lra-occurs-in-rebuild-deferred-fix",
      "started_at": "2026-07-27",
      "recorded_at": "2026-07-27",
      "kind": "fuzz",
      "scope": "Merge-gate and campaign-gate fuzz confirmation for an unconditional LraTableau::pop()/undo() fix (commit 9b2c712), found via gprof-profiling TM/p5-zenonumeric_s5.smt2 at the user's request. rebuild_occurs_in_index() was ~9% self-time in the flat profile (second only to pivot()), called once per PivotTrailEntry/FRowTrailEntry undone inside undo() rather than once per pop() call -- a single pop() unwinding N pivots did N redundant full O(vars_.size()) rebuilds. Fixed by deferring the rebuild to once at the end of pop()'s while loop (the function only reads rows_/is_basic, never occurs_in_ itself, so there's no ordering dependency), mirroring the existing rebuild_violated_vars() precedent. Since this touches unconditional core Check/Pivot code, verified at merge-gate and campaign-gate tiers on both Bland and SOI pivoting paths, matching the precedent set by the original occurs_in_/rows_/soi_directions_ vectorization fix and the violated_vars_ worklist item.",
      "commit": "9b2c712",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via SSH config /tmp/llm2smt_slurm_ssh_config, ProxyJump jump-data-ciirc)",
        "binary": "build-slurm-rel/primo --quiet [--lra-pivoting-rule soi] (remote Release)"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py; then sbatch --array=0-0 ... PRIMO_FUZZ_SOLVER='.../primo --quiet [--lra-pivoting-rule soi]', PRIMO_FUZZ_FUZZSMT_SHARDS=1, PRIMO_FUZZ_FUZZSMT_COUNT=500, PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA for merge-gate (jobs 114707 Bland, 114708 SOI); then sbatch (default 9-task array) with PRIMO_FUZZ_OPFUZZ_SEEDS/PRIMO_FUZZ_YINYANG_SEEDS=.../benchmarks/seeds/qf_lra_real, TYPEFUZZ=.../.venv-yinyang/bin/typefuzz, PATH including .venv-yinyang/bin, for campaign-gate (jobs 114709 Bland, 114710 SOI). Separately (not part of the fuzz gate itself): a paired same-node A/B timing comparison, building the pre-fix binary in a `git worktree add /tmp/primo-before-fix <parent commit>` (with contrib/local symlinked from the main checkout to avoid rebuilding vendored deps) and alternating before/after runs on the same node to control for cluster-load drift that had made a naive comparison against old historical numbers misleading; worktree removed afterward.",
      "benchmark": {
        "suite": "Merge-gate: fuzzsmt (QF_LRA, 500 cases) vs. z3, each pivoting rule. Campaign-gate: fuzzsmt (6 shards x 500 = 3000 cases) + opfuzz + yinyang typefuzz mutation against benchmarks/seeds/qf_lra_real (14 real files), each pivoting rule, all vs. z3.",
        "logic": "QF_LRA",
        "manifest": null
      },
      "artifacts": {
        "note": "Remote fuzz-results/qfuf-gate-114707/ through -114710/ on llm2smt-slurm -- not committed. Paired A/B timing output captured in the session transcript only."
      },
      "summary": {
        "result": "Merge-gate: Bland (114707) 500/500 -- 472 PASS/28 TIMEOUT/0 CRASH/0 WRONG; SOI (114708) 500/500 -- 341 PASS/159 TIMEOUT/0 CRASH/0 WRONG (SOI's higher timeout rate is expected/pre-existing). Campaign-gate: Bland (114709) fuzzsmt 3000/3000 -- 2882 PASS/118 TIMEOUT/0 CRASH/0 WRONG, opfuzz 14/14 valid/0 bugs, yinyang 0 bugs; SOI (114710) fuzzsmt 3000/3000 -- 2035 PASS/965 TIMEOUT/0 CRASH/0 WRONG, opfuzz 14/14 valid/0 bugs, yinyang 0 bugs. Paired A/B timing (same node, same time window, 3 alternating runs each): TM/p5-zenonumeric_s5 9.92s->8.87s avg (-10.6%), sc-21.induction3 50.51s->48.40s avg (-4.2%), uart-18.induction 13.18s->11.95s avg (-9.4%). :sat.decisions/:lra.pivots bit-identical before/after on all three.",
        "significance": "No wrong-answer disagreements or crashes on either pivoting path at either fuzz tier -- confirms deferring the occurs_in_ rebuild is sound, not just locally unit-tested. The paired-timing methodology was itself a necessary finding: a naive comparison against old documented baseline numbers (TM/p5 4.21s, sc-21 23.11s, uart-18 6.24s from item 6) showed this run's numbers ~2x slower across the board on both before and after binaries, which briefly looked like a regression until a same-time paired comparison isolated it as cluster-load drift rather than anything code-related -- the real, load-controlled effect is a modest but consistent 4-11% wall-clock improvement with zero decision/pivot-count change (a pure perf fix, exactly like the other item-0-follow-up allocation fixes)."
      },
      "verification": {
        "passed": [
          "500-case merge-gate-tier fuzzsmt-vs-z3 QF_LRA run on both Bland and SOI pivoting paths: 0 crashes, 0 wrong-answer disagreements.",
          "3000-case campaign-gate-tier fuzzsmt-vs-z3 QF_LRA run on both paths: 0 crashes, 0 wrong-answer disagreements.",
          "Campaign-gate opfuzz (14/14 real qf_lra_real seeds valid) and yinyang typefuzz mutation (2 shards) on both paths: 0 bug triggers anywhere.",
          "Full local suite (Release + ASAN/UBSan) green, including primo_lra_tableau_tests.",
          "Paired same-node A/B timing: 4-11% wall-clock improvement on 3 previously-profiled files, decisions/pivots bit-identical."
        ],
        "pending": []
      },
      "evidence_status": "current_local",
      "notes": "See docs/arithmetic.md's Milestone-roadmap entry (under 'Item 0 follow-up (2026-07-27, done, unconditional)') for the full writeup, including the gprof flat-profile finding that led to this fix."
    },
    {
      "id": "2026-07-27-qf-lra-heuristics-design-profiling",
      "started_at": "2026-07-27",
      "recorded_at": "2026-07-27",
      "kind": "profile",
      "scope": "Local profiling + throwaway tableau-shape/fill-in instrumentation to ground docs/qf-lra-heuristics.md, a prioritized design note for the next round of QF_LRA speedup heuristics after competitiveness-roadmap items 0-8. Re-analyzed job 114200's 237-file comparison to isolate the 61 files z3 or cvc5 solve and Primo does not, then profiled and instrumented one representative instance per bottleneck class. Design only -- no solver source changed; the instrumentation was reverted (git checkout) after measurement and is not committed.",
      "commit": "35878c4",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo (Release, commit 35878c4) plus two temporary instrumented rebuilds of the same tree",
        "notes": "Local profiling for design purposes only. Per AGENTS.md, no measurement here is a benchmark claim; any speedup from implementing these items must be measured on Slurm."
      },
      "command": {
        "gap_analysis": "python3 over results/qf-lra-solver-compare-114200/{primo,z3,cvc5}.csv, grouping status=='ok' by family and listing files where primo is unsolved but a reference is solved",
        "stats": "./build/primo --quiet --stats <instance> under `timeout 15..25`, reading :sat.decisions, :sat.conflicts, :lra.pivots, :lra.online-check-calls, :lra.theory-propagations",
        "perf": "perf record -q -g -o p1.data ./build/primo --quiet tmp/QF_LRA/DTP-Scheduling/constraints-tempo-width-30.smt2 ; perf report --stdio --no-children -g none",
        "shape_instrumentation": "TEMPORARY (reverted): env-gated PRIMO_LRA_SHAPE fprintf after PreparedLraTheory construction in check_sat.cpp, reporting atom count, distinct slack/row count, count of rows with exactly one term, and average/max row length",
        "fillin_instrumentation": "TEMPORARY (reverted): env-gated PRIMO_LRA_FILL fprintf every N pivots in LraTableau::pivot(), reporting basic-row count, average/max row length, and average/max occurs_in_ size",
        "revert": "git checkout src/theory/arithmetic/lra_tableau.cpp src/smt/check_sat.cpp"
      },
      "benchmark": {
        "suite": "Representative instances from the 61 gap files of benchmarks/qf-lra-stratified-sample.txt (job 114200)",
        "logic": "QF_LRA",
        "timeout_seconds": 25,
        "instances": [
          "tmp/QF_LRA/latendresse/ecoliFBAyicesTest-500.smt2",
          "tmp/QF_LRA/DTP-Scheduling/constraints-tempo-width-30.smt2",
          "tmp/QF_LRA/clock_synchro/clocksynchro_2clocks.main_invar.induct.smt2",
          "tmp/QF_LRA/miplib/pp08a-12000.smt2",
          "tmp/QF_LRA/tta_startup/simple_startup_4nodes.bug.induct.smt2",
          "tmp/QF_LRA/TM/p6-zenonumeric_s5.smt2",
          "tmp/QF_LRA/uart/uart-17.induction.cvc.smt2",
          "tmp/QF_LRA/sc/sc-17.induction3.cvc.smt2",
          "tmp/QF_LRA/2019-ezsmt/blending/3.smt2",
          "tmp/QF_LRA/LassoRanker/CooperatingT2/selectSort.t2.c_Iteration3_Loop_7-phaseTemplate.smt2",
          "tmp/QF_LRA/2017-Heizmann-UltimateInvariantSynthesis/_standard_two_index_06.i_3_2_2.bpl_7.smt2"
        ]
      },
      "artifacts": {
        "design_note": "docs/qf-lra-heuristics.md",
        "reanalyzed_comparison": "results/qf-lra-solver-compare-114200/ (Slurm job 114200, unchanged, reused)",
        "perf_data": "session scratchpad p1.data (local-only, not retained)"
      },
      "summary": {
        "gap_shape": "61 of 237 files are solved by z3 or cvc5 but not Primo. Concentrated in TM (9), uart (9), sc (8), 2019-ezsmt (7), latendresse (6), miplib (5), tta_startup (5), DTP-Scheduling (4), clock_synchro (4), Heizmann/LassoRanker (3). Fastest reference times are 0.13-0.57s on most of them. Families where Primo already ties both references (keymaera, meti-tarski, sal, spider_benchmarks, check) and where all three fail (tropical-matrix) are excluded as design targets.",
        "three_bottleneck_classes": "Class A (latendresse): 0 decisions, 1 check() call -- one conjunctive LP that never finishes, so SAT-side heuristics are irrelevant there. Class B (clock_synchro 1,515 decisions / 8,997 pivots / 13.9s; miplib pp08a-12000 4,564 / 8,314 / 13.9s): ~1.5 ms per pivot. Class C (DTP-Scheduling constraints-tempo-width-30: 60,750 decisions, ZERO conflicts, 63,021 check calls, 7,182 pivots, 19.5s): ~320 microseconds per decision with no learning at all.",
        "perf_flat_profile": "On constraints-tempo-width-30: LraTableau::pivot 31.4% self; allocator ~42% (_int_malloc 10.5, _int_free 7.9, malloc 5.8, cfree 5.2, malloc_consolidate 5.2, unlink_chunk 4.3, gmp_default_allocate 1.5); GMP copy/init ~12% (__gmpn_copyi 5.6, __gmpz_init_set 3.4, __gmpq_clear 1.6); actual bignum arithmetic ~5% (__gmpz_mul 1.4, __gmpq_mul 1.0, __gmpz_gcd 0.8, __gmpn_gcd_1 0.7, __gmpz_divexact_gcd 0.5, __gmpq_aors 0.5); rebuild_occurs_in_index 1.3%.",
        "corrects_prior_conclusion": "This contradicts the conclusion recorded under roadmap item 0's follow-up (2026-07-26) that what remained after the container fixes was inherent mpq_class GCD canonicalization that 'no container-level fix can remove'. Measured, canonicalization/GCD is under 2% and ALL real bignum arithmetic is ~5%; ~54% is malloc/free plus copying of TINY numbers. The values are small, the representation is expensive -- which makes a small-rational (int64/int64 with GMP fallback) fast path the single largest available lever, not a dead end.",
        "tableau_shape": "Share of prepared rows that are a single-variable slack (row = c*x): latendresse/ecoliFBAyicesTest-500 3,161/4,555 (69%); TM/p6-zenonumeric_s5 1,311/1,378 (95%); miplib/pp08a-12000 262/400 (66%); sc-17 462/1,185 (39%); uart-17 526/1,446 (36%); tta_startup 84/584 (14%); LassoRanker/selectSort 653/9,469 (7%); clock_synchro 5/264 (2%); DTP-Scheduling/constraints-tempo-width-30 0/3,932 (0%, average row exactly 2.00 and max row 2 -- a pure difference-logic problem in QF_LRA clothing). Dutertre & de Moura Section 2 introduces slack variables only for compound polynomials; Primo allocates one per distinct polynomial including bare variables, and because polynomial keys are exact-content matches, '(<= 0 r1)' and '(<= r1 1000)' land on two DIFFERENT slacks for the same variable.",
        "fill_in": "Rows densify 3-5x during search. constraints-tempo-width-30: average row 2.00 -> 3.7-8.9, max row 33, max occurs_in 2,127. clocksynchro_2clocks: 2.75 -> 8.1-14.3, max row 34, max occurs_in 174. ecoliFBAyicesTest-500: 3.39 -> 7.9-23.9, max row 961, and fewer than 2,000 pivots in 30+s (>15 ms per pivot). Since pivot() costs |occurs_in(entering)| * |row(leaving)| rational operations, and none of Bland/Dantzig/SOI prices a pivot by its cost, fill-in is currently unopposed.",
        "design_output": "docs/qf-lra-heuristics.md proposes six items in priority order: H2 small-rational fast path in util::Rational; H1 direct bounds for single-variable atoms plus scale-canonical polynomial keys (which subsumes not-yet-scheduled roadmap item 3 and removes item 7's documented single_variable_slack positive-coefficient quirk); H3 fill-in-aware Markowitz-style entering-variable selection with a prefer-|coeff|=1 tie-break and partial pricing; H5 model-based phase selection via CaDiCaL's phase()/unphase() to keep item 8's win without its VSIDS-override regressions; H4 batched bound assertion deferring update() to item 6's existing quiescence point; H6 difference-logic fragment detection (Tier 1) with Cotton & Maler DL0-DL4 as the larger Tier 2. Recommended order: H2 -> H1 -> H3 -> H5 -> H4 -> H6."
      },
      "verification": {
        "instrumentation_reverted": "git checkout src/theory/arithmetic/lra_tableau.cpp src/smt/check_sat.cpp; git status --short clean for src/ afterwards; build/primo rebuilt from the reverted tree",
        "source_changes": "none -- this entry is design evidence only",
        "reference_solvers": "results/qf-lra-solver-compare-114200/{z3,cvc5}.csv reused unchanged, not re-run (standing practice for unchanged reference solvers)"
      },
      "evidence_status": "current",
      "followups": "Implement in the recommended order. Each item needs unit tests for its own invariant, make check plus ASAN/UBSan, :lra.pivots / :lra.online-check-calls / :sat.decisions / :sat.conflicts reported alongside wall time, a Slurm merge-gate fuzz run (campaign-gate on both Bland and SOI paths for H1/H2/H4, which change unconditional core behavior), and the 237-file stratified sample as the promotion bar. Also add :lra.rows / :lra.tableau-vars / :lra.row-nonzeros stats -- their absence is why the fill-in explosion went unnoticed through eight roadmap items."
    },
    {
      "id": "2026-07-28-qf-lra-rational-small-value-fast-path",
      "started_at": "2026-07-28",
      "recorded_at": "2026-07-28",
      "kind": "fuzz",
      "scope": "Verification for docs/qf-lra-heuristics.md item H2 (commit 02e2d47): util::Rational gains a machine-word fast path -- small values held inline as int64/int64, falling back to a heap mpq_class only when a value genuinely needs more than 64 bits. Unconditional core change, so verified at merge-gate and campaign-gate fuzz tiers on BOTH pivoting paths, matching the precedent set by the occurs_in_/rows_ vectorization and the violated_vars_ worklist. Also records the paired local A/B timing, the mechanism-level :rational.promotions counters, and the 237-file stratified-sample promotion-bar re-run. The two-tier representation is Monniaux's own (CAV 2009, Section 4); the arithmetic is Knuth TAOCP Vol. 2 Sec. 4.5.1's two-gcd form -- see docs/papers/lra-related-work.md for what is and is not taken from that paper.",
      "commit": "02e2d47",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (node-head, via /tmp/llm2smt_slurm_ssh_config, ProxyJump data.ciirc.cvut.cz); local paired timing and profiling on the workstation",
        "binary": "build-slurm-rel/primo --quiet [--lra-pivoting-rule soi] (remote Release); build/primo and a git-worktree build of d5e1a54 for the local A/B",
        "notes": "The SSH config had to be recreated (it lived in /tmp and did not survive) and needs an explicit UserKnownHostsFile=/home/user/.ssh/known_hosts, because uid 1000's passwd home is /home/mikolas while the key material is in /home/user/.ssh. The remote binary reports 02e2d47-dirty: the workspace rsync does not carry tracked fuzz-results/results CSVs, a pre-existing sync artifact, not uncommitted source."
      },
      "command": {
        "preflight": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/llm2smt_slurm_ssh_config --remote-dir <slurm-workdir> (confirmed remote primo reports git: 02e2d47 and cadical-3.0.0-7b99c07)",
        "merge_gate": "sbatch --array=0-0 --job-name=primo-lra-h2-merge-{bland,soi} --export=ALL,PATH=<workdir>/contrib/local/bin:...,PRIMO_FUZZ_SOLVER='<workdir>/build-slurm-rel/primo [--lra-pivoting-rule soi]',PRIMO_FUZZ_FUZZSMT_SHARDS=1,PRIMO_FUZZ_FUZZSMT_COUNT=500,PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA scripts/slurm_qfuf_fuzz_gate.sbatch",
        "campaign_gate": "sbatch --job-name=primo-lra-h2-camp-{bland,soi} --export=ALL,PATH=<workdir>/.venv-yinyang/bin:<workdir>/contrib/local/bin:...,TYPEFUZZ=<workdir>/.venv-yinyang/bin/typefuzz,PRIMO_FUZZ_SOLVER=...,PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA,PRIMO_FUZZ_OPFUZZ_SEEDS=<workdir>/benchmarks/seeds/qf_lra_real,PRIMO_FUZZ_YINYANG_SEEDS=<workdir>/benchmarks/seeds/qf_lra_real scripts/slurm_qfuf_fuzz_gate.sbatch (default 9-task layout: 6 fuzzsmt shards x 500 + 1 opfuzz + 2 yinyang)",
        "promotion_bar": "sbatch --array=0-0 --job-name=primo-lra-h2-compare --export=ALL,'PRIMO_COMPARE_SOLVERS=primo=build-slurm-rel/primo --quiet' scripts/slurm_qf_lra_solver_compare.sbatch (primo task only; z3/cvc5 reused unchanged from job 114200 per the standing practice)",
        "local_paired_timing": "git worktree add <scratch>/before d5e1a54 with contrib/local symlinked from the main checkout; then three alternating before/after rounds over the five profiled instances, reporting every round",
        "local_tests": "cmake --build build && ctest (Release); cmake --build build-asan-ws && ctest (Debug + address,undefined); make lint; clang-tidy -p build on src/util/rational.cpp, src/util/statistics.cpp, src/smt/check_sat.cpp",
        "local_fuzz_smoke": "PATH=contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver ./build/primo --refs z3 --logic QF_LRA --count 200 --timeout 5"
      },
      "benchmark": {
        "suite": "Merge gate: fuzzsmt QF_LRA 500 cases vs z3, per pivoting rule. Campaign gate: fuzzsmt 6x500=3000 + opfuzz + 2 yinyang typefuzz shards over benchmarks/seeds/qf_lra_real, per pivoting rule. Promotion bar: benchmarks/qf-lra-stratified-sample.txt (237 files, 17 families, 10s timeout).",
        "logic": "QF_LRA",
        "timeout_seconds": 5
      },
      "job_id": "114896 (merge Bland), 114897 (merge SOI), 114898 (campaign Bland), 114899 (campaign SOI), 114900 (237-file comparison). 114894/114895 were an aborted first attempt -- see the summary.",
      "artifacts": {
        "merge_gate": "remote fuzz-results/lra-h2-merge-{bland,soi}",
        "campaign_gate": "remote fuzz-results/lra-h2-camp-{bland,soi}",
        "comparison": "remote results/qf-lra-solver-compare-h2, fetched to results/qf-lra-solver-compare-h2",
        "baseline_reference": "results/qf-lra-solver-compare-114200 (z3.csv/cvc5.csv reused unchanged)"
      },
      "summary": {
        "merge_gate": "Job 114896 (Bland): 500 fuzzsmt QF_LRA cases -- 495 PASS, 5 TIMEOUT, 0 CRASH, 0 WRONG. Job 114897 (SOI): 500 cases -- 436 PASS, 64 TIMEOUT, 0 CRASH, 0 WRONG. The saved bug files are exactly the timeout cases in both.",
        "campaign_gate": "Job 114898 (Bland): fuzzsmt 3000/3000 across 6 shards -- 2972 PASS, 28 TIMEOUT, 0 CRASH, 0 WRONG; opfuzz 14/14 real QF_LRA seeds valid, 0 bug triggers; yinyang typefuzz 2 shards, 14/14 valid each, 0 bug triggers each. Job 114899 (SOI): fuzzsmt 3000/3000 -- 2676 PASS, 324 TIMEOUT, 0 CRASH, 0 WRONG; opfuzz 14/14 valid, 0 bug triggers; yinyang 2 shards, 14/14 valid each, 0 bug triggers each.",
        "fuzz_timeout_rates_fell": "Incidentally confirms the speedup on the fuzz corpus itself: the Bland campaign's timeouts dropped from the 118-143 range recorded for the same gate before this change to 28, and SOI's from 965-976 to 324. Not a correctness signal, but the same effect the benchmark timings show.",
        "promotion_bar": "Job 114900, benchmarks/qf-lra-stratified-sample.txt (237 files, 10s timeout), primo task only, diffed against the unchanged z3.csv/cvc5.csv from job 114200. Solved: primo 124/237 (52.3%, up from 108/45.6%), z3 167 (70.5%), cvc5 150 (63.3%). PAR2: primo 2380.9s (down from 2675.6s, -11.0%), z3 1531.6s, cvc5 1887.1s. Zero wrong answers. 16 files newly solved and ZERO regressed -- unlike roadmap item 8, whose narrow-sample win did not survive this bar. Per family (new vs pre-H2): TM 10 (6), miplib 4 (1), uart 7 (4), 2017-Heizmann 2 (0), tta_startup 11 (9), clock_synchro 7 (6), sc 6 (5); everything else unchanged. The gap to z3 narrows from 59 files to 43, and to cvc5 from 42 to 26.",
        "local_paired_timing": "Three alternating before/after rounds on one idle workstation, every round reported so drift is visible. TM/p5-zenonumeric_s5 3.66/4.65/5.77s -> 0.75/0.79/0.94s (best-of-3 4.9x, median 5.9x); sc-21.induction3 27.73/32.17/41.76 -> 6.79/7.52/8.14 (4.1x / 4.3x); uart-18.induction 7.31/7.36/7.77 -> 1.40/1.78/2.70 (5.2x / 4.1x); clocksynchro_2clocks 11.77/14.13/14.76 -> 5.56/6.27/6.73 (2.1x / 2.3x); latendresse/ecoliFBAyicesTest-500 times out at 90s either way. :sat.decisions/:sat.conflicts/:lra.pivots/:lra.online-check-calls/:lra.theory-propagations bit-identical before and after on every instance, confirming a pure representation change with no effect on search.",
        "mechanism_counters": "New :rational.promotions / :rational.big-operations. Zero on TM/p5-zenonumeric_s5, sc-21.induction3, uart-18.induction and miplib/pp08a-12000 -- the machine-word fast path is taken 100% of the time there. 1.22M promotions / 1.27M big operations on clock_synchro/clocksynchro_2clocks, whose coefficients genuinely outgrow 64 bits; that is both why it gains least (2.1x) and the first hard evidence for which instances a different small-form width could still move.",
        "bug_found_during_implementation": "The debug/ASAN-only check_invariant() caught a real disagreement between from_mpq's 'fits small' test (mpz_fits_slong_p, which admits INT64_MIN) and the small form's own range (which excludes INT64_MIN so negation can never overflow). The two differed by exactly that one value, which would have produced a big-form value that also fit the small form -- two representations for one number, hashing two ways, silently breaking PolynomialKey hash-consing rather than giving a wrong answer. Fixed by giving both a single shared predicate. Separately, a deliberate-mutation check (disabling demotion) confirmed the unit tests fail loudly when the invariant is broken.",
        "local_verification": "Release ctest 12/12 and ASAN/UBSan ctest 12/12 green. make lint introduces no new violations (the 208 that remain are all pre-existing and unchanged, so `make check` fails at the lint step at HEAD too -- src/util/rational.hpp's own pre-existing violation is fixed by this change). clang-tidy clean on src/util/rational.cpp, src/util/statistics.cpp, and on the changed region of src/smt/check_sat.cpp. Local QF_LRA fuzz smoke (200 fuzzsmt cases vs z3): 198 PASS, 2 TIMEOUT, 0 CRASH, 0 WRONG."
      },
      "verification": {
        "correctness": "Zero wrong answers and zero crashes across 7,000 fuzzsmt cases (merge gates 500 + 500, campaign gates 3,000 + 3,000) covering both pivoting paths, plus two opfuzz runs and four yinyang typefuzz shards over real QF_LRA seeds (14/14 seeds valid, 0 bug triggers each), plus the 237-file benchmark run (0 wrong answers).",
        "no_search_change": "Every search counter bit-identical before/after on all five profiled instances -- the strongest available evidence that this is a representation change and nothing else.",
        "reference_solvers": "z3.csv/cvc5.csv reused unchanged from job 114200, per the standing practice of not re-running unchanged reference solvers.",
        "rendered": "results/qf-lra-solver-compare-h2/compare.html via scripts/render_solver_compare_html.py, matching standard practice."
      },
      "evidence_status": "current",
      "followups": "H1 (direct bounds for single-variable atoms) is next per docs/qf-lra-heuristics.md's recommended order; its own gates and 237-file run are separate. The small-form width ablation (32-bit vs 64-bit, kSmallMax being the single knob) is still to run -- clock_synchro is now known to be the instance class where it could matter. The 5 non-lint verification steps above are all that this change needed; no blocker remains."
    },
    {
      "id": "2026-07-28-qf-lra-single-variable-direct-bounds",
      "started_at": "2026-07-28",
      "recorded_at": "2026-07-28",
      "kind": "fuzz",
      "scope": "Verification for docs/qf-lra-heuristics.md item H1a (commit 077beec): an atom whose normalized polynomial is a single term c*x is asserted as a bound on x itself -- coefficient divided out, relation flipped when c is negative -- instead of getting its own slack variable and row. Unconditional core change, so verified at merge-gate and campaign-gate fuzz tiers on both pivoting paths, plus the 237-file stratified-sample promotion bar. Stacks on top of item H2 (commit 02e2d47), whose own verification is the preceding run-log entry. Monniaux (CAV 2009, Section 2.1) states this as ordinary practice; see docs/papers/lra-related-work.md.",
      "commit": "077beec",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (node-head, via /tmp/llm2smt_slurm_ssh_config); local paired timing and profiling on the workstation",
        "binary": "build-slurm-rel/primo --quiet [--lra-pivoting-rule soi] (remote Release); build/primo and a git-worktree build of 3146707 (H2 only) for the local A/B"
      },
      "command": {
        "preflight": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/llm2smt_slurm_ssh_config --remote-dir <slurm-workdir> (remote primo reports git: 077beec)",
        "gates": "Same sbatch invocations as the H2 entry, with job names primo-lra-h1a-{merge,camp}-{bland,soi} and PRIMO_FUZZ_OUT_ROOT=fuzz-results/lra-h1a-*",
        "promotion_bar": "sbatch --array=0-0 --job-name=primo-lra-h1a-compare --export=ALL,'PRIMO_COMPARE_SOLVERS=primo=build-slurm-rel/primo --quiet',PRIMO_COMPARE_OUT_ROOT=.../results/qf-lra-solver-compare-h1a scripts/slurm_qf_lra_solver_compare.sbatch",
        "local_paired_timing": "git worktree at 3146707 (H2 only) built alongside; two alternating rounds over seven instances",
        "row_counts": "./build/primo --quiet --stats <instance> | grep :lra.rows (new statistic added by this change)"
      },
      "benchmark": {
        "suite": "Merge gate: fuzzsmt QF_LRA 500 cases vs z3 per pivoting rule. Campaign gate: fuzzsmt 6x500=3000 + opfuzz + 2 yinyang shards over benchmarks/seeds/qf_lra_real, per pivoting rule. Promotion bar: benchmarks/qf-lra-stratified-sample.txt (237 files, 10s timeout).",
        "logic": "QF_LRA",
        "timeout_seconds": 5
      },
      "job_id": "115168 (merge Bland), 115169 (merge SOI), 115170 (campaign Bland), 115171 (campaign SOI), 115172 (237-file comparison)",
      "artifacts": {
        "gates": "remote fuzz-results/lra-h1a-{merge,camp}-{bland,soi}",
        "comparison": "results/qf-lra-solver-compare-h1a (fetched; compare.html rendered)",
        "baseline_reference": "results/qf-lra-solver-compare-114200 (z3/cvc5 reused unchanged), results/qf-lra-solver-compare-h2 (the H2-only primo run)"
      },
      "summary": {
        "merge_gate": "Job 115168 (Bland): 500/500 PASS, 0 TIMEOUT, 0 CRASH, 0 WRONG. Job 115169 (SOI): 483 PASS, 17 TIMEOUT, 0 CRASH, 0 WRONG.",
        "campaign_gate": "Job 115170 (Bland): fuzzsmt 3000/3000 -- 2993 PASS, 7 TIMEOUT, 0 CRASH, 0 WRONG; opfuzz 14/14 seeds valid, 0 bug triggers; yinyang 2 shards, 14/14 valid each, 0 bug triggers each. Job 115171 (SOI): fuzzsmt 3000/3000 -- 2818 PASS, 182 TIMEOUT, 0 CRASH, 0 WRONG; opfuzz and yinyang likewise clean. Timeout rates fell again on top of H2's own drop (Bland campaign 28 -> 7).",
        "promotion_bar": "Job 115172. Solved: 124 -> 136/237 (52.3% -> 57.4%); PAR2 2380.9s -> 2149.8s (-9.7%); 12 files newly solved, ZERO regressed, zero wrong answers. Cumulatively with H2: 108 -> 136 (+28 files, 45.6% -> 57.4%), PAR2 2675.6 -> 2149.8 (-19.6%). Per family (H1a vs H2 vs pre-H2): TM 15/10/6 -- now matching z3's 15/15 -- 2019-ezsmt 7/3/3, sc 8/6/5, tta_startup 12/11/9. The gap to z3 (167) narrows from 59 files pre-H2 to 31; to cvc5 (150) from 42 to 14.",
        "row_counts": "Measured via the new :lra.rows statistic, against the pre-H1 shape measurements in docs/qf-lra-heuristics.md Section 1.3. Every instance matches that section's predicted single-variable share exactly: latendresse/ecoliFBAyicesTest-500 4,555 -> 1,394 (-69%), TM/p6-zenonumeric_s5 1,378 -> 67 (-95%), miplib/pp08a-12000 400 -> 138 (-66%), sc-17.induction3 1,185 -> 723 (-39%), uart-17.induction 1,446 -> 920 (-36%), tta_startup/simple_startup_4nodes 584 -> 500 (-14%), clock_synchro/clocksynchro_2clocks 264 -> 259 (-2%), DTP-Scheduling/constraints-tempo-width-30 3,932 -> 3,932 (unchanged -- 100% difference constraints, so no single-variable atoms to remove).",
        "local_paired_timing": "Against the H2-only build, two alternating rounds: TM/p5-zenonumeric_s5 0.63s -> 0.12s (5.3x; decisions 13,230 -> 1,435, pivots 18,097 -> 230), sc-21.induction3 6.33 -> 1.98 (3.2x), uart-18.induction 1.18 -> 0.94, miplib/pp08a-12000 1.97 -> 1.72, clock_synchro and DTP-Scheduling flat within noise (their row counts barely move or not at all). Not a pure representation change, unlike H2: variable numbering and propagation strength both change, so search counters legitimately move.",
        "falsifier_partially_triggered": "docs/qf-lra-heuristics.md's H1 entry predicted 'if row counts drop as predicted but wall time does not improve on latendresse/TM/miplib, then row count was never the cost'. Row counts dropped exactly as predicted everywhere. Wall time followed on TM, sc, uart and miplib -- but NOT on latendresse/ecoliFBAyicesTest-500, which lost 69% of its rows and did not move at all, still timing out. For that pure-LP instance the falsifier fired: its cost is the remaining 1,394-row LP with a 691-term dense row, i.e. H3's fill-in problem, not H1's row count. That sharpens H3 from 'helps Class B' to 'the only remaining lever for Class A'.",
        "test_that_had_to_change": "theory_decisions_can_reach_a_conflict used (or (<= x 0) (>= x 10)) with 3 <= x <= 7; all four atoms now bound x directly, so propagation closes the formula with zero decisions and cb_decide was no longer exercised at all. Rewritten over compound disjuncts, which still require a decision. Answer unchanged (unsat) throughout -- the test stopped covering its mechanism, it did not start failing."
      },
      "verification": {
        "correctness": "Zero wrong answers and zero crashes across 7,000 fuzzsmt cases on both pivoting paths, two opfuzz runs and four yinyang typefuzz shards (14/14 seeds valid, 0 bug triggers each), and the 237-file benchmark run.",
        "local": "Release ctest 12/12 and ASAN/UBSan ctest 12/12 green, including three new single_variable_atom_* tests pinning all four rows of bound_assertion()'s relation/orientation table in both truth directions. Local QF_LRA fuzz smoke (200 cases): 194 PASS, 6 TIMEOUT, 0 CRASH, 0 WRONG. make lint introduces no new violations.",
        "reference_solvers": "z3.csv/cvc5.csv reused unchanged from job 114200."
      },
      "evidence_status": "current",
      "followups": "H1b (scale-canonical polynomial keys for compound polynomials, the long-deferred roadmap item 3) is implemented on top of this but NOT yet judged: local evidence is mixed (clock_synchro 3.1x faster, uart-18 1.5x, DTP-Scheduling 0.74x SLOWER despite 8.6x fewer decisions), so it needs its own 237-file run before being kept or reverted. Profiling DTP under H1b puts LraTableau::pivot at 75.8% of runtime -- with H2 and H1a having removed the allocator and row-count costs, fill-in is now unambiguously the dominant remaining cost, which is exactly H3's target."
    },
    {
      "id": "2026-07-28-qf-lra-rational-small-form-width-ablation",
      "started_at": "2026-07-28",
      "recorded_at": "2026-07-28",
      "kind": "benchmark",
      "scope": "The 32-bit vs 64-bit small-form width ablation that docs/qf-lra-heuristics.md's item H2 deferred: Monniaux (CAV 2009, Section 4) uses two 32-bit numbers, Primo shipped 64-bit with __int128 intermediates, and kSmallMax is the single knob so the question is empirical rather than a matter of argument. Local only -- this is a design decision between two builds of the same commit, not a headline performance claim.",
      "commit": "1e6554d (plus the constructor fix this ablation found, committed as 251d29e)",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo (kSmallMax = INT64_MAX) vs a git-worktree build with kSmallMax = INT32_MAX, same commit otherwise",
        "notes": "Two alternating rounds per binary on an idle host; best-of-2 reported alongside both raw runs."
      },
      "command": {
        "variant_build": "git worktree add <scratch>/w32 HEAD; sed -i 's/kSmallMax = INT64_MAX/kSmallMax = INT32_MAX/' src/util/rational.hpp; cmake -S . -B b -DCMAKE_BUILD_TYPE=Release && cmake --build b",
        "measure": "alternating rounds of ./primo --quiet --stats over six instances, reading wall time plus :rational.promotions and :rational.big-operations"
      },
      "benchmark": {
        "suite": "Six instances spanning both cases: five whose coefficients never leave 32 bits, and clock_synchro/clocksynchro_2clocks, which does overflow",
        "logic": "QF_LRA",
        "timeout_seconds": 90
      },
      "summary": {
        "result": "64-bit kept. TM/p5-zenonumeric_s5 0.13s vs 0.13s (1.00x), sc-21.induction3 1.56 vs 1.55 (1.01x), uart-18.induction 0.57 vs 0.53 (1.08x), miplib/pp08a-12000 1.48 vs 1.59 (0.93x), DTP-Scheduling/constraints-tempo-width-30 7.59 vs 8.77 (0.87x) -- all five with ZERO promotions under both widths. clock_synchro/clocksynchro_2clocks 2.44s (32-bit) vs 1.10s (64-bit), 2.22x, with promotions 668,002 vs 358,801 and big-form operations 4,435,074 vs 364,834.",
        "interpretation": "The trade-off is exactly the one predicted when the deviation was documented, now measured. Where coefficients stay small the widths are within noise or 32-bit is up to ~13% faster, because __int128 add/multiply are multi-instruction sequences where 64-bit ones are single instructions -- a cost paid on every operation. Where coefficients genuinely outgrow 32 bits, the wider fast path cuts big-form operations 12-fold and wins by 2.2x. A few percent on the common case buys a factor of two on the hard case.",
        "bug_found": "Building the 32-bit variant immediately failed the existing representation_transitions unit test: Rational(std::int64_t) range-checked only `value >= -kSmallMax`, which is vacuous at kSmallMax == INT64_MAX (every std::int64_t satisfies it) but lets out-of-range values into the small form at any narrower width, violating the canonical-form invariant. Fixed in commit 251d29e. A latent bug in a knob nobody had turned yet."
      },
      "verification": {
        "both_widths_tested": "Release ctest 12/12 at both widths after the fix; ASAN/UBSan 12/12 at the shipped 64-bit width.",
        "scope": "Local design-decision evidence, explicitly not a benchmark claim -- no Slurm run was made for the 32-bit variant, and none is warranted since it is not being shipped."
      },
      "evidence_status": "current",
      "followups": "None for the width itself. If a future benchmark family turns out to promote heavily (clock_synchro is the only one found so far), :rational.promotions is the counter that would show it."
    },
    {
      "id": "2026-07-29-qf-lra-scale-canonical-polynomial-keys-fuzz-gate",
      "started_at": "2026-07-28",
      "recorded_at": "2026-07-29",
      "kind": "fuzz",
      "scope": "Merge-gate and campaign-gate fuzz verification for docs/qf-lra-heuristics.md item H1b (commit 1e6554d), the long-deferred competitiveness-roadmap item 3: polynomial keys are scale-canonical, so proportional polynomials (x+y<=5, 2x+2y<=10, -x-y<=-5) share one slack instead of getting one each. Unconditional core change, so gated on both pivoting paths at both tiers, matching the precedent set by H2 and H1a. Its 237-file promotion-bar verdict is deliberately NOT part of this entry -- see followups.",
      "commit": "1e6554d",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (node-head, via /tmp/llm2smt_slurm_ssh_config)",
        "binary": "build-slurm-rel/primo --quiet [--lra-pivoting-rule soi] (remote Release)",
        "notes": "Jobs sat in the queue for an extended period behind ~470 pending jobs from other users; the compute partition was 9/9 allocated. Queue wait, not runtime -- the gates themselves completed in 34s to 3m17s per task."
      },
      "command": {
        "gates": "Same sbatch invocations as the H2/H1a entries, with job names primo-lra-h1b-{merge,camp}-{bland,soi} and PRIMO_FUZZ_OUT_ROOT=fuzz-results/lra-h1b-*"
      },
      "benchmark": {
        "suite": "Merge gate: fuzzsmt QF_LRA 500 cases vs z3 per pivoting rule. Campaign gate: fuzzsmt 6x500=3000 + opfuzz + 2 yinyang typefuzz shards over benchmarks/seeds/qf_lra_real, per pivoting rule.",
        "logic": "QF_LRA",
        "timeout_seconds": 5
      },
      "job_id": "116545 (merge Bland), 116546 (merge SOI), 116547 (campaign Bland), 116548 (campaign SOI). 116549, a standalone 237-file comparison for this item, was cancelled as redundant -- see followups.",
      "artifacts": {
        "gates": "remote fuzz-results/lra-h1b-{merge,camp}-{bland,soi}"
      },
      "summary": {
        "merge_gate": "Job 116545 (Bland): 500/500 -- 499 PASS, 1 TIMEOUT, 0 CRASH, 0 WRONG. Job 116546 (SOI): 500/500 -- 485 PASS, 15 TIMEOUT, 0 CRASH, 0 WRONG.",
        "campaign_gate": "Job 116547 (Bland): fuzzsmt 3000/3000 -- 2991 PASS, 9 TIMEOUT, 0 CRASH, 0 WRONG; opfuzz 14/14 seeds valid, 0 bug triggers; yinyang 2 shards, 14/14 valid each, 0 bug triggers each. Job 116548 (SOI): fuzzsmt 3000/3000 -- 2917 PASS, 83 TIMEOUT, 0 CRASH, 0 WRONG; opfuzz and yinyang likewise clean.",
        "timeout_rates": "Timeouts continue to fall as the stack of items lands: the Bland campaign gate has gone 118-143 (pre-H2) -> 28 (H2) -> 7 (H1a) -> 9 (H1b), and the SOI campaign 965-976 -> 324 -> 182 -> 83. Not a correctness signal, but consistent with the measured speedups.",
        "local_evidence_recap": "Row counts fall substantially on top of H1a (via :lra.rows): ecoliFBA 1,394 -> 695, TM/p6 67 -> 38, sc-17 723 -> 433, uart-17 920 -> 511, clock_synchro 259 -> 179, tta_startup 500 -> 284, DTP-Scheduling 3,932 -> 2,882 (the first time that family moves, since x-y and y-x are proportional). Wall-clock is mixed: clock_synchro 4.01s -> 1.28s (3.1x) and uart-18 0.92 -> 0.61 (1.5x), but DTP-Scheduling 6.01 -> 8.16 (0.74x) despite decisions dropping 8.6-fold and pivots to 4,248 -- merging proportional rows concentrates fill-in into fewer, denser rows."
      },
      "verification": {
        "correctness": "Zero wrong answers and zero crashes across 7,000 fuzzsmt cases on both pivoting paths, plus two opfuzz runs and four yinyang typefuzz shards over real QF_LRA seeds.",
        "local": "Release ctest 12/12 and ASAN/UBSan ctest 12/12; local QF_LRA fuzz smoke 200 cases, 198 PASS / 2 TIMEOUT / 0 CRASH / 0 WRONG."
      },
      "evidence_status": "current",
      "followups": "This item is correctness-verified but its performance verdict is still open. Its standalone 237-file comparison (job 116549) was cancelled as redundant: item H3's four-way promotion run (job 117222) evaluates bland/dantzig/sparse/sparse+leaving on a binary that already contains H1b, so that run's `bland` column measures exactly H1b's effect on the default against H1a's 136/237 -- H3 leaves the Bland path bit-identical, verified by counter comparison. If that column regresses, H1b is reverted per the roadmap's standing rule for rejected experiments."
    },
    {
      "id": "2026-07-29-qf-lra-sparse-pivoting-promotion",
      "started_at": "2026-07-28",
      "recorded_at": "2026-07-29",
      "kind": "benchmark",
      "scope": "docs/qf-lra-heuristics.md item H3: fill-in-aware entering-variable selection (PivotingRule::Sparse, commit cf491ce) and its promotion to the default together with the leaving-side half (commit dd60655). Includes the four-way 237-file promotion run that also settles item H1b, and the merge/campaign fuzz gates. pivot() rewrites every row in occurs_in_[entering] merging in a row of length |row(leaving)|, so a pivot's cost and the fill-in it creates are the Markowitz product of those two factors -- which none of Bland, Dantzig or SOI prices. Source: Monniaux (CAV 2009) p.8; only that sparsity criterion is taken from the paper.",
      "commit": "cf491ce (rule), dd60655 (promotion)",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (node-head, via /tmp/llm2smt_slurm_ssh_config)",
        "binary": "build-slurm-rel/primo --quiet [--lra-pivoting-rule {bland,dantzig,sparse}] [--lra-sparse-leaving] (remote Release)"
      },
      "command": {
        "merge_gates": "sbatch --array=0-0 --job-name=primo-lra-h3-merge-{bland,sparse,sparseleav} ... PRIMO_FUZZ_FUZZSMT_COUNT=500, PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA",
        "campaign_gates": "sbatch --job-name=primo-lra-h3-camp-{default,soi} ... default 9-task layout (6 fuzzsmt shards x 500 + opfuzz + 2 yinyang) over benchmarks/seeds/qf_lra_real",
        "promotion_bar": "sbatch --array=0-3 --job-name=primo-lra-h3-compare --export=ALL,'PRIMO_COMPARE_SOLVERS=bland=...;dantzig=... --lra-pivoting-rule dantzig;sparse=... --lra-pivoting-rule sparse;sparseleav=... --lra-pivoting-rule sparse --lra-sparse-leaving' scripts/slurm_qf_lra_solver_compare.sbatch"
      },
      "benchmark": {
        "suite": "benchmarks/qf-lra-stratified-sample.txt (237 files, 17 families) at a 10s timeout, four Primo configurations, diffed against the unchanged z3.csv/cvc5.csv from job 114200. Fuzz gates as above.",
        "logic": "QF_LRA",
        "timeout_seconds": 10
      },
      "job_id": "117219 (merge sparse), 117220 (merge sparse+leaving), 117221 (merge bland), 117222 (four-way comparison), 117227 (campaign, promoted default), 117228 (campaign, SOI)",
      "artifacts": {
        "comparison": "results/qf-lra-solver-compare-h3 (fetched; compare.html rendered over all six columns)",
        "gates": "remote fuzz-results/lra-h3-{merge-*,camp-*}",
        "baseline_reference": "results/qf-lra-solver-compare-114200 (z3/cvc5 reused unchanged), results/qf-lra-solver-compare-h1a (the 136/237 pre-H1b/H3 Primo run)"
      },
      "summary": {
        "promotion_bar": "Job 117222, all four configurations on one binary. Solved of 237: bland 144, dantzig 148, sparse 154, sparse+leaving 168; z3 167, cvc5 150. PAR2: 1962.4 / 1931.3 / 1798.9 / 1538.9 against z3 1531.6 and cvc5 1887.1. Zero wrong answers in every configuration. Against the previous default (bland), sparse+leaving is +24 files with ZERO regressions; against the pre-H1b/H3 run (136) it is +32, also zero regressions.",
        "per_family": "sparse+leaving vs bland: latendresse 0 -> 6 (matching z3; cvc5 solves 0), uart 10 -> 13, clock_synchro 7 -> 12 (z3 9, cvc5 10), 2019-ezsmt 7 -> 12 (z3 10), sc 11 -> 13, LassoRanker 1 -> 3 (z3 2), DTP-Scheduling 12 -> 13, tta_startup 13. Unchanged and already maxed: TM, keymaera, meti-tarski, sal, spider_benchmarks, check. Unmoved by anything so far: tropical-matrix 0/10 (all three solvers), miplib 4 (z3 6).",
        "leaving_side_finding": "The latendresse gain is ENTIRELY the leaving-side half. That knob was planned as a lower-priority follow-up and gated separately precisely because it is not progress-neutral -- it changes which infeasibility gets repaired. That objection holds for the Boolean-heavy families but does not apply to a pure-LP instance, which is a single check() call with no Boolean structure and therefore no search trajectory to steer wrong. Entering-side alone reaches 154; adding the leaving side reaches 168. Had only the planned scope shipped, the family that had been 0/15 since the beginning would have stayed there.",
        "dantzig_finding": "Dantzig had never been run on this sample in three roadmap cycles. It scores 148, beating the Bland default by 4, and it solves latendresse locally where Bland does not (~19.5s vs timeout). Including it is what makes the sparse win attributable rather than confounded with the leaving-rule change it shares with Dantzig.",
        "h1b_verdict": "The bland column IS item H1b's 237-file verdict, which is why its standalone job (116549) was cancelled as redundant: 136 -> 144 (+10 solved, -2 regressed), PAR2 2149.8 -> 1962.4 (-8.7%). H1b stays. Its local DTP-Scheduling regression did not generalize -- that family went 11 -> 12.",
        "merge_gates": "Job 117221 (bland): 500/500 -- 499 PASS, 1 TIMEOUT, 0 CRASH, 0 WRONG. Job 117219 (sparse): 499/1. Job 117220 (sparse+leaving): 496 PASS, 4 TIMEOUT. The bland gate specifically confirms the shared selection-loop refactor did not disturb the then-default path.",
        "campaign_gates": "Job 117227 (the promoted default): fuzzsmt 3000/3000 -- 2990 PASS, 10 TIMEOUT, 0 CRASH, 0 WRONG; opfuzz 14/14 seeds valid, 0 bug triggers; yinyang 2 shards, 14/14 valid each, 0 bug triggers each. Job 117228 (SOI): fuzzsmt 3000/3000 -- 2908 PASS, 92 TIMEOUT, 0 CRASH, 0 WRONG; opfuzz and yinyang likewise clean.",
        "local_cost_counters": "The new :lra.pivot-row-updates / :lra.pivot-term-ops counters explain the win rather than merely recording it. Term-ops on the profiled instances, bland -> promoted default: sc-21 20.4M -> 2.8M, clock_synchro 11.2M -> 1.2M, DTP-Scheduling 54.6M -> 11.0M, TM/p5 22.0K -> 5.6K. On latendresse/ecoliFBAyicesTest-500 the default finishes in 0.58s with 8.7M term-ops where Dantzig needs 130.9M and ~19.5s and Bland does not finish at all. The |coefficient|=1 tie-break also shows up directly: clock_synchro's :rational.promotions falls from 358,801 to 1,994."
      },
      "verification": {
        "default_path_invariance": "Before promotion, with --lra-pivoting-rule bland the refactored selection loop produced bit-identical :sat.decisions / :sat.conflicts / :lra.pivots to the pre-change build on all six profiled instances -- the check that the shared-loop refactor was behaviour-preserving for the then-default path.",
        "correctness": "Zero wrong answers and zero crashes across 1,500 merge-gate and 6,000 campaign-gate fuzzsmt cases, two opfuzz runs and four yinyang typefuzz shards, plus all four 237-file configurations.",
        "local": "Release ctest 12/12 and ASAN/UBSan ctest 12/12, including four new white-box selection tests (sparsest-column choice, unit-coefficient tie-break, bounded-pricing soundness, bland agreement) and an end-to-end agreement test. clang-tidy clean on lra_tableau.cpp. Both ablation flags (--lra-pivoting-rule bland, --no-lra-sparse-leaving) verified to change behaviour on latendresse.",
        "reference_solvers": "z3.csv/cvc5.csv reused unchanged from job 114200."
      },
      "evidence_status": "current",
      "followups": "Primo now solves 168/237 against z3's 167 with PAR2 essentially tied (1538.9 vs 1531.6), and the two are complementary rather than one dominating: 6 files z3 solves and Primo does not (DTP-Scheduling 2, miplib 2, LassoRanker 1, tta_startup 1), 7 the other way (clock_synchro 3, 2019-ezsmt 2, LassoRanker 2). Remaining known-open targets: miplib (4/15 vs z3's 6) and tropical-matrix (0/10 for all three solvers). Items H4/H5/H6 of the design note are unimplemented; H4's premise in particular needs re-measuring, since it rested on a per-decision cost that these items have changed."
    },
    {
      "id": "2026-07-29-qf-lra-fuzz-shard-timeout-investigation",
      "started_at": "2026-07-29",
      "recorded_at": "2026-07-29",
      "kind": "fuzz",
      "scope": "Investigation of four truncated fuzz-gate shards during the milestone-wide campaign sweep (jobs 117248-117251), and the correction of a wrong first diagnosis. Recorded because the failure pattern looked exactly like a solver termination bug and was not one -- the next person to see a whole-shard timeout should not have to re-derive this.",
      "commit": "f3d2ed2 (gate runs), 2b6e197 and later (script fix)",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm; compute partition 9/9 allocated with 460+ jobs queued from other users during the failures",
        "binary": "build-slurm-rel/primo --quiet [various pivoting/propagation flags]"
      },
      "command": {
        "original": "scripts/slurm_qfuf_fuzz_gate.sbatch, 6 fuzzsmt shards x 500 cases per configuration, --time=00:45:00",
        "reruns": "same shards resubmitted with --time=03:00:00 (jobs 117309-117312) and again at --time=02:00:00 (117333-117336)",
        "isolation": "srun on a compute node running fuzz_external.py directly with python3 -u, once writing to node-local /tmp and once to the same NFS fuzz-results tree the gate uses; plus the generator alone, and per-case timing/peak-RSS sweeps locally and remotely"
      },
      "summary": {
        "symptom": "Four of the five sweep configurations reported 2500 of 3000 fuzzsmt cases, all otherwise clean (0 crashes, 0 wrong answers). One shard per job had hit the Slurm wall clock and been killed before fuzz_external.py writes summary.csv, so the shard vanished from the results rather than failing -- a truncated gate is indistinguishable from a clean one unless the summary count is checked.",
        "what_made_it_look_like_a_solver_bug": "All four lost shards were the same FuzzSMT seed, 217251, across four DIFFERENT solver configurations (bland, dantzig, --no-lra-sparse-leaving, --no-lra-propagation), while the fifth job (row propagation), whose seed range skips 217251, completed every shard. It reproduced on a second run at a 3x longer wall limit, which produced zero case lines in three hours.",
        "why_it_is_not": "The same seed completes 500/500 everywhere it was retried: locally in ~40s; on a compute node writing to node-local /tmp; and on a compute node writing to the same NFS fuzz-results tree the gate uses, in 126 seconds. Generation of its 500 files takes 0.33s locally and 0.61s remotely. Peak RSS across its cases is ~95MB for Primo and ~153MB for z3, against the 2G cgroup. Both the solver and the reference calls are already timeout-bounded at 5s inside fuzz_external.py, so a shard cannot exceed roughly COUNT * 2 * TIMEOUT = 83 minutes of solving -- the failures ran 180.",
        "conclusion": "No solver hang. An environment/scheduling anomaly during a period when the cluster was saturated by other users' work; it did not reproduce once the queue drained. The cluster nodes are also 3-5x slower per case than the workstation (5 of the seed's cases exceed 8s remotely where only 1 hits the 5s cap locally), which narrows the margin but does not come close to explaining 180 minutes.",
        "corrected_diagnosis": "An earlier commit (2b6e197) asserted the 45-minute limit was under the worst case 'by construction' and implied that was the cause. The arithmetic is right and the raise to two hours is kept as defence in depth, but it was NOT the cause here -- 83 minutes does not explain a 180-minute failure, and the shard actually completes in about two. The script comment has been corrected rather than left confidently wrong."
      },
      "verification": {
        "reruns": "Jobs 117333-117336 re-run the four missing shards to bring the sweep to its stated 3000 cases per configuration.",
        "earlier_gates_unaffected": "All eight campaign gates behind the H2/H1a/H1b/H3 results (114898/114899, 115170/115171, 116547/116548, 117227/117228) completed every task, so their 3000-case claims stand.",
        "tooling": "scripts/slurm_qfuf_fuzz_gate.sbatch wall limit raised to two hours with both the bound and this investigation documented; scripts/summarize_fuzz_results.py checked in, and it prints the summary.csv count next to the case count precisely because that discrepancy is the only visible symptom."
      },
      "evidence_status": "current",
      "followups": "If a whole-shard timeout recurs, treat it as an environment signal first -- but check the seed pattern. One seed failing across configurations AND reproducing on a quiet cluster would be the real thing, and that is the test this entry exists to make cheap."
    },
    {
      "id": "2026-07-29-qf-lra-scrambled-competition-evaluation",
      "started_at": "2026-07-29",
      "recorded_at": "2026-07-29",
      "kind": "benchmark",
      "scope": "First evaluation of Primo on a benchmark set it was never tuned against: 595 scrambled QF_LRA benchmarks from last year's competition (sandbox/QF_LRA), against z3 and cvc5 at a 60s timeout. Scrambling permutes symbol names and assertion order, so nothing here can be recognised from the families the 2026-07-27 heuristics round worked on. Includes the profiling pass that located the remaining gap.",
      "commit": "ae14e0e",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "build-slurm-rel/primo --quiet, contrib/local/bin/{z3,cvc5}",
        "notes": "12G per task and 20-way manifest sharding: this set's files are far larger than the stratified sample's (median 129KB, p95 9.3MB, max 62.5MB), and Primo peaks at ~2.4GB RSS on the 62MB instance."
      },
      "command": {
        "run": "sbatch scripts/slurm_qf_lra_scrambled_compare.sbatch (new; 3 solvers x 20 shards = 60 tasks, --timeout 60)",
        "analysis": "python3 scripts/compare_solver_answers.py results/qf-lra-scrambled --timeout 60",
        "profiling": "perf record -g on the sharpest gap instances; ./build/primo --quiet --stats and z3 -st on the same files"
      },
      "benchmark": {
        "suite": "benchmarks/qf-lra-scrambled-competition.txt (595 files, scrambled competition set)",
        "logic": "QF_LRA",
        "timeout_seconds": 60
      },
      "job_id": "117337 (main run, all 60 tasks COMPLETED), 117414 (76-file gap subset re-run at 600s, pending)",
      "artifacts": {
        "results": "results/qf-lra-scrambled (60 shard CSVs, fetched)",
        "manifests": "benchmarks/qf-lra-scrambled-competition.txt, benchmarks/qf-lra-scrambled-gap-vs-z3.txt"
      },
      "summary": {
        "headline": "Solved of 595: z3 429 (72.1%), primo 373 (62.7%), cvc5 351 (59.0%). PAR2: z3 23138s, primo 29215s, cvc5 31766s. Primo beats cvc5 by 22 files and trails z3 by 56. ZERO cross-solver disagreements, zero crashes, zero errors, zero unsupported across all 595 files in all three solvers.",
        "correction_to_earlier_claims": "On the 237-file stratified sample Primo had edged z3 168-167. That does NOT hold on an unseen set. The stratified sample -- assembled during this roadmap and used as its promotion bar -- was optimistic, which is exactly why the scrambled set was worth running.",
        "soundness_caveat": "Scrambled benchmarks carry no (set-info :status), so bench_qf_uf_full.py's own wrong-answer column is inert here: it derives `expected` from :status and reports wrong=false for every row regardless of the answer. The zero-disagreement result above comes from scripts/compare_solver_answers.py comparing the three solvers against each other, which is the only soundness signal this set supports.",
        "gap_is_one_size_band": "Solved by file size (primo / z3 / cvc5): 0-50KB 180/181/181 of 182; 50-500KB 142/134/122 of 191; 500KB-5MB 43/100/43 of 173; >5MB 8/14/5 of 49. Primo LEADS both references below 500KB and collapses above it, landing on exactly cvc5's number in the 500KB-5MB band. 18 files are solved only by Primo, 60 only by z3, 0 only by cvc5; 146 by nobody.",
        "not_a_preprocessing_size_problem": "First hypothesis, and refuted by measurement. On four profiled gap instances Primo's prepared tableau matches z3's reported dimensions within ~5%: 9,315x11,633 vs 9,000x11,330; 8,960x10,479 vs 8,892x10,415; 4,822x5,405 vs 4,342x4,929; 24,976x27,016 vs 22,792x26,486. Primo also already folds the scrambler's (* 1.0 t)/(+ t 0.0) obfuscation -- verified directly, term size and solve-eqs counts identical with and without it. Both solvers build the same problem.",
        "diagnosis": "The instances are dominated by Real equalities (8,226-40,820 lowered per file against 4,822-24,976 rows). Primo lowers t1=t2 to a pair of inequalities that item H1b puts on one shared slack, which then holds an upper and a lower bound at the same value -- a FIXED variable that Primo never exploits, leaving it a live pivotable row. z3 does exploit it: :arith-fixed-eqs 168-52,364 and :arith-offset-eqs 855-68,937 per instance, after which its search barely runs. On scrambled126657 z3 needs 9 decisions and 4 conflicts where Primo makes 141,124 decisions and 321M pivot term-operations. perf puts 86% of Primo's runtime in LraTableau::pivot, averaging 431 rows rewritten per pivot.",
        "timeout_caveat": "z3's median time on the 76 files it wins and Primo loses is 25s of the 60s budget (max 57.9s), so it is near the boundary too. At 60s a 2x slower solver loses many files a longer budget would recover, and the competition's own timeout is 1200s -- this run may overstate the gap under competition conditions. Job 117414 re-runs exactly those 76 files at 600s to separate 'cannot' from 'needs more budget'."
      },
      "verification": {
        "completeness": "All 60 array tasks COMPLETED; all 60 shard CSVs present. Checked explicitly, after the 117248-117251 episode where truncated shards read as clean.",
        "analysis_tooling": "scripts/compare_solver_answers.py validated against results/qf-lra-solver-compare-h3, where it reproduces the published H3 numbers exactly (144/148/154/168 vs z3 167, cvc5 150) and independently confirms 0 disagreements there."
      },
      "evidence_status": "current",
      "followups": "Recorded as item H7 in docs/qf-lra-heuristics.md: fixed-variable elimination, with offset equalities as a follow-on. Higher risk than H1-H3 because it changes what is in the tableau during search, so it touches the trail, conflict explanation and propagation -- the first item in that note that could produce a wrong answer rather than a slow one. Its falsifier is stated there. The 600s gap re-run (117414) should land before it is prioritised."
    },
    {
      "id": "2026-07-30-qf-lra-fixed-variable-elimination-h7",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "benchmark",
      "scope": "docs/qf-lra-heuristics.md item H7: fixed-variable elimination. A basic variable whose bounds coincide is pivoted out of the basis, since can_enter() already makes a fixed NON-basic variable inert while a fixed basic one demands a repair pivot whenever any term in its row moves. Designed from the 2026-07-29 scrambled-competition profiling, which found these instances dominated by lowered Real equalities that item H1b puts on one shared slack. NOT PROMOTED: it did not clear the 595-file bar and ships opt-in behind --lra-fixed-elimination. Its row-freezing half was deleted outright.",
      "commit": "eed259c (implementation), a786fb3 (fixed-candidate guard), ebd2533 (freezing removed, demoted to opt-in)",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (via /tmp/llm2smt_slurm_ssh_config)",
        "binary": "build-slurm-rel/primo --quiet [--lra-fixed-elimination | --no-lra-freeze-eliminated-rows] (remote Release); local build-asan-ws/primo for the ASAN work",
        "notes": "The remote Debug+ASAN binary (build-slurm-fuzz) could NOT be rebuilt this round: the head node has no libasan.so.6.0.0 and compute nodes lack the C++ standard headers, so it fails to link in one place and to compile in the other. ASAN coverage came from the workstation instead; this is a real reduction against previous rounds' gates and is not claimed as equivalent."
      },
      "command": {
        "promotion_bar": "sbatch --array=0-59 --job-name=primo-lra-h7-scrambled --export=ALL,'PRIMO_COMPARE_SOLVERS=h7=...;h7nofreeze=... --no-lra-freeze-eliminated-rows;base=... --no-lra-fixed-elimination' scripts/slurm_qf_lra_scrambled_compare.sbatch",
        "regression": "sbatch --array=0-2 --job-name=primo-lra-h7-strat ... scripts/slurm_qf_lra_solver_compare.sbatch",
        "analysis": "python3 scripts/compare_solver_answers.py <dir> --timeout {60,10}",
        "local_ab": "./build/primo --quiet --stats [--no-lra-fixed-elimination] on the four profiled scrambled instances plus latendresse/ecoliFBAyicesTest-500"
      },
      "benchmark": {
        "suite": "benchmarks/qf-lra-scrambled-competition.txt (595 files, 60s) as the promotion bar; benchmarks/qf-lra-stratified-sample.txt (237 files, 10s) as the regression check. z3/cvc5 reused unchanged from the 2026-07-29 run and job 114200 respectively.",
        "logic": "QF_LRA",
        "timeout_seconds": 60
      },
      "job_id": "117487 (scrambled, all 60 tasks COMPLETED), 117488 (stratified), 117585 (merge gate -- INVALID, see verification), 117589 (merge gate, 1000 cases, clean)",
      "artifacts": {
        "results": "results/qf-lra-scrambled-h7 (60 shard CSVs), results/qf-lra-solver-compare-h7",
        "baseline_reference": "results/qf-lra-scrambled (z3/cvc5 unchanged), results/qf-lra-solver-compare-114200"
      },
      "summary": {
        "headline": "H7 does not clear its bar. Scrambled 595 at 60s: 373 solved with it off, 374 on, 375 with the freezing half disabled. PAR2 29204 / 29237 / 29195. Net +1 file on 595 with +19/-18 symmetric churn. Stratified 237 at 10s: 167 -> 168, PAR2 1559.1 -> 1531.7. Zero cross-solver disagreements on either set.",
        "the_mechanism_does_work": "Local paired A/B is unambiguous per-instance: latendresse/ecoliFBAyicesTest-500 0.8s -> 0.1s (:lra.pivot-term-ops 8.66M -> 0.13M), scrambled335326 51.0s -> 14.9s (195M -> 27M), and roughly an order of magnitude less pivot work on instances that still time out. The diagnosis that these tableaus are dominated by fixed equality slacks is correct.",
        "but_it_is_bimodal": "It does not generalize, and the band breakdown is what shows it. Solved by file size (H7-off / H7-on-without-freezing / z3): 0-50KB 177/179/178 of 179; 50-500KB 144/138/136 of 192; 500KB-5MB 45/45/101 of 174; >5MB 7/13/14 of 50. Per-band gain/loss for H7: 0-50KB +2/-0, 50-500KB +2/-8, 500KB-5MB +8/-8, >5MB +8/-2.",
        "where_the_gap_actually_is": "The ENTIRE remaining 56-file deficit against z3 is the 500KB-5MB band (45 vs 101). H7 nets exactly zero there. Over the 32 files in that band both configurations solve in more than a second the MEDIAN is 0.64x -- the typical gap instance is 1.6x SLOWER -- with 17 files >20% slower against 8 files >25% faster. Overall median across all commonly-solved files is 0.94x.",
        "real_win_where_it_is_not_needed": "The >5MB band is the one genuine gain: 7 -> 13 of 50, +8 gained against -2 lost, closing a 7-file deficit against z3's 14 down to 1. Among the 5 files both configurations solve there the median is 0.98x, so the gains are files crossing the 60s line rather than a broad speedup.",
        "methodological_correction": "The four instances profiled to design H7 were all in the 500KB-5MB band, so the band choice was right -- but they were the winning tail of it, not a representative sample, and three of the four still timed out with H7 enabled. Presenting their 3.4x/8x as evidence the mechanism 'works' over-generalized from an instance selection biased toward the hypothesis under test. The band-level median (0.64x) is what caught it. Future gap work should profile the MEDIAN instance of the target band.",
        "freezing_deleted": "The row-freezing half (drop a qualifying row from occurs_in_ so update()/check() skip it) was strictly negative: four files lost in the 500KB-5MB band against one gained elsewhere. It also carried all of H7's wrong-answer risk -- mark_boundable's caller contract, the throw enforcing it, the stale-assignment argument, the frozen-row-whose-term-later-became-basic case, RowDeactivationTrailEntry. Removed outright rather than left behind a flag: 352 lines deleted against 106 added (ebd2533). What remains has no wrong-answer mode; it is a pivot, which is what check() does on every repair.",
        "no_threshold_added": "Deliberately did NOT add a size or row-length threshold to keep the >5MB win while dodging the mid-range cost. That is tuning a heuristic that lost its own bar -- item 8's recorded mistake.",
        "what_this_says_about_the_gap": "The fixed-equality hypothesis is now tested and largely refuted for the band that holds the deficit. That is worth more than the +1 file: it removes the most plausible remaining explanation. Offset equalities (z3's :arith-offset-eqs, 855-68,937 per instance) remain untested."
      },
      "verification": {
        "ablation_invariance": "With H7 off, :sat.decisions and :lra.pivots are byte-identical to the pre-H7 build on the six-instance counter probe -- checked at eed259c and again after the demotion, so the shipped default is exactly pre-H7 behaviour.",
        "tests": "Release and ASAN ctest green throughout. Unit tests pin: the elimination fires; the unbounded-candidate preference; that an already-fixed candidate is never pivoted INTO the basis (that guard was a real bug -- the other ranking criteria actively steer into picking one, and the test fails without it); conflict still found through an eliminated variable with every certificate literal genuinely asserted; push/pop across an elimination; verdict agreement with the ablation under both pivoting rules.",
        "mutation_checks": "Before its removal, the freezing guard was mutation-checked both ways. Dropping it entirely made an existing end-to-end test return the wrong verdict (gaussian_elimination_can_be_disabled). Dropping only the mark_boundable half fired the throw immediately on real benchmarks (variable 1133 on scrambled335326, 1584 on ecoliFBAyicesTest-500). Both confirm the guard was load-bearing, which is why removing the feature it guarded was preferable to keeping both.",
        "fuzzing": "2100 fuzzsmt cases against z3 under ASAN with H7 enabled (300+300+1500, zero mismatches, timeouts only), plus an ASAN differential against the ablation over all 237 stratified files and the 60 smallest scrambled files: 0 sanitizer hits, 0 verdict mismatches. A further 1500-case ASAN campaign against z3 covers the shipped opt-in path specifically (--lra-fixed-elimination, freezing removed), since the earlier 2100 ran when H7 was default-on WITH freezing: 1428 PASS / 72 TIMEOUT, zero mismatches.",
        "invalid_gate": "Job 117585 reported COMPLETED and had run ZERO cases: its only summary row was SKIPPED_MISSING_FUZZER. The gate script never put contrib/local/bin on PATH, relying on --export=ALL to inherit it from the submitting shell -- which works from an interactive shell but not from `ssh host bash -s` -- and fuzz_external.py treats a missing fuzzer as a skip with exit 0. Both fixed in 0524733 (PATH set inside the job; missing fuzzsmt/z3 now exits 2). Resubmitted as 117589. Recorded because a green job that tested nothing is the same class of error as the truncated shards of 117248-117251.",
        "merge_gate": "Job 117589, the opt-in path (--lra-fixed-elimination) against build-slurm-rel: 1000 fuzzsmt QF_LRA cases over two shards, 997 PASS / 3 TIMEOUT, zero wrong answers against z3. Summary row counts checked against the 500-per-shard expectation before believing it, which is what caught 117585."
      },
      "evidence_status": "current",
      "followups": "H7 stays opt-in. The next QF_LRA gap investigation should profile the median 500KB-5MB instance rather than the most equality-dense one, and offset equalities are the remaining untested hypothesis from the 2026-07-29 diagnosis. The remote ASAN fuzz binary needs its toolchain problem resolved before any future campaign-tier gate can match previous rounds."
    },
    {
      "id": "2026-07-30-qf-lra-model-printing-local-gate",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "fuzz+model-validation",
      "scope": "Local gate for integrating QF_LRA get-model printing into the Nelson-Oppen branch before combination work. Covers verdict stability on generated QF_LRA inputs and the printed Real-constant model path, including preprocessing reconstruction through solve-eqs/Gaussian equalities.",
      "commit": "08aaa37-dirty working tree on nelson-oppen-closure-methods; source/docs/tests/scripts committed adjacent to this run-log entry",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "./build/primo --quiet (Release, CaDiCaL cadical-3.0.0-7b99c07)",
        "reference": "/workspace/contrib/local/bin/z3 for verdict comparison and limited Real-constant model-validation fallback",
        "notes": "Dolmen was not installed locally, so scripts/validate_model.py used the Z3 fallback added in this change. The fallback asserts printed nullary Real assignments back into the original QF_LRA problem; it is not a complete validator for QF_UF or future mixed-theory models."
      },
      "command": {
        "verdict_fuzz": "PATH='/workspace/contrib/local/bin:$PATH' python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs /workspace/contrib/local/bin/z3 --logic QF_LRA --count 100 --timeout 5 --seed 730001 --out fuzz-results/qf_lra-model-fuzz-smoke",
        "model_validation": "python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --timeout 20 --dolmen-timeout 20 --out results/qf_lra-model-validation-fuzz-smoke fuzz-results/qf_lra-model-fuzz-smoke/generated/*.smt2"
      },
      "benchmark": {
        "suite": "100 fuzzsmt-generated QF_LRA cases, seed 730001",
        "logic": "QF_LRA",
        "timeout_seconds": "5 for verdict comparison; 20 for model-producing validation run"
      },
      "artifacts": {
        "fuzz_summary": "fuzz-results/qf_lra-model-fuzz-smoke/summary.csv",
        "model_validation_summary": "results/qf_lra-model-validation-fuzz-smoke/summary.csv",
        "generated_inputs": "fuzz-results/qf_lra-model-fuzz-smoke/generated/*.smt2",
        "model_validation_artifacts": "results/qf_lra-model-validation-fuzz-smoke/"
      },
      "summary": {
        "verdict_fuzz": {
          "PASS": 99,
          "TIMEOUT": 1
        },
        "model_validation": {
          "not-sat": 12,
          "pass": 87,
          "solver-timeout": 1
        },
        "headline": "No wrong answers, crashes, or model errors. Verdict fuzzing: 99 PASS, 1 solver TIMEOUT. Model validation over the same generated inputs: 87 PASS, 12 not-sat/no-model cases, 1 solver-timeout. The timeout-only cases are not correctness failures."
      },
      "verification": {
        "unit_tests": "New qf_lra_solver_tests cover get-model gating, strict-bound concrete model output, and reconstruction of preprocessed solved Real constants.",
        "tooling": "python3 -m py_compile scripts/validate_model.py scripts/validate_qfuf_models_with_dolmen.py; targeted include-cleaner on src/smt/check_sat.cpp clean; whole-tree clang-tidy clean; whole-tree include-cleaner has existing baseline advisory warnings outside this change."
      },
      "evidence_status": "current",
      "followups": "Install Dolmen locally or on SLURM for full SMT-LIB response validation. The Z3 fallback is intentionally limited to the current nullary-Real QF_LRA model subset."
    },
    {
      "id": "2026-07-30-qf-uflra-separable-smoke-ffaf9eb",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "fuzz",
      "scope": "Local smoke fuzz for the separable mixed QF_UFLRA final-check coordinator added on the Nelson-Oppen branch. The generated corpus intentionally avoids Real-sorted terms in EUF atoms and uninterpreted applications in arithmetic atoms, so it targets the implemented separable subset rather than full Nelson-Oppen equality sharing.",
      "commit": "ffaf9eb",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "./build/primo --quiet (Release, CaDiCaL cadical-3.0.0-7b99c07)",
        "reference": "/workspace/contrib/local/bin/z3"
      },
      "command": "PATH='/workspace/contrib/local/bin:$PATH' python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 200 --seed 20260730 --timeout 5 --out fuzz-results/qf_uflra-smoke-ffaf9eb",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py",
        "logic": "QF_UFLRA",
        "seed": 20260730,
        "count": 200,
        "timeout_seconds": 5,
        "manifest": "generated under fuzz-results/qf_uflra-smoke-ffaf9eb/cases/"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uflra-smoke-ffaf9eb/summary.csv",
        "generated_inputs": "fuzz-results/qf_uflra-smoke-ffaf9eb/cases/",
        "bugs": null
      },
      "summary": {
        "total": 200,
        "pass": 200,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "parser_or_type_error": 0,
        "reference_disagreement": 0,
        "sat": 118,
        "unsat": 82
      },
      "verification": {
        "unit_tests": "tests/unit/qf_lra_solver_tests.cpp covers separable sat, EUF conflict learning, LRA conflict learning, mixed get-model rejection before and after preprocessing, Real arguments to EUF predicates rejected, and Real-valued UF applications in arithmetic atoms rejected.",
        "local_gates": "make check, make docs, make asan-test, clang-tidy -p build src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp, git diff --check, and python3 -m py_compile scripts/*.py contrib/*.py all passed before this run-log entry."
      },
      "evidence_status": "current",
      "followups": "This is a smoke gate for the separable bridge only. Full Nelson-Oppen work still needs purification, shared equality atom creation/propagation, mixed model reconstruction, and a stronger mixed-theory fuzz/mutation campaign once those mechanisms exist."
    },
    {
      "id": "2026-07-30-qf-uflra-purified-smoke-7347f64",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "fuzz",
      "scope": "Local merge-gate fuzz for the first runnable Nelson-Oppen-style QF_UFLRA subset: Real-valued UF applications in arithmetic atoms are purified to internal Real proxies, EUF owns the proxy definitions, and EUF-implied proxy equalities are checked by LRA under the current SAT assignment.",
      "commit": "7347f64 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "./build/primo (Release, CaDiCaL cadical-3.0.0-7b99c07)",
        "reference": "/workspace/contrib/local/bin/z3"
      },
      "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260731 --timeout 5 --shape purified --out fuzz-results/qf_uflra-purified-7347f64",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape purified",
        "logic": "QF_UFLRA",
        "seed": 20260731,
        "count": 1000,
        "timeout_seconds": 5,
        "manifest": "generated under fuzz-results/qf_uflra-purified-7347f64/cases/"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uflra-purified-7347f64/summary.csv",
        "generated_inputs": "fuzz-results/qf_uflra-purified-7347f64/cases/",
        "bugs": null
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "parser_or_type_error": 0,
        "reference_disagreement": 0,
        "sat": 787,
        "unsat": 213
      },
      "verification": {
        "unit_tests": "tests/unit/qf_lra_solver_tests.cpp covers purification of Real-valued UF applications, EUF-implied proxy equality conflicts against LRA, and the same conflict under --euf-engine=lazy so proxy equality sharing is not skipped by an option.",
        "sanity": "20-case purified-shape sanity run with seed 20260730 also passed before the 1000-case gate."
      },
      "evidence_status": "current",
      "followups": "This is a local merge gate for the implemented partial subset, not a campaign-tier validation for full Nelson-Oppen. Remaining work: Real terms in EUF predicates/non-definition atoms, fine-grained cross-theory explanations, bidirectional sharing, mixed model reconstruction, and SLURM-scale mixed-theory fuzzing."
    },
    {
      "id": "2026-07-30-qf-uflra-separable-mixed-model-smoke-5bb2262",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "model-validation",
      "scope": "Local smoke validation for separable mixed QF_UFLRA get-model: EUF atoms over an uninterpreted sort plus nullary Real LRA atoms, with preprocessing and solved-constant substitution disabled so the mixed model composer is exercised.",
      "commit": "5bb2262 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 5bb2262; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "validator": "Dolmen-compatible validation through scripts/validate_model.py; summary rows report dolmen_exit=0"
      },
      "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--qf-uf-preprocess=off --solver-arg=--no-solved-constant-substitution --timeout 5 --dolmen-timeout 10 --out results/qf_uflra-mixed-model-smoke-5bb2262 /tmp/primo-mixed-model-smoke/case-*.smt2",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --qf-uf-preprocess=off --no-solved-constant-substitution"
      },
      "references": [
        {
          "name": "Dolmen",
          "argv": "via scripts/validate_model.py"
        }
      ],
      "inputs": {
        "generator": "temporary shell-generated SMT-LIB cases under /tmp/primo-mixed-model-smoke/case-*.smt2",
        "logic": "QF_UFLRA",
        "seed": null,
        "count": 100,
        "timeout_seconds": 5,
        "manifest": "temporary local files; each case declares U constants a,b,c, Real constants x,y, predicate p: U -> Bool, asserts (= a b), (p a), (< n x), and (<= x y), then requests get-model"
      },
      "artifacts": {
        "summary": "results/qf_uflra-mixed-model-smoke-5bb2262/summary.csv",
        "responses": "results/qf_uflra-mixed-model-smoke-5bb2262/*.rsmt2",
        "bugs": null
      },
      "summary": {
        "total": 100,
        "pass": 100,
        "model_error": 0,
        "solver_error": 0,
        "timeout": 0,
        "unsupported": 0,
        "sat": 100,
        "unsat": 0
      },
      "verification": {
        "unit_tests": "tests/unit/qf_lra_solver_tests.cpp covers separable mixed get-model output, rejection of get-model for Real-valued UF applications, and the existing mixed QF_UFLRA SAT/UNSAT cases.",
        "local_gates": "make check, make docs, make lint, make asan-test, clang-tidy -p build src/smt/check_sat.cpp src/smt/model_builder.cpp tests/unit/qf_lra_solver_tests.cpp, git diff --check, and python3 -m json.tool docs/run-log.json all passed before recording this entry."
      },
      "evidence_status": "current",
      "followups": "This validates only the separable mixed model subset. Real-valued UF applications, shared-Real EUF terms, and full Nelson-Oppen model reconstruction remain unsupported."
    },
    {
      "id": "2026-07-30-qf-uflra-shared-real-smoke-e2e0124",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "fuzz",
      "scope": "Local merge-gate fuzz for LRA-to-EUF shared Real-constant equality checks in the partial Nelson-Oppen QF_UFLRA coordinator. Cases contain EUF predicates over Real constants plus LRA constraints that may or may not force those constants equal.",
      "commit": "e2e0124 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: e2e0124; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3"
      },
      "command": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260731 --timeout 5 --shape shared-real --out fuzz-results/qf_uflra-shared-real-e2e0124",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape shared-real",
        "logic": "QF_UFLRA",
        "seed": 20260731,
        "count": 1000,
        "timeout_seconds": 5,
        "manifest": "generated under fuzz-results/qf_uflra-shared-real-e2e0124/cases/"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uflra-shared-real-e2e0124/summary.csv",
        "generated_inputs": "fuzz-results/qf_uflra-shared-real-e2e0124/cases/",
        "bugs": null
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "parser_or_type_error": 0,
        "reference_disagreement": 0,
        "sat": 692,
        "unsat": 308
      },
      "verification": {
        "unit_tests": "tests/unit/qf_lra_solver_tests.cpp covers LRA-implied Real equality causing an EUF conflict, an unentailed equality remaining SAT, the then-current unsupported non-constant Real predicate-argument case, and the existing EUF-to-LRA proxy case.",
        "local_gates": "make check, make docs, make lint, make asan-test, clang-tidy -p build src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp, git diff --check, and 50-case shared-real sanity fuzz with seed 20260730 all passed before this entry."
      },
      "evidence_status": "superseded-by-2026-07-30-qf-uflra-real-valued-uf-result-models",
      "followups": "This is still final-check-only equality sharing with broad assignment-blocking clauses. Later 2026-07-30 entries add non-constant Real-term purification, shared-Real model reconstruction, and Real-valued UF result models. Missing equality atom creation, fine-grained Nelson-Oppen explanations, and SLURM-scale mixed fuzzing remain open."
    },
    {
      "id": "2026-07-30-qf-uflra-real-argument-models-d8005a6",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "fuzz-and-model-validation",
      "scope": "Local merge-gate answer fuzz plus Dolmen model validation for mixed QF_UFLRA get-model support where UF symbols take Real constants as arguments. This covers the model repair that adds EUF-implied Real-constant equalities and strict separations for EUF-distinct Real constants before printing UF tables.",
      "commit": "d8005a6 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: d8005a6; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3",
        "model_validator": "/tmp/primo-opam-root/primo-system/bin/dolmen"
      },
      "commands": {
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260733 --timeout 5 --shape shared-real --out fuzz-results/qf_uflra-shared-real-model-d8005a6",
        "model_validation": "PATH=\"/tmp/primo-opam-root/primo-system/bin:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--qf-uf-preprocess=off --solver-arg=--no-solved-constant-substitution --timeout 5 --dolmen-timeout 10 --limit 200 --out results/qf_uflra-shared-real-model-validation-d8005a6-self fuzz-results/qf_uflra-shared-real-model-d8005a6/cases/*.smt2"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        },
        {
          "name": "Dolmen",
          "argv": "dolmen --check-model=true -r response.rsmt2 problem.smt2"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape shared-real",
        "logic": "QF_UFLRA",
        "seed": 20260733,
        "count": 1000,
        "timeout_seconds": 5,
        "model_validation_limit": 200,
        "manifest": "generated under fuzz-results/qf_uflra-shared-real-model-d8005a6/cases/"
      },
      "artifacts": {
        "answer_summary": "fuzz-results/qf_uflra-shared-real-model-d8005a6/summary.csv",
        "generated_inputs": "fuzz-results/qf_uflra-shared-real-model-d8005a6/cases/",
        "model_validation_summary": "results/qf_uflra-shared-real-model-validation-d8005a6-self/summary.csv",
        "model_validation_artifacts": "results/qf_uflra-shared-real-model-validation-d8005a6-self/",
        "bugs": null
      },
      "summary": {
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_wrong": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "answer_fuzz_reference_disagreement": 0,
        "answer_fuzz_sat": 677,
        "answer_fuzz_unsat": 323,
        "model_validation_total": 200,
        "model_validation_pass": 138,
        "model_validation_not_sat": 62,
        "model_validation_model_error": 0,
        "model_validation_solver_error": 0,
        "model_validation_timeout": 0
      },
      "verification": {
        "unit_tests": "tests/unit/qf_lra_solver_tests.cpp covers shared Real predicate get-model with a separating LRA repair, shared Real predicate get-model when LRA forces equality, and the then-current unsupported Real-valued UF result and non-constant Real argument cases.",
        "local_gates": "make check, make docs, make lint, make asan-test, clang-tidy -p build src/smt/check_sat.cpp src/smt/model_builder.cpp tests/unit/qf_lra_solver_tests.cpp, git diff --check, solver_efficiency_snapshot.py, and Primo document-critic stale-claim scan all passed before this entry. A pre-commit Dolmen run found 17 model errors in 200 generated cases; the committed fix reran the same class with 0 model errors."
      },
      "evidence_status": "superseded-by-2026-07-30-qf-uflra-real-valued-uf-result-models",
      "followups": "This remains a model-reconstruction milestone, not full Nelson-Oppen. Later 2026-07-30 entries add non-constant Real-term purification and Real-valued UF result models. Equality sharing is still final-check-only with broad assignment-blocking clauses. Missing equality atom creation, fine-grained Nelson-Oppen explanations, backtracking arrangement search for model separations, model-guided equality guesses from de Moura/Bjorner, and SLURM-scale mixed fuzzing remain open."
    },
    {
      "id": "2026-07-30-qf-uflra-nonconstant-real-argument-purification",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "fuzz-and-model-validation",
      "scope": "Local merge-gate answer fuzz plus Dolmen model validation for the Nelson-Oppen branch's QF_UFLRA purification of non-constant Real arguments in EUF atoms. The implementation replaces each such argument with an internal Real proxy, emits the defining LRA bounds, and keeps Real-valued UF application definitions EUF-owned. It also fixes Boolean UF model-table shadowing where an unassigned original application over the same concrete Real argument could hide an assigned purified application.",
      "commit": "pre-commit worktree based on f8a2d40 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: f8a2d40-dirty; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3",
        "model_validator": "/tmp/primo-opam-root/primo-system/bin/dolmen"
      },
      "commands": {
        "rejected_draft_answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260734 --timeout 5 --shape nonconstant-real --out fuzz-results/qf_uflra-nonconstant-real-draft",
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260734 --timeout 5 --shape nonconstant-real --out fuzz-results/qf_uflra-nonconstant-real-final",
        "model_validation": "PATH=\"/tmp/primo-opam-root/primo-system/bin:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--qf-uf-preprocess=off --solver-arg=--no-solved-constant-substitution --timeout 5 --dolmen-timeout 10 --limit 200 --out results/qf_uflra-nonconstant-real-model-validation-final fuzz-results/qf_uflra-nonconstant-real-final/cases/*.smt2"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        },
        {
          "name": "Dolmen",
          "argv": "dolmen --check-model=true -r response.rsmt2 problem.smt2"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape nonconstant-real",
        "logic": "QF_UFLRA",
        "seed": 20260734,
        "count": 1000,
        "timeout_seconds": 5,
        "model_validation_limit": 200,
        "manifest": "generated under fuzz-results/qf_uflra-nonconstant-real-final/cases/"
      },
      "artifacts": {
        "rejected_draft_summary": "fuzz-results/qf_uflra-nonconstant-real-draft/summary.csv",
        "answer_summary": "fuzz-results/qf_uflra-nonconstant-real-final/summary.csv",
        "answer_log": "fuzz-results/qf_uflra-nonconstant-real-final.log",
        "generated_inputs": "fuzz-results/qf_uflra-nonconstant-real-final/cases/",
        "model_validation_summary": "results/qf_uflra-nonconstant-real-model-validation-final/summary.csv",
        "model_validation_artifacts": "results/qf_uflra-nonconstant-real-model-validation-final/",
        "bugs": null
      },
      "summary": {
        "rejected_draft_total": 1000,
        "rejected_draft_pass": 981,
        "rejected_draft_crash": 6,
        "rejected_draft_unsupported": 13,
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_wrong": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "answer_fuzz_reference_disagreement": 0,
        "model_validation_total": 200,
        "model_validation_pass": 142,
        "model_validation_not_sat": 58,
        "model_validation_model_error": 0,
        "model_validation_solver_error": 0,
        "model_validation_timeout": 0
      },
      "verification": {
        "unit_tests": "tests/unit/qf_lra_solver_tests.cpp covers acceptance of predicates over arithmetic Real arguments, proxy reuse, LRA-implied equality from a purified Real argument causing an EUF conflict, model printing with a purified Real argument, and the Boolean UF model-table regression for a true Real literal argument.",
        "local_gates": "make check, make docs, make lint, make asan-test, python3 -m json.tool docs/run-log.json, git diff --check, whole-tree clang-tidy over 63 tracked non-generated .cpp files with -p build, and solver_efficiency_snapshot.py all passed before commit."
      },
      "evidence_status": "superseded-by-2026-07-30-qf-uflra-real-valued-uf-result-models",
      "followups": "This is still final-check-only Nelson-Oppen-style equality sharing with broad assignment-blocking clauses. The next 2026-07-30 entry adds Real-valued UF result models. Missing equality atom creation, fine-grained Nelson-Oppen explanations, model-guided equality guesses from de Moura/Bjorner, backtracking arrangement search for model separations, and SLURM-scale mixed fuzzing remain open."
    },
    {
      "id": "2026-07-30-qf-uflra-real-valued-uf-result-models",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "fuzz-and-model-validation",
      "scope": "Local merge-gate answer fuzz plus Dolmen model validation for mixed QF_UFLRA get-model support where UF symbols return Real. The model builder now prints Real-valued UF function tables from LRA proxy values indexed through the EUF closure representative, while nullary Real constants remain owned by the LRA model fragment.",
      "commit": "pre-commit worktree based on f3c07a5 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: f3c07a5-dirty; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3",
        "model_validator": "/tmp/primo-opam-root/primo-system/bin/dolmen"
      },
      "commands": {
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260735 --timeout 5 --shape purified --out fuzz-results/qf_uflra-real-result-model-final",
        "model_validation": "PATH=\"/tmp/primo-opam-root/primo-system/bin:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--qf-uf-preprocess=off --solver-arg=--no-solved-constant-substitution --timeout 5 --dolmen-timeout 10 --limit 200 --out results/qf_uflra-real-result-model-validation-final fuzz-results/qf_uflra-real-result-model-final/cases/*.smt2"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        },
        {
          "name": "Dolmen",
          "argv": "dolmen --check-model=true -r response.rsmt2 problem.smt2"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape purified",
        "logic": "QF_UFLRA",
        "seed": 20260735,
        "count": 1000,
        "timeout_seconds": 5,
        "model_validation_limit": 200,
        "manifest": "generated under fuzz-results/qf_uflra-real-result-model-final/cases/"
      },
      "artifacts": {
        "answer_summary": "fuzz-results/qf_uflra-real-result-model-final/summary.csv",
        "answer_log": "fuzz-results/qf_uflra-real-result-model-final.log",
        "generated_inputs": "fuzz-results/qf_uflra-real-result-model-final/cases/",
        "model_validation_summary": "results/qf_uflra-real-result-model-validation-final/summary.csv",
        "model_validation_artifacts": "results/qf_uflra-real-result-model-validation-final/",
        "bugs": null
      },
      "summary": {
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_wrong": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "answer_fuzz_reference_disagreement": 0,
        "answer_fuzz_sat": 780,
        "answer_fuzz_unsat": 220,
        "model_validation_total": 200,
        "model_validation_pass": 150,
        "model_validation_not_sat": 50,
        "model_validation_model_error": 0,
        "model_validation_solver_error": 0,
        "model_validation_timeout": 0
      },
      "verification": {
        "unit_tests": "tests/unit/qf_lra_solver_tests.cpp covers Real-valued UF application model printing and a Real-valued UF equality whose LRA proxy values must be reflected in the printed table.",
        "local_gates": "make check, make docs, make lint, make asan-test, python3 -m json.tool docs/run-log.json, git diff --check, clang-tidy -p build src/smt/check_sat.cpp src/smt/model_builder.cpp tests/unit/qf_lra_solver_tests.cpp, clang-tidy -p build -checks='-*,misc-include-cleaner' on the same touched C++ files, whole-tree clang-tidy over 63 tracked non-generated .cpp files with -p build, and solver_efficiency_snapshot.py all passed before commit."
      },
      "evidence_status": "superseded-by-2026-07-30-qf-uflra-model-separation-search",
      "followups": "This remains final-check-only Nelson-Oppen-style equality sharing with broad assignment-blocking clauses. The next 2026-07-30 entry adds bounded shared-Real model-separation search. Missing equality atom creation, fine-grained Nelson-Oppen explanations, model-guided equality guesses from de Moura/Bjorner, and SLURM-scale mixed fuzzing remain future work."
    },
    {
      "id": "2026-07-30-qf-uflra-model-separation-search",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "fuzz-and-model-validation",
      "scope": "Local merge-gate answer fuzz plus Dolmen model validation for the mixed QF_UFLRA shared-Real model-reconstruction path. The model path now collects EUF-distinct shared Real argument pairs, searches strict LRA orientation atoms with bounded DFS, records search counters, and falls back to greedy orientation when the reconstruction candidate cap is exceeded.",
      "commit": "pre-commit worktree based on 97ba90b on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 97ba90b-dirty; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3",
        "model_validator": "/tmp/primo-opam-root/primo-system/bin/dolmen"
      },
      "commands": {
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260736 --timeout 5 --shape shared-real --out fuzz-results/qf_uflra-model-separation-search-final",
        "model_validation": "PATH=\"/tmp/primo-opam-root/primo-system/bin:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--qf-uf-preprocess=off --solver-arg=--no-solved-constant-substitution --timeout 5 --dolmen-timeout 10 --limit 200 --out results/qf_uflra-model-separation-search-validation-final fuzz-results/qf_uflra-model-separation-search-final/cases/*.smt2"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        },
        {
          "name": "Dolmen",
          "argv": "dolmen --check-model=true -r response.rsmt2 problem.smt2"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape shared-real",
        "logic": "QF_UFLRA",
        "seed": 20260736,
        "count": 1000,
        "timeout_seconds": 5,
        "model_validation_limit": 200,
        "manifest": "generated under fuzz-results/qf_uflra-model-separation-search-final/cases/"
      },
      "artifacts": {
        "answer_summary": "fuzz-results/qf_uflra-model-separation-search-final/summary.csv",
        "answer_log": "fuzz-results/qf_uflra-model-separation-search-final.log",
        "generated_inputs": "fuzz-results/qf_uflra-model-separation-search-final/cases/",
        "model_validation_summary": "results/qf_uflra-model-separation-search-validation-final/summary.csv",
        "model_validation_artifacts": "results/qf_uflra-model-separation-search-validation-final/",
        "bugs": null
      },
      "summary": {
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_wrong": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "answer_fuzz_reference_disagreement": 0,
        "answer_fuzz_sat": 678,
        "answer_fuzz_unsat": 322,
        "model_validation_total": 200,
        "model_validation_pass": 133,
        "model_validation_not_sat": 67,
        "model_validation_model_error": 0,
        "model_validation_solver_error": 0,
        "model_validation_timeout": 0,
        "focused_probe_model_separation_candidates": 3,
        "focused_probe_model_separation_branches": 3,
        "focused_probe_model_separations": 3
      },
      "verification": {
        "unit_tests": "tests/unit/qf_lra_solver_tests.cpp covers bounded shared-Real model-separation search over three EUF-distinct Real arguments and checks the candidate, branch, cap, and separation counters.",
        "local_gates": "make check, make docs, make lint, make asan-test, python3 -m json.tool docs/run-log.json, git diff --check, clang-tidy -p build src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp, clang-tidy -p build -checks='-*,misc-include-cleaner' on the same touched C++ files, whole-tree clang-tidy over 63 tracked non-generated .cpp files with -p build, and solver_efficiency_snapshot.py all passed before commit."
      },
      "evidence_status": "superseded-by-2026-07-30-qf-uflra-sat-interface-equalities",
      "followups": "This remains final-check-only Nelson-Oppen-style equality sharing. The next 2026-07-30 entry adds positive SAT-visible shared-Real equality atoms and unit forcing for equalities implied by either theory. Fine-grained minimal Nelson-Oppen explanations, model-guided equality guesses from de Moura/Bjorner, false-disequality arrangement enumeration, and SLURM-scale mixed fuzzing remain future work."
    },
    {
      "id": "2026-07-30-qf-uflra-sat-interface-equalities",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "fuzz-and-model-validation",
      "scope": "Local merge-gate answer fuzz plus Dolmen model validation for positive SAT-visible shared-Real interface equality atoms in the mixed QF_UFLRA coordinator. The coordinator creates generated equality literals for shared Real constant/proxy pairs, asserts true generated equalities to both EUF and LRA checks, and learns theory-implied shared equalities as unit clauses over those generated literals.",
      "commit": "pre-commit worktree based on 55bfa33 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 55bfa33-dirty; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3",
        "model_validator": "/tmp/primo-opam-root/primo-system/bin/dolmen"
      },
      "commands": {
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260737 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-sat-interface-equalities-final",
        "model_validation": "PATH=\"/tmp/primo-opam-root/primo-system/bin:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--qf-uf-preprocess=off --solver-arg=--no-solved-constant-substitution --timeout 5 --dolmen-timeout 10 --limit 200 --out results/qf_uflra-sat-interface-equalities-validation-final fuzz-results/qf_uflra-sat-interface-equalities-final/cases/*.smt2"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        },
        {
          "name": "Dolmen",
          "argv": "dolmen --check-model=true -r response.rsmt2 problem.smt2"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "logic": "QF_UFLRA",
        "seed": 20260737,
        "count": 1000,
        "timeout_seconds": 5,
        "model_validation_limit": 200,
        "manifest": "generated under fuzz-results/qf_uflra-sat-interface-equalities-final/cases/"
      },
      "artifacts": {
        "answer_summary": "fuzz-results/qf_uflra-sat-interface-equalities-final/summary.csv",
        "answer_log": "fuzz-results/qf_uflra-sat-interface-equalities-final.log",
        "generated_inputs": "fuzz-results/qf_uflra-sat-interface-equalities-final/cases/",
        "model_validation_summary": "results/qf_uflra-sat-interface-equalities-validation-final/summary.csv",
        "model_validation_artifacts": "results/qf_uflra-sat-interface-equalities-validation-final/",
        "bugs": null
      },
      "summary": {
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_wrong": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "answer_fuzz_reference_disagreement": 0,
        "answer_fuzz_sat": 693,
        "answer_fuzz_unsat": 307,
        "model_validation_total": 200,
        "model_validation_pass": 143,
        "model_validation_not_sat": 57,
        "model_validation_model_error": 0,
        "model_validation_solver_error": 0,
        "model_validation_timeout": 0,
        "focused_lra_to_euf_probe_sat_equality_atoms": 1,
        "focused_lra_to_euf_probe_sat_equalities_forced": 1
      },
      "verification": {
        "unit_tests": "tests/unit/qf_lra_solver_tests.cpp covers SAT-visible interface equality forcing for LRA-implied shared Real equality and EUF-implied proxy equality, including the lazy EUF engine variant. The old broad :no.interface.conflicts assertions were replaced with :no.interface.sat-equality-atoms and :no.interface.sat-equalities-forced checks.",
        "local_gates": "make check, make docs, make lint, make asan-test, python3 -m json.tool docs/run-log.json, git diff --check, clang-tidy -p build src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp, clang-tidy -p build -checks='-*,misc-include-cleaner' on the same touched C++ files, whole-tree clang-tidy over 63 tracked non-generated .cpp files with -p build, and solver_efficiency_snapshot.py all passed before commit.",
        "efficiency_review": "Snapshot flags fresh vectors and unit clause emission in solve_qf_uf_lra final-check logic. These are outside SAT callbacks and guarded by the mixed QF_UFLRA path; the accepted slice is correctness-oriented and exposes sat-equality counters for future cost triage."
      },
      "evidence_status": "superseded-by-2026-07-30-qf-uflra-lazy-sat-interface-equalities",
      "notes": "A pre-final draft crashed on cases case-0272.smt2 and case-0416.smt2 because it queried CaDiCaL model values after adding the first forced unit clause, which invalidates the satisfied state. The final implementation collects all literals to force before adding any clause; both formerly crashing cases now return unsat and the rerun final summary is 1000 PASS.",
      "followups": "This remains final-check-only positive equality sharing. False generated equality literals are not LRA disequalities, and there is still no model-guided equality guessing, non-convex arrangement enumeration, or minimal Nelson-Oppen explanation minimization. SLURM-scale mixed fuzzing remains future work."
    },
    {
      "id": "2026-07-30-qf-uflra-lazy-sat-interface-equalities",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "fuzz-and-model-validation",
      "scope": "Local merge-gate answer fuzz plus Dolmen model validation for lazy positive SAT-visible shared-Real interface equality atoms in the mixed QF_UFLRA coordinator. The coordinator no longer allocates all shared-pair equality atoms eagerly; it creates a generated equality literal only when EUF or LRA implies that shared equality and then learns the literal as a unit clause.",
      "commit": "pre-commit worktree based on a1519ef on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: a1519ef-dirty; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3",
        "model_validator": "/tmp/primo-opam-root/primo-system/bin/dolmen"
      },
      "commands": {
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260738 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-lazy-sat-interface-equalities-final",
        "model_validation": "PATH=\"/tmp/primo-opam-root/primo-system/bin:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--qf-uf-preprocess=off --solver-arg=--no-solved-constant-substitution --timeout 5 --dolmen-timeout 10 --limit 200 --out results/qf_uflra-lazy-sat-interface-equalities-validation-final fuzz-results/qf_uflra-lazy-sat-interface-equalities-final/cases/*.smt2"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        },
        {
          "name": "Dolmen",
          "argv": "dolmen --check-model=true -r response.rsmt2 problem.smt2"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "logic": "QF_UFLRA",
        "seed": 20260738,
        "count": 1000,
        "timeout_seconds": 5,
        "model_validation_limit": 200,
        "manifest": "generated under fuzz-results/qf_uflra-lazy-sat-interface-equalities-final/cases/"
      },
      "artifacts": {
        "answer_summary": "fuzz-results/qf_uflra-lazy-sat-interface-equalities-final/summary.csv",
        "answer_log": "fuzz-results/qf_uflra-lazy-sat-interface-equalities-final.log",
        "generated_inputs": "fuzz-results/qf_uflra-lazy-sat-interface-equalities-final/cases/",
        "model_validation_summary": "results/qf_uflra-lazy-sat-interface-equalities-validation-final/summary.csv",
        "model_validation_artifacts": "results/qf_uflra-lazy-sat-interface-equalities-validation-final/",
        "bugs": null
      },
      "summary": {
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_wrong": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "answer_fuzz_reference_disagreement": 0,
        "answer_fuzz_sat": 697,
        "answer_fuzz_unsat": 303,
        "model_validation_total": 200,
        "model_validation_pass": 144,
        "model_validation_not_sat": 56,
        "model_validation_model_error": 0,
        "model_validation_solver_error": 0,
        "model_validation_timeout": 0,
        "focused_entailed_probe_sat_equality_atoms": 1,
        "focused_entailed_probe_sat_equalities_forced": 1,
        "focused_unentailed_probe_sat_equality_atoms": 0,
        "focused_unentailed_probe_sat_equalities_forced": 0
      },
      "verification": {
        "unit_tests": "tests/unit/qf_lra_solver_tests.cpp checks that entailed LRA-to-EUF and EUF-to-LRA interface equalities still create/force a generated equality atom, while an unentailed shared Real pair creates zero generated equality atoms.",
        "focused_tests": "cmake --build build --target primo_qf_lra_solver_tests primo -j2 && ./build/primo_qf_lra_solver_tests passed before the fuzz and model-validation runs.",
        "local_gates": "make check, make docs, make lint, make asan-test, python3 -m json.tool docs/run-log.json, git diff --check, clang-tidy -p build src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp, clang-tidy -p build -checks='-*,misc-include-cleaner' on the same touched C++ files, and whole-tree clang-tidy over 63 tracked non-generated .cpp files with -p build all passed before commit. Ruff is not installed and was skipped by make lint.",
        "efficiency_review": "Manual solver-efficiency review found the accepted lazy path removes eager O(shared^2) SAT atom allocation. It still rebuilds mixed theory-check vectors and scans shared Real pairs for LRA entailment in the final-check loop; that cost is guarded by the QF_UFLRA mixed path and documented as remaining work. The previously referenced solver_efficiency_snapshot.py helper is not tracked in this checkout.",
        "document_critic": "Stale-claim scan over architecture, debugging, this design note, and run-log found the current docs synchronized with lazy positive-only equality atoms. Historical eager-atom entries are marked superseded.",
        "notes": "The first lazy draft crashed because it created a new CaDiCaL variable and then queried backend.value in the same satisfied state. The accepted implementation first queries existing generated equality literals, then creates all missing literals, then adds unit clauses."
      },
      "evidence_status": "superseded-by-2026-07-30-qf-uflra-lazy-sat-interface-equalities-slurm",
      "followups": "This remains final-check-only positive equality sharing. LRA still checks all shared Real pairs for entailed equality, false generated equality literals are not LRA disequalities, and there is still no model-guided equality guessing, non-convex arrangement enumeration, or minimal Nelson-Oppen explanation minimization. SLURM-scale mixed fuzzing remains future work."
    },
    {
      "id": "2026-07-30-qf-uflra-lazy-sat-interface-equalities-slurm",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "slurm-fuzz-gate",
      "scope": "SLURM-backed 3000-case mixed QF_UFLRA answer fuzz campaign for lazy positive SAT-visible shared-Real interface equality atoms at commit b95cceb. Four array tasks each generated 750 mixed QF_UFLRA cases and compared Primo against Z3.",
      "commit": "b95cceb",
      "environment": {
        "type": "slurm",
        "host": "configured SLURM cluster via temporary SSH config",
        "job_id": "117700",
        "binary": "primo 0.1.0; git: b95cceb-dirty; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "z3 5.0.0 from remote contrib/local/bin"
      },
      "commands": {
        "prepare_workspace": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir primo-no-closure --target primo --jobs 2 --allow-active-jobs",
        "pre_submit_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir primo-no-closure --target primo --check-only",
        "submit": "sbatch primo-qf-uflra-lazy-fuzz.sbatch",
        "reusable_template": "scripts/slurm_qf_uflra_fuzz_gate.sbatch"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build-slurm-rel/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "logic": "QF_UFLRA",
        "seed_base": 202607390,
        "array_tasks": 4,
        "count_per_task": 750,
        "count": 3000,
        "timeout_seconds": 5,
        "slurm_time_limit": "00:20:00"
      },
      "artifacts": {
        "remote_results": "primo-no-closure/slurm-results/qf_uflra-lazy-sat-interface-equalities/task-*/summary.csv",
        "local_results_copy": "results/slurm-qf-uflra-lazy-117700/task-*/summary.csv",
        "local_log_copy": "slurm_logs/qf-uflra-lazy-117700/",
        "bugs": null
      },
      "summary": {
        "answer_fuzz_total": 3000,
        "answer_fuzz_pass": 3000,
        "answer_fuzz_wrong": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "answer_fuzz_reference_disagreement": 0,
        "answer_fuzz_sat": 2130,
        "answer_fuzz_unsat": 870,
        "task_0_pass": 750,
        "task_1_pass": 750,
        "task_2_pass": 750,
        "task_3_pass": 750
      },
      "verification": {
        "slurm_status": "sacct reported all four array tasks COMPLETED with ExitCode 0:0 and elapsed 00:00:16 per task.",
        "batch_validation": "python3 scripts/slurm_validate_sbatch.py /tmp/primo-qf-uflra-lazy-fuzz.sbatch and bash -n /tmp/primo-qf-uflra-lazy-fuzz.sbatch passed before submission. The committed reusable template scripts/slurm_qf_uflra_fuzz_gate.sbatch also passes both validators.",
        "pre_submit_check": "The required check-only workspace validation immediately before sbatch confirmed the remote binary reported git b95cceb-dirty and cadical cadical-3.0.0-7b99c07."
      },
      "evidence_status": "current",
      "followups": "This clears the 3000-case SLURM answer-fuzz gate for the current lazy positive-equality QF_UFLRA slice. Remaining NO work is algorithmic: final-check-only propagation, no false-disequality arrangement enumeration, no model-guided equality guessing, and no minimal Nelson-Oppen explanation minimization."
    },
    {
      "id": "2026-07-30-qf-uflra-lra-routed-preprocessing-model-fix",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "fuzz-and-model-validation",
      "scope": "Local regression investigation and validation for QF_UFLRA get-model output when default preprocessing solves away UF equalities and the remaining assertions dispatch to the QF_LRA solver. The failing pre-fix probe printed only Real constants, leaving original uninterpreted constants undefined for Dolmen model validation. The accepted fix composes saved UF preprocessing facts into LRA-routed models.",
      "commit": "pre-commit worktree based on ddfa848 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: ddfa848-dirty; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3",
        "model_validator": "/tmp/primo-opam-root/primo-system/bin/dolmen"
      },
      "commands": {
        "failing_model_probe": "PATH=\"/tmp/primo-opam-root/primo-system/bin:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --timeout 5 --dolmen-timeout 10 --limit 200 --out results/qf_uflra-default-preprocess-model-validation-probe fuzz-results/qf_uflra-default-preprocess-model-probe/cases/*.smt2",
        "focused_tests": "cmake --build build --target primo_qf_lra_solver_tests primo -j2 && ./build/primo_qf_lra_solver_tests",
        "fixed_model_rerun": "PATH=\"/tmp/primo-opam-root/primo-system/bin:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --timeout 5 --dolmen-timeout 10 --limit 200 --out results/qf_uflra-default-preprocess-model-validation-fixed fuzz-results/qf_uflra-default-preprocess-model-probe/cases/*.smt2",
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260742 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-default-preprocess-model-fix-answer-1000",
        "model_validation": "PATH=\"/tmp/primo-opam-root/primo-system/bin:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --timeout 5 --dolmen-timeout 10 --limit 300 --out results/qf_uflra-default-preprocess-model-fix-validation-300 fuzz-results/qf_uflra-default-preprocess-model-probe/cases/*.smt2"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        },
        {
          "name": "Dolmen",
          "argv": "dolmen --check-model=true -r"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "logic": "QF_UFLRA",
        "seed": 20260742,
        "answer_fuzz_count": 1000,
        "answer_fuzz_timeout_seconds": 5,
        "model_validation_count": 300,
        "model_validation_timeout_seconds": 5,
        "dolmen_timeout_seconds": 10
      },
      "artifacts": {
        "failing_probe": "results/qf_uflra-default-preprocess-model-validation-probe/summary.csv",
        "fixed_probe": "results/qf_uflra-default-preprocess-model-validation-fixed/summary.csv",
        "answer_fuzz": "fuzz-results/qf_uflra-default-preprocess-model-fix-answer-1000/summary.csv",
        "model_validation": "results/qf_uflra-default-preprocess-model-fix-validation-300/summary.csv",
        "bugs": null
      },
      "summary": {
        "pre_fix_model_validation_total": 200,
        "pre_fix_model_validation_pass": 133,
        "pre_fix_model_validation_not_sat": 63,
        "pre_fix_model_validation_model_error": 4,
        "fixed_probe_total": 200,
        "fixed_probe_pass": 137,
        "fixed_probe_not_sat": 63,
        "fixed_probe_model_error": 0,
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_wrong": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "answer_fuzz_reference_disagreement": 0,
        "answer_fuzz_sat": 719,
        "answer_fuzz_unsat": 281,
        "model_validation_total": 300,
        "model_validation_pass": 212,
        "model_validation_not_sat": 88,
        "model_validation_model_error": 0
      },
      "verification": {
        "focused_tests": "Focused qf_lra_solver_tests passed and include qf_uf_lra_lra_routed_model_keeps_preprocessed_uf_equalities.",
        "model_validation": "The exact failing 200-case corpus rerun changed from 4 model-error outcomes to 0, and the broader 300-case Dolmen validation had 212 pass and 88 not-sat outcomes with no model errors."
      },
      "evidence_status": "current",
      "followups": "This is a model-printing fix, not a new Nelson-Oppen propagation mechanism. Remaining NO work is unchanged: final-check-only equality sharing, no false-disequality arrangement enumeration, no model-guided equality guessing, and no minimal explanation minimization."
    },
    {
      "id": "2026-07-30-qf-uflra-model-equality-branching",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "fuzz-and-model-validation",
      "scope": "Local validation for the default-off QF_UFLRA model-equality branching scaffold. The implementation creates optional SAT-visible equality atoms for LRA-model-equal shared Real pairs and tries them as one-shot assumptions. The first draft was rejected because it exported equality consequences learned while an optional assumption was active as unconditional unit clauses, causing two OUR_UNSAT_REF_SAT wrong answers. The accepted fix disables interface-equality unit propagation while a model-equality assumption is active, allowing only ordinary theory conflicts under the guess.",
      "commit": "99b93e3 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 99b93e3; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3",
        "model_validator": "/tmp/primo-opam-root/primo-system/bin/dolmen"
      },
      "commands": {
        "focused_tests": "cmake --build build --target primo_qf_lra_solver_tests primo -j2 && ./build/primo_qf_lra_solver_tests",
        "cli_smoke": "./build/primo --quiet --stats --model-equality-branching < qf_uflra_model_equality_smoke.smt2",
        "rejected_answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--model-equality-branching --ref z3 --count 1000 --seed 20260743 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-model-equality-branching-answer-1000",
        "fixed_answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--model-equality-branching --ref z3 --count 1000 --seed 20260743 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-model-equality-branching-answer-1000-99b93e3",
        "model_validation": "PATH=\"/tmp/primo-opam-root/primo-system/bin:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--model-equality-branching --timeout 5 --dolmen-timeout 10 --limit 300 --out results/qf_uflra-model-equality-branching-model-validation-300-99b93e3 fuzz-results/qf_uflra-default-preprocess-model-probe/cases/*.smt2"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --model-equality-branching"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        },
        {
          "name": "Dolmen",
          "argv": "dolmen --check-model=true -r"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "logic": "QF_UFLRA",
        "seed": 20260743,
        "answer_fuzz_count": 1000,
        "answer_fuzz_timeout_seconds": 5,
        "model_validation_count": 300,
        "model_validation_timeout_seconds": 5,
        "dolmen_timeout_seconds": 10
      },
      "artifacts": {
        "rejected_answer_fuzz": "fuzz-results/qf_uflra-model-equality-branching-answer-1000/summary.csv",
        "fixed_answer_fuzz": "fuzz-results/qf_uflra-model-equality-branching-answer-1000-99b93e3/summary.csv",
        "model_validation": "results/qf_uflra-model-equality-branching-model-validation-300-99b93e3/summary.csv",
        "rejected_wrong_cases": [
          "fuzz-results/qf_uflra-model-equality-branching-answer-1000/cases/case-0429.smt2",
          "fuzz-results/qf_uflra-model-equality-branching-answer-1000/cases/case-0463.smt2"
        ],
        "bugs": null
      },
      "summary": {
        "rejected_answer_fuzz_total": 1000,
        "rejected_answer_fuzz_pass": 998,
        "rejected_answer_fuzz_wrong": 2,
        "rejected_answer_fuzz_our_unsat_ref_sat": 2,
        "fixed_answer_fuzz_total": 1000,
        "fixed_answer_fuzz_pass": 1000,
        "fixed_answer_fuzz_wrong": 0,
        "fixed_answer_fuzz_crash": 0,
        "fixed_answer_fuzz_timeout": 0,
        "fixed_answer_fuzz_unsupported": 0,
        "fixed_answer_fuzz_reference_disagreement": 0,
        "fixed_answer_fuzz_sat": 711,
        "fixed_answer_fuzz_unsat": 289,
        "model_validation_total": 300,
        "model_validation_pass": 212,
        "model_validation_not_sat": 88,
        "model_validation_model_error": 0
      },
      "verification": {
        "wrong_case_rerun": "After the guard was added, case-0429.smt2 and case-0463.smt2 both returned sat with --model-equality-branching.",
        "focused_tests": "Focused qf_lra_solver_tests passed and include qf_uf_lra_model_equality_branching_backs_off_from_bad_guess.",
        "soundness_guard": "The accepted solver loop skips permanent EUF/LRA implied-interface-equality unit propagation whenever an optional model-equality assumption is active."
      },
      "evidence_status": "current",
      "followups": "This is still a default-off scaffold. It does not implement full de Moura/Bjorner model-equality propagation, does not minimize cross-theory explanations for guessed-equality consequences, and does not interpret false equality atoms as LRA disequalities."
    },
    {
      "id": "2026-07-30-qf-uflra-guarded-interface-equality-propagation",
      "date": "2026-07-30",
      "kind": "fuzz-and-regression-validation",
      "scope": "Local validation for guarded QF_UFLRA interface-equality propagation. EUF/LRA-implied equalities over shared Real terms are now learned as clauses guarded by blockers for the current relevant SAT assignment instead of as unconditional unit clauses. This fixes a satisfiable disjunction where LRA implied x = y in one Boolean branch, the solver leaked that equality globally, and EUF then reported an unsound conflict.",
      "commit": "54382f8 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 54382f8; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3",
        "model_validator": "/tmp/primo-opam-root/primo-system/bin/dolmen"
      },
      "commands": {
        "format": "clang-format -i src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "focused_tests": "cmake --build build --target primo_qf_lra_solver_tests primo -j2 && ./build/primo_qf_lra_solver_tests",
        "make_check": "make check",
        "make_docs": "make docs",
        "make_lint": "make lint",
        "make_asan_test": "make asan-test",
        "clang_tidy_diff": "clang-tidy -p build src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_include_cleaner": "clang-tidy -p build -checks='-*,misc-include-cleaner' src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_owned_cpp": "git ls-files '*.cpp' | rg -v '(^|/)generated/|^src/smtlib/antlr/' | xargs clang-tidy -p build",
        "default_answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260744 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-guarded-interface-equality-answer-1000-54382f8",
        "model_branch_answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--model-equality-branching --ref z3 --count 1000 --seed 20260745 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-guarded-interface-equality-model-branch-answer-1000-54382f8",
        "model_validation": "PATH=\"/tmp/primo-opam-root/primo-system/bin:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --timeout 5 --dolmen-timeout 10 --limit 300 --out results/qf_uflra-guarded-interface-equality-model-validation-300-54382f8 fuzz-results/qf_uflra-default-preprocess-model-probe/cases/*.smt2",
        "private_endpoint_leak_scan": "git diff -U0 -- docs/run-log.json | rg -n <private-endpoint-patterns> || true"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        },
        {
          "name": "Dolmen",
          "argv": "dolmen --check-model=true -r"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "logic": "QF_UFLRA",
        "default_answer_seed": 20260744,
        "model_branch_answer_seed": 20260745,
        "answer_fuzz_count_per_configuration": 1000,
        "answer_fuzz_timeout_seconds": 5,
        "model_validation_count": 300,
        "model_validation_timeout_seconds": 5,
        "dolmen_timeout_seconds": 10
      },
      "artifacts": {
        "default_answer_fuzz": "fuzz-results/qf_uflra-guarded-interface-equality-answer-1000-54382f8/summary.csv",
        "model_branch_answer_fuzz": "fuzz-results/qf_uflra-guarded-interface-equality-model-branch-answer-1000-54382f8/summary.csv",
        "model_validation": "results/qf_uflra-guarded-interface-equality-model-validation-300-54382f8/summary.csv",
        "bugs": null
      },
      "summary": {
        "default_answer_fuzz_total": 1000,
        "default_answer_fuzz_pass": 1000,
        "default_answer_fuzz_wrong": 0,
        "default_answer_fuzz_crash": 0,
        "default_answer_fuzz_timeout": 0,
        "default_answer_fuzz_unsupported": 0,
        "default_answer_fuzz_reference_disagreement": 0,
        "default_answer_fuzz_sat": 699,
        "default_answer_fuzz_unsat": 301,
        "model_branch_answer_fuzz_total": 1000,
        "model_branch_answer_fuzz_pass": 1000,
        "model_branch_answer_fuzz_wrong": 0,
        "model_branch_answer_fuzz_crash": 0,
        "model_branch_answer_fuzz_timeout": 0,
        "model_branch_answer_fuzz_unsupported": 0,
        "model_branch_answer_fuzz_reference_disagreement": 0,
        "model_branch_answer_fuzz_sat": 707,
        "model_branch_answer_fuzz_unsat": 293,
        "model_validation_total": 300,
        "model_validation_pass": 212,
        "model_validation_not_sat": 88,
        "model_validation_model_error": 0
      },
      "verification": {
        "focused_regression": "qf_uf_lra_guards_interface_equality_propagation_by_assignment returns sat and observes at least one guarded interface-equality propagation clause.",
        "reproducer": "The branch-sensitive formula with (or a (and (<= x y) (<= y x))), (p x), and (not (p y)) returned unsat before the fix and sat after guarded clauses.",
        "implementation_scope": "The implementation uses broad current-assignment blockers. It is a conservative lazy final-check mechanism, not a full Nelson-Oppen closure or minimal explanation procedure."
      },
      "evidence_status": "current",
      "followups": "Next NO work should add the smallest useful arrangement loop or care-set-driven model-equality loop. Current guarded clauses are intentionally non-minimal and may be performance-noisy, but they preserve branch soundness and give a working base."
    },
    {
      "id": "2026-07-30-qf-uflra-false-interface-equality-euf-disequality",
      "date": "2026-07-30",
      "kind": "fuzz-and-model-validation",
      "scope": "Local validation for interpreting false generated QF_UFLRA interface equality atoms as EUF disequalities. The mixed coordinator now augments EUF checks with both true and false generated shared-Real equality atoms, while LRA still receives only true generated equalities. LRA rejects a false generated equality indirectly by entailing the corresponding equality; native LRA disequality case-splitting remains unsupported.",
      "commit": "f6d52c9 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: f6d52c9; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3",
        "model_validator": "/tmp/primo-opam-root/primo-system/bin/dolmen"
      },
      "commands": {
        "focused_tests": "cmake --build build --target primo_qf_lra_solver_tests primo -j2 && ./build/primo_qf_lra_solver_tests",
        "make_check": "make check",
        "make_docs": "make docs",
        "make_lint": "make lint",
        "make_asan_test": "make asan-test",
        "clang_tidy_diff": "clang-tidy -p build src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_include_cleaner": "clang-tidy -p build -checks='-*,misc-include-cleaner' src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_owned_cpp": "git ls-files '*.cpp' | rg -v '(^|/)generated/|^src/smtlib/antlr/' | xargs clang-tidy -p build",
        "efficiency_snapshot": "python3 <solver-efficiency-skill>/scripts/solver_efficiency_snapshot.py --repo .",
        "cli_probe": "./build/primo --quiet --stats --no-solved-constant-substitution --qf-uf-preprocess=off --model-equality-branching < qf_uflra_model_equality_bad_guess_probe.smt2",
        "default_answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260746 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-false-interface-euf-diseq-answer-1000-f6d52c9",
        "model_branch_answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--model-equality-branching --ref z3 --count 1000 --seed 20260747 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-false-interface-euf-diseq-model-branch-answer-1000-f6d52c9",
        "model_validation": "PATH=\"/tmp/primo-opam-root/primo-system/bin:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --timeout 5 --dolmen-timeout 10 --limit 300 --out results/qf_uflra-false-interface-euf-diseq-model-validation-300-f6d52c9 fuzz-results/qf_uflra-default-preprocess-model-probe/cases/*.smt2",
        "private_endpoint_leak_scan": "git diff -U0 -- docs/run-log.json | rg -n <private-endpoint-patterns> || true"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        },
        {
          "name": "Dolmen",
          "argv": "dolmen --check-model=true -r"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "logic": "QF_UFLRA",
        "default_answer_seed": 20260746,
        "model_branch_answer_seed": 20260747,
        "answer_fuzz_count_per_configuration": 1000,
        "answer_fuzz_timeout_seconds": 5,
        "model_validation_count": 300,
        "model_validation_timeout_seconds": 5,
        "dolmen_timeout_seconds": 10
      },
      "artifacts": {
        "default_answer_fuzz": "fuzz-results/qf_uflra-false-interface-euf-diseq-answer-1000-f6d52c9/summary.csv",
        "model_branch_answer_fuzz": "fuzz-results/qf_uflra-false-interface-euf-diseq-model-branch-answer-1000-f6d52c9/summary.csv",
        "model_validation": "results/qf_uflra-false-interface-euf-diseq-model-validation-300-f6d52c9/summary.csv",
        "bugs": null
      },
      "summary": {
        "default_answer_fuzz_total": 1000,
        "default_answer_fuzz_pass": 1000,
        "default_answer_fuzz_wrong": 0,
        "default_answer_fuzz_crash": 0,
        "default_answer_fuzz_timeout": 0,
        "default_answer_fuzz_unsupported": 0,
        "default_answer_fuzz_reference_disagreement": 0,
        "default_answer_fuzz_sat": 704,
        "default_answer_fuzz_unsat": 296,
        "model_branch_answer_fuzz_total": 1000,
        "model_branch_answer_fuzz_pass": 1000,
        "model_branch_answer_fuzz_wrong": 0,
        "model_branch_answer_fuzz_crash": 0,
        "model_branch_answer_fuzz_timeout": 0,
        "model_branch_answer_fuzz_unsupported": 0,
        "model_branch_answer_fuzz_reference_disagreement": 0,
        "model_branch_answer_fuzz_sat": 683,
        "model_branch_answer_fuzz_unsat": 317,
        "model_validation_total": 300,
        "model_validation_pass": 212,
        "model_validation_not_sat": 88,
        "model_validation_model_error": 0
      },
      "verification": {
        "focused_regression": "qf_uf_lra_model_equality_branching_backs_off_from_bad_guess now also checks :no.interface.sat-equalities-false >= 1.",
        "cli_probe": "The model-equality bad-guess CLI probe returned sat with :no.interface.sat-equalities-false 1 and :no.interface.model-equality-conflicts 1.",
        "efficiency_review": "solver_efficiency_snapshot.py flagged one fresh vector allocation for false generated interface equalities. It is in the lazy mixed final-check loop, not a SAT callback, and is proportional to generated interface atoms."
      },
      "evidence_status": "current",
      "followups": "This is a simple runnable arrangement step, not full Nelson-Oppen. Remaining work includes native LRA disequality case-splitting or a care-set arrangement loop, minimal cross-theory explanations, and promotion/evaluation beyond local merge-gate fuzzing."
    },
    {
      "id": "2026-07-30-qf-uflra-interface-conflict-source-counters",
      "date": "2026-07-30",
      "kind": "fuzz-and-diagnostic-validation",
      "scope": "Local validation for source-split QF_UFLRA interface conflict counters. The solver behavior and learned clauses are unchanged; the mixed coordinator now increments :no.interface.conflicts only when an ordinary EUF/LRA conflict clause mentions a generated interface equality literal, split by :no.interface.euf-conflicts and :no.interface.lra-conflicts.",
      "commit": "2df8b8a on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 2df8b8a; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3"
      },
      "commands": {
        "focused_tests": "clang-format -i src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp && cmake --build build --target primo_qf_lra_solver_tests primo -j2 && ./build/primo_qf_lra_solver_tests",
        "cli_probe": "./build/primo --quiet --stats --no-solved-constant-substitution --qf-uf-preprocess=off no-euf-lra-conflict.smt2",
        "make_check": "make check",
        "make_docs": "make docs",
        "make_lint": "make lint",
        "make_asan_test": "make asan-test",
        "clang_tidy_diff": "clang-tidy -p build src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_include_cleaner": "clang-tidy -p build -checks='-*,misc-include-cleaner' src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_owned_cpp": "git ls-files '*.cpp' | rg -v '(^|/)generated/|^src/smtlib/antlr/' | xargs clang-tidy -p build",
        "efficiency_snapshot": "python3 <solver-efficiency-skill>/scripts/solver_efficiency_snapshot.py --repo .",
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260748 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-interface-conflict-counters-answer-1000-2df8b8a",
        "private_endpoint_leak_scan": "git diff -U0 | rg -n <private-endpoint-patterns> || true"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "logic": "QF_UFLRA",
        "answer_seed": 20260748,
        "answer_fuzz_count": 1000,
        "answer_fuzz_timeout_seconds": 5
      },
      "artifacts": {
        "answer_fuzz": "fuzz-results/qf_uflra-interface-conflict-counters-answer-1000-2df8b8a/summary.csv",
        "bugs": null
      },
      "summary": {
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_wrong": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "answer_fuzz_reference_disagreement": 0,
        "answer_fuzz_sat": 696,
        "answer_fuzz_unsat": 304
      },
      "verification": {
        "focused_regressions": "qf_uf_lra_shares_lra_implied_real_equalities_with_euf now checks :no.interface.conflicts and :no.interface.euf-conflicts; qf_uf_lra_shares_euf_implied_proxy_equalities_with_lra now checks :no.interface.conflicts and :no.interface.lra-conflicts.",
        "cli_probe": "The LRA-implies-shared-equality/EUF-rejects probe returned unsat with :no.interface.sat-equality-atoms 1, :no.interface.sat-equalities-forced 1, :no.interface.lra-to-euf-equalities 1, :no.interface.conflicts 1, :no.interface.euf-conflicts 1, and :no.interface.lra-conflicts 0.",
        "efficiency_review": "solver_efficiency_snapshot.py reported no added hot-path patterns. The new conflict-source scan only runs after an already-built theory conflict clause and scans that clause against the generated interface equality registry.",
        "document_critic_review": "docs/debugging.md and docs/papers/nelson-oppen-closure-methods.md document the new counters and keep the limitation that this is partial QF_UFLRA combination, not full Nelson-Oppen."
      },
      "evidence_status": "current",
      "followups": "This improves observability for the runnable partial NO loop. It does not add native LRA disequality handling, care-set arrangement enumeration, minimal cross-theory explanations, or model-equality propagation beyond the existing default-off scaffold."
    },
    {
      "id": "2026-07-30-qf-uflra-final-arrangement-validation",
      "date": "2026-07-30",
      "kind": "fuzz-and-arrangement-validation",
      "scope": "Local validation for checking the final QF_UFLRA EUF Real-argument arrangement before returning a non-model sat result. The mixed coordinator now reuses the bounded strict-order separation search from model reconstruction on the non-model sat path, returning unknown instead of sat if the supported purification subset cannot be separated consistently by LRA.",
      "commit": "42b52b8 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 42b52b8; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3"
      },
      "commands": {
        "focused_tests": "clang-format -i src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp && cmake --build build --target primo_qf_lra_solver_tests primo -j2 && ./build/primo_qf_lra_solver_tests",
        "cli_probe": "./build/primo --quiet --stats --no-solved-constant-substitution --qf-uf-preprocess=off no-arrangement-check.smt2",
        "make_check": "make check",
        "make_docs": "make docs",
        "make_lint": "make lint",
        "make_asan_test": "make asan-test",
        "clang_tidy_diff": "clang-tidy -p build src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_include_cleaner": "clang-tidy -p build -checks='-*,misc-include-cleaner' src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_owned_cpp": "git ls-files '*.cpp' | rg -v '(^|/)generated/|^src/smtlib/antlr/' | xargs clang-tidy -p build",
        "efficiency_snapshot": "python3 <solver-efficiency-skill>/scripts/solver_efficiency_snapshot.py --repo .",
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260749 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-final-arrangement-validation-answer-1000-42b52b8",
        "private_endpoint_leak_scan": "git diff -U0 | rg -n <private-endpoint-patterns> || true"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "logic": "QF_UFLRA",
        "answer_seed": 20260749,
        "answer_fuzz_count": 1000,
        "answer_fuzz_timeout_seconds": 5
      },
      "artifacts": {
        "answer_fuzz": "fuzz-results/qf_uflra-final-arrangement-validation-answer-1000-42b52b8/summary.csv",
        "bugs": null
      },
      "summary": {
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_wrong": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "answer_fuzz_reference_disagreement": 0,
        "answer_fuzz_sat": 711,
        "answer_fuzz_unsat": 289
      },
      "verification": {
        "focused_regression": "qf_uf_lra_validates_final_arrangement_without_model checks that a satisfiable p(x) and not p(y) mixed case runs :no.interface.arrangement-checks, reports no arrangement failures, and accepts at least one strict separation without requesting get-model.",
        "cli_probe": "The non-model arrangement probe returned sat with :no.interface.arrangement-checks 1, :no.interface.arrangement-failures 0, :no.interface.arrangement-separations 1, and one model-separation candidate/branch.",
        "efficiency_review": "solver_efficiency_snapshot.py reported no added hot-path patterns. The final arrangement validation runs only after both theories accept the current assignment and no further shared equality clause is learned; it reuses existing bounded LRA consistency checks.",
        "document_critic_review": "docs/architecture.md, docs/debugging.md, and docs/papers/nelson-oppen-closure-methods.md document that final arrangement validation is bounded and still not full unbounded Nelson-Oppen arrangement enumeration."
      },
      "evidence_status": "current",
      "followups": "This makes the non-model sat path check the same Real-argument separability condition model reconstruction relies on. Remaining NO work still includes native LRA disequality handling if needed for future non-convex theories, care-set arrangement search, and minimal cross-theory explanations."
    },
    {
      "id": "2026-07-30-qf-uflra-lowered-real-disequality",
      "date": "2026-07-30",
      "kind": "fuzz-and-documentation-validation",
      "scope": "Local validation that ordinary SMT-LIB Real disequality remains supported in mixed QF_UFLRA through Real-equality lowering and Boolean-level case splitting, even though generated false interface equalities are not asserted to LRA as native false-Eq prepared atoms.",
      "commit": "1c37ba3 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 1c37ba3; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3"
      },
      "commands": {
        "make_check": "make check",
        "make_docs": "make docs",
        "make_lint": "make lint",
        "make_asan_test": "make asan-test",
        "clang_tidy_touched": "clang-tidy -p build tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_include_cleaner": "clang-tidy -p build -checks='-*,clang-diagnostic-*,misc-include-cleaner' tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_owned_cpp": "git ls-files '*.cpp' | rg -v '(^|/)generated/|^src/smtlib/antlr/' | xargs clang-tidy -p build",
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260750 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-lowered-real-diseq-answer-1000-1c37ba3",
        "private_endpoint_leak_scan": "git diff -- tests/unit/qf_lra_solver_tests.cpp docs/architecture.md docs/debugging.md docs/papers/nelson-oppen-closure-methods.md | rg -n <private-endpoint-patterns> || true"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "logic": "QF_UFLRA",
        "answer_seed": 20260750,
        "answer_fuzz_count": 1000,
        "answer_fuzz_timeout_seconds": 5
      },
      "artifacts": {
        "answer_fuzz": "fuzz-results/qf_uflra-lowered-real-diseq-answer-1000-1c37ba3/summary.csv",
        "generated_inputs": "fuzz-results/qf_uflra-lowered-real-diseq-answer-1000-1c37ba3/cases/",
        "bugs": null
      },
      "summary": {
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_wrong": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "answer_fuzz_reference_disagreement": 0,
        "answer_fuzz_sat": 703,
        "answer_fuzz_unsat": 297
      },
      "verification": {
        "focused_regression": "qf_uf_lra_combines_euf_proxy_equality_with_lowered_real_disequality covers a=b, Real-valued f(a)/f(b) proxies x/y, and (not (= x y)); it expects unsat via EUF-to-LRA equality propagation plus lowered Real disequality.",
        "documentation_review": "docs/architecture.md, docs/debugging.md, and docs/papers/nelson-oppen-closure-methods.md now distinguish ordinary input-level Real disequality support from the internal limitation on native false-Eq LRA prepared atoms.",
        "local_gates": "make check, make docs, make lint, make asan-test, git diff --check, touched-file clang-tidy/include-cleaner, and whole-tree non-generated clang-tidy passed. make lint skipped ruff because it is not installed."
      },
      "evidence_status": "current",
      "followups": "This is a small documentation and regression milestone, not a new Nelson-Oppen mechanism. Remaining NO work is still the simple runnable combination path: care-pair diagnostics or pruning, better arrangement search, and minimal cross-theory explanations when we are ready to add machinery."
    },
    {
      "id": "2026-07-30-qf-uflra-euf-care-diagnostics",
      "date": "2026-07-30",
      "kind": "fuzz-and-diagnostic-validation",
      "scope": "Local validation for diagnostic-only EUF care-pair counters in the mixed QF_UFLRA coordinator. The counters compare the full shared-Real cross product with syntactic pairs that occur as arguments under the same flat EUF function prefix; they do not add clauses or prune search.",
      "commit": "34b7f1a on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 34b7f1a; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3"
      },
      "commands": {
        "make_check": "make check",
        "make_docs": "make docs",
        "make_lint": "make lint",
        "make_asan_test": "make asan-test",
        "clang_tidy_touched": "clang-tidy -p build src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_include_cleaner": "clang-tidy -p build -checks='-*,clang-diagnostic-*,misc-include-cleaner' src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_owned_cpp": "git ls-files '*.cpp' | rg -v '(^|/)generated/|^src/smtlib/antlr/' | xargs clang-tidy -p build",
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260751 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-euf-care-diagnostics-answer-1000-34b7f1a",
        "private_endpoint_leak_scan": "git diff -- src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp docs/architecture.md docs/debugging.md docs/papers/nelson-oppen-closure-methods.md | rg -n <private-endpoint-patterns> || true"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "logic": "QF_UFLRA",
        "answer_seed": 20260751,
        "answer_fuzz_count": 1000,
        "answer_fuzz_timeout_seconds": 5
      },
      "artifacts": {
        "answer_fuzz": "fuzz-results/qf_uflra-euf-care-diagnostics-answer-1000-34b7f1a/summary.csv",
        "generated_inputs": "fuzz-results/qf_uflra-euf-care-diagnostics-answer-1000-34b7f1a/cases/",
        "bugs": null
      },
      "summary": {
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_wrong": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "answer_fuzz_reference_disagreement": 0,
        "answer_fuzz_sat": 724,
        "answer_fuzz_unsat": 276
      },
      "verification": {
        "focused_regressions": "qf_uf_lra_does_not_share_unentailed_lra_equalities checks the two-shared-term case reports one full pair and one care pair. qf_uf_lra_reports_syntactic_euf_care_pair_diagnostics checks three shared Real terms where only x/y occur under the same predicate head, reporting full pairs 3, care pairs 1, and pruned pairs 2.",
        "documentation_review": "docs/architecture.md, docs/debugging.md, and docs/papers/nelson-oppen-closure-methods.md state that these counters are diagnostic only and are not an implementation of Jovanovic-Barrett care-set pruning.",
        "local_gates": "make check, make docs, make lint, make asan-test, git diff --check, touched-file clang-tidy/include-cleaner, and whole-tree non-generated clang-tidy passed. make lint skipped ruff because it is not installed."
      },
      "evidence_status": "current",
      "followups": "This gives a measurement hook for future care-pair work without changing solver behavior. The next step should use these counters on real mixed benchmarks before adding pruning or clause-generation policy."
    },
    {
      "id": "2026-07-30-qf-uflra-care-lra-sharing",
      "date": "2026-07-30",
      "kind": "fuzz-and-care-pair-validation",
      "scope": "Local validation for using syntactic EUF care pairs to limit LRA-to-EUF equality propagation checks in the mixed QF_UFLRA coordinator. EUF-to-LRA propagation, model reconstruction, and final arrangement validation still use the full shared-Real set.",
      "commit": "730c887 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 730c887; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3"
      },
      "commands": {
        "make_check": "make check",
        "make_docs": "make docs",
        "make_lint": "make lint",
        "make_asan_test": "make asan-test",
        "efficiency_snapshot": "python3 <solver-efficiency-skill>/scripts/solver_efficiency_snapshot.py --repo .",
        "clang_tidy_touched": "clang-tidy -p build src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_include_cleaner": "clang-tidy -p build -checks='-*,clang-diagnostic-*,misc-include-cleaner' src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_owned_cpp": "git ls-files '*.cpp' | rg -v '(^|/)generated/|^src/smtlib/antlr/' | xargs clang-tidy -p build",
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260752 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-care-lra-sharing-answer-1000-730c887",
        "private_endpoint_leak_scan": "git diff -- src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp docs/architecture.md docs/debugging.md docs/papers/nelson-oppen-closure-methods.md | rg -n <private-endpoint-patterns> || true"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "logic": "QF_UFLRA",
        "answer_seed": 20260752,
        "answer_fuzz_count": 1000,
        "answer_fuzz_timeout_seconds": 5
      },
      "artifacts": {
        "answer_fuzz": "fuzz-results/qf_uflra-care-lra-sharing-answer-1000-730c887/summary.csv",
        "generated_inputs": "fuzz-results/qf_uflra-care-lra-sharing-answer-1000-730c887/cases/",
        "bugs": null
      },
      "summary": {
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_wrong": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "answer_fuzz_reference_disagreement": 0,
        "answer_fuzz_sat": 730,
        "answer_fuzz_unsat": 270
      },
      "verification": {
        "focused_regression": "qf_uf_lra_uses_euf_care_pairs_for_lra_to_euf_propagation checks that an LRA-implied x=y pair under unrelated predicates p(x) and q(y) reports one full pair, zero care pairs, one pruned pair, and zero LRA-to-EUF propagated equalities.",
        "correctness_boundary": "Only the main-loop LRA-to-EUF equality scan is filtered. EUF-to-LRA propagation, final arrangement validation, and model reconstruction still consider the full shared Real set.",
        "efficiency_review": "solver_efficiency_snapshot.py reported the expected per-SAT-round care-pair map/vector allocations. They are built alongside the already rebuilt PreparedFlatTheory; the focused regression proves the intended skipped LRA equality check.",
        "documentation_review": "docs/architecture.md, docs/debugging.md, and docs/papers/nelson-oppen-closure-methods.md document the narrow consumer and explicitly avoid claiming implementation of Jovanovic-Barrett care-set algorithms.",
        "local_gates": "make check, make docs, make lint, make asan-test, git diff --check, touched-file clang-tidy/include-cleaner, whole-tree non-generated clang-tidy, and 1000-case QF_UFLRA answer fuzz passed. make lint skipped ruff because it is not installed."
      },
      "evidence_status": "current",
      "followups": "This is a low-risk care-pair consumer, not a complete care-set algorithm. Benchmark next on mixed QF_UFLRA examples to decide whether stronger care-pair pruning or a theory-facing API is worth adding."
    },
    {
      "id": "2026-07-30-qf-uflra-care-model-branching",
      "date": "2026-07-30",
      "kind": "fuzz-and-care-pair-validation",
      "scope": "Local validation for using syntactic EUF care pairs to limit default-off LRA-model equality branching candidates in the mixed QF_UFLRA coordinator. EUF-to-LRA propagation, final arrangement validation, and model reconstruction still use the full shared-Real set.",
      "commit": "74ca967 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 74ca967; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3"
      },
      "commands": {
        "make_check": "make check",
        "make_docs": "make docs",
        "make_lint": "make lint",
        "make_asan_test": "make asan-test",
        "efficiency_snapshot": "python3 <solver-efficiency-skill>/scripts/solver_efficiency_snapshot.py --repo .",
        "clang_tidy_touched": "clang-tidy -p build src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_include_cleaner": "clang-tidy -p build -checks='-*,clang-diagnostic-*,misc-include-cleaner' src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_owned_cpp": "git ls-files '*.cpp' | rg -v '(^|/)generated/|^src/smtlib/antlr/' | xargs clang-tidy -p build",
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260753 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-care-model-branch-answer-1000-74ca967",
        "private_endpoint_leak_scan": "git diff -- src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp docs/architecture.md docs/debugging.md docs/papers/nelson-oppen-closure-methods.md | rg -n <private-endpoint-patterns> || true"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "logic": "QF_UFLRA",
        "answer_seed": 20260753,
        "answer_fuzz_count": 1000,
        "answer_fuzz_timeout_seconds": 5
      },
      "artifacts": {
        "answer_fuzz": "fuzz-results/qf_uflra-care-model-branch-answer-1000-74ca967/summary.csv",
        "generated_inputs": "fuzz-results/qf_uflra-care-model-branch-answer-1000-74ca967/cases/",
        "bugs": null
      },
      "summary": {
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_wrong": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "answer_fuzz_reference_disagreement": 0,
        "answer_fuzz_sat": 722,
        "answer_fuzz_unsat": 278
      },
      "verification": {
        "focused_regression": "qf_uf_lra_model_equality_branching_uses_euf_care_pairs checks that an LRA-model-equal x/y pair under unrelated predicates p(x) and q(y) reports one full pair, zero care pairs, one pruned pair, and zero model-equality candidates/created atoms/assumptions.",
        "correctness_boundary": "Only the default-off LRA-model equality branch candidate scan is filtered by this change. The earlier LRA-to-EUF propagation care filter remains, and EUF-to-LRA propagation, final arrangement validation, and model reconstruction still consider the full shared Real set.",
        "efficiency_review": "solver_efficiency_snapshot.py reported the expected small care_terms vector allocation in the default-off model-equality branch path. The focused regression proves the intended skipped optional equality atom creation.",
        "documentation_review": "docs/architecture.md, docs/debugging.md, and docs/papers/nelson-oppen-closure-methods.md document care-pair use for LRA-to-EUF equality propagation and default-off LRA-model equality branching without claiming implementation of Jovanovic-Barrett care-set algorithms.",
        "local_gates": "make check, make docs, make lint, make asan-test, git diff --check, touched-file clang-tidy/include-cleaner, whole-tree non-generated clang-tidy, and 1000-case QF_UFLRA answer fuzz passed. make lint skipped ruff because it is not installed."
      },
      "evidence_status": "current",
      "followups": "This is still a conservative model-equality branching scaffold, not full de Moura/Bjorner model-based theory combination. Benchmark mixed QF_UFLRA cases before considering any default change."
    },
    {
      "id": "2026-07-31-qf-uflra-care-model-branch-stats",
      "date": "2026-07-31",
      "kind": "fuzz-and-stats-validation",
      "scope": "Local validation for branch-specific care-pruning counters on the default-off LRA-model equality branching path in the mixed QF_UFLRA coordinator. The change exposes measurement only; it does not change the candidate filter introduced at 74ca967.",
      "commit": "8588f0d on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 8588f0d; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3"
      },
      "commands": {
        "make_check": "make check",
        "make_docs": "make docs",
        "make_lint": "make lint",
        "make_asan_test": "make asan-test",
        "efficiency_snapshot": "python3 <solver-efficiency-skill>/scripts/solver_efficiency_snapshot.py --repo .",
        "clang_tidy_touched": "clang-tidy -p build src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_include_cleaner": "clang-tidy -p build -checks='-*,clang-diagnostic-*,misc-include-cleaner' src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_owned_cpp": "git ls-files '*.cpp' | rg -v '(^|/)generated/|^src/smtlib/antlr/' | xargs clang-tidy -p build",
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260754 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-care-model-branch-stats-answer-1000-8588f0d",
        "private_endpoint_leak_scan": "git diff -- src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp docs/debugging.md docs/papers/nelson-oppen-closure-methods.md | rg -n <private-endpoint-patterns> || true"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "logic": "QF_UFLRA",
        "answer_seed": 20260754,
        "answer_fuzz_count": 1000,
        "answer_fuzz_timeout_seconds": 5
      },
      "artifacts": {
        "answer_fuzz": "fuzz-results/qf_uflra-care-model-branch-stats-answer-1000-8588f0d/summary.csv",
        "generated_inputs": "fuzz-results/qf_uflra-care-model-branch-stats-answer-1000-8588f0d/cases/",
        "bugs": null
      },
      "summary": {
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_wrong": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "answer_fuzz_reference_disagreement": 0,
        "answer_fuzz_sat": 723,
        "answer_fuzz_unsat": 277
      },
      "verification": {
        "focused_regression": "qf_uf_lra_model_equality_branching_uses_euf_care_pairs now also checks :no.interface.model-equality-full-pairs, :no.interface.model-equality-care-pairs, and :no.interface.model-equality-care-pruned-pairs on a fully pruned p(x)/q(y) branch candidate shape.",
        "correctness_boundary": "The new counters are published only when --model-equality-branching is enabled and reuse the already computed EufCarePairDiagnostics. They do not alter LRA-to-EUF propagation, EUF-to-LRA propagation, final arrangement validation, or model reconstruction.",
        "efficiency_review": "solver_efficiency_snapshot.py reported no added hot-path patterns. The stats reuse the existing care diagnostics object and do not allocate new collections.",
        "documentation_review": "docs/debugging.md and docs/papers/nelson-oppen-closure-methods.md list the new counters and update the care-set summary from one narrow consumer to two narrow consumers.",
        "local_gates": "make check, make docs, make lint, make asan-test, git diff --check, touched-file clang-tidy/include-cleaner, whole-tree non-generated clang-tidy, and 1000-case QF_UFLRA answer fuzz passed. make lint skipped ruff because it is not installed."
      },
      "evidence_status": "current",
      "followups": "Use these branch-specific counters in the next local or SLURM mixed-QF_UFLRA evaluation to separate useful model-equality candidates from pairs pruned before model inspection."
    },
    {
      "id": "2026-07-31-qf-uflra-closure-aware-care-pairs",
      "date": "2026-07-31",
      "kind": "fuzz-and-regression-validation",
      "scope": "Local validation for closure-aware EUF care pairs in the mixed QF_UFLRA coordinator. The implementation computes care pairs after the current EUF closure check and pairs shared Real arguments whose flat function prefixes are equal in that closure, so curried non-unary applications can expose later argument pairs after earlier interface equalities are asserted.",
      "commit": "dd399fc on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: dd399fc; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3"
      },
      "commands": {
        "make_check": "make check",
        "make_docs": "make docs",
        "make_lint": "make lint",
        "make_asan_test": "make asan-test",
        "efficiency_snapshot": "python3 <solver-efficiency-skill>/scripts/solver_efficiency_snapshot.py --repo .",
        "clang_tidy_touched": "clang-tidy -p build src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_include_cleaner": "clang-tidy -p build -checks='-*,clang-diagnostic-*,misc-include-cleaner' src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp",
        "clang_tidy_owned_cpp": "git ls-files '*.cpp' | rg -v '(^|/)generated/|^src/smtlib/antlr/' | xargs clang-tidy -p build",
        "focused_solver_probe": "printf <binary-predicate-qf-uflra-case> | ./build/primo --qf-uf-preprocess off --stats",
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260755 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-closure-aware-care-answer-1000-dd399fc",
        "private_endpoint_leak_scan": "git diff -- src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp docs/architecture.md docs/debugging.md docs/papers/nelson-oppen-closure-methods.md | rg -n <private-endpoint-patterns> || true"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "logic": "QF_UFLRA",
        "answer_seed": 20260755,
        "answer_fuzz_count": 1000,
        "answer_fuzz_timeout_seconds": 5
      },
      "artifacts": {
        "answer_fuzz": "fuzz-results/qf_uflra-closure-aware-care-answer-1000-dd399fc/summary.csv",
        "generated_inputs": "fuzz-results/qf_uflra-closure-aware-care-answer-1000-dd399fc/cases/",
        "bugs": null
      },
      "summary": {
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_wrong": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "answer_fuzz_reference_disagreement": 0,
        "answer_fuzz_sat": 728,
        "answer_fuzz_unsat": 272
      },
      "verification": {
        "focused_regression": "qf_uf_lra_uses_closure_aware_euf_care_pairs_for_nonunary_applications checks the binary predicate case q(x,z) and not q(y,w) with LRA-implied x=y and z=w. Before this change the care scan saw only x/y and the formula could be reported sat; after this change the solver reports unsat, publishes at least two care pairs, forces at least two SAT-visible equality atoms, and records an EUF interface conflict.",
        "correctness_boundary": "The change only broadens the already documented care subset used for LRA-to-EUF equality propagation and default-off model-equality branching. It still does not add care-pair clauses, does not filter EUF-to-LRA propagation, and does not replace final arrangement validation or model reconstruction.",
        "efficiency_review": "solver_efficiency_snapshot.py reported one added vector allocation in the care scan. The docs record the current quadratic scan over shared-argument flat definitions as a limitation; this is accepted for the partial coordinator and is not a default-promotion/performance claim.",
        "documentation_review": "docs/architecture.md, docs/debugging.md, and docs/papers/nelson-oppen-closure-methods.md were updated to say closure-aware flat-prefix care pairs, include the non-unary regression shape, and keep the Jovanovic-Barrett care-set algorithms as not implemented.",
        "local_gates": "make check, make docs, make lint, make asan-test, git diff --check, touched-file clang-tidy/include-cleaner, whole-tree non-generated clang-tidy, IP/private-endpoint leak scan, and 1000-case QF_UFLRA answer fuzz passed. make lint skipped ruff because it is not installed."
      },
      "evidence_status": "current",
      "followups": "Replace the quadratic scan with an indexed care-set representation when mixed QF_UFLRA benchmarks show this scan on a hot path. Keep the feature as part of the partial mixed coordinator, not a claim of full Nelson-Oppen care-set implementation."
    },
    {
      "id": "2026-07-31-qf-uflra-current-model-validation",
      "date": "2026-07-31",
      "kind": "model-validation",
      "scope": "Current mixed QF_UFLRA get-model validation over the same 1000 generated cases used for the closure-aware care-pair answer fuzz gate. The run validates that the current runnable mixed coordinator still prints Dolmen-accepted models for every sat case in that corpus.",
      "commit": "0e25853 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 0e25853; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "model_validator": "dolmen from local temporary OPAM root",
        "reference": "/workspace/contrib/local/bin/z3"
      },
      "commands": {
        "build": "cmake --build build --target primo -j2 && ./build/primo --version",
        "model_validation": "PATH=\"<local-opam-dolmen>:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --timeout 5 --dolmen-timeout 10 --out results/qf_uflra-current-model-validation-1000-0e25853 fuzz-results/qf_uflra-closure-aware-care-answer-1000-dd399fc/cases/*.smt2"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet with :produce-models true and appended get-model"
      },
      "references": [
        {
          "name": "dolmen",
          "argv": "dolmen --check-model=true -r response.rsmt2 problem.smt2"
        }
      ],
      "inputs": {
        "source_corpus": "fuzz-results/qf_uflra-closure-aware-care-answer-1000-dd399fc/cases/*.smt2",
        "logic": "QF_UFLRA",
        "count": 1000,
        "solver_timeout_seconds": 5,
        "dolmen_timeout_seconds": 10
      },
      "artifacts": {
        "summary": "results/qf_uflra-current-model-validation-1000-0e25853/summary.csv",
        "validation_artifacts": "results/qf_uflra-current-model-validation-1000-0e25853/",
        "source_cases": "fuzz-results/qf_uflra-closure-aware-care-answer-1000-dd399fc/cases/"
      },
      "summary": {
        "total": 1000,
        "pass": 728,
        "not_sat": 272,
        "solver_timeout": 0,
        "solver_error": 0,
        "model_error": 0,
        "dolmen_timeout": 0,
        "validation_unavailable": 0
      },
      "verification": {
        "relationship_to_answer_fuzz": "This uses the same generated cases as the 1000-case answer fuzz gate recorded for dd399fc. It adds model-response validation for the 728 sat cases after the documentation-only run-log commit 0e25853.",
        "correctness_boundary": "The validation covers the documented mixed QF_UFLRA model subset exercised by the generator. It is not a proof of full Nelson-Oppen model-guided combination, non-convex arrangement enumeration, or future theories.",
        "result": "scripts/validate_model.py reported pass=728 and not-sat=272 with zero model errors, timeouts, solver errors, or unavailable validations."
      },
      "evidence_status": "current",
      "followups": "Keep running model validation after future mixed coordinator changes that alter equality propagation, arrangement separation, purification, or model reconstruction."
    },
    {
      "id": "2026-07-31-theory-combination-manager-qfuf-smoke-fuzz",
      "date": "2026-07-31",
      "kind": "fuzz",
      "scope": "Local QF_UF FuzzSMT smoke after introducing the SMT-owned TheoryCombinationManager scaffold. This is a smoke guard for the refactor and diagnostic path, not a merge-gate or campaign-gate fuzz claim for new solver behavior.",
      "commit": "885898a on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 885898a; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3, installed by make fuzzsmt"
      },
      "commands": {
        "fuzz": "make fuzzsmt",
        "expanded": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver ./build/primo --refs z3 --logic QF_UF --count 20 --timeout 5 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf_uf-fuzzsmt"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "generator": "FuzzSMT through scripts/fuzz_external.py",
        "logic": "QF_UF",
        "count": 20,
        "timeout_seconds": 5,
        "fuzzer_args": "-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2"
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uf-fuzzsmt/summary.csv",
        "generated": "fuzz-results/qf_uf-fuzzsmt/generated/",
        "bugs": "fuzz-results/qf_uf-fuzzsmt/bugs/"
      },
      "summary": {
        "total": 20,
        "pass": 20,
        "wrong_answer": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "sat": 17,
        "unsat": 3
      },
      "verification": {
        "relationship_to_change": "The new manager is used by the opt-in Nelson-Oppen diagnostics path and does not change default solving semantics. The focused unit tests cover manager lookup and arrangement state; this fuzz run is an extra local smoke check against reference answers.",
        "local_gates": "make check, make docs, make lint, make asan-test, git diff --check, and make fuzzsmt passed. make lint skipped ruff because it is not installed."
      },
      "evidence_status": "current",
      "followups": "Run a real QF_UFLRA merge gate when TheoryCombinationManager arrangement values are wired into SAT backtracking, equality propagation, or mixed final-check behavior."
    },
    {
      "id": "2026-07-31-qf-uflra-full-shared-pairs-fuzz",
      "date": "2026-07-31",
      "kind": "fuzz-and-model-validation",
      "scope": "Local merge-gate validation after moving the mixed QF_UFLRA delayed-combination path back to the full shared Real pair set and making TheoryCombinationManager own the generated shared-equality SAT literals. EUF care-pair counters remain diagnostic only.",
      "commit": "8e5ad4e on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 8e5ad4e; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3",
        "model_validator": "Dolmen unavailable locally; scripts/validate_model.py used its Z3 Real-assignment fallback"
      },
      "commands": {
        "build": "cmake --build build --target primo -j$(nproc) && ./build/primo --version",
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref /workspace/contrib/local/bin/z3 --count 1000 --seed 2026073108 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-full-shared-pairs-1000-8e5ad4e",
        "model_validation": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --timeout 5 --dolmen-timeout 10 --out results/qf_uflra-full-shared-pairs-model-validation-1000-8e5ad4e fuzz-results/qf_uflra-full-shared-pairs-1000-8e5ad4e/cases/*.smt2"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "/workspace/contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py",
        "logic": "QF_UFLRA",
        "shape": "mixed",
        "count": 1000,
        "seed": 2026073108,
        "timeout_seconds": 5
      },
      "artifacts": {
        "answer_summary": "fuzz-results/qf_uflra-full-shared-pairs-1000-8e5ad4e/summary.csv",
        "generated_cases": "fuzz-results/qf_uflra-full-shared-pairs-1000-8e5ad4e/cases/",
        "model_summary": "results/qf_uflra-full-shared-pairs-model-validation-1000-8e5ad4e/summary.csv",
        "model_artifacts": "results/qf_uflra-full-shared-pairs-model-validation-1000-8e5ad4e/"
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong_answer": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "sat": 705,
        "unsat": 295,
        "model_pass": 705,
        "model_not_sat": 295,
        "model_error": 0,
        "model_timeout": 0,
        "validation_unavailable": 0
      },
      "verification": {
        "relationship_to_change": "The generated corpus exercises separable, purified, shared-Real, and nonconstant-Real QF_UFLRA shapes. It checks answer agreement after LRA-to-EUF propagation and default-off model-equality candidates were changed to use the full shared Real pair set, while EUF care-pair statistics remain diagnostic.",
        "local_gates": "make check, make docs, make lint, make asan-test, git diff --check, solver_efficiency_snapshot.py --repo ., and whole-tree non-generated clang-tidy passed before this run. make lint skipped ruff because it is not installed.",
        "model_validation_boundary": "Dolmen was not available on the local PATH or usual workspace/tmp locations, so model validation used the script's Z3 fallback. This validates printed Real assignments for the generated sat cases, but is weaker than a full Dolmen model check."
      },
      "evidence_status": "current",
      "followups": "Run the same gate with Dolmen available before relying on this as full model-printing evidence. The full shared-pair scans are intentionally simple and may need an indexed care-pair or relevance API after mixed benchmark profiling shows them hot."
    },
    {
      "id": "2026-07-31-qf-uflra-full-shared-pairs-dolmen-validation",
      "date": "2026-07-31",
      "kind": "model-validation",
      "scope": "Dolmen-backed model validation for the same 1000 generated mixed QF_UFLRA cases used by the full-shared-pair answer fuzz gate. This replaces the weaker Z3 Real-assignment fallback evidence recorded in 2026-07-31-qf-uflra-full-shared-pairs-fuzz for model-printing purposes.",
      "commit": "2e06d66 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 2e06d66; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "model_validator": "/home/user/.opam/default/bin/dolmen 0.10",
        "reference": "/workspace/contrib/local/bin/z3 for the source answer-fuzz corpus"
      },
      "commands": {
        "build": "cmake --build build --target primo -j$(nproc) && ./build/primo --version && dolmen --version",
        "model_validation": "PATH=\"/home/user/.opam/default/bin:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --timeout 5 --dolmen dolmen --dolmen-timeout 10 --out results/qf_uflra-full-shared-pairs-dolmen-validation-1000-2e06d66 fuzz-results/qf_uflra-full-shared-pairs-1000-8e5ad4e/cases/*.smt2"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet with :produce-models true and appended get-model"
      },
      "references": [
        {
          "name": "Dolmen",
          "argv": "dolmen --check-model=true -r response.rsmt2 problem.smt2"
        }
      ],
      "inputs": {
        "source_corpus": "fuzz-results/qf_uflra-full-shared-pairs-1000-8e5ad4e/cases/*.smt2",
        "logic": "QF_UFLRA",
        "count": 1000,
        "solver_timeout_seconds": 5,
        "dolmen_timeout_seconds": 10
      },
      "artifacts": {
        "summary": "results/qf_uflra-full-shared-pairs-dolmen-validation-1000-2e06d66/summary.csv",
        "validation_artifacts": "results/qf_uflra-full-shared-pairs-dolmen-validation-1000-2e06d66/",
        "source_cases": "fuzz-results/qf_uflra-full-shared-pairs-1000-8e5ad4e/cases/"
      },
      "summary": {
        "total": 1000,
        "pass": 705,
        "not_sat": 295,
        "solver_timeout": 0,
        "solver_error": 0,
        "model_error": 0,
        "dolmen_timeout": 0,
        "validation_unavailable": 0
      },
      "verification": {
        "relationship_to_answer_fuzz": "The source corpus is the 1000-case generated mixed QF_UFLRA corpus that had 1000/1000 answer agreement with Z3 at implementation commit 8e5ad4e. This run rebuilds after the run-log-only commit 2e06d66 and validates every sat model printed for that corpus with Dolmen.",
        "correctness_boundary": "The validation covers the documented mixed QF_UFLRA model subset exercised by the generator. It is not evidence for full Nelson-Oppen arrangement enumeration, proofs, or future theory combinations.",
        "result": "scripts/validate_model.py reported pass=705 and not-sat=295 with zero model errors, Dolmen timeouts, solver errors, solver timeouts, or unavailable validations."
      },
      "evidence_status": "current",
      "followups": "The local model-validation blocker for this full-shared-pair milestone is closed. The remaining pre-merge hardening item is optional SLURM-backed QF_UFLRA fuzz if we want cluster evidence in addition to the local merge gate."
    },
    {
      "id": "2026-07-31-qf-uflra-archive-ingestion",
      "date": "2026-07-31",
      "kind": "benchmark-ingestion-smoke",
      "scope": "Local ingestion of the user-provided QF_UFLRA benchmark archive placed under the ignored sandbox directory. This records archive inventory, privacy/path audit, extraction location, and a small stratified Primo smoke run. It is not full benchmark or merge-gate evidence.",
      "commit": "718cdd4 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 718cdd4; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07"
      },
      "commands": {
        "inventory": "tar --use-compress-program=unzstd -tf sandbox/QF_UFLRA.tar.zst | wc -l",
        "archive_path_audit": "tar --use-compress-program=unzstd -tf sandbox/QF_UFLRA.tar.zst | rg -n '<absolute-path, traversal, private-ip, local-user-or-host, ssh-artifact patterns>'",
        "extract": "mkdir -p tmp/QF_UFLRA && tar --use-compress-program=unzstd -xf sandbox/QF_UFLRA.tar.zst -C tmp/QF_UFLRA --strip-components=2",
        "content_privacy_audit": "rg -n -I -l '<absolute-path, private-ip, local-user-or-host, ssh-artifact patterns>' tmp/QF_UFLRA",
        "content_email_audit": "rg -n -I -l '[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}' tmp/QF_UFLRA",
        "smoke": "python3 scripts/bench_qf_uf_full.py --root tmp/QF_UFLRA --manifest tmp/qf_uflra_archive_smoke_20.txt --solver ./build/primo --solver-arg=--quiet --timeout 5 --out results/qf_uflra-archive-smoke-25-primo.csv --summary results/qf_uflra-archive-smoke-25-primo-summary.csv --log-dir results/qf_uflra-archive-smoke-25-primo-logs"
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "inputs": {
        "archive": "sandbox/QF_UFLRA.tar.zst",
        "archive_status": "ignored local artifact; not committed",
        "extracted_root": "tmp/QF_UFLRA",
        "extracted_status": "ignored local artifact; not committed",
        "logic": "QF_UFLRA",
        "archive_members": 1284,
        "smt2_files": 1284,
        "families": {
          "FFT": 10,
          "cpachecker-bmc-svcomp14": 15,
          "cpachecker-induction-svcomp14": 359,
          "mathsat/RandomCoupled": 400,
          "mathsat/RandomDecoupled": 500
        },
        "smoke_manifest": "tmp/qf_uflra_archive_smoke_20.txt",
        "smoke_manifest_files": 25,
        "solver_timeout_seconds": 5
      },
      "artifacts": {
        "smoke_csv": "results/qf_uflra-archive-smoke-25-primo.csv",
        "smoke_summary": "results/qf_uflra-archive-smoke-25-primo-summary.csv",
        "smoke_logs": "results/qf_uflra-archive-smoke-25-primo-logs/"
      },
      "summary": {
        "archive_path_audit_hits": 0,
        "content_private_path_ip_ssh_hits": 0,
        "content_email_hits": 0,
        "set_logic_qf_uflra": 1284,
        "smoke_total": 25,
        "smoke_solved": 9,
        "smoke_sat": 6,
        "smoke_unsat": 3,
        "smoke_timeout": 7,
        "smoke_unsupported": 9,
        "smoke_wrong": 0,
        "smoke_par2": 163.267999
      },
      "verification": {
        "privacy_boundary": "The audit checked tar member names and extracted SMT-LIB contents for absolute paths, parent traversal, home/tmp path fragments, private IPv4 ranges, configured host/user strings, SSH artifacts, and email-address-shaped strings. The archive and extracted files remain ignored local artifacts.",
        "solver_boundary": "The 25-case smoke run checks local parser/solver compatibility only. Unsupported cases reported the current QF_UFLRA limitation: QF_LRA arithmetic nodes are not EUF flat terms. Timeout cases are smoke-timeout triage candidates, not correctness failures.",
        "result": "The archive was safely extracted to tmp/QF_UFLRA. The smoke run solved 9/25, reported 9 unsupported, timed out on 7 at 5 seconds, and found 0 answers contradicting SMT-LIB :status metadata."
      },
      "evidence_status": "current",
      "followups": "Use this extracted root as the input for a future SLURM-backed QF_UFLRA benchmark once the next Nelson-Oppen implementation step is ready. Do not commit the archive or extracted benchmark files."
    },
    {
      "id": "2026-07-31-qf-uflra-real-application-argument-purification",
      "date": "2026-07-31",
      "kind": "implementation-fuzz-validation",
      "scope": "Implementation and local validation of recursive QF_UFLRA purification for Real-valued UF applications whose Real arguments are arithmetic terms or nested Real-valued UF applications. This fixes the archive-smoke unsupported class where EUF flattening saw QF_LRA arithmetic nodes.",
      "commit": "2562b6f on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 4ef97d0-dirty during pre-commit validation, source committed as 2562b6f; build: Release, sanitizers: none; cadical: cadical-3.0.0-7b99c07",
        "reference": "/workspace/contrib/local/bin/z3",
        "model_validator": "dolmen 0.10 on PATH"
      },
      "commands": {
        "focused_test": "cmake --build build --target primo_qf_lra_solver_tests primo -j$(nproc) && ./build/primo_qf_lra_solver_tests",
        "archive_smoke": "python3 scripts/bench_qf_uf_full.py --root tmp/QF_UFLRA --manifest tmp/qf_uflra_archive_smoke_20.txt --solver ./build/primo --solver-arg=--quiet --timeout 5 --out results/qf_uflra-archive-smoke-25-purified-args-primo.csv --summary results/qf_uflra-archive-smoke-25-purified-args-primo-summary.csv --log-dir results/qf_uflra-archive-smoke-25-purified-args-primo-logs",
        "answer_fuzz": "PATH=\"/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref /workspace/contrib/local/bin/z3 --count 1000 --seed 2026073114 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-purified-real-args-1000-4ef97d0",
        "model_validation": "PATH=\"<local-opam-bin>:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --timeout 5 --dolmen dolmen --dolmen-timeout 10 --out results/qf_uflra-purified-real-args-dolmen-validation-1000-4ef97d0 fuzz-results/qf_uflra-purified-real-args-1000-4ef97d0/cases/*.smt2",
        "project_gates": "make check && make docs && make lint && make asan-test",
        "static_review": "clang-tidy -p build --quiet on all tracked non-generated .cpp files; clang-tidy -p build --quiet -checks='-*,misc-include-cleaner' src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp; solver_efficiency_snapshot.py --repo ."
      },
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "/workspace/contrib/local/bin/z3"
        },
        {
          "name": "Dolmen",
          "argv": "dolmen --check-model=true -r response.rsmt2 problem.smt2"
        }
      ],
      "inputs": {
        "logic": "QF_UFLRA",
        "archive_smoke_manifest": "tmp/qf_uflra_archive_smoke_20.txt",
        "archive_smoke_files": 25,
        "archive_smoke_timeout_seconds": 5,
        "fuzz_generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "fuzz_count": 1000,
        "fuzz_seed": 2026073114,
        "fuzz_timeout_seconds": 5,
        "dolmen_timeout_seconds": 10
      },
      "artifacts": {
        "archive_smoke_csv": "results/qf_uflra-archive-smoke-25-purified-args-primo.csv",
        "archive_smoke_summary": "results/qf_uflra-archive-smoke-25-purified-args-primo-summary.csv",
        "answer_fuzz_summary": "fuzz-results/qf_uflra-purified-real-args-1000-4ef97d0/summary.csv",
        "answer_fuzz_cases": "fuzz-results/qf_uflra-purified-real-args-1000-4ef97d0/cases/",
        "model_validation_summary": "results/qf_uflra-purified-real-args-dolmen-validation-1000-4ef97d0/summary.csv"
      },
      "summary": {
        "archive_smoke_total": 25,
        "archive_smoke_solved": 15,
        "archive_smoke_sat": 12,
        "archive_smoke_unsat": 3,
        "archive_smoke_timeout": 10,
        "archive_smoke_unsupported": 0,
        "archive_smoke_wrong": 0,
        "archive_smoke_par2": 110.481857,
        "previous_archive_smoke_unsupported": 9,
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_sat": 686,
        "answer_fuzz_unsat": 314,
        "answer_fuzz_wrong_answer": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "model_validation_pass": 686,
        "model_validation_not_sat": 314,
        "model_validation_errors": 0
      },
      "verification": {
        "regression_tests": "tests/unit/qf_lra_solver_tests.cpp now covers f(x-y) in an LRA atom, nested f(g(x)+1), and the FFT-style disequality (not (= (f (- x y)) (- (f x)))).",
        "efficiency_review": "solver_efficiency_snapshot.py reported only one added vector allocation in preprocessing while normalizing application children. This is not in a SAT callback or per-decision hot path; it is proportional to the number of Real-valued UF applications that require purification.",
        "asan_note": "An initial ASAN run found a TermManager reallocation use-after-free from retaining a Term reference across fresh proxy creation. The implementation now copies the symbol id before any term-manager mutation, and the final full make asan-test passed.",
        "result": "The archive smoke class that previously produced 9 unsupported results now produces 0 unsupported results. Remaining archive-smoke non-solves are 5-second timeouts, not unsupported-input rejections."
      },
      "evidence_status": "current",
      "followups": "Run a SLURM-backed QF_UFLRA archive benchmark when the cluster is available. The local archive smoke is useful coverage evidence, not a headline performance benchmark."
    },
    {
      "id": "2026-07-31-qf-uflra-model-equality-branch-policies",
      "date": "2026-07-31",
      "kind": "fuzz-and-model-validation",
      "scope": "Local validation for default-off QF_UFLRA model-equality branch policies. The change preserves the historical first full-pair scan order and adds ranked and adaptive policies that use EUF care diagnostics only as ordering hints with full-pair fallback.",
      "commit": "74f55bb",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: a817558-dirty during pre-commit validation, source committed as 74f55bb; build: Release and ASAN Debug; cadical: cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3",
        "model_validator": "dolmen 0.10 on PATH"
      },
      "commands": {
        "focused_test": "cmake --build build --target primo_qf_lra_solver_tests -j2 && ./build/primo_qf_lra_solver_tests",
        "project_gates": "make check && make docs && make lint && make asan-test",
        "ranked_answer_fuzz": "PATH=\"<local-opam-bin>:/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--model-equality-branching --solver-arg=--model-equality-branch-policy --solver-arg=ranked --ref z3 --count 1000 --seed 20260756 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-ranked-model-branch-answer-1000",
        "ranked_model_validation": "PATH=\"<local-opam-bin>:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--model-equality-branching --solver-arg=--model-equality-branch-policy --solver-arg=ranked --timeout 5 --dolmen-timeout 10 --out results/qf_uflra-ranked-model-branch-model-validation-1000 fuzz-results/qf_uflra-ranked-model-branch-answer-1000/cases/*.smt2",
        "adaptive_answer_fuzz": "PATH=\"<local-opam-bin>:/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--model-equality-branching --solver-arg=--model-equality-branch-policy --solver-arg=adaptive --ref z3 --count 1000 --seed 20260757 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-adaptive-model-branch-answer-1000",
        "adaptive_model_validation": "PATH=\"<local-opam-bin>:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--model-equality-branching --solver-arg=--model-equality-branch-policy --solver-arg=adaptive --timeout 5 --dolmen-timeout 10 --out results/qf_uflra-adaptive-model-branch-model-validation-1000 fuzz-results/qf_uflra-adaptive-model-branch-answer-1000/cases/*.smt2",
        "static_review": "make tidy; make include-cleaner; python3 <codex-skill>/solver_efficiency_snapshot.py --repo ."
      },
      "solver": {
        "name": "Primo",
        "argv_ranked": "./build/primo --quiet --model-equality-branching --model-equality-branch-policy ranked",
        "argv_adaptive": "./build/primo --quiet --model-equality-branching --model-equality-branch-policy adaptive"
      },
      "references": [
        {
          "name": "Z3",
          "argv": "z3"
        },
        {
          "name": "Dolmen",
          "argv": "dolmen model validation through scripts/validate_model.py"
        }
      ],
      "inputs": {
        "logic": "QF_UFLRA",
        "fuzz_generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "ranked_fuzz_count": 1000,
        "ranked_fuzz_seed": 20260756,
        "adaptive_fuzz_count": 1000,
        "adaptive_fuzz_seed": 20260757,
        "fuzz_timeout_seconds": 5,
        "dolmen_timeout_seconds": 10
      },
      "artifacts": {
        "ranked_answer_fuzz_summary": "fuzz-results/qf_uflra-ranked-model-branch-answer-1000/summary.csv",
        "ranked_answer_fuzz_cases": "fuzz-results/qf_uflra-ranked-model-branch-answer-1000/cases/",
        "ranked_model_validation_summary": "results/qf_uflra-ranked-model-branch-model-validation-1000/summary.csv",
        "adaptive_answer_fuzz_summary": "fuzz-results/qf_uflra-adaptive-model-branch-answer-1000/summary.csv",
        "adaptive_answer_fuzz_cases": "fuzz-results/qf_uflra-adaptive-model-branch-answer-1000/cases/",
        "adaptive_model_validation_summary": "results/qf_uflra-adaptive-model-branch-model-validation-1000/summary.csv"
      },
      "summary": {
        "ranked_answer_fuzz_total": 1000,
        "ranked_answer_fuzz_pass": 1000,
        "ranked_answer_fuzz_sat": 700,
        "ranked_answer_fuzz_unsat": 300,
        "ranked_answer_fuzz_wrong_answer": 0,
        "ranked_answer_fuzz_crash": 0,
        "ranked_answer_fuzz_timeout": 0,
        "ranked_answer_fuzz_unsupported": 0,
        "ranked_model_validation_pass": 700,
        "ranked_model_validation_not_sat": 300,
        "ranked_model_validation_errors": 0,
        "adaptive_answer_fuzz_total": 1000,
        "adaptive_answer_fuzz_pass": 1000,
        "adaptive_answer_fuzz_sat": 724,
        "adaptive_answer_fuzz_unsat": 276,
        "adaptive_answer_fuzz_wrong_answer": 0,
        "adaptive_answer_fuzz_crash": 0,
        "adaptive_answer_fuzz_timeout": 0,
        "adaptive_answer_fuzz_unsupported": 0,
        "adaptive_model_validation_pass": 724,
        "adaptive_model_validation_not_sat": 276,
        "adaptive_model_validation_errors": 0
      },
      "verification": {
        "regression_tests": "tests/unit/qf_lra_solver_tests.cpp covers the historical first policy, ranked care-pair preference, ranked full-pair fallback, and adaptive backoff after repeated unproductive model-equality guesses.",
        "efficiency_review": "solver_efficiency_snapshot.py reported expected fresh vectors for care argument terms and ranked candidates. They are built in the default-off model-equality branch path, not in default solving. make tidy passed. make include-cleaner completed with the repository's existing broad advisory baseline warnings.",
        "correctness_boundary": "Model equalities remain SAT assumptions and phase preferences only. The change does not add theory explanation clauses from LRA model equality and does not prune the full shared Real pair fallback.",
        "default_status": "The feature remains default-off; first remains the default policy when --model-equality-branching is enabled."
      },
      "evidence_status": "current",
      "followups": "Run a SLURM full-archive QF_UFLRA comparison for default, first, ranked, and adaptive before making any performance or default-promotion claim."
    },
    {
      "id": "2026-07-31-qf-uflra-smtlib-sample-5pf-slurm",
      "date": "2026-07-31",
      "kind": "slurm-benchmark",
      "scope": "Small deterministic QF_UFLRA SMT-LIB sample with five files per available family from the extracted sandbox/QF_UFLRA archive. This run compares default Primo, model-equality branching with first/ranked/adaptive policies, and Z3 as an answer/performance reference. It is a tuning sample, not a default-promotion benchmark.",
      "commit": "ed2aae1",
      "environment": {
        "type": "slurm",
        "host": "redacted",
        "job_id": "redacted",
        "binary": "primo 0.1.0; git: ed2aae1-dirty on the remote workspace because historical tracked output files were not synced; build: Release; cadical: cadical-3.0.0-7b99c07",
        "reference": "Z3 version 5.0.0 - 64 bit"
      },
      "commands": {
        "sbatch_validation": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_sample_compare.sbatch && bash -n scripts/slurm_qf_uflra_sample_compare.sbatch",
        "workspace_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --ssh-config <redacted> --remote <redacted> --remote-dir <redacted> --target primo --local-dir .",
        "slurm_runner": "PRIMO_WORKDIR=<remote-workdir> sbatch scripts/slurm_qf_uflra_sample_compare.sbatch",
        "render_html": "python3 scripts/render_benchmark_matrix_html.py --variant default=<artifact>/default.csv --variant first=<artifact>/first.csv --variant ranked=<artifact>/ranked.csv --variant adaptive=<artifact>/adaptive.csv --variant z3=<artifact>/z3.csv --out <artifact>/compare.html --summary-json <artifact>/compare-summary.json --timeout 10 --strip-prefix tmp/QF_UFLRA/ --stat :time.parse-us --stat :time.preprocessing-us --stat :time.solve-us --stat :no.interface.euf-care-pairs --stat :no.interface.euf-care-pruned-pairs --stat :no.interface.model-equality-candidates --stat :no.interface.model-equality-scanned --stat :no.interface.model-equality-lra-equal --stat :no.interface.model-equality-assumptions --stat :no.interface.model-equality-conflicts --stat :no.interface.model-equality-selected-care --stat :no.interface.model-equality-selected-full --stat :no.interface.model-equality-adaptive-stops",
        "answer_compare": "python3 scripts/compare_solver_answers.py <artifact> --timeout 10"
      },
      "solver_variants": {
        "default": "build-slurm-rel/primo --quiet --stats",
        "first": "build-slurm-rel/primo --quiet --stats --model-equality-branching",
        "ranked": "build-slurm-rel/primo --quiet --stats --model-equality-branching --model-equality-branch-policy ranked",
        "adaptive": "build-slurm-rel/primo --quiet --stats --model-equality-branching --model-equality-branch-policy adaptive",
        "z3": "contrib/local/bin/z3"
      },
      "inputs": {
        "logic": "QF_UFLRA",
        "manifest": "benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "families": {
          "FFT": 5,
          "cpachecker-bmc-svcomp14": 5,
          "cpachecker-induction-svcomp14": 5,
          "mathsat": 5
        },
        "total_files": 20,
        "timeout_seconds": 10
      },
      "artifacts": {
        "directory": "results/qf_uflra-smtlib-sample-5pf-slurm-ed2aae1/",
        "html": "results/qf_uflra-smtlib-sample-5pf-slurm-ed2aae1/compare.html",
        "summary_json": "results/qf_uflra-smtlib-sample-5pf-slurm-ed2aae1/compare-summary.json",
        "evidence_status": "local_ignored_copy_of_slurm_outputs"
      },
      "summary": {
        "default": {
          "total": 20,
          "solved": 15,
          "sat": 12,
          "unsat": 3,
          "timeout": 5,
          "error": 0,
          "wrong": 0,
          "par2": 122.980205
        },
        "first": {
          "total": 20,
          "solved": 14,
          "sat": 11,
          "unsat": 3,
          "timeout": 6,
          "error": 0,
          "wrong": 0,
          "par2": 143.300544
        },
        "ranked": {
          "total": 20,
          "solved": 14,
          "sat": 11,
          "unsat": 3,
          "timeout": 6,
          "error": 0,
          "wrong": 0,
          "par2": 143.200115
        },
        "adaptive": {
          "total": 20,
          "solved": 14,
          "sat": 11,
          "unsat": 3,
          "timeout": 6,
          "error": 0,
          "wrong": 0,
          "par2": 143.2184
        },
        "z3": {
          "total": 20,
          "solved": 20,
          "sat": 17,
          "unsat": 3,
          "timeout": 0,
          "error": 0,
          "wrong": 0,
          "par2": 3.925267
        },
        "cross_solver_disagreements": 0,
        "z3_only_solved": 5
      },
      "stats": {
        "first_model_equality_assumptions": 98,
        "ranked_model_equality_assumptions": 98,
        "adaptive_model_equality_assumptions": 98,
        "ranked_selected_care": 28,
        "ranked_selected_full": 70,
        "adaptive_selected_care": 28,
        "adaptive_selected_full": 70,
        "adaptive_stops": 0,
        "euf_care_pairs_all_primo_variants": 25641,
        "euf_care_pruned_pairs_all_primo_variants": 150444
      },
      "interpretation": "The feature is active on this sample, but the enabled branch policies do not improve the small SMT-LIB sample: each loses one solved instance versus default at a 10 second timeout. Keep model-equality branching default-off and use this sample for focused tuning only.",
      "evidence_status": "current"
    },
    {
      "id": "2026-07-31-qf-uflra-model-separation-fastpath",
      "date": "2026-07-31",
      "kind": "local-validation-and-diagnostic",
      "scope": "Validation and focused local timing for QF_UFLRA final shared-Real model-separation fast paths. The source change reuses the base prepared LRA theory when no generated interface equality is active, and orients greedy capped separation candidates directly from one concrete LRA model before falling back to per-candidate consistency checks.",
      "commit": "495c05d",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: 495c05d source commit under local build; build: Release and ASAN Debug; cadical: cadical-3.0.0-7b99c07",
        "reference": "Z3 through scripts/qf_uflra_smoke_fuzz.py",
        "model_validator": "Dolmen through scripts/validate_model.py"
      },
      "commands": {
        "focused_test": "cmake --build build --target primo_qf_lra_solver_tests -j2 && ./build/primo_qf_lra_solver_tests",
        "project_gates": "ctest --test-dir build --output-on-failure; make docs; make lint; make check; make asan-test",
        "static_review": "make tidy; make include-cleaner",
        "answer_fuzz": "PATH=\"<local-opam-bin>:/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --ref z3 --count 1000 --seed 20260758 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-model-separation-fastpath-answer-1000",
        "model_validation": "PATH=\"<local-opam-bin>:/workspace/contrib/local/bin:$PATH\" python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --timeout 5 --dolmen-timeout 10 --out results/qf_uflra-model-separation-fastpath-model-validation-1000 fuzz-results/qf_uflra-model-separation-fastpath-answer-1000/cases/*.smt2",
        "focused_timing": "./build/primo --quiet --stats <QF_UFLRA-small-instance>"
      },
      "inputs": {
        "logic": "QF_UFLRA",
        "fuzz_generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "fuzz_count": 1000,
        "fuzz_seed": 20260758,
        "fuzz_timeout_seconds": 5,
        "dolmen_timeout_seconds": 10,
        "focused_instances": [
          "tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_10.smt2",
          "tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_11.smt2",
          "tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_12.smt2",
          "tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_13.smt2",
          "tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_14.smt2",
          "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.32_1_cilled_true-unreach-call_ok_nondet_linux-3.4-32_1-drivers--edac--mce_amd_inj.ko-ldv_main0_sequence_infinite_withcheck_stateful.cil.out.c.smt2"
        ]
      },
      "artifacts": {
        "answer_fuzz_summary": "fuzz-results/qf_uflra-model-separation-fastpath-answer-1000/summary.csv",
        "model_validation_summary": "results/qf_uflra-model-separation-fastpath-model-validation-1000/summary.csv",
        "evidence_status": "local_ignored_outputs"
      },
      "summary": {
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_sat": 717,
        "answer_fuzz_unsat": 283,
        "answer_fuzz_wrong_answer": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "answer_fuzz_unsupported": 0,
        "model_validation_pass": 717,
        "model_validation_not_sat": 283,
        "model_validation_errors": 0,
        "focused_local_timings_seconds_after": {
          "pb_real_10_0100_10_10": 0.190664,
          "pb_real_10_0100_10_11": 0.206543,
          "pb_real_10_0100_10_12": 0.144455,
          "pb_real_10_0100_10_13": 0.221018,
          "pb_real_10_0100_10_14": 0.488222,
          "cpachecker_induction_edac": 0.691745
        },
        "focused_local_diagnostic_baseline_seconds": {
          "pb_real_10_0100_10_13_before_model_oriented_separations": 14.523968,
          "cpachecker_induction_edac_before_model_oriented_separations": 3.023092
        }
      },
      "verification": {
        "regression_tests": "tests/unit/qf_lra_solver_tests.cpp includes a capped 21-candidate QF_UFLRA final-arrangement case and checks :no.interface.model-separation-model-oriented.",
        "correctness_boundary": "The model-oriented path is used only when one concrete LRA model already assigns distinct values to the candidate shared Real terms. Pairs tied in that model still use the existing LRA consistency-check fallback.",
        "performance_boundary": "The focused timing evidence is local only. A SLURM rerun of benchmarks/qf_uflra-smtlib-sample-5-per-family.txt is required before citing a cluster-backed benchmark improvement."
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-07-31-qf-uflra-model-separation-fastpath-slurm-sample",
      "date": "2026-07-31",
      "kind": "slurm-benchmark",
      "scope": "Cluster-backed rerun of the deterministic 20-file QF_UFLRA SMT-LIB sample after adding the shared-Real model-separation fast path and snapshot-based SLURM workspace preparation.",
      "commit": "3d0c751",
      "source_change_commit": "495c05d",
      "environment": {
        "type": "slurm",
        "host": "<redacted-slurm-host>",
        "job_id": "<redacted>",
        "binary": "primo 0.1.0; git: 3d0c751; build: Release; cadical: cadical-3.0.0-7b99c07",
        "reference": "z3 from the remote benchmark workspace"
      },
      "commands": {
        "workspace_prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <redacted> --remote <redacted> --remote-dir <redacted> --target primo --jobs 2",
        "pre_submit_check": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_sample_compare.sbatch; bash -n scripts/slurm_qf_uflra_sample_compare.sbatch; python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <redacted> --remote <redacted> --remote-dir <redacted> --target primo --check-only",
        "slurm_submission": "PRIMO_WORKDIR=<remote-workdir> sbatch scripts/slurm_qf_uflra_sample_compare.sbatch",
        "render_html": "python3 scripts/render_benchmark_matrix_html.py --variant default=.../default.csv --variant first=.../first.csv --variant ranked=.../ranked.csv --variant adaptive=.../adaptive.csv --variant z3=.../z3.csv --out results/qf_uflra-smtlib-sample-5pf-slurm-3d0c751/compare.html --summary-json results/qf_uflra-smtlib-sample-5pf-slurm-3d0c751/compare-summary.json --timeout 10 --stat :time.parse-us --stat :time.preprocessing-us --stat :time.solve-us --stat :no.interface.model-separation-model-oriented",
        "answer_compare": "python3 scripts/compare_solver_answers.py results/qf_uflra-smtlib-sample-5pf-slurm-3d0c751 --timeout 10"
      },
      "inputs": {
        "logic": "QF_UFLRA",
        "manifest": "benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "files": 20,
        "timeout_seconds": 10,
        "variants": [
          "default=build-slurm-rel/primo --quiet --stats",
          "first=build-slurm-rel/primo --quiet --stats --model-equality-branching",
          "ranked=build-slurm-rel/primo --quiet --stats --model-equality-branching --model-equality-branch-policy ranked",
          "adaptive=build-slurm-rel/primo --quiet --stats --model-equality-branching --model-equality-branch-policy adaptive",
          "z3=contrib/local/bin/z3"
        ]
      },
      "artifacts": {
        "local_directory": "results/qf_uflra-smtlib-sample-5pf-slurm-3d0c751/",
        "html": "results/qf_uflra-smtlib-sample-5pf-slurm-3d0c751/compare.html",
        "summary_json": "results/qf_uflra-smtlib-sample-5pf-slurm-3d0c751/compare-summary.json",
        "evidence_status": "local_ignored_outputs"
      },
      "summary": {
        "answer_disagreements": 0,
        "default": {
          "solved": 16,
          "timeouts": 4,
          "wrong": 0,
          "par2": 85.265144,
          "seconds": 45.323061,
          "model_oriented_separations_total": 2161,
          "model_oriented_separation_files": 8
        },
        "first": {
          "solved": 16,
          "timeouts": 4,
          "wrong": 0,
          "par2": 101.807512,
          "model_oriented_separations_total": 2161
        },
        "ranked": {
          "solved": 16,
          "timeouts": 4,
          "wrong": 0,
          "par2": 101.889865,
          "model_oriented_separations_total": 2161
        },
        "adaptive": {
          "solved": 16,
          "timeouts": 4,
          "wrong": 0,
          "par2": 101.877653,
          "model_oriented_separations_total": 2161
        },
        "z3": {
          "solved": 20,
          "timeouts": 0,
          "wrong": 0,
          "par2": 3.905961
        },
        "previous_slurm_default_at_ed2aae1": {
          "solved": 15,
          "timeouts": 5,
          "par2": 122.980205
        },
        "status_changes_vs_previous_default": [
          {
            "file": "tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_13.smt2",
            "previous": "timeout",
            "current": "sat",
            "current_seconds": 0.593189,
            "model_oriented_separations": 349,
            "model_separation_candidates": 378
          }
        ]
      },
      "interpretation": "The fast path is active on the intended mixed files and improves the default sample result from 15/20 to 16/20 solved at 10 seconds with no cross-solver answer disagreements. The model-equality branching variants now also solve 16/20 but remain slower than default on this sample, so they should stay default-off.",
      "evidence_status": "current"
    },
    {
      "id": "2026-07-31-qf-uflra-skip-unused-care-scan",
      "date": "2026-07-31",
      "kind": "local-validation-and-diagnostic",
      "scope": "Validation for skipping closure-aware EUF care-pair diagnostics in default mixed QF_UFLRA solving when default-off model-equality branching is disabled. The same change adds local counters for mixed LRA conflict clause literal volume and duplicate LRA conflict clauses.",
      "commit": "aaa4f15",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "primo 0.1.0; git: aaa4f15 source commit under local Release build; cadical: cadical-3.0.0-7b99c07",
        "reference": "Z3 through scripts/qf_uflra_smoke_fuzz.py"
      },
      "commands": {
        "focused_tests": "cmake --build build --target primo_qf_lra_solver_tests -j2 && ./build/primo_qf_lra_solver_tests",
        "project_check": "make lint; make docs; make check",
        "answer_fuzz": "PATH=\"<local-opam-bin>:/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --ref z3 --count 1000 --seed 20260759 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-skip-unused-care-answer-1000",
        "local_diagnostics": "timeout 8s ./build/primo --quiet --stats <cpachecker-induction-newtonkbd>; timeout 20s ./build/primo --quiet --stats <cpachecker-induction-magellan/newtonkbd>"
      },
      "inputs": {
        "logic": "QF_UFLRA",
        "fuzz_generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "fuzz_count": 1000,
        "fuzz_seed": 20260759,
        "fuzz_timeout_seconds": 5,
        "focused_instances": [
          "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.32_1_cilled_true-unreach-call_ok_nondet_linux-3.4-32_1-drivers--input--joystick--magellan.ko-ldv_main0_sequence_infinite_withcheck_stateful.cil.out.c.smt2",
          "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.32_1_cilled_true-unreach-call_ok_nondet_linux-3.4-32_1-drivers--input--keyboard--newtonkbd.ko-ldv_main0_sequence_infinite_withcheck_stateful.cil.out.c.smt2"
        ]
      },
      "artifacts": {
        "answer_fuzz_summary": "fuzz-results/qf_uflra-skip-unused-care-answer-1000/summary.csv",
        "evidence_status": "local_ignored_outputs"
      },
      "summary": {
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_sat": 706,
        "answer_fuzz_unsat": 294,
        "answer_fuzz_wrong_answer": 0,
        "local_newtonkbd_8s_timeout": {
          "sat_solve_calls": 634,
          "lra_theory_checks": 634,
          "lra_theory_conflicts": 633,
          "lra_conflict_lits": 1369,
          "lra_conflict_duplicates": 0,
          "euf_care_checks": 0,
          "lra_prepared_reused": 634
        },
        "local_option_probe_newtonkbd_20s": {
          "default": "timeout with 634 LRA checks and 633 LRA conflicts",
          "lra_theory_decisions": "timeout with same 634 LRA checks and 633 LRA conflicts",
          "lra_row_propagation": "timeout with same 634 LRA checks and 633 LRA conflicts",
          "lra_bidirectional_row_propagation": "timeout with same 634 LRA checks and 633 LRA conflicts",
          "soi_pivoting": "timeout with 701 LRA checks and 700 LRA conflicts"
        }
      },
      "interpretation": "Skipping unused care diagnostics is a correct default-path hygiene fix and removes an accidental quadratic diagnostic scan from default mixed solving, but it does not solve the CPAchecker induction timeout. The remaining local evidence points to the lazy mixed QF_UFLRA loop learning many short, distinct LRA conflict clauses one by one. Existing pure-QF_LRA online options do not affect this mixed path, so the next implementation target should be integrating useful LRA propagation or decisions into QF_UFLRA rather than tuning care-pair diagnostics.",
      "evidence_status": "current"
    },
    {
      "id": "2026-07-31-qf-uflra-mixed-online-lra-local",
      "date": "2026-07-31",
      "kind": "implementation-validation-and-local-diagnostic",
      "scope": "Default mixed QF_UFLRA now attaches the existing trail-synced online LRA propagator for original arithmetic atoms. Generated interface equalities still use the augmented final-check path, and the experimental model-equality branching mode keeps the previous final-check-only LRA path.",
      "commit": "pre-commit working tree based on d0a4b56 on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "local Release build of ./build/primo; CaDiCaL from contrib/local",
        "reference": "Z3 through scripts/qf_uflra_smoke_fuzz.py"
      },
      "commands": {
        "focused_tests": "cmake --build build --target primo_qf_lra_solver_tests -j2 && ./build/primo_qf_lra_solver_tests",
        "project_check": "make check",
        "docs": "make docs",
        "lint": "make lint",
        "asan": "make asan-test",
        "tidy": "make tidy",
        "answer_fuzz": "PATH=\"<local-opam-bin>:/workspace/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --ref z3 --count 1000 --seed 20260760 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-mixed-online-lra-answer-1000",
        "focused_cpa_probes": "timeout 20s ./build/primo --quiet --stats <cpachecker-induction-newtonkbd>; timeout 20s ./build/primo --quiet --stats <cpachecker-induction-magellan>; short local option matrix over row propagation, bidirectional row propagation, theory decisions, and SOI pivoting"
      },
      "inputs": {
        "logic": "QF_UFLRA",
        "fuzz_generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
        "fuzz_count": 1000,
        "fuzz_seed": 20260760,
        "fuzz_timeout_seconds": 5,
        "focused_instances": [
          "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.32_1_cilled_true-unreach-call_ok_nondet_linux-3.4-32_1-drivers--input--keyboard--newtonkbd.ko-ldv_main0_sequence_infinite_withcheck_stateful.cil.out.c.smt2",
          "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.32_1_cilled_true-unreach-call_ok_nondet_linux-3.4-32_1-drivers--input--joystick--magellan.ko-ldv_main0_sequence_infinite_withcheck_stateful.cil.out.c.smt2",
          "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.32_1_cilled_true-unreach-call_ok_nondet_linux-3.4-32_1-drivers--edac--mce_amd_inj.ko-ldv_main0_sequence_infinite_withcheck_stateful.cil.out.c.smt2"
        ]
      },
      "artifacts": {
        "answer_fuzz_summary": "fuzz-results/qf_uflra-mixed-online-lra-answer-1000/summary.csv",
        "evidence_status": "local_ignored_outputs"
      },
      "summary": {
        "answer_fuzz_total": 1000,
        "answer_fuzz_pass": 1000,
        "answer_fuzz_sat": 701,
        "answer_fuzz_unsat": 299,
        "answer_fuzz_wrong_answer": 0,
        "answer_fuzz_crash": 0,
        "answer_fuzz_timeout": 0,
        "local_newtonkbd_20s_timeout": {
          "sat_solve_calls": 1,
          "sat_conflicts": 0,
          "sat_decisions": 1112,
          "sat_propagations": 3419,
          "lra_online_check_calls": 750,
          "lra_theory_propagations": 804,
          "lra_theory_checks": 1,
          "lra_conflicts": 0,
          "lra_online_enabled": 1,
          "lra_online_final_checks": 1
        },
        "local_magellan_20s_timeout": {
          "sat_solve_calls": 1,
          "sat_conflicts": 1,
          "sat_decisions": 781,
          "sat_propagations": 3654,
          "lra_online_check_calls": 550,
          "lra_theory_propagations": 630,
          "lra_theory_checks": 1,
          "lra_conflicts": 0,
          "lra_online_enabled": 1,
          "lra_online_final_checks": 1
        },
        "local_edac_guard": "sat in under 1s with one SAT solve call, 85 LRA online checks, and 90 LRA theory propagations",
        "local_option_probe": {
          "newtonkbd": "row propagation and theory decisions still timed out under the short cap; bidirectional row propagation reduced decisions/checks in the capped run but did not solve",
          "magellan": "row propagation was mostly inert; theory decisions increased decisions/checks under the short cap; no option solved under the cap"
        }
      },
      "interpretation": "The accepted local change removes the repeated outer lazy LRA-conflict loop from the default mixed path on the focused CPAchecker induction rows: both representative timeout rows now have one SAT solve call and hundreds of callback-owned LRA checks/propagations instead of hundreds of final-check conflicts. This is real solver work, but it is not enough by itself to solve the two large local rows at 20 seconds. Row propagation and theory decisions are not yet justified as defaults for this family. The next performance step should use SLURM family results to decide whether the online mixed path improves solved/PAR2 broadly, then profile the remaining single-SAT-call timeouts.",
      "evidence_status": "current"
    },
    {
      "id": "2026-07-31-qf-uflra-cpachecker-induction-baseline-slurm",
      "date": "2026-07-31",
      "kind": "slurm-benchmark",
      "scope": "Cluster-backed baseline comparison on the full QF_UFLRA cpachecker-induction-svcomp14 family before mixed online LRA was enabled. This run establishes the family target for the next QF_UFLRA performance iteration.",
      "commit": "e0c5a62 on nelson-oppen-closure-methods",
      "environment": {
        "type": "slurm",
        "host": "redacted",
        "job_id": "redacted",
        "binary": "remote Release build of build-slurm-rel/primo at e0c5a62",
        "reference": "Z3 from remote contrib/local/bin/z3"
      },
      "commands": {
        "manifest": "benchmarks/qf_uflra-cpachecker-induction-svcomp14.txt",
        "timeout": "10 seconds per file",
        "render_html": "python3 scripts/render_benchmark_matrix_html.py --variant default=<artifact>/default.csv --variant z3=<artifact>/z3.csv --out <artifact>/compare.html --summary-json <artifact>/compare-summary.json --title 'QF_UFLRA CPAchecker Induction: Default vs Z3' --timeout 10 --strip-prefix tmp/QF_UFLRA/ --stat :time.parse-us --stat :time.preprocessing-us --stat :time.solve-us --stat :sat.solve-calls --stat :sat.conflicts --stat :sat.decisions --stat :sat.propagations --stat :lra.theory-checks --stat :lra.theory-conflicts --stat :no.interface.lra-prepared-reused --stat :no.interface.lra-prepared-augmented --stat :no.interface.euf-care-checks --stat :no.interface.euf-care-pairs --stat :no.interface.shared-real-terms --stat :no.interface.model-separation-model-oriented",
        "answer_compare": "python3 scripts/compare_solver_answers.py results/qf_uflra-cpachecker-induction-slurm-e0c5a62-r2 --timeout 10"
      },
      "inputs": {
        "logic": "QF_UFLRA",
        "family": "cpachecker-induction-svcomp14",
        "files": 359
      },
      "artifacts": {
        "local_directory": "results/qf_uflra-cpachecker-induction-slurm-e0c5a62-r2",
        "html": "results/qf_uflra-cpachecker-induction-slurm-e0c5a62-r2/compare.html",
        "summary_json": "results/qf_uflra-cpachecker-induction-slurm-e0c5a62-r2/compare-summary.json",
        "default_csv": "results/qf_uflra-cpachecker-induction-slurm-e0c5a62-r2/default.csv",
        "z3_csv": "results/qf_uflra-cpachecker-induction-slurm-e0c5a62-r2/z3.csv",
        "evidence_status": "local_ignored_outputs_collected_from_slurm"
      },
      "summary": {
        "timeout_seconds": 10,
        "default": {
          "total": 359,
          "solved": 77,
          "sat": 50,
          "unsat": 27,
          "timeout": 282,
          "error": 0,
          "par2": 5692.280078
        },
        "z3": {
          "total": 359,
          "solved": 327,
          "sat": 244,
          "unsat": 83,
          "timeout": 32,
          "error": 0,
          "par2": 870.081973
        },
        "cross_solver_disagreements": 0,
        "solved_only_by_z3": 250,
        "solved_only_by_default": 0,
        "solved_by_nobody": 32,
        "default_key_stats": {
          "lra_theory_checks": 46227,
          "lra_theory_conflicts": 46009,
          "sat_solve_calls": 46243,
          "euf_care_checks": 46224,
          "shared_real_terms": 29901,
          "lra_prepared_reused": 46108,
          "lra_prepared_augmented": 115
        }
      },
      "interpretation": "At the pre-online-LRA mixed baseline, CPAchecker induction is dominated by repeated lazy mixed checks: the default solver performs over 46k SAT solve calls and LRA theory checks across the family and solves only 77/359 at 10 seconds, while Z3 solves 327/359. There are no answer disagreements. This supports focusing follow-up evaluation on the e96dc1b mixed-online-LRA change.",
      "evidence_status": "current"
    },
    {
      "id": "2026-07-31-qf-uflra-cpachecker-fast-z3-local-triage",
      "date": "2026-07-31",
      "kind": "local-performance-triage",
      "scope": "Local investigation of cpachecker-induction-svcomp14 instances where Z3 is very fast and Primo times out or remains much slower. The candidate list came from the collected SLURM baseline comparing default Primo at e0c5a62 with Z3 on the full family.",
      "commit": "9e43e0e on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "local Release build of ./build/primo at current branch tip",
        "reference": "contrib/local/bin/z3"
      },
      "commands": {
        "rank_candidates": "Python csv scan over results/qf_uflra-cpachecker-induction-slurm-e0c5a62-r2/default.csv and z3.csv selecting rows where Z3 status=ok, Z3 seconds <= 1, and Primo status != ok",
        "local_sample_primo": "python3 scripts/bench_qf_uf_full.py --root tmp/QF_UFLRA --manifest /tmp/cpachecker_gap_sample.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --timeout 20 --out results/local-cpachecker-gap-sample-current-primo.csv --summary results/local-cpachecker-gap-sample-current-primo-summary.csv --log-dir results/local-cpachecker-gap-sample-current-primo-logs",
        "local_sample_z3": "python3 scripts/bench_qf_uf_full.py --root tmp/QF_UFLRA --manifest /tmp/cpachecker_gap_sample.txt --solver contrib/local/bin/z3 --timeout 20 --out results/local-cpachecker-gap-sample-z3.csv --summary results/local-cpachecker-gap-sample-z3-summary.csv --log-dir results/local-cpachecker-gap-sample-z3-logs",
        "stack_samples": "timeout -s INT 6s gdb -q -batch -ex run -ex 'thread apply all bt' --args ./build/primo --quiet --stats <instance>",
        "frontend_option_probe": "timeout 8s ./build/primo --quiet --stats --preprocess-only/--qf-uf-preprocess off/basic/strong <test_locks_5>"
      },
      "inputs": {
        "logic": "QF_UFLRA",
        "family": "cpachecker-induction-svcomp14",
        "z3_fast_primo_not_ok_candidates": 191,
        "sample_files": [
          "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2",
          "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_14_false-unreach-call.c.smt2",
          "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.s3_srvr_6_false-unreach-call.cil.c.smt2",
          "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.linear_search_false-unreach-call.i.smt2",
          "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.email_spec3_product18_false-unreach-call.cil.c.smt2",
          "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.m0_false-unreach-call_drivers-staging-comedi-drivers-ni_660x-ko--107_1a--adbbc36-1.c.smt2"
        ]
      },
      "artifacts": {
        "primo_csv": "results/local-cpachecker-gap-sample-current-primo.csv",
        "primo_summary": "results/local-cpachecker-gap-sample-current-primo-summary.csv",
        "z3_csv": "results/local-cpachecker-gap-sample-z3.csv",
        "z3_summary": "results/local-cpachecker-gap-sample-z3-summary.csv",
        "evidence_status": "local_ignored_outputs"
      },
      "summary": {
        "sample_timeout_seconds": 20,
        "primo": {
          "total": 6,
          "solved": 1,
          "sat": 1,
          "timeout": 5,
          "wrong": 0,
          "par2": 206.060254
        },
        "z3": {
          "total": 6,
          "solved": 6,
          "sat": 5,
          "unsat": 1,
          "timeout": 0,
          "wrong": 0,
          "par2": 0.073999
        },
        "representative_findings": {
          "test_locks_5": "Z3 solves unsat in about 10ms locally. Primo times out before frontend/preprocessing stats are populated, including under --preprocess-only and with QF_UF preprocessing disabled. GDB interrupt samples are in TermBuilder::dispatch / schedule_all continuation machinery and Rational::parse/string comparisons. The input is a small CPAchecker define-fun DAG with 232 nullary definitions; current frontend expands nullary definitions at every use and has no memoized definition body result.",
          "test_locks_14_s3_linear_email": "These reach mixed QF_UFLRA solving but time out in final arrangement/equality handling. Representative counters: one final arrangement check, model-separation-search-capped=1, and thousands to 20k model-separation candidates despite small parse/preprocess time.",
          "email_spec3_product18": "GDB interrupt samples are in PreparedLraTheory construction called from lra_assignment_conflicts_with_extra_atom through lra_implied_real_equalities. With 204 shared Real terms, the current algorithm tests every pair by adding strict orientations and rebuilding LRA state, producing about 20k candidate pairs and potentially about 40k full LRA preparations.",
          "m0_driver_case": "Current Primo solves sat in 6.06s locally while Z3 solves in about 9ms; it has the same final-arrangement pattern but only 968 separation candidates."
        }
      },
      "interpretation": "The fast-Z3 CPAchecker gaps are not one issue. First, some small UNSAT test_locks rows expose frontend expansion of SMT-LIB define-fun DAGs: memoizing nullary definition expansion or storing typed definition results should be investigated before theory tuning. Second, many SAT rows are dominated by model-guided arrangement work: lra_implied_real_equalities and final model separation rebuild full LRA theories for large numbers of shared Real pairs. The next implementation targets should be definition-expansion memoization and an incremental or model-based LRA equality/separation check that avoids per-pair full PreparedLraTheory rebuilds.",
      "evidence_status": "current"
    },
    {
      "id": "2026-07-31-define-fun-nullary-memoization-profile-and-fuzz",
      "date": "2026-07-31",
      "kind": "implementation-verification",
      "scope": "Nullary SMT-LIB define-fun expansion memoization in the SMT frontend, motivated by CPAchecker QF_UFLRA macro DAG instances where Primo was stuck in TermBuilder before producing frontend/preprocessing stats.",
      "commit": "773121a-dirty on nelson-oppen-closure-methods; source/docs/tests/script committed adjacent to this run-log entry",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "./build/primo Release build; ./build-gprof/primo RelWithDebInfo -pg profiling build with PRIMO_WARNINGS_AS_ERRORS=OFF",
        "reference": "contrib/local/bin/z3 (Z3 version 5.0.0)"
      },
      "commands": {
        "gprof_build": "cmake -S . -B build-gprof -DCMAKE_BUILD_TYPE=RelWithDebInfo -DPRIMO_WARNINGS_AS_ERRORS=OFF -DCMAKE_PREFIX_PATH=/workspace/contrib/local -DCMAKE_CXX_FLAGS=\"-pg -fno-omit-frame-pointer\" -DCMAKE_EXE_LINKER_FLAGS=-pg && cmake --build build-gprof --target primo -j2",
        "before_callgrind": "timeout 8s valgrind --tool=callgrind --callgrind-out-file=results/profiling/callgrind.test_locks_5.before.out ./build/primo --stats tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2",
        "after_target_run": "timeout 20s ./build/primo --stats tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2 > results/profiling/test_locks_5.after.stdout 2> results/profiling/test_locks_5.after.stderr",
        "after_gprof": "cd results/profiling/gprof-after-final && /workspace/build-gprof/primo --stats /workspace/tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2 && gprof /workspace/build-gprof/primo gmon.out > test_locks_5.gprof.txt",
        "after_callgrind": "timeout 15s valgrind --tool=callgrind --callgrind-out-file=results/profiling/callgrind.test_locks_5.after-final.out ./build/primo --stats tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2",
        "local_sample": "python3 scripts/bench_qf_uf_full.py --repo /workspace --root tmp/QF_UFLRA --manifest /tmp/cpachecker_gap_sample.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --timeout 20 --out results/local-cpachecker-gap-sample-current-primo-after-memo.csv --summary results/local-cpachecker-gap-sample-current-primo-after-memo-summary.csv --log-dir results/local-cpachecker-gap-sample-current-primo-after-memo-logs",
        "fuzz": "python3 scripts/define_fun_macro_fuzz.py --solver ./build/primo --solver-arg=--quiet --ref contrib/local/bin/z3 --count 1000 --seed 20260731 --timeout 5 --out fuzz-results/define-fun-macro-memo-20260731-z3",
        "verification": "make check; make docs; make asan-test; clang-tidy -p build src/smt/check_sat.cpp tests/unit/boolean_solver_tests.cpp; clang-tidy -p build -checks=\"-*,misc-include-cleaner\" src/smt/check_sat.cpp tests/unit/boolean_solver_tests.cpp; whole-tree clang-tidy -p build over 63 tracked non-generated .cpp files; make lint; git diff --check; python3 -m json.tool docs/run-log.json"
      },
      "inputs": {
        "representative_instance": "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2",
        "local_sample_manifest": "/tmp/cpachecker_gap_sample.txt from the preceding triage entry",
        "fuzz_generator": "scripts/define_fun_macro_fuzz.py",
        "fuzz_seed": 20260731,
        "fuzz_count": 1000,
        "fuzz_timeout_seconds": 5
      },
      "artifacts": {
        "profiling_dir": "results/profiling/",
        "before_callgrind": "results/profiling/callgrind.test_locks_5.before.out",
        "after_callgrind": "results/profiling/callgrind.test_locks_5.after-final.out",
        "after_gprof": "results/profiling/gprof-after-final/test_locks_5.gprof.txt",
        "after_target_stdout": "results/profiling/test_locks_5.after.stdout",
        "after_target_stderr": "results/profiling/test_locks_5.after.stderr",
        "local_sample_csv": "results/local-cpachecker-gap-sample-current-primo-after-memo.csv",
        "local_sample_summary": "results/local-cpachecker-gap-sample-current-primo-after-memo-summary.csv",
        "fuzz_summary": "fuzz-results/define-fun-macro-memo-20260731-z3/summary.csv",
        "evidence_status": "local_ignored_outputs"
      },
      "summary": {
        "implementation": {
          "cache_scope": "Zero-argument define-fun bodies are memoized only when there is no active non-empty let or macro-parameter binding scope; parameterized macro applications are still rebuilt per application.",
          "stats_added": [
            ":frontend.define-fun.nullary-cache-hits",
            ":frontend.define-fun.nullary-cache-misses",
            ":frontend.define-fun.nullary-cache-entries"
          ]
        },
        "profiling": {
          "before_callgrind_timeout_seconds": 8,
          "before_top_costs": "TermBuilder::dispatch 16.90%, dispatch_instantiate_definition 3.52%, schedule/resume/schedule_all continuation machinery, string/hash work, and Rational::parse 1.25% in the timeout sample.",
          "profiling_build_note": "The first -pg RelWithDebInfo build with warnings-as-errors hit GCC inlined STL diagnostics in preprocessing.cpp. Rebuilding with PRIMO_WARNINGS_AS_ERRORS=OFF was used only for profiling.",
          "after_target": "unsat in 4.257858s wall-clock via direct run; stats: parse 437us, frontend 391us, preprocessing 3797063us, solve 139955us, cache hits 143, misses 232, entries 232.",
          "after_gprof_top": "TermManager::get, simplify_with_boolean_units, IncrementalCongruenceClosure::add_term, purify_mixed_formula, simplify_with_congruence; TermBuilder expansion no longer appears as a top self-time cost.",
          "after_callgrind_top": "simplify_with_boolean_units 21.24%, vector copy 11.72%, mk_and 5.04%, TermManager hashing/get/intern; TermBuilder expansion no longer appears in the shown top costs."
        },
        "local_sample": {
          "timeout_seconds": 20,
          "before_from_previous_entry": {
            "total": 6,
            "solved": 1,
            "timeout": 5,
            "wrong": 0,
            "par2": 206.060254
          },
          "after": {
            "total": 6,
            "solved": 2,
            "sat": 1,
            "unsat": 1,
            "timeout": 4,
            "wrong": 0,
            "par2": 169.240034
          },
          "after_define_fun_cache_totals": {
            "hits": 755,
            "misses": 2123,
            "entries": 2123
          }
        },
        "fuzz": {
          "total": 1000,
          "pass": 1000,
          "wrong": 0,
          "crash": 0,
          "timeout": 0,
          "unsupported": 0,
          "reference_unusable": 0
        }
      },
      "interpretation": "The memoization addresses the specific frontend expansion pathology found in test_locks_5 and turns that row from timeout into a solved UNSAT case. It is deliberately not an aggressive inliner: cache size is bounded by nullary definitions, and active binding scopes disable reuse. The broader CPAchecker gap remains dominated by preprocessing and mixed-theory arrangement/model-separation costs, not by macro expansion.",
      "evidence_status": "current"
    },
    {
      "id": "2026-08-01-cpachecker-preprocessing-traversal-profile-and-fuzz",
      "date": "2026-08-01",
      "kind": "implementation-verification",
      "scope": "Profiler-guided follow-up on CPAchecker QF_UFLRA preprocessing overhead after nullary define-fun memoization. Changes skip Boolean-unit rewriting when there are no Boolean-unit facts, memoize exact candidate-variable occurrence multisets for solved-constant substitution accounting, memoize final formula feature classification, and preserve QF_LRA model construction when preprocessing removes all arithmetic atoms.",
      "commit": "451e586-dirty on nelson-oppen-closure-methods; source/docs/tests committed adjacent to this run-log entry",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "./build/primo Release build; ./build-gprof/primo RelWithDebInfo -pg profiling build with PRIMO_WARNINGS_AS_ERRORS=OFF",
        "reference": "contrib/local/bin/z3 (Z3 version 5.0.0)"
      },
      "commands": {
        "representative_before_direct_after_nullary_memo": "timeout 20s ./build/primo --quiet --stats tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2",
        "before_callgrind": "timeout 15s valgrind --tool=callgrind --callgrind-out-file=results/profiling/callgrind.test_locks_5.next-before.out ./build/primo --quiet --stats tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2",
        "before_gprof": "build-gprof/primo --quiet --stats tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2; gprof build-gprof/primo gmon.out > results/profiling/gprof-next-before/gprof.txt",
        "after_direct": "timeout 20s /workspace/build/primo --quiet --stats /workspace/tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2 > /workspace/results/profiling/test_locks_5.final-candidate-memo-after.stdout 2> /workspace/results/profiling/test_locks_5.final-candidate-memo-after.stderr",
        "after_gprof": "cd results/profiling/gprof-feature-memo-after && timeout 20s /workspace/build-gprof/primo --quiet --stats /workspace/tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2 && gprof /workspace/build-gprof/primo gmon.out > gprof.txt",
        "after_callgrind": "timeout 15s valgrind --tool=callgrind --callgrind-out-file=results/profiling/callgrind.test_locks_5.feature-memo-after.out /workspace/build/primo --quiet --stats /workspace/tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2",
        "local_sample": "python3 scripts/bench_qf_uf_full.py --repo /workspace --root tmp/QF_UFLRA --manifest /tmp/cpachecker_gap_sample.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --timeout 20 --out results/local-cpachecker-gap-sample-current-primo-after-preproc-noop-occurrence.csv --summary results/local-cpachecker-gap-sample-current-primo-after-preproc-noop-occurrence-summary.csv --log-dir results/local-cpachecker-gap-sample-current-primo-after-preproc-noop-occurrence-logs",
        "qf_uflra_fuzz": "python3 scripts/qf_uflra_smoke_fuzz.py --solver /workspace/build/primo --solver-arg=--quiet --ref contrib/local/bin/z3 --count 1000 --seed 20260801 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-preproc-feature-memo-final-20260801-ok",
        "define_fun_fuzz": "python3 scripts/define_fun_macro_fuzz.py --solver /workspace/build/primo --solver-arg=--quiet --ref contrib/local/bin/z3 --count 1000 --seed 20260801 --timeout 5 --out fuzz-results/define-fun-macro-preproc-feature-memo-final-20260801-ok",
        "verification": "cmake --build build --target primo_qf_lra_solver_tests primo_preprocessing_tests primo -j2 && (cd build && ./primo_qf_lra_solver_tests && ./primo_preprocessing_tests); make check; make asan-test; make lint; make docs; clang-tidy -p build src/smt/preprocessing.cpp src/smt/check_sat.cpp tests/unit/preprocessing_tests.cpp; clang-tidy -p build -checks='-*,misc-include-cleaner' src/smt/preprocessing.cpp src/smt/check_sat.cpp tests/unit/preprocessing_tests.cpp; git diff --check; python3 -m json.tool docs/run-log.json"
      },
      "inputs": {
        "representative_instance": "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2",
        "local_sample_manifest": "/tmp/cpachecker_gap_sample.txt from 2026-07-31 CPAchecker gap triage",
        "fuzz_seed": 20260801,
        "fuzz_count_each": 1000,
        "fuzz_timeout_seconds": 5
      },
      "artifacts": {
        "profiling_dir": "results/profiling/",
        "before_callgrind": "results/profiling/callgrind.test_locks_5.next-before.out",
        "before_gprof": "results/profiling/gprof-next-before/gprof.txt",
        "after_callgrind": "results/profiling/callgrind.test_locks_5.feature-memo-after.out",
        "after_gprof": "results/profiling/gprof-feature-memo-after/gprof.txt",
        "after_target_stdout": "results/profiling/test_locks_5.final-candidate-memo-after.stdout",
        "after_target_stderr": "results/profiling/test_locks_5.final-candidate-memo-after.stderr",
        "local_sample_csv": "results/local-cpachecker-gap-sample-current-primo-after-preproc-noop-occurrence.csv",
        "local_sample_summary": "results/local-cpachecker-gap-sample-current-primo-after-preproc-noop-occurrence-summary.csv",
        "qf_uflra_fuzz_summary": "fuzz-results/qf_uflra-preproc-feature-memo-final-20260801-ok/summary.csv",
        "define_fun_fuzz_summary": "fuzz-results/define-fun-macro-preproc-feature-memo-final-20260801-ok/summary.csv",
        "evidence_status": "local_ignored_outputs"
      },
      "summary": {
        "representative_direct": {
          "before_after_nullary_memo": "unsat in about 4.91s; parse 443us, frontend 390us, preprocessing 4375824us, solve 162600us.",
          "after_boolean_noop": "unsat in about 2.62s; preprocessing 2037785us.",
          "after_occurrence_memo": "unsat in about 2.42s; preprocessing 1849650us.",
          "after_final": "unsat in 1.931333s; parse 457us, frontend 407us, preprocessing 1767510us, solve 162902us."
        },
        "profiling": {
          "before_callgrind_top": "simplify_with_boolean_units 21.22%, vector copy 11.71%, mk_and 5.04% after nullary define-fun memoization.",
          "before_gprof_top": "TermManager::get 11.76%, simplify_with_boolean_units 8.33%, purify_mixed_formula 7.35%, purify_arithmetic_term, simplify_with_congruence.",
          "after_gprof_top": "purify_mixed_formula 18.82%, TermManager::get 10.59%, IncrementalCongruenceClosure::add_term 9.41%, purify_arithmetic_term 7.06%, simplify_with_congruence 5.88%.",
          "after_callgrind_top": "The 15s callgrind run timed out under instrumentation but recorded a partial profile with IncrementalCongruenceClosure::add_term at 22.45% of sampled instructions."
        },
        "local_sample": {
          "timeout_seconds": 20,
          "after": {
            "total": 6,
            "solved": 2,
            "sat": 1,
            "unsat": 1,
            "timeout": 4,
            "wrong": 0,
            "par2": 167.71128
          },
          "previous_after_nullary_memo": {
            "total": 6,
            "solved": 2,
            "timeout": 4,
            "wrong": 0,
            "par2": 169.240034
          }
        },
        "fuzz": {
          "qf_uflra_mixed": {
            "total": 1000,
            "pass": 1000,
            "wrong": 0,
            "crash": 0,
            "timeout": 0,
            "unsupported": 0
          },
          "define_fun_macro": {
            "total": 1000,
            "pass": 1000,
            "wrong": 0,
            "crash": 0,
            "timeout": 0,
            "unsupported": 0
          }
        }
      },
      "interpretation": "The next profiler-backed inefficiency after nullary macro memoization was avoidable preprocessing traversal. The accepted fixes reduce the representative UNSAT row from about 4.91s to about 1.93s locally, without changing the six-row solved count. The remaining CPAchecker sample timeouts are now dominated by mixed-theory purification, congruence registration, and Nelson-Oppen/model-separation work; parsing and SMT-LIB macro expansion are no longer the limiting phase on this representative row.",
      "evidence_status": "current"
    },
    {
      "id": "2026-08-01-cpachecker-purification-unit-polarity-profile",
      "date": "2026-08-01",
      "kind": "implementation-verification",
      "scope": "Profiler-guided follow-up on the next local CPAchecker QF_UFLRA bottlenecks after preprocessing traversal cleanup. Changes skip mixed purification when no purification sites exist, avoid recursive unit-equality work when no useful unit-equality query exists, memoize unit-equality simplification over hash-consed subterms, and memoize BooleanClausifier theory-atom polarity traversal by TermId and polarity.",
      "commit": "5ab2d16-dirty on nelson-oppen-closure-methods; source/docs/tests to be committed adjacent to this run-log entry",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "./build/primo Release build; ./build-gprof/primo RelWithDebInfo -pg profiling build with PRIMO_WARNINGS_AS_ERRORS=OFF"
      },
      "commands": {
        "after_direct_pre_polarity_memo": "timeout 20s /workspace/build/primo --quiet --stats /workspace/tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2 > /workspace/results/profiling/test_locks_5.purification-unit-guards-final.stdout 2> /workspace/results/profiling/test_locks_5.purification-unit-guards-final.stderr",
        "after_direct_final": "timeout 20s /workspace/build/primo --quiet --stats /workspace/tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2 > /workspace/results/profiling/test_locks_5.polarity-memo-final2.stdout 2> /workspace/results/profiling/test_locks_5.polarity-memo-final2.stderr",
        "after_gprof": "cmake --build build-gprof --target primo -j2 && cd results/profiling/gprof-polarity-memo-after && timeout 20s /workspace/build-gprof/primo --quiet --stats /workspace/tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2 > stdout.txt 2> stderr.txt && gprof /workspace/build-gprof/primo gmon.out > gprof.txt",
        "after_callgrind": "timeout 15s valgrind --tool=callgrind --callgrind-out-file=results/profiling/callgrind.test_locks_5.polarity-memo-final2.out /workspace/build/primo --quiet --stats /workspace/tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2 > results/profiling/test_locks_5.polarity-memo-final2-callgrind.stdout 2> results/profiling/test_locks_5.polarity-memo-final2-callgrind.stderr",
        "local_sample": "python3 scripts/bench_qf_uf_full.py --repo /workspace --root tmp/QF_UFLRA --manifest /tmp/cpachecker_gap_sample.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --timeout 20 --out results/local-cpachecker-gap-sample-current-primo-after-purification-unit-polarity.csv --summary results/local-cpachecker-gap-sample-current-primo-after-purification-unit-polarity-summary.csv --log-dir results/local-cpachecker-gap-sample-current-primo-after-purification-unit-polarity-logs",
        "focused_verification": "cmake --build build --target primo primo_qf_lra_solver_tests primo_preprocessing_tests -j2 && (cd build && ./primo_qf_lra_solver_tests && ./primo_preprocessing_tests)",
        "fuzz_qf_uflra_final": "python3 scripts/qf_uflra_smoke_fuzz.py --solver /workspace/build/primo --solver-arg=--quiet --ref contrib/local/bin/z3 --count 1000 --seed 20260802 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-purification-unit-polarity-final3-20260801",
        "fuzz_define_fun_final": "python3 scripts/define_fun_macro_fuzz.py --solver /workspace/build/primo --solver-arg=--quiet --ref contrib/local/bin/z3 --count 1000 --seed 20260802 --timeout 5 --out fuzz-results/define-fun-macro-purification-unit-polarity-final2-20260801"
      },
      "inputs": {
        "representative_instance": "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2",
        "local_sample_manifest": "/tmp/cpachecker_gap_sample.txt from 2026-07-31 CPAchecker gap triage",
        "timeout_seconds": 20
      },
      "artifacts": {
        "profiling_dir": "results/profiling/",
        "after_direct_stdout": "results/profiling/test_locks_5.polarity-memo-final2.stdout",
        "after_direct_stderr": "results/profiling/test_locks_5.polarity-memo-final2.stderr",
        "after_gprof": "results/profiling/gprof-polarity-memo-after/gprof.txt",
        "after_callgrind": "results/profiling/callgrind.test_locks_5.polarity-memo-final2.out",
        "local_sample_csv": "results/local-cpachecker-gap-sample-current-primo-after-purification-unit-polarity.csv",
        "local_sample_summary": "results/local-cpachecker-gap-sample-current-primo-after-purification-unit-polarity-summary.csv",
        "fuzz_qf_uflra_summary": "fuzz-results/qf_uflra-purification-unit-polarity-final3-20260801/summary.csv",
        "fuzz_define_fun_summary": "fuzz-results/define-fun-macro-purification-unit-polarity-final2-20260801/summary.csv",
        "evidence_status": "local_ignored_outputs"
      },
      "summary": {
        "representative_direct": {
          "before_this_entry": "unsat in 1.931333s; preprocessing 1767510us; solve 162902us after commit 5ab2d16.",
          "after_purification_and_unit_guards": "unsat in 0.145365s; preprocessing 148us; solve 144409us; :no.purification.skipped-no-sites 1.",
          "after_polarity_memo": "unsat in 0.005444s; preprocessing 139us; solve 4500us; SAT vars 190 and clauses 399 unchanged from the pre-polarity-memo direct run."
        },
        "profiling": {
          "pre_polarity_memo_callgrind_instructions": 2313376947,
          "post_polarity_memo_callgrind_instructions": 49392732,
          "post_polarity_memo_callgrind_top": "kitten_solve 16.70%, allocator/CaDiCaL import/sweep costs next; BooleanClausifier::collect_theory_atom_polarities and purify_mixed_formula no longer appear in the shown top costs.",
          "post_polarity_memo_gprof": "The run was too short for sampled self-time; call counts show TermManager::get down to 2971 calls, with no accumulated time."
        },
        "fuzz": {
          "qf_uflra_mixed": {
            "count": 1000,
            "seed": 20260802,
            "timeout_seconds": 5,
            "reference": "contrib/local/bin/z3",
            "pass": 1000,
            "wrong_answer": 0,
            "crash": 0,
            "unsupported": 0,
            "timeout": 0
          },
          "define_fun_macro": {
            "count": 1000,
            "seed": 20260802,
            "timeout_seconds": 5,
            "reference": "contrib/local/bin/z3",
            "pass": 1000,
            "wrong_answer": 0,
            "crash": 0,
            "unsupported": 0,
            "timeout": 0,
            "regression_found_and_fixed": "A pre-final run reported one UNSUPPORTED_INPUT on case-0833 due to solved-constant rewriting reading an invalidated Term reference after recursive interning; the final run passes the same case and the full 1000-case gate."
          }
        },
        "local_sample": {
          "total": 6,
          "solved": 2,
          "sat": 1,
          "unsat": 1,
          "timeout": 4,
          "wrong": 0,
          "par2": 166.049061,
          "previous_after_preprocessing_traversal_fix_par2": 167.71128
        }
      },
      "interpretation": "The addressed bottlenecks were pure overhead on the representative CPAchecker row: no mixed purification sites existed, no unit-equality consequences existed, and theory-atom polarity collection repeatedly traversed the same hash-consed formula. The row moves from about 1.93s at 5ab2d16 to about 5ms locally, and Callgrind instruction count drops by roughly 47x after the polarity memo. The six-row local sample still solves only 2/6 at 20s, so this is a targeted overhead cleanup rather than a broad CPAchecker solution; remaining timeouts are now in real mixed-theory search/model-separation work.",
      "evidence_status": "current"
    },
    {
      "id": "2026-08-01-cpachecker-gap-sample-db1baca",
      "date": "2026-08-01",
      "kind": "benchmark",
      "scope": "Post-commit local rerun of the six-instance CPAchecker QF_UFLRA representative gap sample after db1baca.",
      "commit": "db1baca on nelson-oppen-closure-methods",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "./build/primo Release build reporting git db1baca; CaDiCaL cadical-3.0.0-7b99c07"
      },
      "commands": {
        "build": "cmake --build build --target primo -j2 && ./build/primo --version",
        "sample": "python3 scripts/bench_qf_uf_full.py --repo /workspace --root tmp/QF_UFLRA --manifest /tmp/cpachecker_gap_sample.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --timeout 20 --out results/local-cpachecker-gap-sample-db1baca.csv --summary results/local-cpachecker-gap-sample-db1baca-summary.csv --log-dir results/local-cpachecker-gap-sample-db1baca-logs"
      },
      "inputs": {
        "benchmark_root": "tmp/QF_UFLRA",
        "manifest": "/tmp/cpachecker_gap_sample.txt",
        "timeout_seconds": 20,
        "instances": 6
      },
      "artifacts": {
        "csv": "results/local-cpachecker-gap-sample-db1baca.csv",
        "summary": "results/local-cpachecker-gap-sample-db1baca-summary.csv",
        "z3_csv": "results/local-cpachecker-gap-sample-z3-20260801.csv",
        "z3_summary": "results/local-cpachecker-gap-sample-z3-20260801-summary.csv",
        "logs": "results/local-cpachecker-gap-sample-db1baca-logs/",
        "z3_logs": "results/local-cpachecker-gap-sample-z3-20260801-logs/",
        "evidence_status": "local_ignored_outputs"
      },
      "summary": {
        "total": 6,
        "solved": 2,
        "sat": 1,
        "unsat": 1,
        "timeout": 4,
        "unsupported": 0,
        "wrong": 0,
        "timed_out_with_stats": 4,
        "par2": 166.113644,
        "family": {
          "cpachecker-induction-svcomp14": {
            "total": 6,
            "solved": 2,
            "timeout": 4,
            "wrong": 0
          }
        },
        "rows": [
          {
            "file": "cpachecker-induction.test_locks_5_true-unreach-call_false-termination.c.smt2",
            "status": "ok",
            "answer": "unsat",
            "seconds": 0.006628,
            "time_total_us": 4551,
            "time_solve_us": 3850,
            "no_purification_skipped_no_sites": 1
          },
          {
            "file": "cpachecker-induction.test_locks_14_false-unreach-call.c.smt2",
            "status": "timeout",
            "answer": "unknown",
            "seconds": 20.021603,
            "parse_frontend_preprocess_us": 1829
          },
          {
            "file": "cpachecker-induction.s3_srvr_6_false-unreach-call.cil.c.smt2",
            "status": "timeout",
            "answer": "unknown",
            "seconds": 20.023224,
            "parse_frontend_preprocess_us": 1519
          },
          {
            "file": "cpachecker-induction.linear_search_false-unreach-call.i.smt2",
            "status": "timeout",
            "answer": "unknown",
            "seconds": 20.026188,
            "parse_frontend_preprocess_us": 1543
          },
          {
            "file": "cpachecker-induction.email_spec3_product18_false-unreach-call.cil.c.smt2",
            "status": "timeout",
            "answer": "unknown",
            "seconds": 20.022102,
            "parse_frontend_preprocess_us": 7188
          },
          {
            "file": "cpachecker-induction.m0_false-unreach-call_drivers-staging-comedi-drivers-ni_660x-ko--107_1a--adbbc36-1.c.smt2",
            "status": "ok",
            "answer": "sat",
            "seconds": 6.107016,
            "time_total_us": 6103773,
            "time_solve_us": 6102518
          }
        ],
        "notable_stat_totals": {
          "no_interface_model_separation_candidates": 29337,
          "no_interface_model_separation_search_capped": 5,
          "no_interface_arrangement_separations": 968,
          "no_interface_equalities_propagated": 695,
          "no_purification_skipped_no_sites": 1
        },
        "z3": {
          "command": "python3 scripts/bench_qf_uf_full.py --repo /workspace --root tmp/QF_UFLRA --manifest /tmp/cpachecker_gap_sample.txt --solver contrib/local/bin/z3 --timeout 20 --out results/local-cpachecker-gap-sample-z3-20260801.csv --summary results/local-cpachecker-gap-sample-z3-20260801-summary.csv --log-dir results/local-cpachecker-gap-sample-z3-20260801-logs",
          "version": "Z3 version 5.0.0 - 64 bit",
          "solved": 6,
          "timeout": 0,
          "wrong": 0,
          "par2": 0.068904,
          "row_seconds": {
            "test_locks_5": 0.009238,
            "test_locks_14": 0.010273,
            "s3_srvr_6": 0.00988,
            "linear_search": 0.0109,
            "email_spec3_product18": 0.020095,
            "m0": 0.008518
          }
        }
      },
      "interpretation": "The committed overhead fixes hold on the representative row, but the sample still solves 2/6 with four 20s timeouts. Parsing/frontend/preprocessing are small on the timeout rows; remaining work is in QF_UFLRA solve/search, especially model-separation/arrangement behavior rather than parser or preprocessing overhead. A same-manifest Z3 5.0.0 local run solves all six in 0.0085s-0.0201s, so the remaining rows are true fast-reference gaps.",
      "evidence_status": "current"
    },
    {
      "id": "2026-08-01-qf-uflra-model-equality-active-trail-local-fuzz",
      "date": "2026-08-01",
      "kind": "fuzz",
      "commit": "ba889e6-dirty on nelson-oppen-closure-methods",
      "scope": "Local correctness gate for changing default-off QF_UFLRA model-equality branching from one-shot assumptions to an active SAT-assumption trail over surviving LRA-model-equal shared Real equality guesses.",
      "commands": {
        "focused_unit": "cmake --build build --target primo_qf_lra_solver_tests -j2 && ./build/primo_qf_lra_solver_tests",
        "check": "make check",
        "docs": "make docs",
        "fuzz_bad_reference_attempt": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--model-equality-branching --ref z3 --count 1000 --seed 20260801 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-model-equality-active-trail-1000",
        "fuzz": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--model-equality-branching --ref contrib/local/bin/z3 --count 1000 --seed 20260801 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-model-equality-active-trail-1000-z3"
      },
      "environment": {
        "host": "local workspace",
        "logic": "QF_UFLRA",
        "generator": "scripts/qf_uflra_smoke_fuzz.py",
        "shape": "mixed",
        "seed": 20260801,
        "count": 1000,
        "timeout_seconds": 5,
        "reference": "contrib/local/bin/z3"
      },
      "artifacts": {
        "summary_csv": "fuzz-results/qf_uflra-model-equality-active-trail-1000-z3/summary.csv",
        "cases_dir": "fuzz-results/qf_uflra-model-equality-active-trail-1000-z3/cases",
        "bad_reference_summary_csv": "fuzz-results/qf_uflra-model-equality-active-trail-1000/summary.csv"
      },
      "summary": {
        "pass": 1000,
        "wrong_answer": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "reference_unusable_attempt": 1000
      },
      "interpretation": "The corrected Z3-backed local smoke gate found no answer disagreements, crashes, timeouts, or unsupported generated cases. The first attempt used bare `z3`, which was not on PATH in this shell and produced only REFERENCE_UNUSABLE rows; it is recorded as an unusable attempt, not correctness evidence.",
      "evidence_status": "current"
    },
    {
      "id": "2026-07-30-qf-lra-post-h7-gap-profiling",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "profiling",
      "scope": "Local profiling pass locating the remaining QF_LRA gap against z3 after H7 shipped opt-in. Recorded in docs/qf-lra-heuristics.md section 6. Profiling evidence for a design decision, not a benchmark claim.",
      "commit": "53eb45e",
      "environment": {
        "type": "workstation",
        "host": "local",
        "binary": "build/primo --quiet --stats (Release); contrib/local/bin/z3 -st",
        "notes": "Wall-clock on this workstation was unreliable during this session (an unmodified binary timed 1.63s / 2.45s / 4.48s on the same input; load average 7.46 on 14 cores from outside the sandbox). Only counters are cited, never times."
      },
      "command": {
        "census": "throwaway instrumentation in publish_lra_tableau_shape_stats printing a row-length histogram and a count of literal x-y=c rows; measured, then reverted, not committed",
        "pricing_sweep": "throwaway env override of kSparsePricingCandidateLimit, values 16/64/256/1000000 on scrambled312090; reverted",
        "comparison": "z3 -st and primo --quiet --stats on the p10/p25/p50/p75 instances of the band by z3 solve time"
      },
      "benchmark": {
        "suite": "4 instances sampled by z3-time quartile from the 59 gap files in the 500KB-5MB band",
        "logic": "QF_LRA",
        "timeout_seconds": 60
      },
      "summary": {
        "gap_localisation": "76 gap files: 59 in 500KB-5MB, 8 in 50-500KB, 7 above 5MB, 2 below 50KB. cvc5 solves only 9 of the 59, so this is a z3-specific strength rather than general difficulty. z3's median time on them is 25.0s of 60s (min 1.7, max 56.2), so a longer competition timeout would likely recover many of them.",
        "fill_in_decomposition": "lra.pivot-row-updates / lra.pivot-term-ops decompose a pivot into its two Markowitz factors. Rows rewritten per pivot and terms merged per rewrite, against nonzeros/row in the prepared tableau: scrambled228965 359 / 31.2 vs 5.80; scrambled15659 26 / 21.7 vs 4.10; scrambled312090 521 / 91.1 vs 5.25; scrambled180721 35 / 44.4 vs 4.53. Rows densify 5-17x during search while entering columns reach hundreds of rows, so one pivot on scrambled312090 costs ~47,000 rational operations and the instance spends 60s on 3,904 of them. scrambled312090 has 0 conflicts and 7,555 decisions -- the SAT search is not thrashing, the time is all in the tableau.",
        "ruled_out_pricing_cap": "kSparsePricingCandidateLimit is not the bottleneck. Per-pivot term-ops on scrambled312090 at limits 16/64/256/1000000: 51,738 / 52,428 / 46,833 / 47,312 -- flat across a 60,000x range. When every eligible candidate occurs in hundreds of rows there is no cheaper choice to find; H3 prices the pivot correctly, the cheapest available pivot is simply expensive.",
        "z3_counters": "arith-offset-eqs dominates: 139,942 / 259,413 / 1,100,682 on the three profiled instances, against arith-fixed-eqs 45,068 / 158,312 / 373,175. But a row-shape census of the prepared tableau finds only 175 / 2,267 / 1,844 rows of literal x-y=c shape (3.4% / 15% / 7.6%), so z3 derives these DYNAMICALLY during search rather than syntactically up front. Any Primo equivalent is a search-time mechanism, materially bigger than H7."
      },
      "verification": {
        "instrumentation_reverted": "Both throwaway patches (shape census, pricing-limit override) were reverted; git status clean and the tree builds with 0 errors afterwards.",
        "sampling_method": "Instances chosen by z3-time quartile across the band, explicitly to avoid the instance-selection bias recorded in the H7 entry."
      },
      "evidence_status": "current",
      "followups": "Three candidate directions recorded in docs/qf-lra-heuristics.md section 6.5, unranked and untested: (1) attack fill-in directly via periodic refactorization from the original rows -- the measured 5-17x densification is the headroom; (2) dynamic offset-equality detection matching z3's dominant counter; (3) evaluate the existing opt-in row-based bound propagation on this band, which has never been tried there. A falsifier for the whole diagnosis is stated in the note."
    },
    {
      "id": "2026-07-30-qf-lra-midband-gap-600s",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "benchmark",
      "scope": "Separates 'Primo cannot solve the mid-band gap files' from 'Primo is a constant factor too slow' by re-running exactly the 59 files of benchmarks/qf-lra-scrambled-midband-gap.txt at 600s instead of 60s. That band holds the entire 56-file deficit against z3 (docs/qf-lra-heuristics.md section 6).",
      "commit": "01d0a93",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "build-slurm-rel/primo --quiet [--lra-fixed-elimination] (remote Release)"
      },
      "command": {
        "run": "sbatch --array=0-39 --job-name=primo-lra-midband-600 --export=ALL,'PRIMO_COMPARE_SOLVERS=primo=...;primoh7=... --lra-fixed-elimination',PRIMO_COMPARE_MANIFEST=benchmarks/qf-lra-scrambled-midband-gap.txt,PRIMO_COMPARE_TIMEOUT=600 scripts/slurm_qf_lra_scrambled_compare.sbatch",
        "analysis": "python3 scripts/compare_solver_answers.py results/qf-lra-midband-600s --timeout 600"
      },
      "benchmark": {
        "suite": "benchmarks/qf-lra-scrambled-midband-gap.txt (59 files)",
        "logic": "QF_LRA",
        "timeout_seconds": 600
      },
      "job_id": "117631 (all 40 tasks COMPLETED, 40 shard CSVs present)",
      "artifacts": {
        "results": "results/qf-lra-midband-600s (fetched)"
      },
      "summary": {
        "headline": "Primo solves 45 of 59 at 600s, against 0 of 59 at 60s by construction. The band is a constant-factor problem, not a capability wall; only 8 files resist both configurations.",
        "the_factor_is_small": "Time on the 45 solved: min 64s, p25 114s, median 167s, p75 275s, max 563s. Against a 60s budget that is a median 2.8x, p75 4.6x, worst 9.4x. Files recovered at 60s per speedup achieved: 2x -> 15, 3x -> 24, 5x -> 37, 10x -> 45. The payoff is close to linear, with no threshold to clear first -- this is the number future work on this band should be calibrated against.",
        "vs_z3": "Over the 45 both solve, primo(600s)/z3(60s) time ratio is median 6.6x, p90 31.6x, max 100x.",
        "residue": "14 files do not solve even at 600s -- about a quarter of the band -- and are the genuine capability part. They should not be conflated with the rest when judging a mechanism.",
        "h7_at_longer_budget": "H7 solves 41 against the default's 45 (+6/-10 churn), so it does not convert at a longer budget either. Independent confirmation that shipping it opt-in was correct, from a run where the 60s cliff cannot be the explanation.",
        "soundness": "Zero cross-solver disagreements between the two configurations."
      },
      "verification": {
        "completeness": "sacct reports 80 COMPLETED for job 117631 and all 40 shard CSVs are present; checked before analysis, per the truncated-shard precedent.",
        "reference_not_rerun": "z3 was deliberately not re-run: it solves all 59 by construction of the gap set."
      },
      "evidence_status": "current",
      "followups": "Calibrates docs/qf-lra-heuristics.md section 6.5's candidate directions: a 3x is worth 24 files and a 5x is worth 37, so periodic refactorization (measured 5-17x densification headroom) is worth attempting on its own merits without needing to reach z3 parity."
    },
    {
      "id": "2026-07-30-qf-lra-refactorization-literature-check",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "literature",
      "scope": "Literature check on the top candidate direction from docs/qf-lra-heuristics.md section 6.5 (periodic refactorization to discard accumulated tableau fill-in) before any implementation. Result: the proposal is retracted as mathematically void for Primo's representation, and a separate correction to item H3's prior-art framing was found along the way.",
      "commit": "f04806e",
      "environment": {
        "type": "workstation",
        "host": "local",
        "binary": "n/a -- reading only"
      },
      "command": {
        "sources": "Tim King, 'Effective Algorithms for the Satisfiability of Quantifier-Free Formulas Over Linear Real and Integer Arithmetic', PhD thesis, New York University, September 2014, https://cs.nyu.edu/media/publications/king_tim.pdf (sections 2.2.7 and 2.2.12); Bixby, 'Solving Real-World Linear Programs' (OR 2002) and Maros, 'Computational Techniques of the Simplex Method' (Springer 2003), both already in the survey; Wikipedia's revised simplex article for the Forrest-Tomlin / Bartels-Golub refactorization rationale.",
        "note": "The King PDF was read outside the repository and not committed, per the no-copyrighted-material-in-repo rule."
      },
      "summary": {
        "retraction": "Periodic refactorization does not transfer. In REVISED simplex the basis is an LU factorization updated per pivot, and those updates accumulate fill-in and numerical error beyond a fresh factorization -- that surplus is what refactorization discards. Primo stores the EXPLICIT tableau, which for a given basic/non-basic partition is B^-1 N and is uniquely determined: recomputing it from the original rows returns an identical matrix with identical density. The 5-17x densification measured in section 6.2 is a property of the basis reached, not recoverable garbage from the path taken to it. There is nothing to discard.",
        "lesson": "'Measured headroom' is only headroom if some mechanism can recover it. The 5-17x figure looked like an opportunity and was in fact a description of the problem. Retracted before any implementation effort, on a literature check that cost one session.",
        "h3_prior_art_correction": "King section 2.2.12 records minimum-column-length entering selection, with a switch to Bland's rule past a finite cap, as the heuristic 'commonly used in implementations of SimplexForSMT', attributing it to MathSAT, OpenSMT, Yices, Yices 2, z3 and CVC4. That is item H3 and its anti-cycling fallback exactly. Our Monniaux (CAV 2009) citation remains accurate as a source but H3 must not be read as novel; the note and the LraTableau header now say so. The opt-in shortest-row LEAVING rule is the part with no counterpart described there -- King records Griggio's most-violated rule (CVC4, MathSAT5), which is our Dantzig choice.",
        "fill_in_not_addressed_in_smt_literature": "King section 2.2.7 describes the explicit sparse tableau (entries linked into both a row list and a column list). Searching the thesis for fill-in, density, Markowitz and refactorization finds only that description -- no mechanism for controlling densification during search. The section 6.2 problem is not one this literature offers a ready answer to."
      },
      "verification": {
        "claim_basis": "The uniqueness of B^-1 N for a fixed basis is a property of the formulation, not an empirical finding; Primo's rows are maintained in exactly the basic = sum(coeff * nonbasic) form that makes it so."
      },
      "evidence_status": "current",
      "followups": "Section 6.5 reordered: the cheapest remaining direction is evaluating the EXISTING opt-in row-based bound propagation on this band (a benchmark run, not an implementation). Revised simplex with an LU-factored basis is now listed explicitly as the representation change refactorization would require, with the observation that King records no Simplex-for-DPLL(T) implementation doing it. Monniaux's floating-point-guided basis selection is promoted for re-examination, since section 6.2 says the BASIS determines density and that is precisely what it chooses."
    },
    {
      "id": "2026-07-30-qf-lra-offset-equality-investigation",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "profiling",
      "scope": "Two-step investigation of direction D3 (dynamic offset-equality detection) in docs/qf-lra-heuristics.md section 6.5, deliberately before any implementation, after item H7 showed that a large z3 counter plus large per-instance wins is not evidence a mechanism pays.",
      "commit": "b24d8e5",
      "environment": {
        "type": "workstation",
        "host": "local",
        "binary": "build/primo --quiet --stats (Release); contrib/local/bin/z3 -st",
        "notes": "Wall times here are z3-vs-z3 on the same machine minutes apart, so the on/off ratio is meaningful even though this workstation's absolute timings were unreliable this session."
      },
      "command": {
        "step1": "contrib/local/bin/z3 -st [smt.arith.propagate_eqs=false] on the four profiled 500KB-5MB gap instances",
        "step2": "throwaway instrumentation on LraTableau's existing fixed-variable hook, classifying each fixed basic variable's row (size, coefficient shape, distinct pairs, distinct eliminable columns); measured, then reverted, not committed"
      },
      "benchmark": {
        "suite": "scrambled228965, scrambled15659, scrambled312090, scrambled180721 -- the z3-time quartile sample of the 59-file mid-band gap",
        "logic": "QF_LRA",
        "timeout_seconds": 300
      },
      "summary": {
        "step1_mechanism_is_real": "Ablating smt.arith.propagate_eqs in z3: 3.1->6.9s (2.2x), 8.0->25.9s (3.2x), 19.7->62.8s (3.2x), and 26.1->21.1s (0.81x, i.e. HARMFUL) on the fourth. :arith-offset-eqs drops to zero when disabled, confirming the counter tracks this mechanism.",
        "step1_not_theory_combination": "These are pure QF_LRA with no second theory, so the mechanism is not Nelson-Oppen equality propagation -- the usual purpose of implied equalities in SMT, and the outcome that would have made D3 worthless here. This was the specific risk the step was designed to test.",
        "step1_ceiling": "Even with the mechanism disabled z3 solves all four in under 63s where Primo needs ~600s, so offset equalities are worth a few x of a 10-30x gap. D3 done perfectly would be valuable and would not close the band.",
        "step2_detection_is_free": "Primo can detect these on H7's existing fixed-variable hook: a fixed basic variable whose row has two terms is a relation between two variables. Measured distinct pairs per instance: 591 / 3,224 / 1,519 / 4,721.",
        "step2_kills_the_expensive_design": "Distinct eliminable columns are 369/5,694 (6.5%), 2,524/23,571 (10.7%), 778/26,041 (3.0%) and 4,032/17,286 (23.3%). Against z3's measured speedups the correlation is INVERTED: the instance with the most eliminable columns (23.3%) is the one where z3's mechanism hurts, and the one with the fewest (3.0%) gets the largest win. If the payoff came from shrinking the tableau it would track the eliminable share; it anti-correlates. So column merging is not the mechanism.",
        "design_redirected": "The expensive interpretation (merge columns, eliminate a variable) needs a constant term in Row -- 17 internal term loops, 4 external consumers of row(), and the constant would participate in assignments and in Farkas certificates, so pivot(), update() and build_conflict() all change. That expense is not justified. The cheap interpretation fits the evidence: detect the relation and propagate bounds across it (x - y = c and x >= l gives y >= l - c), which needs no constant column and reuses both H7's detection hook and Primo's existing theory-propagation path. Scaled binary rows (a*x + b*y = c, a != -b) outnumber literal offset rows on two of four instances and are equally usable, so the opportunity is the binary-row count, not the narrower offset one."
      },
      "verification": {
        "instrumentation_reverted": "The census patch was reverted; git status clean and the tree rebuilds with 0 errors.",
        "caveat": "The anti-correlation is n=4 and suggestive rather than conclusive. It is enough to say the expensive design should not be built first, not enough to prove bound propagation is the whole mechanism."
      },
      "evidence_status": "current",
      "followups": "D3 stays on the list at medium rather than largest cost, with the redirected design. D1 (evaluate Primo's existing row-based bound propagation on this band) is now doubly interesting, since it is the same machinery the redirected D3 would extend."
    },
    {
      "id": "2026-07-30-qf-lra-row-propagation-cap-finding",
      "started_at": "2026-07-30",
      "recorded_at": "2026-07-30",
      "kind": "profiling",
      "scope": "First local look at direction D1 (evaluate Primo's existing row-based bound propagation on the mid-band gap), plus the QF_LRA code/docs/CLI audit that followed.",
      "commit": "4a0aba4",
      "environment": {
        "type": "workstation",
        "host": "local",
        "binary": "build/primo --quiet --stats with a throwaway env override of the propagation caps (reverted, not committed)",
        "notes": "Absolute wall times on this workstation were unreliable this session; the cap comparison is same-binary A/B/C minutes apart, so relative effects are meaningful, but n=2 and the 58.5s figure sits at a 60s boundary."
      },
      "command": {
        "smoke": "./build/primo --quiet --stats [--lra-row-propagation [--lra-bidirectional-row-propagation]] on two profiled gap instances",
        "cap_sweep": "same, with PRIMO_RP_ROW/PRIMO_RP_FAN/PRIMO_BP_ROW/PRIMO_BP_FAN overriding the four hardcoded caps at 32, 256 and effectively unlimited"
      },
      "benchmark": {
        "suite": "scrambled228965, scrambled312090",
        "logic": "QF_LRA",
        "timeout_seconds": 90
      },
      "summary": {
        "d1_and_d3_are_the_same_code": "compute_implied_child_bound derives a bound on one row term from the basic variable's bound plus the remaining terms. For s = x - y with s fixed and x bounded that yields a bound on y -- exactly the cheap offset-equality mechanism D3 was redirected to. D1 and the useful part of D3 are the same implementation.",
        "the_feature_is_gated_off_where_it_is_needed": "kBidirectionalRowPropagationMaxRowSize/MaxFanout are 32/32 and kRowBasedPropagation's are 64/64, all documented in-source as 'not precisely derived'. On these instances occurs_in reaches 521 and rows reach 91 terms, so bidirectional propagation fires only 11-68 times where the D3 census finds 7,000-190,000 binary rows.",
        "raising_the_caps_helps_and_is_non_monotone": "scrambled228965: 9.6s (68 props) at 32/32, 6.5s (2,072) at 256/256, 32.8s (2,181) unlimited. scrambled312090: 61.6s (22), 58.5s (7,959), 64.3s (8,593). Unlimited is worse than 256 on both, so the caps do real work and are simply set an order of magnitude below what these instances need.",
        "headline": "scrambled312090 is a gap file that times out at 60s in the default configuration and solves in ~58s with row propagation enabled at raised caps. That is the first direct evidence any of the section 6.5 directions moves a gap file.",
        "audit": "Every --lra-* CLI option maps to a CheckSatOptions field and appears in the docs; no orphans in either direction. Three statistics (:lra.theory-checks, :lra.theory-conflicts, :lra.theory-decisions) were emitted but documented nowhere. docs/arithmetic.md now carries a full option table with defaults and a statistics table, including the :lra.pivots-is-not-comparable-across-an-H7-ablation caveat, and documents the four un-exposed propagation caps.",
        "citation_gap_closed": "Item H7's header claimed it implemented 'the standard eliminate fixed variables step' with NO citation -- precisely the unsupported claim the paper-grounded rule exists to catch. Now cited to Andersen & Andersen, 'Presolving in linear programming', Mathematical Programming 71 (1995) 221-245, with the setting difference stated: presolve removes fixed variables once, before solving, from a problem whose bounds are all known, whereas H7 fires during search and must restore on backtracking. That difference is the likely reason H7 did not pay."
      },
      "verification": {
        "instrumentation_reverted": "The cap-override patch was reverted; git status clean, make check green.",
        "caveat": "n=2, and 58.5s against a 60s budget is at this workstation's noise boundary. This justifies the cluster cap sweep, not a conclusion."
      },
      "evidence_status": "superseded",
      "followups": "Run the cap sweep on the 59-file mid-band manifest on Slurm. That needs the four caps exposed as options first, since they are currently compile-time constants -- a small change, and the natural way to make the sweep reproducible.",
      "superseded_by": "2026-07-31-qf-lra-d1-cap-sweep. The cluster sweep contradicts this entry's headline number: scrambled312090 reads 61.6s -> 58.5s here but 143s -> 139s on the cluster, and no cap setting beats the baseline on the 59-file band. This entry's own caveat (n=2, at a 60s boundary, workstation timing unreliable that session) was correct. The cap *counts* it reports do reproduce -- raising the caps really does turn the mechanism on by 2-3 orders of magnitude -- so what is superseded is the timing conclusion, not the diagnosis that the feature is gated off where it would be needed."
    },
    {
      "id": "2026-07-31-qf-lra-d1-cap-sweep",
      "started_at": "2026-07-31",
      "recorded_at": "2026-07-31",
      "kind": "benchmark",
      "scope": "Direction D1's cap sweep: does row-based/bidirectional bound propagation, run with caps large enough to actually fire, move the 500KB-5MB gap band? Plus the merge-tier fuzz gate for the raised-cap configuration.",
      "commit": "50ad2dd",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "build-slurm-rel/primo (Release, cadical-3.0.0-7b99c07), verified at git 50ad2dd by slurm_prepare_benchmark_workspace.py --check-only before submission",
        "notes": "The four propagation caps became CheckSatOptions fields in commit 2e1eb55 specifically so this sweep could vary them per run rather than per build; the 2026-07-30 entry's numbers came from a rebuild per data point."
      },
      "command": {
        "sweep": "sbatch scripts/slurm_qf_lra_row_propagation_sweep.sbatch -- job 117726, 5 configurations x 20 shards = 100 array tasks, all COMPLETED, 20/20 shard CSVs present per configuration",
        "fuzz_gate": "sbatch --array=0-3 --export=...,PRIMO_FUZZ_SOLVER='build-slurm-rel/primo --lra-row-propagation --lra-bidirectional-row-propagation <all four caps>=1024',PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA,PRIMO_FUZZ_FUZZSMT_ARGS='-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2',PRIMO_FUZZ_OPFUZZ_TASKS=0,PRIMO_FUZZ_YINYANG_SHARDS=0 scripts/slurm_qfuf_fuzz_gate.sbatch -- job 117767"
      },
      "benchmark": {
        "suite": "benchmarks/qf-lra-scrambled-midband-gap.txt (59 files)",
        "logic": "QF_LRA",
        "timeout_seconds": 300,
        "configurations": [
          "base (propagation off)",
          "rp-default (64/64, 32/32)",
          "rp-128",
          "rp-256",
          "rp-1024"
        ],
        "timeout_rationale": "The manifest is defined as the files z3 solves at 60s and Primo does not, so at 60s the baseline solves 0 of 59 by construction and every configuration is scored against zero. At 300s a majority already solves (section 6.1a: 45/59 at 600s, median 167s), so the sweep compares per-file times."
      },
      "summary": {
        "result": "REJECTED. Solved counts: base 37, rp-default 34, rp-128 37, rp-256 36, rp-1024 36 of 59. No cap setting beats the baseline; the best is a tie. PAR2 19465 / 19719 / 18155 / 19294 / 18591.",
        "median_speedup_is_real_but_does_not_convert": "Median paired speedup over files both configurations solve in >1s rises with the caps: 1.01x, 1.20x, 1.14x, 1.30x (n=30-33). Every configuration nonetheless loses about as many files as it gains (+3/-6, +4/-4, +5/-6, +6/-7), and the gained and lost files are different files.",
        "the_mechanism_definitely_ran": "Raising the caps turns propagation on by 2-3 orders of magnitude on this band. scrambled312090 bidirectional propagations 21 -> 7,959 (256) -> 8,419 (1024), row-based 213,354 -> 904,275 -> 955,787; scrambled228965 bidirectional 55 -> 2,072 -> 2,719. This is a mechanism firing 380x harder and still not moving the band, not a null result from code that never fired.",
        "the_motivating_instance_does_not_reproduce": "scrambled312090 was the whole case for D1: locally 61.6s at default caps against 58.5s at 256, i.e. a gap file crossing a 60s budget. On the cluster it is 143s at baseline against 139s at 256 -- a 3% difference, with both figures more than double the local ones. The 2026-07-30 entry's own caveat (n=2, at a 60s boundary, workstation timing unreliable that session) was correct and is the explanation. scrambled228965 does reproduce (67s -> 13s at 256, a genuine 5x) but 1024 makes it worse than baseline (101s).",
        "churn_signature": "scrambled178771 (222s at baseline) and scrambled21782 (148s) are lost by every configuration. scrambled11414 is gained by every configuration but lands anywhere from 48s to 244s depending on caps. That spread is churn at the timeout boundary, not a systematic effect.",
        "not_ruled_out": "A per-instance or adaptive cap policy. The 5x on scrambled228965 and the 1.30x median are real; something that could identify those instances in advance would collect them. That is a materially larger item than the one closed here and is not pursued on this evidence -- the precedent is item H7, rejected rather than tuned after its own bar came back flat.",
        "soundness": "Zero cross-configuration answer disagreements over the 59 files (the scrambled set carries no :status, so cross-configuration disagreement is the only soundness signal available from it) and zero wrong answers reported.",
        "fuzz_gate": "Job 117767: 2,000 fuzzsmt QF_LRA cases against z3 on the 1024-cap configuration, 4/4 shard summaries present, 0 wrong answers, 1,976 PASS + 24 TIMEOUT at the 5s per-case budget. All 24 timeouts were re-checked individually against the default configuration: none is a soundness disagreement, 12 are unknown under both configurations even at a longer budget, and 3 differ only in whether one configuration finished within the budget.",
        "gate_limitation": "The fuzz gate ran the Release build, not build-slurm-fuzz: the remote ASAN toolchain is still broken (head node lacks libasan, compute nodes lack C++ headers). This gate therefore carries no sanitizer coverage and must not be read as if it did.",
        "also_closes_d3": "This sweep closes direction D3 (offset-equality detection + bound propagation) as well, which was not noticed when the result was first written up. D3's redirected cheap design -- 'detect x - y = c and propagate bounds across it' -- IS compute_implied_child_bound, as D1's own finding (a) already recorded ('D1 and the useful part of D3 are the same code'). Binary rows have size 2 so no row-size cap ever excluded them, and at caps 1024 the fanout gate is effectively off, so the sweep ran D3's design at full reach on the whole band. D3's expensive column-merge design was already rejected on the 2026-07-30 anti-correlation census.",
        "residual_d3_gap_not_tested": "One piece of D3 the sweep did NOT test: a trigger, not a computation. D3 proposed firing on H7's hook -- the moment a basic variable becomes fixed. D1's code fires only on a bound change to a variable occurring as a nonbasic term, and pivot() clears occurs_in_[entering_var], so a basic variable occurs in nothing and a bound change on it scans nothing. When the equality fixing s is asserted after x already has its bound, the implied bound on y is not derived until one of that row's terms moves again. Cheap to close, but the sweep argues against expecting it to pay: it buys more firing, and 21 -> 8,419 firings moved nothing. Recorded, not built."
      },
      "artifacts": {
        "sweep": "llm2smt-slurm:<slurm-workdir>/results/qf-lra-rowprop-sweep-117726/ (100 shard CSVs + 100 shard summaries)",
        "fuzz_gate": "llm2smt-slurm:<slurm-workdir>/fuzz-results/qfuf-gate-117767/"
      },
      "docs": "docs/qf-lra-heuristics.md section 6.5, D1's outcome subsection and the ranked table."
    },
    {
      "id": "2026-07-31-d2-literature-survey",
      "started_at": "2026-07-31",
      "recorded_at": "2026-07-31",
      "kind": "literature",
      "scope": "Is there work other than Monniaux CAV 2009 on floating-point-guided basis selection for an exact simplex in SMT? Prompted by D2 being named the next direction after D1/D3 closed.",
      "commit": "3b11347",
      "environment": {
        "type": "workstation",
        "host": "local",
        "notes": "Web search plus two papers read in full (KBT FMCAD 2014, and the PAAR 2012 abstract/results). PDFs read outside the repo and not committed, per the no-copyrighted-material rule."
      },
      "summary": {
        "answer": "Yes -- the technique has been implemented at least twice more since Monniaux, both in SMT solvers, and both report far smaller gains than D2 was scoped for.",
        "king_barrett_tinelli_2014": "FMCAD 2014, CVC4 + GLPK 4.52. Their SeedExact procedure pivots the exact tableau toward the LP solver's final basic set, and the paper explicitly equates it to Monniaux's ForcedPivot. Two design points we did not have: (1) BalancedSolve calls the exact solver FIRST under a 200-pivot cap and only falls back to the LP solver when that cap is exceeded, so it is a fallback for hard theory calls rather than a preprocessing phase -- this dissolves D2's Risk B, since bounds are known mid-search; (2) ImportAssignment converts the LP solver's float assignment back to rationals by Diophantine approximation with denominators capped at 2^26. Measured QF_LRA payoff: 645 of 652 against plain CVC4's 636, i.e. +9 files, all from the miplib family, which is internally mixed integer/real so the gain runs through the MIP path rather than the LP force-pivot path.",
        "de_oliveira_monniaux_2012": "PAAR 2012, OpenSMT, the direct continuation of CAV 2009: LP called first, result seeds the exact search. 14% faster overall (4h44m45s against 5h26m55s over 634 benchmarks), with 11 of 634 (1.7%) showing at least one float/exact disagreement -- rare, but why the exact solver must verify.",
        "earlier_work": "Faure, Nieuwenhuis, Oliveras & Rodriguez-Carbonell (SAT 2008) integrated several LP solvers into Barcelogic with lazy exact checking; Yu & Malik (SAT 2006) used an LP solver as a theory solver without addressing incorrect results.",
        "the_sentence_that_recalibrates_d2": "KBT's own summary of all prior studies: existing SMT solvers outperform the LP-augmented versions on SMT-LIB benchmarks, EVEN IF the LP solver results are not checked for correctness, because solving requires many related but individually simple theory calls. Their balanced control structure is what makes the technique pay at all.",
        "consequence_for_d2": "Section 6.1a says this band needs 2x for 15 files and 5x for 37. The literature offers ~14% overall and +9 files on a 652-file set. D2 is not a 10-30x technique and its entry has been rescoped accordingly -- still open, but no longer described as 'large'.",
        "cvc5_has_no_glpk": "Measured: contrib/local/bin/cvc5 1.3.4 --show-config reports 'glpk : no'. The reference cvc5 therefore carries none of CVC4's LP integration, so its 9-of-59 on the mid-band gap is not evidence about this technique in either direction. Worth knowing before anyone reads cvc5's weakness there as a verdict on LP-guided simplex."
      },
      "docs": "docs/papers/lra-related-work.md (new 'Floating-point-guided exact simplex' subsection) and docs/qf-lra-heuristics.md section 6.5's D2 entry (Risk C, and the ranked table's expected-size column).",
      "evidence_status": "current"
    },
    {
      "id": "2026-07-31-qf-lra-midband-gprof-profile",
      "started_at": "2026-07-31",
      "recorded_at": "2026-07-31",
      "kind": "profiling",
      "scope": "First flat profile of the 500KB-5MB mid-band gap files at the current commit. Prompted by the question of whether gprof had ever been run on the lagging instances -- it had not: the only QF_LRA flat profile on record was perf on constraints-tempo-width-30 at 35878c4 (before H1/H2/H3/H7), and the 2026-07-30 'post-H7 gap profiling' entry used counters and throwaway instrumentation rather than a profiler.",
      "commit": "02e7e50",
      "environment": {
        "type": "workstation",
        "host": "local",
        "binary": "build-gprof/primo (RelWithDebInfo -pg -O2 -g) for gprof; build/primo (Release) for the allocator measurement",
        "notes": "perf is unusable in this sandbox -- kernel.perf_event_paranoid=4 and sysctl is permission-denied -- and valgrind is not installed, so compile-time instrumentation was the only available profiler. -pg penalises call-heavy code, so gprof rankings are sound but absolute percentages are indicative."
      },
      "command": {
        "gprof": "cmake -B build-gprof -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS='-pg -O2 -g -fno-omit-frame-pointer' -DCMAKE_EXE_LINKER_FLAGS=-pg; then build-gprof/primo --quiet <instance>; gprof -b -p / -q build-gprof/primo gmon.out",
        "allocator": "LD_PRELOAD of a throwaway wrapper (scratchpad only, not committed) around malloc/free/realloc/calloc accumulating rdtsc cycles, run against the Release binary -- gprof samples only the executable's text segment and cannot see libc"
      },
      "benchmark": {
        "suite": "scrambled339450 and scrambled228965 from benchmarks/qf-lra-scrambled-midband-gap.txt",
        "logic": "QF_LRA"
      },
      "summary": {
        "allocator_is_retired": "THE headline. The 2026-07-27 perf profile that motivated item H2 put ~42% of runtime in the allocator and ~12% in GMP copy/init. On the gap band at the current commit it is 6.0% and 4.0% (9.78M and 16.94M malloc/free pairs). H2 did what it was built for. Anyone reading the older profile would still rank the allocator first; it should not be.",
        "pivot_dominates": "LraTableau::pivot is 61.0% self on scrambled339450 (3,706 calls) and 85.4% on scrambled228965 (11,647 calls, 1.96 ms/call). No hidden hotspot anywhere else.",
        "confirms_section_6_2": "Section 6.2's fill-in diagnosis was derived entirely from counters (:lra.pivot-row-updates, :lra.pivot-term-ops) and had never been checked against a profiler. It holds.",
        "direction_setting": "Positive evidence that no misplaced overhead remains to reclaim: after rebuild_occurs_in_index and the allocator, the rest is pivot doing real arithmetic. The remaining gap needs an algorithmic change (fewer or cheaper pivots), not tuning -- the same conclusion D1's rejection reached from the other side.",
        "lead_1_rebuild_occurs_in_index": "Consistently second at 7.5% / 4.4%. Its CALL COUNT is already fixed (the 2026-07-27 item-0 follow-up cut it from once-per-undone-pivot to once-per-pop, -97%; counts here are 522/526 and 3,870/3,874, so that holds). What remains is that each call is a full O(vars_.size()) rebuild and these instances have ~26,000 variables -- about 3.8ms per call. Making it incremental over the undone trail entries is a different fix from the one already applied.",
        "lead_2_sort_should_be_a_merge": "11.6% on scrambled339450 (but only 1.6% on scrambled228965, so instance-dependent) is the sort-merge in pivot's affected-row loop. combine_scratch_ concatenates the affected row's terms with the scaled entering row's terms and std::sorts the result, but both halves are already ordered by variable id -- this is a merge, not a sort. Must first check whether rows are ordered on every path into that loop; the candidate-selection site's comment says a Row is not sorted by var id.",
        "symbol_name_caveat": "gprof reports a hot vector<SoiBreakPoint>::_M_realloc_insert, which is impossible under the default Sparse rule since soi_select() is gated behind rule_ == PivotingRule::Soi. Its call-graph parent is the introsort inside pivot, so this is COMDAT folding of identically-generated template code, not SOI running by default. Checked rather than assumed, because a hot SOI symbol in a non-SOI run would read as a real bug."
      },
      "docs": "docs/qf-lra-heuristics.md new section 6.2a.",
      "evidence_status": "current",
      "followups": "Neither lead is implemented. Both are hot-path changes to LraTableau and would need a fuzz gate plus a Slurm A/B before being described as wins."
    },
    {
      "id": "2026-07-31-qf-lra-h8-pivot-merge",
      "started_at": "2026-07-31",
      "recorded_at": "2026-07-31",
      "kind": "benchmark",
      "scope": "Item H8: pivot()'s affected-row loop merges two ordered rows instead of concatenating and sorting them. Found by the 6.2a flat profile. Includes the incremental occurs_in_ experiment that was built alongside it and rejected.",
      "commit": "e6020ca",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "build-slurm-rel/primo at e6020ca; baseline is a second worktree built at the parent commit 03c28da, so the A/B is same-node and same-time",
        "notes": "Local paired A/Bs were run interleaved base/new per instance, two reps each, after an earlier round in this project produced sign-flipped timings from measuring while builds competed for CPU."
      },
      "command": {
        "fuzz_campaign": "sbatch scripts/slurm_qfuf_fuzz_gate.sbatch with PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA and QF_LRA seeds -- job 117841 (fuzzsmt) plus job 117932 (re-run of the 3 mutation tasks with TYPEFUZZ set, output merged into 117841's directory)",
        "fuzz_soi": "same, --lra-pivoting-rule soi, 2 shards x 500 -- job 117842",
        "midband_ab": "sbatch --array=0-39 scripts/slurm_qf_lra_scrambled_compare.sbatch, manifest qf-lra-scrambled-midband-gap.txt, 300s, solvers base/merge -- job 117843",
        "stratified_ab": "same on benchmarks/qf-lra-stratified-sample.txt over tmp/QF_LRA at 60s -- job 117844"
      },
      "summary": {
        "change": "pivot()'s affected-row loop was O(m log m) per affected row: it concatenated the affected row's terms with the scaled entering row's terms into combine_scratch_ and std::sorted the result. Both halves are already ordered by var id, so it is a linear merge. Rows were only incidentally ordered, so this makes it an invariant on Row (add_row sorts; pivot splices basic_var into new_entering_row at its ordered position instead of prepending). Two smaller wins follow: the zero check is needed only in the equal-var-id branch, and the affected row is taken by reference and moved into the trail instead of copied twice.",
        "midband_result": "base 37 solved / PAR2 19475, H8 38 solved / PAR2 18309. Median paired speedup 1.16x over the 37 files both solve in >1s (p25 1.13, p75 1.22). Churn +1/-0.",
        "stratified_result": "base 189 solved / PAR2 6473, H8 192 solved / PAR2 6067. Median paired 1.23x over 67 files >1s (p25 1.10, p75 1.33). Churn +3/-0.",
        "no_regressions": "Zero regressions on either bar -- churn is one-directional on both, which no other item in the heuristics note has managed. The p25-p75 span of 1.10-1.33 says this is a uniform constant-factor win, not a few instances carrying an average.",
        "soundness": "Zero cross-configuration answer disagreements and zero wrong answers on both benchmark runs (the stratified sample carries :status, so its wrong-answer column is live, unlike the scrambled set's).",
        "fuzz_gates": "Campaign tier on the default path: 3000 fuzzsmt QF_LRA cases, 6/6 shard summaries, 2980 PASS / 20 TIMEOUT, 0 wrong. Mutation tasks (job 117932): opfuzz 14/14 seeds valid with 5,448 solver calls, two yinyang typefuzz shards 14/14 valid with 2,748 and 2,744 calls, 0 bug triggers and 0 bug files across all three. Merge tier on the SOI path: 1000 fuzzsmt cases, 2/2 summaries, 943 PASS / 57 TIMEOUT, 0 wrong. Release build -- the remote ASAN toolchain is still broken, so none of this carries sanitizer coverage.",
        "summarizer_caveat": "scripts/summarize_fuzz_results.py reports opfuzz/yinyang as summaries=0 cases=0 because those stages do not write a fuzz_external.py-style summary.csv. That is a summarizer limitation, not a gate that ran nothing -- verified from the task logs (seed counts, solver-call counts, 0 bug triggers) and by finding zero files under the bugs directories. Do not read that 0 as a failure, and do not read it as a pass without checking the logs.",
        "rejected_incremental_occurs_in": "The profile's other lead, rebuild_occurs_in_index() at 8%, was also built and then reverted. Instrumentation split its cost exactly: clear pass 0.05s, fill 1.65s over 138M scattered push_backs into 57,658 separate heap vectors. Since a pop restores only ~384 rows of 47,148, patching occurs_in_ per restored row inside undo() looked like ~100x less work. Measured, it is 1.4-1.8x SLOWER (0.88, 0.97, 0.55, 0.61, 0.70, 0.71, 0.62, 0.60 across four instances, two reps). Two compounding errors in the estimate: the cost scales with pivots undone (3,706), not pops (522); and dropping a listing is a std::remove scan of occurs_in_[var], not O(1), over rows averaging ~1,048 terms per row update. A full rebuild of a cheap index beats a targeted patch of an expensive one. The only fix that would actually help is a CSR-style representation for occurs_in_, which touches 29 call sites and should be considered as part of D4 rather than on its own."
      },
      "docs": "docs/qf-lra-heuristics.md section 6.2b (H8 and the rejection); docs/arithmetic.md's Milestone roadmap H8 entry.",
      "evidence_status": "current"
    },
    {
      "id": "2026-07-31-qf-lra-h8-scrambled-595",
      "started_at": "2026-07-31",
      "recorded_at": "2026-07-31",
      "kind": "benchmark",
      "scope": "H8 on the headline bar: all 595 scrambled QF_LRA competition files at 60s, paired same-node against the pre-H8 commit.",
      "commit": "e6020ca",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "build-slurm-rel/primo at e6020ca against a second worktree built at 03c28da",
        "notes": "Primo only. z3 and cvc5 are unchanged, so their columns come from job 117487's CSVs rather than being re-run."
      },
      "command": {
        "job": "sbatch --array=0-39 scripts/slurm_qf_lra_scrambled_compare.sbatch with PRIMO_COMPARE_SOLVERS='base=<03c28da>/primo --quiet;h8=<e6020ca>/primo --quiet', 60s, 20 shards -- job 117940, 40/40 COMPLETED, 20/20 shard CSVs per configuration"
      },
      "benchmark": {
        "suite": "benchmarks/qf-lra-scrambled-competition.txt (595 files)",
        "logic": "QF_LRA",
        "timeout_seconds": 60
      },
      "summary": {
        "result": "base 369 solved / PAR2 29561, H8 378 / PAR2 28654. +9 files, churn +9/-0 -- zero regressions across the whole competition set. Median paired speedup 1.19x over the 154 files both solve in >1s (p25 1.12, p75 1.25).",
        "by_band": "0-50KB 177 -> 177 (saturated), 50-500KB 144 -> 148, 500KB-5MB 41 -> 46, >5MB 7 -> 7. Five of the nine gained files are in the 500KB-5MB gap band, which is where the entire deficit against z3 sits.",
        "soundness": "Zero cross-configuration answer disagreements over 595 files. That set carries no :status, so disagreement is the only soundness signal it can give.",
        "z3_comparison_caveat": "z3 solved 429 of these at 60s in job 117487, so the deficit reads 51 where it was 56 at H7 time. Treat that as approximate rather than exact: this job's own baseline solves 369 where the H7-era run recorded 373 for a comparable configuration, i.e. about 4 files of cross-job drift at a 60s timeout on a shared cluster. The within-job +9/-0 is the trustworthy number; the cross-job deficit figure is not measured to better than a few files.",
        "calibration": "Section 6.1a's payoff curve says the gap band needs 2x for 15 files and 5x for 37. H8 is 1.19x and buys 5 there, which is consistent with the curve rather than better than it. This does not change the conclusion that closing the band needs an algorithmic change, not a constant factor."
      },
      "docs": "docs/qf-lra-heuristics.md section 6.2b; docs/arithmetic.md's H8 entry.",
      "evidence_status": "current"
    },
    {
      "id": "2026-07-31-h8-local-asan-verification",
      "started_at": "2026-07-31",
      "recorded_at": "2026-07-31",
      "kind": "fuzz",
      "scope": "Sanitizer coverage for item H8 (and the propagation-cap options), run locally because the remote ASAN toolchain is still broken. H8 rewrites pivot()'s hot row loop and changes when a row is moved into the trail -- the exact area that previously produced a real heap-use-after-free in this class -- so merging it with zero sanitizer coverage was the one defensible objection.",
      "commit": "c7f288a",
      "environment": {
        "type": "workstation",
        "host": "local",
        "binary": "build-asan/primo (Debug, -DPRIMO_SANITIZERS=address); reference answers from build/primo (Release) and contrib/local/bin/z3",
        "notes": "build-asan had to be recreated: the existing directory was a 2026-07-22 cache generated under the host mount path /home/mikolas/git/primo rather than the sandbox's /workspace, so cmake refused it. Local libasan is present (libasan.so.8) even though the cluster's is not -- worth knowing, because task 16 had been read as 'no ASAN coverage available at all'."
      },
      "command": {
        "unit": "make asan-test",
        "instances": "build-asan/primo over the 45 smallest sandbox/QF_LRA files, answers diffed against the Release build",
        "configurations": "the 12 smallest files x 4 configurations (--lra-pivoting-rule soi, row+bidirectional propagation, --lra-fixed-elimination, and all four caps at 1024), answers diffed against Release default",
        "fuzz": "scripts/fuzz_external.py --fuzzer fuzzsmt --solver 'build-asan/primo --quiet' --refs z3 --logic QF_LRA --count 250 --timeout 20 --seed 990731 --fuzzer-args '-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2'"
      },
      "summary": {
        "unit_tests": "12/12 pass under ASAN.",
        "real_instances": "45 instances, 0 sanitizer reports, 0 answer differences against Release.",
        "configuration_sweep": "48 runs across 4 configurations, 0 sanitizer reports, 0 answer differences. SOI matters here specifically because set_soi_direction is the other producer of a Row and so the other consumer of H8's new ordering invariant.",
        "fuzz": "250 fuzzsmt QF_LRA cases against z3: 247 PASS, 3 TIMEOUT at the 20s budget (a Debug+ASAN build is slow; all three are cases z3 answers sat), 0 wrong answers, 0 sanitizer reports anywhere in the run tree.",
        "conclusion": "H8 and the cap options now have sanitizer coverage at smoke-to-merge tier. This does NOT replace a campaign-tier ASAN gate on the cluster -- 250 local cases against 3000 remote ones -- but it removes 'no sanitizer coverage at all' as a blocker."
      },
      "docs": "Referenced from docs/arithmetic.md's H8 entry.",
      "evidence_status": "current",
      "followups": "Task 16 stands, but should be rescoped: the blocker is the *remote* toolchain (head node lacks libasan, compute nodes lack C++ headers), and local ASAN is a working substitute for anything below campaign tier."
    },
    {
      "id": "2026-08-01-reconcile-qflra-model-construction-local-gate",
      "started_at": "2026-08-01",
      "recorded_at": "2026-08-01",
      "kind": "fuzz+model-validation",
      "scope": "Local reconciliation gate for adding the QF_LRA model-printing work on top of origin/main after the substantial QF_LRA merge. Covers the merged model construction path for user-declared nullary Real constants, preprocessing equality reconstruction, strict-bound delta concretization, rejection of non-nullary QF_LRA declarations, and the reusable model validator's Dolmen-to-Z3 fallback for generated QF_LRA inputs that Dolmen rejects before model checking.",
      "commit": "095e07f",
      "environment": {
        "type": "workstation",
        "host": "local",
        "binary": "./build/primo --quiet built from reconcile-model-construction at 095e07f; reference solver /workspace/contrib/local/bin/z3; Dolmen from PATH, version 0.10",
        "notes": "Dolmen validates ordinary SMT-LIB model responses directly. Several FuzzSMT QF_LRA inputs use linear-arithmetic syntax that Dolmen 0.10 rejects before model checking, for example division by a negated constant expression; scripts/validate_model.py therefore falls back to asserting Primo's printed Real assignments into the original input and checking satisfiability with Z3 for this minimal QF_LRA model subset. The fallback now requires Z3 exit code 0 and rejects Z3 '(error ...)' output, so out-of-fragment QF_LRA+UF scripts cannot be counted as model-validation passes."
      },
      "command": {
        "build": "cmake --build build --target primo primo_qf_lra_solver_tests primo_smtlib_parser_tests primo_boolean_solver_tests -j2",
        "focused_tests": "./build/primo_qf_lra_solver_tests; ./build/primo_smtlib_parser_tests; (cd build && ./primo_boolean_solver_tests); python3 -m py_compile scripts/validate_model.py scripts/validate_qfuf_models_with_dolmen.py",
        "full_check": "make lint; make check; make docs",
        "verdict_fuzz": "env PATH=\"/workspace/contrib/local/bin:$PATH\" /usr/bin/python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs /workspace/contrib/local/bin/z3 --logic QF_LRA --count 100 --timeout 5 --seed 801002 --out results/reconcile-model-qflra-fuzz-smoke-20260801c",
        "model_validation": "/usr/bin/python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --timeout 10 --dolmen-timeout 10 --out results/reconcile-model-qflra-model-validation-20260801c results/reconcile-model-qflra-fuzz-smoke-20260801c/generated/*.smt2",
        "negative_conformance": "./build/primo_qf_lra_solver_tests covers rejection of non-nullary Real functions and Bool predicates under QF_LRA; a direct validator repro for a QF_LRA script declaring f : Real -> Real is classified as solver-error, not pass"
      },
      "benchmark": {
        "suite": "100 FuzzSMT-generated QF_LRA files, seed 801002",
        "logic": "QF_LRA",
        "timeout_seconds": "5 for verdict fuzzing; 10 for model-producing validation"
      },
      "artifacts": {
        "fuzz_summary": "results/reconcile-model-qflra-fuzz-smoke-20260801c/summary.csv",
        "model_validation_summary": "results/reconcile-model-qflra-model-validation-20260801c/summary.csv",
        "generated_inputs": "results/reconcile-model-qflra-fuzz-smoke-20260801c/generated/*.smt2",
        "model_validation_artifacts": "results/reconcile-model-qflra-model-validation-20260801c/"
      },
      "summary": {
        "verdict_fuzz": {
          "PASS": 100,
          "wrong_answer": 0,
          "crash": 0,
          "timeout": 0
        },
        "model_validation": {
          "pass": 82,
          "not-sat": 18,
          "model_error": 0,
          "solver_timeout": 0
        },
        "headline": "No wrong answers, crashes, or invalid models in this local smoke gate. The 13 not-sat rows are unsat generated inputs for which no model is expected."
      },
      "docs": "docs/architecture.md, docs/arithmetic.md, and docs/preprocessing.md describe the supported QF_LRA model subset and the validation fallback.",
      "evidence_status": "current",
      "followups": "This is a local smoke/merge-level reconciliation gate, not an SLURM campaign. Run a larger SLURM fuzz/model-validation campaign before treating QF_LRA model printing as campaign-level evidence."
    },
    {
      "id": "2026-08-01-slurm-qflra-model-fuzz-and-sandbox-0978c0d",
      "started_at": "2026-08-01",
      "recorded_at": "2026-08-01",
      "kind": "fuzz+model-validation+performance-smoke",
      "scope": "SLURM campaign for QF_LRA model construction on commit 0978c0d. It extends the local reconciliation gate with 3000 generated QF_LRA FuzzSMT cases, Dolmen/Z3 model validation for generated sat cases, opfuzz/typefuzz mutation over real QF_LRA seeds, and a sat-only model-validation batch over sandbox/non-incremental/QF_LRA. The sandbox batch filters with Z3 first and only invokes model checking for Z3-sat files.",
      "commit": "0978c0d",
      "environment": {
        "type": "slurm",
        "host": "private SLURM cluster via fresh isolated remote workspace",
        "binary": "build-slurm-rel/primo --quiet; primo --version reported git 0978c0d and CaDiCaL cadical-3.0.0-7b99c07",
        "notes": "A fresh remote workspace was used so this campaign did not share build or result directories with active Primo jobs already in the queue. Private usernames, hostnames, IPs, and absolute home paths are intentionally redacted. The patched YinYang fork was installed into the fresh workspace from https://github.com/MikolasJanota/yinyang.git at commit 3458e8e after the first mutation tasks found no opfuzz/typefuzz executable in PATH."
      },
      "command": {
        "workspace_preflight": "Local sbatch validation with scripts/slurm_validate_sbatch.py and bash -n; remote binary checked immediately before sbatch and reported git 0978c0d plus CaDiCaL. The repo preflight script had already passed for this fresh workspace before the first fuzz submission; the later sandbox-only script was copied into the same workspace and does not change the solver binary.",
        "fuzz_campaign": "scripts/slurm_qf_lra_model_fuzz_gate.sbatch with default FuzzSMT layout: 6 shards x 500 QF_LRA cases, timeout 5s, seeds 218571..218576, args '-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2'. Model validation used scripts/validate_model.py with Primo --quiet and Dolmen/Z3 fallback. Original job 118571 supplied the answer-fuzz summaries; mutation tasks were rerun as job 118580 after installing patched YinYang. A model-timeout rerun of generated shards with PRIMO_FUZZ_MODEL_TIMEOUT=60 was job 118583 and confirmed remaining failures are timeout-class rows, not model errors.",
        "sandbox_model_batch": "scripts/slurm_qf_lra_sandbox_model_check.sbatch, job 118601, 8-way array over sandbox/non-incremental/QF_LRA. Each shard runs z3 -smt2 first, validates only Z3-sat files with scripts/validate_model.py, stops on definite model errors, and writes perf.csv comparing plain check-sat against check-sat+get-model for up to 24 sat files per shard.",
        "manual_overhead_probe": "Additional confirmed-sat six-file timing probe under results/qf-lra-model-overhead-confirmed-sat-118601/overhead.csv with 5s caps for plain and model-producing runs. It used files already proven Z3-sat by the sandbox validation artifacts."
      },
      "benchmark": {
        "suite": "FuzzSMT QF_LRA generated cases plus real-seed opfuzz/typefuzz over benchmarks/seeds/qf_lra_real; sandbox/non-incremental/QF_LRA sat-only model validation",
        "logic": "QF_LRA",
        "timeout_seconds": "5 for generated answer fuzzing; 10 then 60 for generated model validation rerun; 30 for sandbox Z3 filtering and Primo model validation; 5 for the quick manual overhead probe"
      },
      "artifacts": {
        "remote_fuzz_answer_root": "<fresh-remote-workdir>/fuzz-results/qf-lra-model-gate-118571/",
        "remote_mutation_root": "<fresh-remote-workdir>/fuzz-results/qf-lra-model-gate-118580/",
        "remote_generated_model_rerun_root": "<fresh-remote-workdir>/fuzz-results/qf-lra-model-gate-118583/",
        "remote_sandbox_model_root": "<fresh-remote-workdir>/results/qf-lra-sandbox-model-118601/",
        "remote_overhead_probe": "<fresh-remote-workdir>/results/qf-lra-model-overhead-confirmed-sat-118601/overhead.csv",
        "local_script": "scripts/slurm_qf_lra_sandbox_model_check.sbatch"
      },
      "summary": {
        "generated_answer_fuzz": {
          "cases": 3000,
          "PASS": 2978,
          "TIMEOUT": 22,
          "wrong_answer": 0,
          "crash": 0
        },
        "generated_model_validation_initial": {
          "cases": 3000,
          "pass": 2593,
          "not_sat": 390,
          "solver_timeout": 17,
          "model_error": 0
        },
        "generated_model_validation_rerun": "With 60s Primo model timeout, shard 4 completed and the other shards still failed only through timeout-class rows. No model-error rows were observed in the inspected summaries; this run was used to classify the initial failures as timeout pressure rather than invalid printed models.",
        "mutation": {
          "jobs": "118580 tasks 6-8 completed with exit 0 after patched YinYang install",
          "opfuzz_last_reported_solver_calls": 5592,
          "typefuzz_last_reported_solver_calls": [
            2690,
            2758
          ],
          "bug_files": 0,
          "notes": "The first mutation attempt in job 118571 failed immediately because opfuzz/typefuzz were not on PATH. Job 118580 is the replacement mutation evidence."
        },
        "sandbox_sat_only_model_validation": {
          "files_total": 1753,
          "z3_sat": 820,
          "z3_unsat": 515,
          "z3_timeout": 418,
          "model_pass": 763,
          "model_solver_timeout": 57,
          "model_error": 0,
          "definite_error_stop_triggered": false
        },
        "model_overhead": {
          "sandbox_perf_rows": 192,
          "average_model_over_plain_ratio": 0.970757359375,
          "median_model_over_plain_ratio": 0.978947,
          "max_model_over_plain_ratio": 1.03782,
          "manual_confirmed_sat_probe": "Six confirmed-sat files: ratios 0.9998 timeout/timeout, 0.9582, 1.0102, 0.9873, 0.9893, 0.9999. No model-production-specific slowdown signal; no gprof run was justified for model printing overhead."
        },
        "headline": "No wrong answers, crashes, or invalid models were found. The remaining non-pass rows are timeouts: 22 generated answer-fuzz timeouts, generated model-validation solver timeouts, and 57 sandbox model-validation solver timeouts."
      },
      "docs": "This run-log entry records the new reusable sandbox SLURM script and the SLURM evidence. The script is intentionally redaction-safe: it takes PRIMO_WORKDIR/PRIMO_MODEL_* variables and contains no private host, user, or IP data.",
      "evidence_status": "current",
      "followups": "If we want to reduce the 57 sandbox model-validation timeouts, profile general QF_LRA solving on representative timeout files. The timing samples do not point to get-model printing as the bottleneck."
    },
    {
      "id": "2026-07-31-presimplification-census",
      "started_at": "2026-07-31",
      "recorded_at": "2026-07-31",
      "kind": "profiling",
      "scope": "Settle TR Section 3.1 presimplification -- the one technique from the base paper Primo does not implement -- by counting how much of the tableau it would actually remove, rather than continuing to infer it from H1a and the z3 dimension match.",
      "commit": "8621237",
      "environment": {
        "type": "workstation",
        "host": "local",
        "binary": "build/primo with throwaway instrumentation in solve_qf_lra, next to publish_lra_tableau_shape_stats; measured, reverted, not committed",
        "notes": "Counts are structural properties of the prepared tableau, so no timing is involved and workstation load is irrelevant."
      },
      "command": {
        "census": "count prepared-tableau variables that are the bound_var of no arithmetic PreparedAtom (the paper's 'does not occur in any elementary atom'), split by basic/non-basic, plus the number of rows holding at least one such variable"
      },
      "benchmark": {
        "suite": "scrambled339450, scrambled312090, scrambled228965 from benchmarks/qf-lra-scrambled-midband-gap.txt",
        "logic": "QF_LRA"
      },
      "summary": {
        "result": "Free variables are 0.5-4.3% of the tableau: scrambled339450 2,503 of 57,658 (4.3%), scrambled312090 119 of 26,041 (0.46%), scrambled228965 28 of 5,694 (0.5%).",
        "why_it_is_worse_than_the_share_suggests": "Those few variables are spread across nearly every row -- 43,140 of the rows on scrambled339450 (91%), 17,812 on scrambled312090, 2,999 on scrambled228965 hold at least one. The elimination is Gaussian, so substituting them out rewrites all those rows and generates fill-in, which section 6.2 identifies as the bottleneck. Shrinking the matrix by 4% while densifying 91% of its rows is not a trade this band can afford.",
        "sanity_check": "Every free variable found was non-basic (basic count zero on all three instances), which is the expected shape: a slack exists only because some polynomial carried an atom, so slacks always have bounds, and the free variables are exactly the structural ones that never got a direct bound. A nonzero basic count would have meant the census was measuring the wrong thing.",
        "supersedes_an_inference": "The prior reasoning -- H1a already removed the trivial slack rows, and prepared dimensions match z3's within ~5% -- pointed the same way but was an inference. This is a direct count.",
        "conclusion": "TR Section 3.1 presimplification stays unimplemented, now on measured rather than inferred grounds. With it closed, no technique from the base paper remains unimplemented for QF_LRA."
      },
      "docs": "docs/papers/fast-linear-arithmetic-dpllt.md, the 'Not implemented' entry for presimplification.",
      "evidence_status": "current"
    },
    {
      "id": "2026-07-31-qf-lra-paper-backtracking",
      "started_at": "2026-07-31",
      "recorded_at": "2026-07-31",
      "kind": "benchmark",
      "scope": "Adopt the paper's own backtracking scheme (TR SRI-CSL-06-01 Section 3.2.4): trail only bounds, never the assignment or the basis. Found by re-reading the technical report line by line against the code.",
      "commit": "ec6244e",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "primo-qflra/build-slurm-rel/primo at 94f5c60 against a worktree built at 8621237",
        "notes": "Run from a NEW remote tree ~/primo-qflra, provisioned specifically so QF_LRA work stops sharing primo-cadical-profile with the Nelson-Oppen stream. The sync succeeded while a Nelson-Oppen job was still running, which is the workdir-aware guard behaving correctly."
      },
      "command": {
        "fuzz_default": "campaign-tier QF_LRA fuzz, job 118043 (6 shards x 500)",
        "fuzz_soi": "merge-tier on the SOI path, job 118044 (4 x 500) -- SOI keeps the old trail scheme and so needs its own gate",
        "scrambled595": "job 118045, base vs bt, 60s, 20 shards",
        "stratified": "job 118046, base vs bt, 60s, 20 shards"
      },
      "summary": {
        "headline": "595-file scrambled competition set at 60s: 378 -> 399 solved (+21), PAR2 28691 -> 26661 (-7%). Stratified 237: 192 -> 197, PAR2 6069 -> 5575. Zero cross-configuration disagreements and zero wrong answers on both.",
        "mechanism": "Not undoing pivots means the search keeps the repair work it already paid for. Pivot counts drop 2.3-5.3x on the profiled instances (scrambled228965 11,647 -> 3,460; scrambled339450 3,706 -> 1,629; scrambled365036 122,026 -> 22,926), and gprof shows rebuild_occurs_in_index gone from the profile entirely since nothing structural changes on a pop.",
        "THIS IS NOT A FREE WIN": "Unlike item H8, the churn is two-directional: +32/-11 on the 595 set and +7/-2 on the stratified sample. Among the 145 commonly-solved files taking more than a second, 62 are >10% SLOWER and 64 are >10% faster -- median paired speedup is 1.01x with p25 0.63 and p75 1.30. The tails are large in both directions (max 24.9x, min 0.10x; worst case scrambled31749 at 2.5s -> 24.0s). It nets +21 because the wins land on instances near the timeout while most of the losses do not.",
        "regression_shape": "10 of the 11 lost files were already taking 24-60s against a 60s budget, so they were marginal before. The 32 gained files solve at a median of 27.9s.",
        "why_the_variance": "Inherent to the design rather than a defect: keeping the basis across a backtrack keeps a basis that was good for the *previous* subproblem. Sometimes that is a warm start, sometimes it is a worse starting point than the initial all-slack basis would have been.",
        "bearing_on_d2": "This is the first direct evidence on our own solver that the starting basis matters enormously -- 10x in either direction on the same instance, from nothing but which basis the search happens to inherit. That is the premise D2 (floating-point-guided basis selection) rests on, and it had not previously been measured here.",
        "soi_excluded": "PivotingRule::Soi keeps the old scheme: its objective row is a sum over the currently violated rows, not a linear combination of A, so neither half of the soundness argument covers it.",
        "correctness": "Campaign-tier fuzz on the default path: 3000 fuzzsmt QF_LRA cases, 6/6 shard summaries, 2975 PASS / 25 TIMEOUT, 0 wrong. SOI merge tier: 2000 cases, 4/4, 1848 PASS / 152 TIMEOUT, 0 wrong (SOI's timeout rate is 7.6% against the default path's 0.8%, in line with the 5.7% it showed on job 117842, so unchanged by this work). Locally: make check and make asan-test both 12/12, 70 ASAN runs across 5 configurations with 0 reports and 0 answer differences against the pre-change binary, 300 ASAN fuzz cases and 300 SOI fuzz cases against z3 with 0 wrong.",
        "gate_gap": "The mutation tier initially failed in the new tree because .venv-yinyang is host-provisioned per tree, like contrib/local, and had not been created there. Provisioned and re-run as job 118144: all three tasks COMPLETED, opfuzz 14/14 seeds valid over 5,542 solver calls and two yinyang typefuzz shards 14/14 over 2,794 and 2,722 calls, 0 bug triggers and 0 bug files across all three. The campaign gate is therefore complete: 3000 fuzzsmt cases plus opfuzz plus two yinyang shards, all clean on the default path, with SOI gated separately at merge tier. Note summarize_fuzz_results.py still prints opfuzz/yinyang as summaries=0 cases=0 -- that is the known summarizer limitation, not a gate that ran nothing; verified from the task logs and the empty bugs directories."
      },
      "docs": "docs/papers/fast-linear-arithmetic-dpllt.md's deviations section; LraTableau's class comment carries the soundness argument.",
      "evidence_status": "current"
    },
    {
      "id": "2026-07-31-callgrind-after-backtracking",
      "started_at": "2026-07-31",
      "recorded_at": "2026-07-31",
      "kind": "profiling",
      "scope": "Re-profile after H8 and bounds-only backtracking, with callgrind rather than gprof so libc and GMP are visible. Merge-readiness check that turned into the largest single finding left.",
      "commit": "282c20b",
      "environment": {
        "type": "workstation",
        "host": "local",
        "binary": "build-callgrind/primo (RelWithDebInfo) under valgrind 3.22 --tool=callgrind; counts confirmed with throwaway instrumentation on the Release build",
        "notes": "valgrind became available on this machine partway through the day; perf remains blocked (perf_event_paranoid=4)."
      },
      "command": {
        "callgrind": "valgrind --tool=callgrind --cache-sim=no --branch-sim=no build-callgrind/primo --quiet <instance>; callgrind_annotate",
        "counter_check": "temporary counters around the std::remove in pivot's affected-row loop, measured then reverted"
      },
      "benchmark": {
        "suite": "scrambled228965, scrambled339450",
        "logic": "QF_LRA"
      },
      "summary": {
        "distribution": "On scrambled228965, 262.5 billion instructions total: 70.4% in stl_algobase.h attributed to LraTableau::pivot, 11.1% stl_iterator.h, 9.8% predefined_ops.h -- about 91% inside pivot, and almost none of it arithmetic (Rational::operator* is ~1%, libc _int_malloc 0.22%).",
        "what_it_actually_is": "One linear-scan algorithm: the std::remove that drops other_basic from occurs_in_[var]. Counted directly rather than inferred from symbol names, because attribution has misled here before (6.2a's COMDAT folding). scrambled228965: 40.1M calls scanning 37.6 BILLION elements, average 938 per call. scrambled339450: 51.5M calls, 25.9 billion elements, average 504.",
        "the_fix_that_follows": "Most of that work is immediately undone: the loop removes other_basic from every term's occurrence list and then re-adds it for every term of the rebuilt row, and after H8's merge most terms are in both. Both rows are ordered by var id (the Row invariant H8 established), so the true delta is one linear pass -- a term carried over unchanged needs no occurrence update at all, and only terms genuinely entering (from the entering row) or leaving (cancelled to zero, or entering_var itself) need one.",
        "significance": "This is larger than anything left in section 6.5's direction list, and unlike D2 or D4 it is contained, additive, and rests on an invariant that already exists. Not attempted yet.",
        "allocator_still_retired": "libc _int_malloc is 0.22% of instructions, confirming the 2026-07-31 finding that H2 retired the allocator as a target; it has not crept back."
      },
      "docs": "docs/qf-lra-heuristics.md section 6.2c.",
      "evidence_status": "current"
    },
    {
      "id": "2026-08-01-qf-lra-h10-delta-occurs-in",
      "started_at": "2026-08-01",
      "recorded_at": "2026-08-01",
      "kind": "benchmark",
      "scope": "Item H10: maintain occurs_in_ by delta instead of a remove-and-re-add round trip per affected row. The target callgrind identified as ~91% of instructions.",
      "commit": "aa44320",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "primo-qflra/build-slurm-rel/primo at aa44320 against a worktree rebuilt at 4f9b741",
        "notes": "Baseline verified by CONTENT as well as banner. A first submission used a baseline whose --version said 8621237 and whose source was pre-H9: rsync --delete had destroyed the worktree's git registration, so the checkout failed while the build still succeeded, and the git-revision header is generated at configure time rather than build time. Those jobs were cancelled and the worktree recreated. See docs/experiments.md."
      },
      "command": {
        "fuzz_default": "job 118164, campaign tier: 6 fuzzsmt shards x 500 plus opfuzz and two yinyang shards",
        "fuzz_soi": "job 118165, 4 x 500 on --lra-pivoting-rule soi",
        "scrambled595": "job 118218, base vs h10, 60s, 20 shards",
        "stratified": "job 118219, base vs h10, 60s, 20 shards"
      },
      "summary": {
        "headline": "595-file scrambled competition set at 60s: 398 -> 439 solved, PAR2 26723 -> 22207 (-17%). Churn +41/-0. Stratified 237: 197 -> 202, PAR2 5586 -> 4976, churn +5/-0.",
        "passes_z3": "439 against z3's 429 on the same 595 files (z3 unchanged, from job 117487). Primo now solves 10 more than z3 on this set, having been 56 behind on 2026-07-29. Subject to the same cross-job caveat as every other absolute figure here: this job's own baseline solved 398 where the H9 job recorded 399, so treat absolutes as good to a few files and the within-job +41/-0 as the trustworthy number.",
        "distribution": "Median paired speedup 1.51x over the 173 files both solve in more than a second (p25 1.15, p75 2.26, max 8.0x). Only 2 of those 173 are more than 10% slower, and the stratified sample has none at all. Unlike H9 this is close to a uniform win.",
        "mechanism": "occurs_in_ records row identities, never coefficients, so a term carried through a pivot keeps the entry it had. Only cancellations remove and only genuinely new terms add. gprof: pivot self time 10.04s -> 1.26s at an identical 3,460 calls, 90.7% of the profile down to 49.6%, with the remainder arithmetic rather than bookkeeping.",
        "correctness": "Campaign tier on the default path: 3000 fuzzsmt QF_LRA cases 2969 PASS / 31 TIMEOUT with 0 wrong, plus opfuzz 14/14 seeds and two yinyang typefuzz shards 14/14, 0 bug triggers and 0 bug files. SOI merge tier: 2000 cases, 1868 PASS / 132 TIMEOUT, 0 wrong. Zero cross-configuration disagreements on both benchmark runs. Locally: make check and make asan-test 12/12, 60 ASAN runs across five pivoting configurations with 0 reports and 0 answer differences, 300 ASAN fuzz cases against z3 with 0 wrong.",
        "guard": "occurs_in_index_matches_full_rebuild() is checked after every pivot by two tests across all four pivoting rules plus a dedicated cancellation case. A wrong index does not crash; it makes update() skip a dependent row and produces a wrong answer later and elsewhere."
      },
      "docs": "docs/qf-lra-heuristics.md item H10; docs/arithmetic.md's Milestone roadmap.",
      "evidence_status": "current"
    },
    {
      "id": "2026-08-01-qf-lra-three-way-300s",
      "started_at": "2026-08-01",
      "recorded_at": "2026-08-01",
      "kind": "benchmark",
      "scope": "Three-solver comparison at a realistic budget after items H8, H9 and H10: all 595 scrambled QF_LRA competition files at 300s, Primo against z3 and cvc5.",
      "commit": "aa44320",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "primo-qflra/build-slurm-rel/primo at aa44320 (the H10 code commit; later commits are docs only), z3 5.0.0 and cvc5 1.3.4 as built in contrib/local",
        "notes": "z3 and cvc5 were deliberately re-run despite being unchanged: the 300s timeout differs from every stored run, so earlier numbers do not transfer. Job 118310, 3 solvers x 20 shards = 60 tasks, all COMPLETED, 20/20 shard CSVs each."
      },
      "command": {
        "job": "sbatch --array=0-59 --job-name=primo-qflra-3way-300s --time=08:00:00 scripts/slurm_qf_lra_scrambled_compare.sbatch with PRIMO_COMPARE_TIMEOUT=300 and all three solvers"
      },
      "benchmark": {
        "suite": "benchmarks/qf-lra-scrambled-competition.txt (595 files)",
        "logic": "QF_LRA",
        "timeout_seconds": 300
      },
      "summary": {
        "result": "primo 515/595 (86.6%) PAR2 61303; z3 507 (85.2%) PAR2 66718; cvc5 465 (78.2%) PAR2 96616. Primo leads on both solved count and PAR2.",
        "soundness": "ZERO cross-solver disagreements across 595 files and three solvers. The scrambled set carries no :status, so cross-solver agreement is the only soundness signal available and this is the strongest form of it obtained so far.",
        "head_to_head": "Against z3 the solvers are complementary rather than dominating: 30 files only Primo solves, 22 only z3 solves, so 52 of 595 are decided by exactly one of them. Against cvc5 it is 59 to 9.",
        "the_campaign_band_is_narrowed_not_closed": "By file size: 0-50KB all three solve 179/179; 50-500KB primo 173, z3 157, cvc5 154; 500KB-5MB primo 134, z3 141, cvc5 118; >5MB primo 29, z3 30, cvc5 14. So the 500KB-5MB band that this whole campaign was about is now -7 against z3 rather than -56, but it has NOT flipped. Primo's overall lead comes from the 50-500KB band (+16), where it was already ahead before the campaign.",
        "consistency_with_the_60s_runs": "At 60s the H10 job had Primo 439 against z3's 430 from the preserved 2026-07-29 CSVs, +9. At 300s it is 515 to 507, +8. The two budgets agree on the sign and rough size of the lead.",
        "what_this_is_not": "Not a competition result. SMT-COMP uses a 1200s timeout, competition-entrant binaries, and its own scoring; these are contrib builds of z3 5.0.0 and cvc5 1.3.4 on one 595-file scrambled set. No official SMT-COMP logs are available here, so no ranking can be inferred."
      },
      "artifacts": "llm2smt-slurm:<slurm-workdir>/results/qf-lra-scrambled-118310/ (60 shard CSVs plus summaries)",
      "docs": "docs/arithmetic.md's QF_LRA standing section.",
      "evidence_status": "current"
    },
    {
      "id": "2026-08-01-qf-lra-full-division-300s",
      "started_at": "2026-08-01",
      "recorded_at": "2026-08-01",
      "kind": "benchmark",
      "scope": "The complete non-incremental SMT-LIB QF_LRA division -- 1,753 files across 17 families -- against z3 and cvc5 at 300s. Every previous QF_LRA comparison used the 595-file scrambled subset.",
      "commit": "aa44320",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "primo-qflra/build-slurm-rel/primo at aa44320 (H10 code commit; later commits are docs only), z3 5.0.0 and cvc5 1.3.4 from contrib/local",
        "notes": "Job 118382, 3 solvers x 40 shards = 120 tasks, all COMPLETED, 40/40 shard CSVs per solver."
      },
      "command": {
        "job": "sbatch --array=0-119 --time=08:00:00 scripts/slurm_qf_lra_scrambled_compare.sbatch with PRIMO_COMPARE_ROOT=tmp/QF_LRA, PRIMO_COMPARE_MANIFEST=benchmarks/qf-lra-full-division.txt, PRIMO_COMPARE_TIMEOUT=300, PRIMO_COMPARE_SHARDS=40"
      },
      "benchmark": {
        "suite": "benchmarks/qf-lra-full-division.txt (1,753 files, 17 families)",
        "logic": "QF_LRA",
        "timeout_seconds": 300
      },
      "summary": {
        "result": "primo 1631/1753 (93.0%) PAR2 94992; z3 1584 (90.4%) PAR2 128079; cvc5 1511 (86.2%) PAR2 181248. Primo leads by 47 files over z3 and PAR2 is 26% better.",
        "soundness": "ZERO wrong answers for all three solvers, and zero cross-solver disagreements. This set carries (set-info :status) on every file, so unlike the scrambled set the harness's own wrong-answer column is live -- this is ground-truth checking on 1,753 files, the strongest correctness evidence obtained for QF_LRA.",
        "head_to_head": "77 files only Primo solves against 30 only z3 solves; against cvc5 it is 130 to 10.",
        "where_the_lead_comes_from": "Family deltas against z3: 2017-Heizmann-UltimateInvariantSynthesis +19 (41 of 58 against 22), LassoRanker +16 (347 of 419 against 331), latendresse +7 (15 of 18 against 8), tta_startup +4, 2019-ezsmt +3. Twelve families are exact ties, most of them saturated (meti-tarski 488/488, sc 144/144, DTP-Scheduling 91/91, sal 107/107). The single family where z3 leads is miplib, 25 to 23.",
        "contrast_with_the_scrambled_subset": "On the 595-file scrambled set the lead was +8; here it is +47. The scrambled sample is not representative of the division -- it under-weights exactly the families Primo is strongest on (Heizmann invariant synthesis, LassoRanker, latendresse), and those three account for +42 of the +47.",
        "latendresse_note": "15 of 18 against z3's 8 and cvc5's 0. That family was 0/15 before item H3 and is the one the SOI paper was written for; it is now a Primo strength rather than a weakness.",
        "what_this_is_not": "Not a competition result: SMT-COMP uses a 1200s timeout, competition-entrant binaries and its own scoring. These are contrib builds of z3 5.0.0 and cvc5 1.3.4 at 300s. No official SMT-COMP logs are available here, so nothing about placement follows."
      },
      "artifacts": "llm2smt-slurm:<slurm-workdir>/results/qf-lra-scrambled-118382/ (120 shard CSVs plus summaries)",
      "docs": "docs/arithmetic.md's QF_LRA standing section.",
      "evidence_status": "current"
    },
    {
      "id": "2026-08-01-qf-lra-fuzz-coverage-audit",
      "started_at": "2026-08-01",
      "recorded_at": "2026-08-01",
      "kind": "analysis",
      "scope": "Audit of what the two QF_LRA fuzzers actually cover, prompted by the question 'is our fuzzing based on all the different families we have?'. The answer was no, in two independent ways: the mutation seed corpus held 3 of the division's 17 families, and every FuzzSMT run in this project's history used QF_LRA's stock default parameters.",
      "commit": "d373f67",
      "environment": {
        "type": "workstation",
        "binary": "build/primo at c29ed09 (Release), fuzzsmt 0.3 and z3 5.0.0 from contrib/local",
        "notes": "Parameter measurements are local and single-seed unless stated; they are throughput/size measurements, not performance claims."
      },
      "command": {
        "size_ladder": "for each setting: fuzzsmt QF_LRA -seed <s> <args> -bulk-export 10..150, then build/primo -q on each output",
        "differential": "python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 --logic QF_LRA --count 150 --timeout 10 --seed 777 --fuzzer-args <profile> --out <dir>, for profiles 1-3"
      },
      "summary": {
        "seed_corpus_gap": "benchmarks/seeds/qf_lra_real held 14 files from check, DTP-Scheduling and keymaera, plus gasburner which is not in the division at all. 14 of 17 families had never been mutation-fuzzed, including latendresse (pure LP, zero decisions, very large pivot counts) and LassoRanker (419 files, the largest source of Primo's lead) -- the shapes items H8, H9 and H10 each rewrote.",
        "fuzzsmt_parameter_gap": "Every QF_LRA gate in this log ran '-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2'. For QF_LRA that is FuzzSMT's stock default: -ms/-Ms are sort counts and -mf/-mp/-ma/-Ma are function/predicate/arity knobs, applied only to the QF_UF* logics and silently ignored here. Effective settings were -Mv 3, -Mc 3, -Mbw 4, so every generated case had at most three Real variables and every coefficient in [1,15] -- the GMP bignum paths in DeltaRational and Farkas combination were never generated.",
        "measured_costs": "-Mbw 16 free (max literal 15 -> 54430, no size or time cost); -Mc 10 3x file size; -Mv 15 9x; -ref 2 7x; -ref 3 20x with generation itself hitting the wall; -Mv 15 -ref 2 composes to ~2MB per case. -Mv 5 -Mc 4 -Mbw 16 costs 18s/100 cases with 1% timeouts and is the chosen mid tier.",
        "bool_layer": "-bool-and yields 100% unsat and -bool-or 100% sat, both at ~4s/100 cases, against ~11% unsat for the random layer. -bool-cnf is unusable: FuzzSMT 0.3 emits a malformed let block and z3 rejects the output too ('invalid let declaration'); all 150 cases were correctly rejected by Primo's parser.",
        "differential_result": "450 cases across profiles 1-3 against z3: 449 PASS, 1 timeout, zero answer disagreements and zero crashes."
      },
      "caveats": [
        "The first measurement suggested -Mbw 16 was 5x CHEAPER than -Mbw 4 (4.2s vs 22.7s per 150 cases) and doubled the unsat rate. A second seed gave 3.4s vs 3.7s and no unsat difference: FuzzSMT's output is seed-driven and changing a parameter changes the random stream, so per-setting sizes wander. The defensible claim is that -Mbw 16 costs nothing, not that it wins.",
        "This is a coverage widening, not a bug hunt that found something. No defect was found by any of it."
      ],
      "outcome": "Committed as d373f67 (FuzzSMT profile ladder in scripts/slurm_qfuf_fuzz_gate.sbatch) and 3c3892b (scripts/build_fuzz_seed_corpus.py). Documented in docs/fuzz-coverage-qf-lra.md."
    },
    {
      "id": "2026-08-01-qf-lra-famfuzz-118543-superseded",
      "started_at": "2026-08-01",
      "recorded_at": "2026-08-01",
      "kind": "fuzz",
      "scope": "First mutation-fuzz campaign over the family-complete QF_LRA seed corpus: 1 opfuzz task plus 4 YinYang typefuzz shards. SUPERSEDED -- it covered 22 of the 34 seeds, for the reason below.",
      "commit": "3c3892b",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "primo-qflra/build-slurm-rel/primo at 3c3892b, reference 'z3 model_validate=true'",
        "notes": "Job 118543, --array=6-10, all five tasks COMPLETED (10-25 minutes each)."
      },
      "command": {
        "job": "sbatch --array=6-10 scripts/slurm_qfuf_fuzz_gate.sbatch with PRIMO_FUZZ_OPFUZZ_SEEDS/PRIMO_FUZZ_YINYANG_SEEDS=benchmarks/seeds/qf_lra_division, OPFUZZ_ITERATIONS=300, YINYANG_ITERATIONS=200, WALL_SECONDS=5400, timeouts 20s, no fuzzsmt shards"
      },
      "summary": {
        "result": "All five tasks: '34 seeds processed, 22 valid, 12 invalid / 0 bug triggers found'. Zero entries in every bugs/ directory.",
        "why_superseded": "The 12 'invalid' seeds were not malformed. typefuzz's -L is a seed FILE-SIZE limit, 20000 bytes by default in scripts/yinyang_fuzz.sh, and it drops oversized seeds silently. The 12 dropped seeds are exactly the 12 corpus files over 20 KB: tropical-matrix (160/180 KB), latendresse (125 KB), TM (77/81 KB), 2017-Heizmann (73/78 KB), miplib (70 KB) and LassoRanker (45 KB). The corpus had just been widened from 3 families to 17 and this cut it back to 11, discarding latendresse and LassoRanker -- the two families the widening existed to cover.",
        "verification": "Confirmed per seed by running typefuzz -i 1 on each of the 34 seeds individually on the cluster: the 12 that report '0 valid, 1 invalid' are exactly the 12 over 20000 bytes, and the 22 that do not are all under."
      },
      "caveats": [
        "An earlier hypothesis -- that YinYang discards seeds whose reference answer times out -- was WRONG. It only looked right because the oversized files are also the ones z3 cannot answer quickly. The per-seed run distinguished the two.",
        "Separately and still true: at a 20s reference timeout z3 5.0.0 does not answer the unmutated LassoRanker, latendresse, miplib or tropical-matrix seeds at all, so even with the size limit raised those iterations cannot yield a verdict without a longer --solver-timeout."
      ],
      "outcome": "Fixed in 22409b1: the gate now passes --file-size-limit 200000 (matching build_fuzz_seed_corpus.py's --max-bytes) and yinyang_fuzz.sh names oversized seeds on stderr before starting. A replacement campaign is required before citing mutation-fuzz coverage of the widened corpus."
    },
    {
      "id": "2026-08-01-qf-lra-fuzzsmt-ladder-118548",
      "started_at": "2026-08-01",
      "recorded_at": "2026-08-01",
      "kind": "fuzz",
      "scope": "First campaign-tier QF_LRA generator fuzz run using the six-profile FuzzSMT parameter ladder rather than the stock defaults every prior run used. Six shards x 500 cases, one profile each.",
      "commit": "9724b54",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "primo-qflra/build-slurm-rel/primo at 9724b54, reference z3 5.0.0",
        "notes": "Job 118548 tasks 0-5. All COMPLETED; 6 of 6 shard summary.csv files present, so no shard was lost to the wall (the 117248-117251 failure mode)."
      },
      "command": {
        "job": "sbatch --array=0-10 --time=04:00:00 --job-name=primo-qflra-fuzz-ladder scripts/slurm_qfuf_fuzz_gate.sbatch with PRIMO_FUZZ_FUZZSMT_LOGIC=QF_LRA, FUZZSMT_SHARDS=6, FUZZSMT_COUNT=500, FUZZSMT_TIMEOUT=10; profiles come from the script's built-in QF_LRA ladder and are echoed per shard into the task log"
      },
      "benchmark": {
        "suite": "FuzzSMT-generated QF_LRA, six parameter profiles",
        "logic": "QF_LRA",
        "timeout_seconds": 10
      },
      "summary": {
        "result": "3000 cases: 2959 PASS, 41 TIMEOUT. Zero wrong answers, zero crashes, zero reference disagreements.",
        "per_profile_timeouts": "profile 0 (-Mbw 4, the historical setting) 2; profile 1 (-Mbw 16) 7; profile 2 (-Mv 5 -Mc 4 -Mbw 16) 19; profile 3 (+bool-and) 4; profile 4 (+bool-or) 5; profile 5 (-Mbw 32) 4. Concentrated in profile 2, the widest tableau, as the ladder intends.",
        "timeouts_are_not_defects": "Sampled one of the 41: a 330 KB, 8,928-line formula that Primo answers sat in under 60s, agreeing with z3. fuzz_external.py copies every non-PASS case into bugs/, so the 41 files there are the timeouts, not bugs.",
        "wall_times": "Shard elapsed 00:00:55, 01:52, 06:11, 01:21, 01:56, 01:38 -- profile 2 is the expensive one, matching the pre-submission measurement."
      },
      "caveats": [
        "This job's mutation tasks (6-10) used z3 as the sole reference; Yices was added afterwards (commit 2da20f4) and is not reflected here.",
        "Profile 1 (-Mbw 16) produced 7 timeouts against profile 0's 2. The pre-submission local measurement concluded -Mbw 16 is cost-neutral; that holds for the median but the tail is somewhat worse on cluster hardware. Not enough to change the profile, worth not overstating."
      ],
      "outcome": "The ladder works as designed and found no defect. Every QF_LRA generator-fuzz result before this one was obtained at FuzzSMT's stock QF_LRA defaults (max 3 Real variables, coefficients in [1,15]); this is the first covering wide coefficients, larger tableaux, and conjunctive/disjunctive Boolean layers."
    },
    {
      "id": "2026-08-02-no-branch-main-integration-3085a9d",
      "date": "2026-08-02",
      "commit": "3085a9d",
      "branch": "nelson-oppen-closure-methods",
      "scope": "Integrated current main, including QF_LRA model-production and fuzz-ladder work, into the existing Nelson-Oppen branch before continuing model-guided QF_UFLRA work.",
      "evidence_status": "current",
      "commands": {
        "merge": "git switch nelson-oppen-closure-methods && git merge main",
        "run_log_json": "python3 -m json.tool docs/run-log.json >/tmp/runlog-merged-no.json",
        "python_compile": "python3 -m py_compile scripts/validate_model.py scripts/validate_qfuf_models_with_dolmen.py scripts/build_fuzz_seed_corpus.py scripts/fuzz_external.py",
        "sbatch_validate": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_lra_model_fuzz_gate.sbatch scripts/slurm_qf_lra_sandbox_model_check.sbatch scripts/slurm_qfuf_fuzz_gate.sbatch scripts/slurm_qf_lra_row_propagation_sweep.sbatch",
        "sbatch_bash_n": "bash -n scripts/slurm_qf_lra_model_fuzz_gate.sbatch && bash -n scripts/slurm_qf_lra_sandbox_model_check.sbatch && bash -n scripts/slurm_qfuf_fuzz_gate.sbatch && bash -n scripts/slurm_qf_lra_row_propagation_sweep.sbatch",
        "check": "make check",
        "docs": "make docs",
        "lint": "make lint",
        "asan": "make asan-test"
      },
      "result": {
        "merge_conflicts": "Resolved docs/run-log.json by preserving both histories; resolved NO/main code conflicts by keeping the NO QF_UFLRA path and restoring main's pure-QF_LRA uninterpreted-function rejection.",
        "tests": "make check passed 13/13 tests after removing a duplicated parser-test function introduced by the merge.",
        "docs": "make docs succeeded with 6 MyST missing-anchor warnings in QF_LRA docs inherited from the merged main side.",
        "run_log_entries": "Merged run-log contains 288 unique entries.",
        "sbatch": "Affected sbatch files passed local validator and bash -n.",
        "lint": "make lint passed; ruff unavailable so Python lint was skipped after py_compile.",
        "asan": "make asan-test passed 13/13 tests with AddressSanitizer."
      },
      "limitations": "This is integration evidence, not a fresh post-merge SLURM fuzz campaign for the QF_UFLRA model-guided path. A fresh fuzz/reference gate remains required before merge-ready claims."
    },
    {
      "id": "2026-08-02-qf-uflra-fuzz-gate-3660d9e",
      "date": "2026-08-02",
      "commit": "3660d9e",
      "branch": "nelson-oppen-closure-methods",
      "kind": "fuzz",
      "scope": "Post-main-integration QF_UFLRA model-guided Nelson-Oppen fuzz gate, plus regression evidence for the SLURM workspace dependency-preparation helper.",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "workspace": "<fresh-remote-workspace>",
        "binary": "build-slurm-rel/primo at 3660d9e, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3, version 5.0.0",
        "job_id": "118686",
        "artifact_dir": "<fresh-remote-workspace>/slurm-results/qf_uflra-fuzz-gate-3660d9e"
      },
      "commands": {
        "local_validation": "python3 -m py_compile scripts/slurm_prepare_benchmark_workspace.py; git diff --check; make docs; make lint; make check; python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_fuzz_gate.sbatch; bash -n scripts/slurm_qf_uflra_fuzz_gate.sbatch",
        "workspace_prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --local-dir . --sync-mode archive --jobs 4",
        "pre_submit_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --local-dir . --check-only",
        "submission": "sbatch --export=ALL,PRIMO_WORKDIR=$PWD,PRIMO_FUZZ_COUNT=750,PRIMO_FUZZ_SEED_BASE=820200,PRIMO_FUZZ_OUT_DIR=slurm-results/qf_uflra-fuzz-gate-3660d9e scripts/slurm_qf_uflra_fuzz_gate.sbatch",
        "aggregation": "sacct -j 118686 --format=JobID,State,ExitCode,Elapsed,MaxRSS -P; aggregate task-*/summary.csv"
      },
      "benchmark": {
        "suite": "scripts/qf_uflra_smoke_fuzz.py generated mixed QF_UFLRA formulas",
        "logic": "QF_UFLRA",
        "generator": "qf_uflra_smoke_fuzz.py",
        "shape": "mixed",
        "seed_base": 820200,
        "tasks": 4,
        "count_per_task": 750,
        "total_cases": 3000,
        "timeout_seconds": 5
      },
      "summary": {
        "slurm_state": "All four array tasks completed with exit code 0:0 in 00:00:17 each.",
        "outcomes": {
          "PASS": 3000,
          "WRONG": 0,
          "CRASH": 0,
          "TIMEOUT": 0,
          "UNSUPPORTED": 0,
          "REFERENCE_DISAGREEMENT": 0
        },
        "per_task": {
          "task-0": {
            "PASS": 750
          },
          "task-1": {
            "PASS": 750
          },
          "task-2": {
            "PASS": 750
          },
          "task-3": {
            "PASS": 750
          }
        },
        "dependency_preparation": "The fixed slurm_prepare_benchmark_workspace.py path installed or reused the CMake venv on PATH, ran make contrib-required, configured Primo successfully with CLI11, ANTLR4, CaDiCaL, and GMP, and built a binary reporting git: 3660d9e."
      },
      "limitations": "This is generated mixed QF_UFLRA fuzz evidence, not a full SMT-LIB corpus performance comparison. The sample-compare sbatch remains separate because its archive-mode workspace excludes tmp/ benchmark payloads unless a manifest-backed corpus is staged explicitly."
    },
    {
      "id": "2026-08-02-qf-uflra-sample-compare-1267d8b",
      "date": "2026-08-02",
      "commit": "1267d8b",
      "branch": "nelson-oppen-closure-methods",
      "kind": "benchmark",
      "scope": "QF_UFLRA 5-per-family sample comparison after adding a manifest-only SLURM staging helper, comparing default mixed solving, three default-off model-equality branching policies, and Z3.",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "workspace": "<fresh-remote-workspace>",
        "binary": "build-slurm-rel/primo at 1267d8b, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3, version 5.0.0",
        "job_id": "118690",
        "remote_artifact_dir": "<fresh-remote-workspace>/results/qf-uflra-sample-1267d8b",
        "local_html": "results/qf-uflra-sample-1267d8b/index.html"
      },
      "commands": {
        "workspace_prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --local-dir . --sync-mode archive --jobs 4",
        "stage_manifest_files": "python3 scripts/slurm_stage_manifest_files.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --root tmp/QF_UFLRA --manifest benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "pre_submit_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --local-dir . --check-only",
        "sbatch_validation": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_sample_compare.sbatch; bash -n scripts/slurm_qf_uflra_sample_compare.sbatch",
        "submission": "sbatch --export=ALL,PRIMO_WORKDIR=$PWD,PRIMO_COMPARE_TIMEOUT=10,PRIMO_COMPARE_OUT_ROOT=results/qf-uflra-sample-1267d8b scripts/slurm_qf_uflra_sample_compare.sbatch",
        "render_html": "python3 scripts/render_solver_compare_html.py results/qf-uflra-sample-1267d8b --solvers default first ranked adaptive z3 --title 'QF_UFLRA sample comparison 1267d8b' --timeout 10 --out results/qf-uflra-sample-1267d8b/index.html"
      },
      "benchmark": {
        "suite": "benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "logic": "QF_UFLRA",
        "root": "tmp/QF_UFLRA",
        "families": [
          "FFT",
          "cpachecker-bmc-svcomp14",
          "cpachecker-induction-svcomp14",
          "mathsat"
        ],
        "instances": 20,
        "timeout_seconds": 10
      },
      "solvers": {
        "default": "build-slurm-rel/primo --quiet --stats",
        "first": "build-slurm-rel/primo --quiet --stats --model-equality-branching",
        "ranked": "build-slurm-rel/primo --quiet --stats --model-equality-branching --model-equality-branch-policy ranked",
        "adaptive": "build-slurm-rel/primo --quiet --stats --model-equality-branching --model-equality-branch-policy adaptive",
        "z3": "contrib/local/bin/z3"
      },
      "summary": {
        "default": "16/20 solved, 4 timeouts, 0 wrong, PAR2 84.736871; family solved FFT 5/5, cpachecker-bmc 3/5, cpachecker-induction 3/5, mathsat 5/5.",
        "first": "16/20 solved, 4 timeouts, 0 wrong, PAR2 97.029988; model-equality branching created 59 atoms, made 630 assumptions, and recorded 6 model-equality conflicts.",
        "ranked": "15/20 solved, 5 timeouts, 0 wrong, PAR2 109.120962; selected 19 care-ranked and 40 full-pair model-equality guesses.",
        "adaptive": "15/20 solved, 5 timeouts, 0 wrong, PAR2 109.128962; same solved profile as ranked on this run.",
        "z3": "20/20 solved, 0 timeouts, PAR2 3.899202.",
        "notable_delta": "On cpachecker-induction.32_1_cilled...edac--mce_amd_inj..., default solved sat in 1.463s, first solved sat in 7.972s, while ranked/adaptive timed out at 10s; Z3 solved it in 0.022s."
      },
      "outcome": "Do not promote model-equality branching. The branch policies are active and measurable, but on this sample they do not improve solved count or PAR2 over the default; ranked/adaptive regress one cpachecker-induction instance."
    },
    {
      "id": "2026-08-02-qf-uflra-purification-rewrite-memo-profile",
      "date": "2026-08-02",
      "commit": "6e44027",
      "branch": "nelson-oppen-closure-methods",
      "kind": "profile",
      "scope": "Profiler-guided cleanup for repeated QF_UFLRA mixed-purification rewrites on the CPAchecker BMC diskperf sample row. The change memoizes formula, arithmetic, and EUF rewrites by hash-consed TermId during the purification pass.",
      "evidence_status": "current",
      "environment": {
        "type": "local",
        "binary": "build/primo at 6e44027, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3"
      },
      "commands": {
        "target_shape": "wc -l -c tmp/QF_UFLRA/cpachecker-bmc-svcomp14/cpachecker-bmc.diskperf_false-unreach-call.i.cil.c.smt2; rg token counts for assert, declare-fun, or/and/not/=/<,/<=,+,-,*",
        "before_timing": "/usr/bin/time -f 'wall=%e user=%U sys=%S maxrss=%M' timeout 15s build/primo --quiet --stats tmp/QF_UFLRA/cpachecker-bmc-svcomp14/cpachecker-bmc.diskperf_false-unreach-call.i.cil.c.smt2",
        "before_callgrind": "timeout 20s valgrind --tool=callgrind --callgrind-out-file=/tmp/callgrind.primo-diskperf.1785653938.%p build/primo --quiet --stats tmp/QF_UFLRA/cpachecker-bmc-svcomp14/cpachecker-bmc.diskperf_false-unreach-call.i.cil.c.smt2",
        "after_timing": "/usr/bin/time -f 'wall=%e user=%U sys=%S maxrss=%M' timeout 15s build/primo --quiet --stats tmp/QF_UFLRA/cpachecker-bmc-svcomp14/cpachecker-bmc.diskperf_false-unreach-call.i.cil.c.smt2",
        "after_callgrind": "timeout 20s valgrind --tool=callgrind --callgrind-out-file=/tmp/callgrind.primo-diskperf-after.1785654391.%p build/primo --quiet --stats tmp/QF_UFLRA/cpachecker-bmc-svcomp14/cpachecker-bmc.diskperf_false-unreach-call.i.cil.c.smt2",
        "option_sweep": "timeout 15s build/primo --quiet --stats with default, --no-lra-propagation, --lra-pivoting-rule=dantzig, --lra-pivoting-rule=sparse, --theory-phase=positive, and --theory-phase=none",
        "local_validation": "cmake --build build --target primo_qf_lra_solver_tests -j4 && ./build/primo_qf_lra_solver_tests; make docs; make lint; make check; rg --files -g '*.cpp' | rg -v '(^build/|^contrib/|antlr|generated)' | xargs clang-tidy -p build --quiet; make asan-test"
      },
      "benchmark": {
        "suite": "tmp/QF_UFLRA/cpachecker-bmc-svcomp14",
        "instance": "cpachecker-bmc.diskperf_false-unreach-call.i.cil.c.smt2",
        "logic": "QF_UFLRA",
        "timeout_seconds": 15
      },
      "summary": {
        "shape": "5271 lines, 248892 bytes, one top-level assertion, 604 declare-fun commands, 742 equalities before Real-equality lowering, 377 < atoms, 377 <= atoms, no ITEs.",
        "before": "At 1267d8b-equivalent source, Primo timed out before completing preprocessing: preprocessing.assertions 0, preprocessing.term-size.final 0, time.preprocessing-us 0, wall 15.00s. Callgrind top costs were mixed purification recursion and allocation: purify_arithmetic_term 13.52%, purify_mixed_formula 13.47%, malloc/free about 21% combined.",
        "after": "At 6e44027, Primo still times out at 15s, but preprocessing completes: preprocessing.assertions 206, preprocessing.term-size.final 4016, time.preprocessing-us 5343, no.purification.definitions 169, memoized formula/arithmetic/EUF rewrites 9882/3205/5, SAT vars 2722, SAT clauses 13233.",
        "remaining_bottleneck": "After memoization, Callgrind moves to LRA/SAT search: Rational::operator+ 20.22%, Rational::from_int128_reduced 11.79%, LraTableau::check 11.32%, Rational::operator- 9.49%; stats show 5418 LRA online checks, 888 pivots, and 3186 LRA theory propagations before timeout.",
        "option_sweep": "None of the six tried existing options solved the row under 15s. --no-lra-propagation reduced online checks to 3598 but still timed out; --theory-phase=positive reduced pivots to 511 and propagations to 816 but still timed out."
      },
      "outcome": "Accepted as a preprocessing-cliff cleanup, not as a CPAchecker-family solution. The next target is LRA online-check/search cost after purification."
    },
    {
      "id": "2026-08-02-qf-uflra-fuzz-gate-6e44027",
      "date": "2026-08-02",
      "commit": "6e44027",
      "branch": "nelson-oppen-closure-methods",
      "kind": "fuzz",
      "scope": "SLURM QF_UFLRA mixed-formula fuzz gate after memoizing mixed-purification rewrites.",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "workspace": "<fresh-remote-workspace>",
        "binary": "build-slurm-rel/primo at 6e44027, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3, version 5.0.0",
        "job_id": "118695",
        "remote_artifact_dir": "<fresh-remote-workspace>/slurm-results/qf_uflra-fuzz-gate-6e44027",
        "local_artifact_dir": "slurm-results/qf_uflra-fuzz-gate-6e44027"
      },
      "commands": {
        "workspace_prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --local-dir . --sync-mode archive --jobs 4",
        "pre_submit_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --local-dir . --check-only",
        "sbatch_validation": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_fuzz_gate.sbatch; bash -n scripts/slurm_qf_uflra_fuzz_gate.sbatch",
        "submission": "sbatch --export=ALL,PRIMO_WORKDIR=$PWD,PRIMO_FUZZ_COUNT=750,PRIMO_FUZZ_SEED_BASE=840200,PRIMO_FUZZ_OUT_DIR=slurm-results/qf_uflra-fuzz-gate-6e44027 scripts/slurm_qf_uflra_fuzz_gate.sbatch",
        "aggregation": "sacct -j 118695 --format=JobID,State,ExitCode,Elapsed,MaxRSS -P; aggregate task-*/summary.csv by outcome"
      },
      "benchmark": {
        "suite": "scripts/qf_uflra_smoke_fuzz.py generated mixed QF_UFLRA formulas",
        "logic": "QF_UFLRA",
        "generator": "qf_uflra_smoke_fuzz.py",
        "shape": "mixed",
        "seed_base": 840200,
        "tasks": 4,
        "count_per_task": 750,
        "total_cases": 3000,
        "timeout_seconds": 5
      },
      "summary": {
        "slurm_state": "All four array tasks completed with exit code 0:0 in 00:00:16 each.",
        "outcomes": {
          "PASS": 3000,
          "WRONG": 0,
          "CRASH": 0,
          "TIMEOUT": 0,
          "UNSUPPORTED": 0,
          "REFERENCE_DISAGREEMENT": 0
        },
        "per_task": {
          "task-0": {
            "PASS": 750
          },
          "task-1": {
            "PASS": 750
          },
          "task-2": {
            "PASS": 750
          },
          "task-3": {
            "PASS": 750
          }
        }
      },
      "limitations": "Generated mixed QF_UFLRA fuzz evidence; the benchmark-sample comparison is recorded separately."
    },
    {
      "id": "2026-08-02-qf-uflra-sample-compare-6e44027",
      "date": "2026-08-02",
      "commit": "6e44027",
      "branch": "nelson-oppen-closure-methods",
      "kind": "benchmark",
      "scope": "QF_UFLRA 5-per-family SLURM sample comparison after mixed-purification rewrite memoization, comparing default mixed solving, three default-off model-equality branching policies, and Z3.",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "workspace": "<fresh-remote-workspace>",
        "binary": "build-slurm-rel/primo at 6e44027, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3, version 5.0.0",
        "job_id": "118699",
        "remote_artifact_dir": "<fresh-remote-workspace>/results/qf-uflra-sample-6e44027",
        "local_html": "results/qf-uflra-sample-6e44027/index.html"
      },
      "commands": {
        "stage_manifest_files": "python3 scripts/slurm_stage_manifest_files.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --root tmp/QF_UFLRA --manifest benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "pre_submit_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --local-dir . --check-only",
        "sbatch_validation": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_sample_compare.sbatch; bash -n scripts/slurm_qf_uflra_sample_compare.sbatch",
        "submission": "sbatch --export=ALL,PRIMO_WORKDIR=$PWD,PRIMO_COMPARE_TIMEOUT=10,PRIMO_COMPARE_OUT_ROOT=results/qf-uflra-sample-6e44027 scripts/slurm_qf_uflra_sample_compare.sbatch",
        "render_html": "python3 scripts/render_solver_compare_html.py results/qf-uflra-sample-6e44027 --solvers default first ranked adaptive z3 --title 'QF_UFLRA sample comparison 6e44027' --timeout 10 --out results/qf-uflra-sample-6e44027/index.html"
      },
      "benchmark": {
        "suite": "benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "logic": "QF_UFLRA",
        "root": "tmp/QF_UFLRA",
        "families": [
          "FFT",
          "cpachecker-bmc-svcomp14",
          "cpachecker-induction-svcomp14",
          "mathsat"
        ],
        "instances": 20,
        "timeout_seconds": 10
      },
      "solvers": {
        "default": "build-slurm-rel/primo --quiet --stats",
        "first": "build-slurm-rel/primo --quiet --stats --model-equality-branching",
        "ranked": "build-slurm-rel/primo --quiet --stats --model-equality-branching --model-equality-branch-policy ranked",
        "adaptive": "build-slurm-rel/primo --quiet --stats --model-equality-branching --model-equality-branch-policy adaptive",
        "z3": "contrib/local/bin/z3"
      },
      "summary": {
        "default": "16/20 solved, 4 timeouts, 0 wrong, PAR2 84.735791; family solved FFT 5/5, cpachecker-bmc 3/5, cpachecker-induction 3/5, mathsat 5/5.",
        "first": "16/20 solved, 4 timeouts, 0 wrong, PAR2 97.073929; family solved FFT 5/5, cpachecker-bmc 3/5, cpachecker-induction 3/5, mathsat 5/5.",
        "ranked": "15/20 solved, 5 timeouts, 0 wrong, PAR2 109.200700; family solved FFT 5/5, cpachecker-bmc 3/5, cpachecker-induction 2/5, mathsat 5/5.",
        "adaptive": "15/20 solved, 5 timeouts, 0 wrong, PAR2 109.186083; family solved FFT 5/5, cpachecker-bmc 3/5, cpachecker-induction 2/5, mathsat 5/5.",
        "z3": "20/20 solved, 0 timeouts, 0 wrong, PAR2 3.886172; every family 5/5 solved."
      },
      "outcome": "No solved-count movement relative to the 1267d8b sample comparison. Default remains the best Primo configuration on this sample; the accepted memoization primarily removes a local preprocessing cliff on repeated mixed-purification rewrites."
    },
    {
      "id": "2026-08-02-qf-uflra-model-equality-mutation-local-fuzz-c6e6071",
      "date": "2026-08-02",
      "commit": "c6e607109f1dbed800d9a0cdc81049d53a862de2",
      "branch": "nelson-oppen-closure-methods",
      "kind": "fuzz",
      "scope": "Local QF_UFLRA mixed-formula fuzz gate for the default-on mutation filter inside the default-off model-equality branching mode.",
      "evidence_status": "current",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--model-equality-branching --ref contrib/local/bin/z3 --count 1000 --seed 20260802 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-model-equality-mutation-1000-c6e6071",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet --model-equality-branching"
      },
      "references": [
        {
          "name": "z3",
          "argv": "contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py",
        "logic": "QF_UFLRA",
        "shape": "mixed",
        "seed": 20260802,
        "count": 1000,
        "timeout_seconds": 5,
        "manifest": null
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uflra-model-equality-mutation-1000-c6e6071/summary.csv",
        "results": null,
        "logs": null,
        "bugs": null
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "parser_or_type_error": 0,
        "reference_disagreement": 0,
        "sat": 716,
        "unsat": 284
      },
      "notes": "This is a local merge-gate run for a default-off experimental option path. It is not a headline SLURM performance comparison."
    },
    {
      "id": "2026-08-02-qf-uflra-mutation-compare-e898a5e",
      "date": "2026-08-02",
      "commit": "e898a5e",
      "branch": "nelson-oppen-closure-methods",
      "kind": "benchmark",
      "scope": "SLURM QF_UFLRA 5-per-family sample comparison of default solving, model-equality branching with the mutation filter, and the same branch policies with the mutation filter disabled.",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "workspace": "<fresh-remote-workspace>",
        "binary": "build-slurm-rel/primo at e898a5e, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": null,
        "job_id": "118704",
        "remote_artifact_dir": "<fresh-remote-workspace>/results/qf-uflra-mutation-compare-e898a5e",
        "local_html": "results/qf-uflra-mutation-compare-e898a5e/index.html"
      },
      "commands": {
        "workspace_prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --local-dir . --sync-mode archive --jobs 4",
        "stage_manifest_files": "python3 scripts/slurm_stage_manifest_files.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --root tmp/QF_UFLRA --manifest benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "pre_submit_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --local-dir . --check-only",
        "sbatch_validation": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_sample_compare.sbatch; bash -n scripts/slurm_qf_uflra_sample_compare.sbatch",
        "submission": "sbatch --export=ALL,PRIMO_WORKDIR=$PWD,PRIMO_COMPARE_TIMEOUT=10,PRIMO_COMPARE_OUT_ROOT=results/qf-uflra-mutation-compare-e898a5e,PRIMO_COMPARE_SOLVERS='<five sanitized solver specs>' scripts/slurm_qf_uflra_sample_compare.sbatch",
        "render_html": "python3 scripts/render_solver_compare_html.py results/qf-uflra-mutation-compare-e898a5e --solvers default first_mut first_nomut ranked_mut ranked_nomut --title 'QF_UFLRA mutation comparison e898a5e' --timeout 10 --out results/qf-uflra-mutation-compare-e898a5e/index.html"
      },
      "benchmark": {
        "suite": "benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "logic": "QF_UFLRA",
        "root": "tmp/QF_UFLRA",
        "families": [
          "FFT",
          "cpachecker-bmc-svcomp14",
          "cpachecker-induction-svcomp14",
          "mathsat"
        ],
        "instances": 20,
        "timeout_seconds": 10
      },
      "solvers": {
        "default": "build-slurm-rel/primo --quiet --stats",
        "first_mut": "build-slurm-rel/primo --quiet --stats --model-equality-branching",
        "first_nomut": "build-slurm-rel/primo --quiet --stats --model-equality-branching --no-model-equality-mutation",
        "ranked_mut": "build-slurm-rel/primo --quiet --stats --model-equality-branching --model-equality-branch-policy ranked",
        "ranked_nomut": "build-slurm-rel/primo --quiet --stats --model-equality-branching --model-equality-branch-policy ranked --no-model-equality-mutation"
      },
      "summary": {
        "default": "16/20 solved, 4 timeouts, 0 wrong, PAR2 84.772386.",
        "first_mut": "16/20 solved, 4 timeouts, 0 wrong, PAR2 84.308055; mutation checks 389, mutated/skipped 371, forced 18, optional equality atoms created 0.",
        "first_nomut": "16/20 solved, 4 timeouts, 0 wrong, PAR2 97.185286; candidates 515, assumptions 630, optional equality atoms created 59.",
        "ranked_mut": "16/20 solved, 4 timeouts, 0 wrong, PAR2 84.304383; mutation checks 389, mutated/skipped 371, forced 18, optional equality atoms created 0.",
        "ranked_nomut": "15/20 solved, 5 timeouts, 0 wrong, PAR2 109.210894; candidates 848, assumptions 602, optional equality atoms created 59."
      },
      "outcome": "The mutation filter materially suppresses avoidable model-equality guesses on this sample and removes the ranked-policy solved-count regression, but it does not improve solved count over default solving. Treat it as a useful guard for the experimental branch path, not as a default-performance win."
    },
    {
      "id": "2026-08-02-qf-uflra-broader-100-mutation-compare-6799453",
      "date": "2026-08-02",
      "commit": "6799453",
      "branch": "nelson-oppen-closure-methods",
      "kind": "benchmark",
      "scope": "SLURM QF_UFLRA broader 100-instance deterministic sample comparison of default solving, model-equality branching with the mutation filter, the same branch policies with mutation disabled, and Z3.",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "workspace": "<fresh-remote-workspace>",
        "binary": "build-slurm-rel/primo at 6799453, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3, version 5.0.0",
        "job_ids": [
          "118729",
          "118746"
        ],
        "remote_artifact_dir": "<fresh-remote-workspace>/results/qf-uflra-broader-100-mutation-compare-6799453",
        "local_html": "results/qf-uflra-broader-100-mutation-compare-6799453/index.html"
      },
      "commands": {
        "workspace_prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --local-dir . --sync-mode archive --jobs 4",
        "stage_manifest_files": "python3 scripts/slurm_stage_manifest_files.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --root tmp/QF_UFLRA --manifest benchmarks/qf_uflra-smtlib-broader-100.txt",
        "pre_submit_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --local-dir . --check-only",
        "sbatch_validation": "python3 scripts/slurm_validate_sbatch.py /tmp/primo_qf_uflra_broader_compare.sbatch; bash -n /tmp/primo_qf_uflra_broader_compare.sbatch; python3 scripts/slurm_validate_sbatch.py /tmp/primo_qf_uflra_broader_z3.sbatch; bash -n /tmp/primo_qf_uflra_broader_z3.sbatch",
        "submission": "sbatch --export=ALL,PRIMO_WORKDIR=$PWD,PRIMO_COMPARE_TIMEOUT=10,PRIMO_COMPARE_MANIFEST=benchmarks/qf_uflra-smtlib-broader-100.txt,PRIMO_COMPARE_OUT_ROOT=results/qf-uflra-broader-100-mutation-compare-6799453,PRIMO_COMPARE_SOLVERS='<sanitized solver specs>' scripts/slurm_qf_uflra_broader_compare.sbatch; after installing z3, reran a one-task z3 column with scripts/slurm_qf_uflra_broader_z3.sbatch",
        "render_html": "python3 scripts/render_solver_compare_html.py results/qf-uflra-broader-100-mutation-compare-6799453 --solvers default first_mut first_nomut ranked_mut ranked_nomut z3 --title 'QF_UFLRA broader 100 mutation comparison 6799453' --timeout 10 --out results/qf-uflra-broader-100-mutation-compare-6799453/index.html"
      },
      "benchmark": {
        "suite": "benchmarks/qf_uflra-smtlib-broader-100.txt",
        "logic": "QF_UFLRA",
        "root": "tmp/QF_UFLRA",
        "selection": "all 10 FFT, all 15 cpachecker-bmc-svcomp14, lexicographically first 50 cpachecker-induction-svcomp14, lexicographically first 25 mathsat",
        "families": [
          "FFT",
          "cpachecker-bmc-svcomp14",
          "cpachecker-induction-svcomp14",
          "mathsat"
        ],
        "instances": 100,
        "timeout_seconds": 10
      },
      "solvers": {
        "default": "build-slurm-rel/primo --quiet --stats",
        "first_mut": "build-slurm-rel/primo --quiet --stats --model-equality-branching",
        "first_nomut": "build-slurm-rel/primo --quiet --stats --model-equality-branching --no-model-equality-mutation",
        "ranked_mut": "build-slurm-rel/primo --quiet --stats --model-equality-branching --model-equality-branch-policy ranked",
        "ranked_nomut": "build-slurm-rel/primo --quiet --stats --model-equality-branching --model-equality-branch-policy ranked --no-model-equality-mutation",
        "z3": "contrib/local/bin/z3"
      },
      "summary": {
        "default": "43/100 solved, 54 timeouts with stats, 3 errors, 0 wrong, PAR2 1156.762708; family solved FFT 10/10, cpachecker-bmc 4/15, cpachecker-induction 4/50, mathsat 25/25.",
        "first_mut": "44/100 solved, 56 timeouts, 0 errors, 0 wrong, PAR2 1134.975644; family solved FFT 10/10, cpachecker-bmc 4/15, cpachecker-induction 5/50, mathsat 25/25; mutation checks 889, mutated/skipped 846, forced 43, optional equality atoms created 0.",
        "first_nomut": "44/100 solved, 56 timeouts, 0 errors, 0 wrong, PAR2 1162.584383; candidates 1411, assumptions 1528, optional equality atoms created 170.",
        "ranked_mut": "44/100 solved, 56 timeouts, 0 errors, 0 wrong, PAR2 1134.987623; mutation checks 889, mutated/skipped 846, forced 43, optional equality atoms created 0.",
        "ranked_nomut": "43/100 solved, 57 timeouts, 0 errors, 0 wrong, PAR2 1175.989831; candidates 1869, assumptions 1839, optional equality atoms created 173.",
        "z3": "92/100 solved, 8 timeouts, 0 wrong, PAR2 204.999821; family solved FFT 10/10, cpachecker-bmc 7/15, cpachecker-induction 50/50, mathsat 25/25."
      },
      "outcome": "The broader sample confirms that the mutation filter is active and removes most optional equality search: mutation-on checks 889 LRA-model-equal pairs and skips 846, while no-mutation variants create about 170 optional equality atoms and have worse PAR2. The solved-count movement over default is only +1 and is not a clean search win because default also hit three CaDiCaL factor API aborts on cpachecker-induction files. Local triage reproduced those aborts and showed --cadical-option=factor=0 avoids the abort on the three repro files, turning two into local 15s timeouts and one into sat."
    },
    {
      "id": "2026-08-02-cadical-declare-more-variables-8e88eef",
      "date": "2026-08-02",
      "commit": "8e88eef8e4cb14b73daff8f918658dbe654464ce",
      "branch": "nelson-oppen-closure-methods",
      "kind": "correctness",
      "scope": "CaDiCaL incremental variable-allocation protocol fix for QF_UFLRA runs that add SAT variables after earlier solve calls while CaDiCaL's factor option is enabled.",
      "evidence_status": "current",
      "environment": {
        "type": "local",
        "binary": "build/primo at 8e88eef, Debug, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3, version 5.0.0",
        "artifact_dir": "fuzz-results/qf_uflra-cadical-declare-vars-1000-8e88eef"
      },
      "commands": {
        "build": "cmake -B build -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH=/workspace/contrib/local; cmake --build build --target primo",
        "regression_unit": "cmake --build build --target primo_sat_backend_tests primo -j4 && ./build/primo_sat_backend_tests",
        "repro": "timeout 15 ./build/primo --quiet --stats <three cpachecker-induction QF_UFLRA files that aborted in 2026-08-02-qf-uflra-broader-100-mutation-compare-6799453>",
        "fuzz": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --ref contrib/local/bin/z3 --count 1000 --seed 20260802 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-cadical-declare-vars-1000-8e88eef",
        "validation": "make lint; make check; make asan-test; make docs; git diff --check; rg --files -g '*.cpp' | rg -v '(^build/|^build-asan/|^contrib/|antlr|generated)' | xargs clang-tidy -p build --quiet"
      },
      "summary": {
        "protocol_root_cause": "CaDiCaL 3.0's factor/BVA machinery can introduce internal extension variables. Incremental clients that add more user variables after solve must use declare_more_variables() when available; Primo previously grew max_var with resize()/reserve(), which can collide with CaDiCaL-owned extension variables and causes CaDiCaL to abort by design.",
        "implemented_fix": "CMake now detects CaDiCaL::Solver::declare_more_variables; sat::CadicalBackend::new_var() uses it when available and falls back to resize()/reserve() only for older CaDiCaL versions.",
        "local_repro": "The three default-run cpachecker-induction aborts from the broader 100-instance SLURM comparison no longer abort locally with default CaDiCaL options: two return unknown under a 15s timeout and one returns sat.",
        "fuzz": "1000 generated mixed QF_UFLRA cases, seed 20260802, timeout 5s: PASS 1000, wrong 0, crash 0, reference disagreements 0."
      },
      "outcome": "Accepted and committed as 8e88eef. The protocol abort is fixed locally and covered by a SAT-backend regression test plus QF_UFLRA differential fuzzing. A fresh SLURM broader-sample rerun is still needed before replacing the previous 6799453 performance table."
    },
    {
      "id": "2026-08-02-qf-uflra-no-prop-stats-missing-reference-118780",
      "date": "2026-08-02",
      "commit": "957a5db8625113c886731c91e4be17fce86317d1",
      "branch": "nelson-oppen-closure-methods",
      "kind": "fuzz",
      "scope": "Rejected SLURM QF_UFLRA mixed smoke-fuzzer gate for Nelson-Oppen interface equality propagation statistics.",
      "evidence_status": "rejected",
      "environment": {
        "type": "slurm",
        "workspace": "<fresh-remote-workspace>",
        "binary": "build-slurm-rel/primo at 957a5db, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "z3 missing from the remote workspace PATH",
        "job_ids": [
          "118780"
        ],
        "remote_artifact_dir": "<fresh-remote-workspace>/slurm-results/qf_uflra-no-prop-stats-957a5db"
      },
      "commands": {
        "workspace_prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --local-dir . --target primo --jobs 4",
        "pre_submit_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --local-dir . --target primo --check-only",
        "sbatch_validation": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_fuzz_gate.sbatch; bash -n scripts/slurm_qf_uflra_fuzz_gate.sbatch",
        "submission": "sbatch --export=ALL,PRIMO_WORKDIR=$PWD,PRIMO_FUZZ_COUNT=750,PRIMO_FUZZ_SEED_BASE=202608020,PRIMO_FUZZ_OUT_DIR=slurm-results/qf_uflra-no-prop-stats-957a5db scripts/slurm_qf_uflra_fuzz_gate.sbatch"
      },
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py",
        "logic": "QF_UFLRA",
        "shape": "mixed",
        "seed_base": 202608020,
        "array_tasks": 4,
        "count_per_task": 750,
        "count": 3000,
        "timeout_seconds": 5
      },
      "summary": {
        "total": 3000,
        "pass": 0,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_unusable": 3000,
        "reference_disagreement": 0
      },
      "outcome": "Rejected as fuzz evidence because every generated case reported REFERENCE_UNUSABLE: the remote workspace did not yet have z3 installed. The replacement SLURM gate is 2026-08-02-qf-uflra-no-prop-stats-118786."
    },
    {
      "id": "2026-08-02-qf-uflra-no-prop-stats-118786",
      "date": "2026-08-02",
      "commit": "957a5db8625113c886731c91e4be17fce86317d1",
      "branch": "nelson-oppen-closure-methods",
      "kind": "fuzz",
      "scope": "SLURM QF_UFLRA mixed smoke-fuzzer gate for Nelson-Oppen interface equality propagation statistics.",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "workspace": "<fresh-remote-workspace>",
        "binary": "build-slurm-rel/primo at 957a5db, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3, version 5.0.0",
        "job_ids": [
          "118786"
        ],
        "remote_artifact_dir": "<fresh-remote-workspace>/slurm-results/qf_uflra-no-prop-stats-957a5db-z3",
        "local_artifact_dir": "results/slurm-qf_uflra-no-prop-stats-118786"
      },
      "commands": {
        "workspace_prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --local-dir . --target primo --jobs 4",
        "reference_install": "cd <fresh-remote-workspace> && make contrib-z3 && PATH=$PWD/contrib/local/bin:$PATH z3 --version",
        "pre_submit_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-workspace> --local-dir . --target primo --check-only",
        "sbatch_validation": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_fuzz_gate.sbatch; bash -n scripts/slurm_qf_uflra_fuzz_gate.sbatch",
        "submission": "sbatch --export=ALL,PRIMO_WORKDIR=$PWD,PRIMO_FUZZ_COUNT=750,PRIMO_FUZZ_SEED_BASE=202608030,PRIMO_FUZZ_OUT_DIR=slurm-results/qf_uflra-no-prop-stats-957a5db-z3 scripts/slurm_qf_uflra_fuzz_gate.sbatch",
        "local_validation": "cmake --build build --target primo_qf_lra_solver_tests primo -j4; ./build/primo_qf_lra_solver_tests; make check before creating .venv (tests pass, Python lint skipped because ruff was absent); after creating .venv and installing ruff, make lint exposes the existing scripts/contrib Python lint baseline; make docs; make asan-test; git diff --check; make tidy; python3 /home/user/.codex/skills/solver-efficiency-review/scripts/solver_efficiency_snapshot.py --repo ."
      },
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py",
        "logic": "QF_UFLRA",
        "shape": "mixed",
        "seed_base": 202608030,
        "array_tasks": 4,
        "count_per_task": 750,
        "count": 3000,
        "timeout_seconds": 5
      },
      "summary": {
        "total": 3000,
        "pass": 3000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_unusable": 0,
        "reference_disagreement": 0
      },
      "outcome": "Accepted as the SLURM fuzz gate for commit 957a5db. The change adds statistics for existing, missing, lazily created, already-true, false-assigned, clause-emitting, reason-literal, and recheck behavior in guarded NO interface equality propagation; it preserves the existing propagation semantics. make lint was rerun after creating .venv and enabling ruff, which exposed an existing unrelated Python lint baseline across scripts/contrib rather than a regression in this C++/documentation change."
    },
    {
      "id": "2026-08-03-qf-uflra-no-online-prop-118988",
      "date": "2026-08-03",
      "commit": "c2bca93",
      "branch": "nelson-oppen-closure-methods",
      "kind": "fuzz",
      "scope": "SLURM QF_UFLRA mixed smoke-fuzzer gate for opt-in Nelson-Oppen online propagation.",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "workspace": "<fresh-remote-archive-workspace>",
        "binary": "build-slurm-rel/primo at c2bca93, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": ".venv-fuzz/bin/z3, version 5.0.0",
        "job_ids": [
          "118988"
        ],
        "remote_artifact_dir": "<fresh-remote-archive-workspace>/fuzz-results/qf_uflra-no-online-c2bca93",
        "local_artifact_dir": "fuzz-results/qf_uflra-no-online-c2bca93"
      },
      "commands": {
        "workspace_prepare": "git archive c2bca93 copied to <fresh-remote-archive-workspace>; no .git history or local workspace artifacts were synchronized",
        "remote_build": "cmake -B build-slurm-rel -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$PWD/contrib/local -DPRIMO_GIT_REVISION_OVERRIDE=c2bca93; cmake --build build-slurm-rel --target primo -j4",
        "reference_install": "python3 -m venv .venv-fuzz; . .venv-fuzz/bin/activate; python -m pip install --upgrade pip z3-solver; z3 -version",
        "pre_submit_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-archive-workspace> --local-dir /workspace --target primo",
        "sbatch_validation": "python3 scripts/slurm_validate_sbatch.py /tmp/primo_qf_uflra_online_fuzz.sbatch; bash -n /tmp/primo_qf_uflra_online_fuzz.sbatch",
        "submission": "sbatch primo_qf_uflra_online_fuzz.sbatch",
        "fuzz_task": "python3 scripts/qf_uflra_smoke_fuzz.py --solver build-slurm-rel/primo --solver-arg=--quiet --solver-arg=--nelson-oppen-prop=online --ref .venv-fuzz/bin/z3 --count 250 --seed 2026080300+SLURM_ARRAY_TASK_ID --timeout 5 --shape mixed --out fuzz-results/qf_uflra-no-online-c2bca93/shard-$SLURM_ARRAY_TASK_ID"
      },
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py",
        "logic": "QF_UFLRA",
        "shape": "mixed",
        "seed_base": 2026080300,
        "array_tasks": 4,
        "count_per_task": 250,
        "count": 1000,
        "timeout_seconds": 5
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_unusable": 0,
        "reference_disagreement": 0,
        "sat": 702,
        "unsat": 298
      },
      "outcome": "Accepted as the SLURM merge fuzz gate for opt-in online Nelson-Oppen propagation at commit c2bca93. The implementation commit was staged from a git archive rather than rsyncing a full working tree, and the revision override made the remote binary report c2bca93 despite the archive containing no .git directory. An earlier submission, job 118984, is rejected because the batch script passed solver options as separate --solver-arg values and argparse stopped before generating cases."
    },
    {
      "id": "2026-08-03-qf-uflra-no-lra-publish-6cc6be3",
      "date": "2026-08-03",
      "commit": "6cc6be3",
      "branch": "nelson-oppen-closure-methods",
      "kind": "fuzz",
      "scope": "SLURM QF_UFLRA mixed smoke-fuzzer gate for LRA-owned Nelson-Oppen interface equality publishing.",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "workspace": "<fresh-remote-archive-workspace>",
        "binary": "build-slurm-rel/primo at 6cc6be3, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": ".venv-fuzz/bin/z3, version 5.0.0",
        "job_ids": [
          "<omitted>"
        ],
        "remote_artifact_dir": "<fresh-remote-archive-workspace>/fuzz-results/qf_uflra-no-lra-publish-6cc6be3",
        "local_artifact_dir": "fuzz-results/qf_uflra-no-lra-publish-6cc6be3"
      },
      "commands": {
        "workspace_prepare": "git archive 6cc6be3 copied to <fresh-remote-archive-workspace>; no .git history or local working-tree artifacts were synchronized",
        "remote_build": "cmake -B build-slurm-rel -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$PWD/contrib/local -DPRIMO_GIT_REVISION_OVERRIDE=6cc6be3; cmake --build build-slurm-rel --target primo -j4",
        "reference_install": "python3 -m venv .venv-fuzz; . .venv-fuzz/bin/activate; python -m pip install --upgrade pip z3-solver; z3 -version",
        "pre_submit_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-archive-workspace> --local-dir /workspace --target primo",
        "sbatch_validation": "python3 scripts/slurm_validate_sbatch.py /tmp/primo_qf_uflra_lra_publish_fuzz.sbatch; bash -n /tmp/primo_qf_uflra_lra_publish_fuzz.sbatch",
        "submission": "sbatch primo_qf_uflra_lra_publish_fuzz.sbatch",
        "fuzz_task": "python3 scripts/qf_uflra_smoke_fuzz.py --solver build-slurm-rel/primo --solver-arg=--quiet --solver-arg=--nelson-oppen-prop=online --ref .venv-fuzz/bin/z3 --count 250 --seed 2026080310+SLURM_ARRAY_TASK_ID --timeout 5 --shape mixed --out fuzz-results/qf_uflra-no-lra-publish-6cc6be3/shard-$SLURM_ARRAY_TASK_ID",
        "local_validation": "cmake --build build --target primo_qf_lra_solver_tests primo_theory_combination_tests primo -j4; ./build/primo_qf_lra_solver_tests; ./build/primo_theory_combination_tests; make docs; git diff --check; ctest --test-dir build --output-on-failure; make asan-test; make tidy; python3 /home/user/.codex/skills/solver-efficiency-review/scripts/solver_efficiency_snapshot.py --repo ."
      },
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py",
        "logic": "QF_UFLRA",
        "shape": "mixed",
        "seed_base": 2026080310,
        "array_tasks": 4,
        "count_per_task": 250,
        "count": 1000,
        "timeout_seconds": 5
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_unusable": 0,
        "reference_disagreement": 0,
        "sat": 710,
        "unsat": 290
      },
      "outcome": "Accepted as the SLURM merge fuzz gate for LRA-owned interface equality publishing at commit 6cc6be3. The implementation was staged from a git archive rather than synchronizing a full working tree. The numeric SLURM job id and private remote path are omitted from the committed ledger under the no-private-cluster-id policy."
    },
    {
      "id": "2026-08-03-qf-uflra-no-online-shallow-cee669f",
      "date": "2026-08-03",
      "commit": "cee669f",
      "branch": "nelson-oppen-closure-methods",
      "kind": "benchmark",
      "scope": "Shallow SLURM QF_UFLRA comparison of default final Nelson-Oppen interface propagation, opt-in online paired-bound LRA propagation, and Z3 on the 5-per-family sample.",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "workspace": "<fresh-remote-archive-workspace>",
        "binary": "build-slurm-rel/primo at cee669f, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": ".venv-eval/bin/z3, version 5.0.0",
        "job_ids": [
          "<omitted>"
        ],
        "remote_artifact_dir": "<fresh-remote-archive-workspace>/results/qf_uflra-no-online-smoke-cee669f",
        "local_artifact_dir": "results/qf_uflra-no-online-smoke-cee669f",
        "local_html": "results/qf_uflra-no-online-smoke-cee669f/index.html"
      },
      "commands": {
        "workspace_prepare": "git archive cee669f copied to <fresh-remote-archive-workspace>; no .git history or local working-tree artifacts were synchronized",
        "manifest_stage": "python3 scripts/slurm_stage_manifest_files.py --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-archive-workspace> --root tmp/QF_UFLRA --manifest benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "remote_build": "cmake -B build-slurm-rel -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=$PWD/contrib/local -DPRIMO_GIT_REVISION_OVERRIDE=cee669f; cmake --build build-slurm-rel --target primo -j4",
        "reference_install": "python3 -m venv .venv-eval; . .venv-eval/bin/activate; python -m pip install --upgrade pip z3-solver; z3 -version",
        "pre_submit_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync --ssh-config <temp-ssh-config> --remote <slurm-alias> --remote-dir <fresh-remote-archive-workspace> --local-dir /workspace --target primo",
        "sbatch_validation": "python3 scripts/slurm_validate_sbatch.py /tmp/primo_qf_uflra_online_shallow_compare.sbatch; bash -n /tmp/primo_qf_uflra_online_shallow_compare.sbatch",
        "submission": "sbatch primo_qf_uflra_online_shallow_compare.sbatch",
        "benchmark_task": "python3 scripts/bench_qf_uf_full.py --repo <fresh-remote-archive-workspace> --root tmp/QF_UFLRA --manifest benchmarks/qf_uflra-smtlib-sample-5-per-family.txt --solver <solver> --solver-arg=<config-options> --timeout 10 --out results/qf_uflra-no-online-smoke-cee669f/<name>.csv --summary results/qf_uflra-no-online-smoke-cee669f/<name>-summary.csv",
        "local_render": "python3 scripts/render_solver_compare_html.py results/qf_uflra-no-online-smoke-cee669f --solvers final online z3 --title 'QF_UFLRA NO online shallow smoke cee669f' --timeout 10 --out results/qf_uflra-no-online-smoke-cee669f/index.html",
        "local_comparison": "python3 scripts/compare_solver_answers.py results/qf_uflra-no-online-smoke-cee669f --timeout 10"
      },
      "inputs": {
        "manifest": "benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "root": "tmp/QF_UFLRA",
        "logic": "QF_UFLRA",
        "files": 20,
        "timeout_seconds": 10,
        "solvers": {
          "final": "build-slurm-rel/primo --quiet --stats",
          "online": "build-slurm-rel/primo --quiet --stats --nelson-oppen-prop=online",
          "z3": ".venv-eval/bin/z3"
        }
      },
      "summary": {
        "final": {
          "solved": 16,
          "sat": 13,
          "unsat": 3,
          "timeout": 4,
          "error": 0,
          "wrong": 0,
          "seconds_sum": 44.86,
          "par2_total": 84.8,
          "par2_mean": 4.24,
          ":no.interface.equalities-propagated_sum": 92,
          ":no.interface.lra-to-euf-equalities_sum": 55
        },
        "online": {
          "solved": 16,
          "sat": 13,
          "unsat": 3,
          "timeout": 4,
          "error": 0,
          "wrong": 0,
          "seconds_sum": 49.508,
          "par2_total": 89.4,
          "par2_mean": 4.472,
          ":no.online.enabled_nonzero_files": 18,
          ":no.online.lra-published-equalities_sum": 11916,
          ":no.online.lra-published-equalities_nonzero_files": 18,
          ":no.online.lra-bound-equality-candidates_sum": 4409,
          ":no.online.lra-bound-equality-candidates_nonzero_files": 11,
          ":no.online.propagations_sum": 1820,
          ":no.online.propagations_nonzero_files": 8,
          ":no.online.reason-lits_sum": 3640,
          ":no.interface.equalities-propagated_sum": 430,
          ":no.interface.lra-to-euf-equalities_sum": 172
        },
        "z3": {
          "solved": 20,
          "sat": 17,
          "unsat": 3,
          "timeout": 0,
          "error": 0,
          "wrong": 0,
          "seconds_sum": 3.86,
          "par2_total": 3.9,
          "par2_mean": 0.193
        },
        "cross_solver_disagreements": 0,
        "solved_only_by_z3": 4
      },
      "outcome": "The online paired-bound path is active on this sample but is not a performance improvement: final and online both solve 16/20 with no wrong answers or disagreements, while online has higher PAR2 and wall-clock sum. This is shallow diagnostic evidence only, not default-promotion evidence. The useful signal is that paired-bound LRA publishing fires on real SMT-LIB instances: 11,916 published candidates and 1,820 propagated interface equality literals across 8 files. The strongest activity occurs on BMC timeout rows, so the next investigation should inspect whether this creates SAT churn or whether the timeout rows need a different mixed-theory mechanism."
    },
    {
      "id": "2026-08-03-qf-uflra-no-online-profile-cee669f",
      "date": "2026-08-03",
      "commit": "eea5164",
      "branch": "nelson-oppen-closure-methods",
      "kind": "profiling",
      "scope": "Local callgrind and gprof diagnosis of the opt-in online Nelson-Oppen regression observed in the shallow QF_UFLRA comparison.",
      "evidence_status": "current",
      "environment": {
        "type": "local",
        "binary": "build-profile/primo at eea5164, RelWithDebInfo, PRIMO_WARNINGS_AS_ERRORS=OFF for profiling-only GCC 13 build; build-gprof/primo at eea5164 with -pg",
        "artifact_dir": "results/profiles/no-online-cee669f",
        "probe_artifact_dir": "results/local-no-profile-probes"
      },
      "commands": {
        "profile_build": "cmake -B build-profile -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH=$PWD/contrib/local -DPRIMO_GIT_REVISION_OVERRIDE=eea5164 -DPRIMO_WARNINGS_AS_ERRORS=OFF; cmake --build build-profile --target primo -j4",
        "gprof_build": "cmake -B build-gprof -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH=$PWD/contrib/local -DPRIMO_GIT_REVISION_OVERRIDE=eea5164 -DPRIMO_WARNINGS_AS_ERRORS=OFF -DCMAKE_CXX_FLAGS='-pg' -DCMAKE_EXE_LINKER_FLAGS='-pg'; cmake --build build-gprof --target primo -j4",
        "local_probe": "python3 scripts/bench_qf_uf_full.py --repo /workspace --root tmp/QF_UFLRA --manifest <two BMC rows> --solver ./build-profile/primo --solver-arg=--quiet --solver-arg=--stats [--solver-arg=--nelson-oppen-prop=online] --timeout 10",
        "callgrind_final": "valgrind --tool=callgrind --callgrind-out-file=results/profiles/no-online-cee669f/callgrind.mathsat-final.out ./build-profile/primo --quiet --stats tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_14.smt2",
        "callgrind_online": "valgrind --tool=callgrind --callgrind-out-file=results/profiles/no-online-cee669f/callgrind.mathsat-online.out ./build-profile/primo --quiet --stats --nelson-oppen-prop=online tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_14.smt2",
        "gprof_online": "cd results/profiles/no-online-cee669f/gprof && /workspace/build-gprof/primo --quiet --stats --nelson-oppen-prop=online /workspace/tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_14.smt2; gprof /workspace/build-gprof/primo gmon.out > gprof.mathsat-online.txt"
      },
      "inputs": {
        "timeout_probe_files": [
          "tmp/QF_UFLRA/cpachecker-bmc-svcomp14/cpachecker-bmc.floppy_false-unreach-call.i.cil.c.smt2",
          "tmp/QF_UFLRA/cpachecker-bmc-svcomp14/cpachecker-bmc.diskperf_false-unreach-call.i.cil.c.smt2"
        ],
        "profile_file": "tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_14.smt2"
      },
      "summary": {
        "timeout_probe": {
          "floppy_final": {
            "status": "timeout",
            "seconds": 10.015,
            ":sat.decisions": 4393,
            ":sat.conflicts": 74,
            ":sat.propagations": 43091
          },
          "floppy_online": {
            "status": "timeout",
            "seconds": 10.033,
            ":sat.decisions": 1419961,
            ":sat.conflicts": 83,
            ":sat.propagations": 1456790,
            ":no.online.lra-published-equalities": 8534,
            ":no.online.propagations": 1742
          },
          "diskperf_final": {
            "status": "timeout",
            "seconds": 10.013,
            ":sat.decisions": 8524,
            ":sat.conflicts": 40,
            ":sat.propagations": 24269
          },
          "diskperf_online": {
            "status": "timeout",
            "seconds": 10.015,
            ":sat.decisions": 70999,
            ":sat.conflicts": 44,
            ":sat.propagations": 84279,
            ":no.online.lra-published-equalities": 2599,
            ":no.online.propagations": 54
          }
        },
        "profile_file_stats": {
          "final": {
            "wall_seconds": 0.36,
            ":time.solve-us": 356410,
            ":sat.solve-calls": 4,
            ":sat.decisions": 171,
            ":lra.online-check-calls": 127,
            ":lra.pivot-term-ops": 14221,
            ":no.interface.equality-rechecks": 1,
            ":no.online.precreated-equality-atoms": 0
          },
          "online": {
            "wall_seconds": 2.01,
            ":time.solve-us": 2010918,
            ":sat.solve-calls": 17,
            ":sat.decisions": 5808,
            ":lra.online-check-calls": 555,
            ":lra.pivot-term-ops": 18200,
            ":no.interface.equality-rechecks": 16,
            ":no.online.precreated-equality-atoms": 300,
            ":no.online.lra-published-equalities": 69,
            ":no.online.propagations": 5
          }
        },
        "callgrind": {
          "final_total_ir": 2979055658,
          "online_total_ir": 14468797539,
          "online_vs_final_ir_ratio": 4.86,
          "online_top_inclusive": "lra_implied_real_equalities accounts for 12,983,637,602 instructions, 89.74% of online total."
        },
        "gprof_online": {
          "top_self_time": "Rational::operator* 38.93%, Rational::operator+ 13.74%, LraTableau::pivot 13.74%",
          "hot_call_counts": "lra_assignment_conflicts_with_extra_atom 6450 calls, PreparedLraTheory constructor 6517 calls, LraTableau::check 7005 calls"
        }
      },
      "outcome": "The online regression is not parsing/preprocessing and not primarily the paired-bound callback producer. Online precreation and propagated interface equalities increase SAT arrangement traffic, which causes repeated final mixed checks. Each final LRA-to-EUF scan calls lra_implied_real_equalities, which checks all shared Real pairs by rebuilding an augmented LRA theory for lhs < rhs and rhs < lhs. On the solved MathSAT profile case this all-pairs scan dominates callgrind at 89.74% of instructions; gprof independently shows thousands of augmented LRA preparations and tableau checks. The next design decision is whether online mode should skip or cap this broader final LRA equality mining, or replace it with cached/reused LRA equality evidence, while retaining the narrow paired-bound online producer."
    },
    {
      "id": "2026-08-03-qf-uflra-online-lazy-equality-local-gate",
      "date": "2026-08-03",
      "branch": "nelson-oppen-closure-methods",
      "commit": "6d7b494-dirty on nelson-oppen-closure-methods; source/docs/tests/run-log to be committed adjacent to this entry",
      "scope": "Local validation for replacing opt-in QF_UFLRA online all-pairs interface equality precreation with the current candidate-first fallback: precreate only paired-bound interface equality atoms before search, observe them after the CaDiCaL propagator is connected, and skip the broad final LRA all-pairs strict-bound equality scan in online mode only after a paired-bound candidate has materialized.",
      "environment": {
        "host": "local workstation",
        "binary": "./build/primo, Debug, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3",
        "slurm_status": "not run: this workspace exposes no concrete SLURM host, jump host, remote workdir, or usable SSH alias; only redacted placeholders were available"
      },
      "commands": {
        "focused_unit": "cmake --build build --target primo_qf_lra_solver_tests -j2 && ./build/primo_qf_lra_solver_tests",
        "docs": "make docs",
        "diff_check": "git diff --check",
        "cpp_format": "clang-format --dry-run --Werror $(find src tests \\( -name '*.cpp' -o -name '*.hpp' -o -name '*.h' \\) | grep -v '^src/smtlib/antlr/')",
        "ctest": "ctest --test-dir build --output-on-failure",
        "asan_test": "make asan-test",
        "tidy": "make tidy",
        "include_cleaner": "make include-cleaner",
        "local_probe": "/usr/bin/timeout 15s ./build/primo --quiet --stats --nelson-oppen-prop=online tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_14.smt2 and tmp/QF_UFLRA/cpachecker-bmc-svcomp14/cpachecker-bmc.diskperf_false-unreach-call.i.cil.c.smt2",
        "fuzz": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--nelson-oppen-prop=online --ref contrib/local/bin/z3 --count 1000 --seed 20260803 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-online-guarded-skip-1000-6d7b494-dirty",
        "make_check": "make check"
      },
      "artifacts": {
        "local_probes": "results/no-online-lazy-local-probes",
        "fuzz_summary": "fuzz-results/qf_uflra-online-guarded-skip-1000-6d7b494-dirty/summary.csv",
        "fuzz_cases": "fuzz-results/qf_uflra-online-guarded-skip-1000-6d7b494-dirty/cases"
      },
      "summary": {
        "focused_unit": "pass",
        "docs": "pass",
        "diff_check": "pass",
        "cpp_format": "pass",
        "ctest": "13/13 passed",
        "asan_test": "13/13 passed",
        "tidy": "whole-tree clang-tidy passed on 63 tracked non-generated C++ files",
        "include_cleaner": "completed as an advisory whole-tree scan with the repository's existing broad include-cleaner baseline warnings",
        "fuzz": {
          "count": 1000,
          "seed": 20260803,
          "timeout_seconds": 5,
          "shape": "mixed",
          "pass": 1000,
          "wrong_answer": 0,
          "crash": 0,
          "timeout": 0,
          "unsupported": 0,
          "reference_disagreement": 0,
          "ours_answers": {
            "sat": 717,
            "unsat": 283
          },
          "reference_answers": {
            "sat": 717,
            "unsat": 283
          }
        },
        "local_probe": {
          "mathsat_pb_real_10_0100_10_14": {
            "status": "sat",
            ":no.online.shared-real-pairs": 300,
            ":no.online.precreated-equality-atoms": 4,
            ":no.online.paired-bound-precreate-candidates": 4,
            ":no.online.lra-bound-equality-materialized": 14,
            ":no.online.propagations": 3,
            ":no.online.final-lra-equality-scan-skipped": 2,
            ":no.interface.lra-to-euf-equalities": 0
          },
          "cpachecker_bmc_diskperf": {
            "status": "timeout at 15 seconds",
            ":no.online.shared-real-pairs": 34191,
            ":no.online.precreated-equality-atoms": 93,
            ":no.online.paired-bound-precreate-candidates": 93,
            ":no.online.lra-bound-equality-materialized": 8586,
            ":no.online.propagations": 3645,
            ":no.online.final-lra-equality-scan-skipped": 2
          },
          "backend_limit": "An attempted true lazy callback path was rejected by CaDiCaL: declare_more_variables is invalid in the callback state, and add_observed_var must run only after a propagator is connected. The accepted implementation therefore uses the reduced paired-bound precreation fallback, not the full shared-pair cross product."
        },
        "make_check": "blocked by pre-existing repository-wide Ruff baseline in scripts/ and contrib/ before this change's tests; C++ format, py_compile prefix, docs, and CTest were checked separately"
      },
      "counters_checked_by_unit_tests": [
        ":no.online.precreated-equality-atoms == 1 on the simple paired-bound regression",
        ":no.online.paired-bound-precreate-candidates == 1 on the simple paired-bound regression",
        ":no.online.shared-real-pairs == 3 and :no.interface.sat-equality-atoms == 1 on the unpublished-shared-pair regression",
        ":no.online.lra-bound-equality-missing-atoms == 0 under the static paired-bound fallback",
        ":no.online.lra-bound-equality-materialized >= 1",
        ":no.online.lazy-equality-atoms-created == 0 under the current CaDiCaL fallback",
        ":no.online.final-lra-equality-scan-skipped >= 1 on a SAT final-check case",
        "pure QF_UF and pure QF_LRA keep :no.online.enabled == 0"
      ],
      "outcome": "Local correctness evidence supports the reduced candidate-first fallback: the paired-bound producer still propagates with two reason literals, only paired-bound candidate equalities are precreated and observed, unrelated shared Real pairs are not materialized just because they are in the full pair set, and online final checks skip the profiled broad all-pairs LRA equality scan only after a paired-bound equality candidate has materialized. True lazy in-callback equality creation remains future work for a backend phase that permits fresh variable allocation. SLURM sample comparison and SLURM fuzz were not run from this context because concrete cluster connection details were unavailable."
    },
    {
      "id": "2026-08-04-qf-uflra-online-candidate-slurm-c4caf88",
      "date": "2026-08-04",
      "branch": "nelson-oppen-closure-methods",
      "commit": "c4caf88",
      "kind": "slurm-fuzz-and-sample-comparison",
      "scope": "SLURM validation of the candidate-first online Nelson-Oppen path before the final-arrangement fallback follow-up.",
      "evidence_status": "superseded_by_followup",
      "environment": {
        "type": "slurm",
        "cluster": "sanitized per cluster privacy policy",
        "job_ids": "omitted from committed run log per cluster privacy policy; available in agent transcript",
        "binary": "build-slurm-rel/primo at c4caf88, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3 5.0.0",
        "artifact_dirs": [
          "results/slurm-qf_uflra-online-candidate-shallow-c4caf88",
          "fuzz-results/slurm-qf_uflra-online-candidate-fuzz-c4caf88",
          "slurm_logs/c4caf88-no-online"
        ]
      },
      "commands": {
        "workspace_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync --ssh-config <sanitized> --remote <sanitized> --remote-dir <sanitized> --local-dir . --target primo",
        "sample_compare": "sbatch --array=0-2 --export=ALL,PRIMO_WORKDIR=<remote-workdir>,PRIMO_COMPARE_TIMEOUT=10,PRIMO_COMPARE_OUT_ROOT=results/qf_uflra-online-candidate-shallow-c4caf88,PRIMO_COMPARE_SOLVERS='final=build-slurm-rel/primo --quiet --stats;online=build-slurm-rel/primo --quiet --stats --nelson-oppen-prop=online;z3=contrib/local/bin/z3' scripts/slurm_qf_uflra_sample_compare.sbatch",
        "fuzz": "sbatch --array=0-3 qf_uflra online smoke fuzz, 250 generated cases per task, seed base 202608040, solver './build-slurm-rel/primo --quiet --nelson-oppen-prop=online', reference z3"
      },
      "inputs": {
        "sample_manifest": "benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "sample_root": "tmp/QF_UFLRA",
        "fuzz_count": 1000,
        "fuzz_shape": "mixed",
        "timeout_seconds": {
          "sample": 10,
          "fuzz": 5
        }
      },
      "summary": {
        "fuzz": {
          "pass": 1000,
          "wrong_answer": 0,
          "crash": 0,
          "timeout": 0,
          "reference_disagreement": 0,
          "ours_answers": {
            "sat": 713,
            "unsat": 287
          },
          "reference_answers": {
            "sat": 713,
            "unsat": 287
          }
        },
        "sample_compare": {
          "final": {
            "total": 20,
            "solved_sat_unsat": 16,
            "status_ok": 16,
            "timeout": 4,
            "wrong": 0,
            "par2_total": 84.755498,
            "answers": {
              "sat": 13,
              "unsat": 3,
              "unknown": 4
            }
          },
          "online": {
            "total": 20,
            "solved_sat_unsat": 14,
            "status_ok": 16,
            "timeout": 4,
            "wrong": 0,
            "par2_total": 123.368838,
            "answers": {
              "sat": 11,
              "unsat": 3,
              "unknown": 6
            }
          },
          "z3": {
            "total": 20,
            "solved_sat_unsat": 20,
            "status_ok": 20,
            "timeout": 0,
            "wrong": 0,
            "par2_total": 3.800161,
            "answers": {
              "sat": 17,
              "unsat": 3
            }
          },
          "cross_solver_disagreements": 0
        },
        "regression": {
          "kind": "online unknown regressions relative to final mode",
          "files": [
            "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.1_3.c_false-unreach-call.i.smt2",
            "tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_12.smt2"
          ],
          "diagnosis": "Both rows had materialized paired-bound online candidates, skipped the broad final LRA equality scan, then failed the final shared-Real separation search. The broad final scan in default mode supplied additional LRA-implied equalities needed to accept the SAT arrangement."
        },
        "probes": {
          "mathsat_pb_real_10_0100_10_14": {
            "final": {
              "status": "sat",
              "seconds": 0.800888,
              ":sat.decisions": 171,
              ":sat.propagations": 515,
              ":no.interface.lra-to-euf-equalities": 8
            },
            "online": {
              "status": "sat",
              "seconds": 0.4166,
              ":sat.decisions": 170,
              ":sat.propagations": 516,
              ":no.online.precreated-equality-atoms": 4,
              ":no.online.lra-bound-equality-materialized": 14,
              ":no.online.propagations": 3,
              ":no.online.final-lra-equality-scan-skipped": 2,
              ":no.interface.lra-to-euf-equalities": 0
            }
          },
          "cpachecker_bmc_diskperf": {
            "final": {
              "status": "timeout",
              "seconds": 10.0142,
              ":sat.decisions": 8524,
              ":sat.propagations": 24269
            },
            "online": {
              "status": "timeout",
              "seconds": 10.015245,
              ":sat.decisions": 196630,
              ":sat.propagations": 407295,
              ":no.online.precreated-equality-atoms": 93,
              ":no.online.lra-bound-equality-materialized": 8586,
              ":no.online.propagations": 3645,
              ":no.online.final-lra-equality-scan-skipped": 2
            }
          }
        }
      },
      "outcome": "SLURM fuzz found no correctness disagreement, but the shallow sample found that c4caf88's online final-scan skip was too aggressive for two SAT final arrangements. This evidence prompted the follow-up final-arrangement fallback: keep the normal online skip, but if separation/model validation fails after the skip, run the broad LRA equality scan once for final validation only."
    },
    {
      "id": "2026-08-04-qf-uflra-online-final-scan-fallback-local",
      "date": "2026-08-04",
      "branch": "nelson-oppen-closure-methods",
      "commit": "ebe692a",
      "kind": "local-validation",
      "scope": "Local validation for the online final-arrangement fallback after the c4caf88 SLURM sample exposed SAT-to-unknown regressions.",
      "evidence_status": "pending_commit_and_slurm_followup",
      "environment": {
        "type": "local",
        "binary": "./build/primo, Debug, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3",
        "artifact_dirs": [
          "fuzz-results/qf_uflra-online-fallback-1000-local"
        ]
      },
      "commands": {
        "focused_build": "cmake --build build --target primo_qf_lra_solver_tests primo -j2",
        "focused_unit": "./build/primo_qf_lra_solver_tests",
        "regression_probes": "./build/primo --quiet --stats --nelson-oppen-prop=online <two SLURM-regressed QF_UFLRA files plus MathSAT pb_real_10_0100_10_14>",
        "ctest": "ctest --test-dir build --output-on-failure",
        "docs": "make docs",
        "diff_check": "git diff --check",
        "cpp_format": "clang-format --dry-run --Werror $(find src tests \\( -name '*.cpp' -o -name '*.hpp' -o -name '*.h' \\) | grep -v '^src/smtlib/antlr/')",
        "asan_test": "make asan-test",
        "tidy": "make tidy",
        "include_cleaner": "make include-cleaner",
        "efficiency_review": "/home/user/.codex/skills/solver-efficiency-review/scripts/solver_efficiency_snapshot.py --repo .",
        "fuzz": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--nelson-oppen-prop=online --ref contrib/local/bin/z3 --count 1000 --seed 20260804 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-online-fallback-1000-local",
        "make_check": "make check"
      },
      "summary": {
        "focused_unit": "pass",
        "ctest": "13/13 passed",
        "docs": "pass",
        "diff_check": "pass",
        "cpp_format": "pass",
        "asan_test": "13/13 passed",
        "tidy": "whole-tree clang-tidy passed on 63 tracked non-generated C++ files",
        "include_cleaner": "completed as an advisory whole-tree scan with the repository's existing broad include-cleaner baseline warnings",
        "efficiency_review": "snapshot reported no added hot-path patterns; manual review found the broad scan fallback is outside callbacks and only after final separation failure, while online remains opt-in",
        "fuzz": {
          "count": 1000,
          "seed": 20260804,
          "timeout_seconds": 5,
          "shape": "mixed",
          "pass": 1000,
          "wrong_answer": 0,
          "crash": 0,
          "timeout": 0,
          "unsupported": 0,
          "reference_disagreement": 0,
          "ours_answers": {
            "sat": 732,
            "unsat": 268
          },
          "reference_answers": {
            "sat": 732,
            "unsat": 268
          }
        },
        "regression_probes": {
          "cpachecker_induction_1_3": {
            "status": "sat",
            ":no.online.final-lra-equality-scan-fallbacks": 1,
            ":no.interface.arrangement-failures": 0
          },
          "mathsat_pb_real_10_0100_10_12": {
            "status": "sat",
            ":no.online.final-lra-equality-scan-fallbacks": 1,
            ":no.interface.arrangement-failures": 0
          },
          "mathsat_pb_real_10_0100_10_14": {
            "status": "sat",
            ":no.online.final-lra-equality-scan-fallbacks": 0,
            ":no.online.final-lra-equality-scan-skipped": 2,
            ":no.online.propagations": 3
          }
        },
        "make_check": "blocked by pre-existing repository-wide Ruff baseline in scripts/ and contrib/ before this change's tests; C++ format, docs, CTest, ASan, clang-tidy, and local fuzz were checked separately"
      },
      "outcome": "The fallback restores the two SLURM-discovered online SAT regressions locally without turning fallback equalities into online propagated theory consequences. The profiled MathSAT row still skips the broad scan on the normal path. A fresh SLURM rerun is recorded in 2026-08-04-qf-uflra-online-final-scan-fallback-slurm-a4ea33c."
    },
    {
      "id": "2026-08-04-qf-uflra-online-final-scan-fallback-slurm-a4ea33c",
      "date": "2026-08-04",
      "branch": "nelson-oppen-closure-methods",
      "commit": "a4ea33c",
      "kind": "slurm-fuzz-and-sample-comparison",
      "scope": "SLURM rerun of the QF_UFLRA online final-arrangement fallback after the c4caf88 sample found two online SAT-to-unknown regressions.",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "cluster": "sanitized per cluster privacy policy",
        "job_ids": "omitted from committed run log per cluster privacy policy; sample comparison job 119129 and fuzz job 119130 are recorded in the agent transcript",
        "binary": "build-slurm-rel/primo at a4ea33c, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3 5.0.0",
        "artifact_dirs": [
          "results/slurm-qf_uflra-online-fallback-shallow-a4ea33c",
          "fuzz-results/slurm-qf_uflra-online-fallback-fuzz-a4ea33c",
          "slurm_logs/a4ea33c-no-online"
        ]
      },
      "commands": {
        "workspace_prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config <sanitized> --remote <sanitized> --remote-dir <sanitized> --local-dir . --target primo --jobs 4 --sync-mode archive",
        "workspace_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync --ssh-config <sanitized> --remote <sanitized> --remote-dir <sanitized> --local-dir . --target primo",
        "stage_manifest": "python3 scripts/slurm_stage_manifest_files.py --ssh-config <sanitized> --remote <sanitized> --remote-dir <sanitized> --root tmp/QF_UFLRA --manifest benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "sample_compare": "sbatch --array=0-2 --export=ALL,PRIMO_WORKDIR=<remote-workdir>,PRIMO_COMPARE_TIMEOUT=10,PRIMO_COMPARE_OUT_ROOT=results/qf_uflra-online-fallback-shallow-a4ea33c,PRIMO_COMPARE_SOLVERS='final=build-slurm-rel/primo --quiet --stats;online=build-slurm-rel/primo --quiet --stats --nelson-oppen-prop=online;z3=contrib/local/bin/z3' scripts/slurm_qf_uflra_sample_compare.sbatch",
        "fuzz": "sbatch --array=0-3 --export=ALL,PRIMO_WORKDIR=<remote-workdir>,PRIMO_FUZZ_COUNT=250,PRIMO_FUZZ_SEED_BASE=202608041,PRIMO_FUZZ_OUT_DIR=slurm-results/qf_uflra-online-fallback-fuzz-a4ea33c scripts/primo_qf_uflra_online_fallback_fuzz.sbatch",
        "answer_compare": "python3 scripts/compare_solver_answers.py results/slurm-qf_uflra-online-fallback-shallow-a4ea33c --timeout 10"
      },
      "inputs": {
        "sample_manifest": "benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "sample_root": "tmp/QF_UFLRA",
        "fuzz_count": 1000,
        "fuzz_seed_base": 202608041,
        "fuzz_shape": "mixed",
        "timeout_seconds": {
          "sample": 10,
          "fuzz": 5
        }
      },
      "slurm_accounting": {
        "sample": {
          "state": "COMPLETED",
          "exit_code": "0:0",
          "elapsed": [
            "00:00:46",
            "00:00:44",
            "00:00:04"
          ],
          "max_rss": [
            "33592K",
            "38696K",
            "8584K"
          ]
        },
        "fuzz": {
          "state": "COMPLETED",
          "exit_code": "0:0",
          "elapsed": [
            "00:00:05",
            "00:00:05",
            "00:00:05",
            "00:00:05"
          ],
          "max_rss": [
            "4488K",
            "3528K",
            "4140K",
            "4320K"
          ]
        }
      },
      "summary": {
        "fuzz": {
          "pass": 1000,
          "wrong_answer": 0,
          "crash": 0,
          "timeout": 0,
          "reference_disagreement": 0,
          "ours_answers": {
            "sat": 703,
            "unsat": 297
          },
          "reference_answers": {
            "sat": 703,
            "unsat": 297
          }
        },
        "sample_compare": {
          "final": {
            "total": 20,
            "solved_sat_unsat": 16,
            "status_ok": 16,
            "timeout": 4,
            "wrong": 0,
            "par2_total": 84.757006,
            "answers": {
              "sat": 13,
              "unsat": 3,
              "unknown": 4
            }
          },
          "online": {
            "total": 20,
            "solved_sat_unsat": 16,
            "status_ok": 16,
            "timeout": 4,
            "wrong": 0,
            "par2_total": 83.602527,
            "answers": {
              "sat": 13,
              "unsat": 3,
              "unknown": 4
            }
          },
          "z3": {
            "total": 20,
            "solved_sat_unsat": 20,
            "status_ok": 20,
            "timeout": 0,
            "wrong": 0,
            "par2_total": 3.804572,
            "answers": {
              "sat": 17,
              "unsat": 3
            }
          },
          "cross_solver_disagreements": 0,
          "solved_only_by_z3": 4
        },
        "regression_rows": {
          "cpachecker_induction_1_3": {
            "online_status": "ok",
            "online_answer": "sat",
            "online_seconds": 0.043961
          },
          "mathsat_pb_real_10_0100_10_12": {
            "online_status": "ok",
            "online_answer": "sat",
            "online_seconds": 0.196265
          }
        },
        "probes": {
          "mathsat_pb_real_10_0100_10_14": {
            "final": {
              "status": "sat",
              "seconds": 0.802665,
              ":sat.decisions": 171,
              ":sat.propagations": 515
            },
            "online": {
              "status": "sat",
              "seconds": 0.416191,
              ":sat.decisions": 170,
              ":sat.propagations": 516,
              ":no.online.precreated-equality-atoms": 4,
              ":no.online.lra-bound-equality-materialized": 14,
              ":no.online.propagations": 3,
              ":no.online.final-lra-equality-scan-skipped": 2,
              ":no.online.final-lra-equality-scan-fallbacks": 0
            }
          },
          "cpachecker_bmc_diskperf": {
            "final": {
              "status": "timeout",
              "seconds": 10.0145,
              ":sat.decisions": 8524,
              ":sat.propagations": 24269
            },
            "online": {
              "status": "timeout",
              "seconds": 10.015138,
              ":sat.decisions": 196630,
              ":sat.propagations": 407295,
              ":no.online.precreated-equality-atoms": 93,
              ":no.online.lra-bound-equality-materialized": 8586,
              ":no.online.propagations": 3645,
              ":no.online.final-lra-equality-scan-skipped": 2
            }
          },
          "cpachecker_bmc_floppy": {
            "final": {
              "status": "timeout",
              "seconds": 10.017216,
              ":sat.decisions": 4393,
              ":sat.propagations": 43091
            },
            "online": {
              "status": "timeout",
              "seconds": 10.016997,
              ":sat.decisions": 1128921,
              ":sat.propagations": 2733592,
              ":no.online.precreated-equality-atoms": 590,
              ":no.online.lra-bound-equality-materialized": 181611,
              ":no.online.propagations": 69280
            }
          }
        }
      },
      "outcome": "The fallback fixes the two online SAT-to-unknown regressions found at c4caf88: both regression rows now return sat under online mode on SLURM. The 20-file sample has no wrong answers or cross-solver disagreements; online and final both solve 16/20, while Z3 solves all 20. Online remains opt-in because the BMC timeout rows still show substantial SAT churn from paired-bound propagation, even though the profiled MathSAT row keeps the broad-scan skip path and remains faster than final on this shallow sample."
    },
    {
      "id": "2026-08-04-sat-ipasir-up-interface-local-probe",
      "date": "2026-08-04",
      "branch": "sat-ipasir-up-interface",
      "commit": "e138069; run-log hash correction committed immediately after",
      "evidence_status": "current",
      "scope": "Backend-neutral IPASIR-UP interface refactor and local CaDiCaL fresh-observed-variable callback probe. No Nelson-Oppen behavior change is claimed.",
      "commands": {
        "focused_build_and_probe": "cmake --build build --target primo_sat_backend_tests primo_boolean_solver_tests primo_qf_lra_solver_tests primo -j2 && ./build/primo_sat_backend_tests",
        "focused_unit_tests": "cd build && ./primo_sat_backend_tests && ./primo_boolean_solver_tests && ./primo_qf_lra_solver_tests",
        "ctest": "python3 -m json.tool docs/run-log.json >/tmp/run-log-check.json && ctest --test-dir build --output-on-failure",
        "docs": "make docs",
        "asan": "make asan-test",
        "lint_check": "make lint; make check",
        "tidy": "make tidy",
        "include_cleaner": "make include-cleaner",
        "format_diff": "clang-format --dry-run --Werror src/sat/ipasir_up.hpp src/sat/cadical_backend.hpp src/sat/cadical_backend.cpp src/smt/check_sat.cpp tests/unit/sat_backend_tests.cpp; git diff --check",
        "solver_efficiency_review": "python3 /home/user/.codex/skills/solver-efficiency-review/scripts/solver_efficiency_snapshot.py --repo .",
        "fuzz_default": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --ref contrib/local/bin/z3 --count 1000 --seed 2026080401 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-ipasir-up-interface-default-1000",
        "fuzz_online": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--nelson-oppen-prop=online --ref contrib/local/bin/z3 --count 1000 --seed 2026080402 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-ipasir-up-interface-online-1000",
        "cryptominisat_check": "Reviewed upstream CryptoMiniSat README, cryptominisat_c.h, and ipasir.cpp on 2026-08-04: current public API exposes ordinary IPASIR, not IPASIR-UP observed-variable/user-propagator callbacks."
      },
      "environment": {
        "host": "local workspace",
        "cadical": "contrib/local CaDiCaL, signature reported by the linked build",
        "cryptominisat": "upstream GitHub msoos/cryptominisat as of 2026-08-04"
      },
      "results": {
        "focused_build": "passed",
        "sat_backend_probe": "passed: a connected Primo sat::ExternalPropagator rejected the complete model once, created a fresh observed variable through IpasirUpBackend::new_observed_var() from cb_check_found_model, queued that literal through cb_propagate(), streamed a unit reason, and the backend returned SAT with the fresh variable true",
        "unit_tests": "focused SAT/online SMT unit binaries passed; ctest 13/13 passed",
        "docs": "make docs passed",
        "asan": "make asan-test passed 13/13",
        "lint_check": "make lint and make check failed on the existing Ruff baseline in untouched scripts/contrib Python files; py_compile completed before Ruff reported EXE001/I001/UP022/etc.",
        "tidy": "make tidy passed whole-tree clang-tidy over 63 tracked non-generated C++ files",
        "include_cleaner": "completed advisory scan with the existing broad warning baseline; no source changes were made from advisory output",
        "format_diff": "clang-format dry-run and git diff --check passed",
        "solver_efficiency_review": "no blocking issue after replacing the scalar callback adapter's temporary one-element vector with a reusable buffer; change is an enabling refactor, not a default-performance claim",
        "fuzz_default": {
          "artifact": "fuzz-results/qf_uflra-ipasir-up-interface-default-1000",
          "pass": 1000,
          "wrong": 0,
          "crash": 0,
          "timeout": 0,
          "reference_disagreement": 0,
          "answers": {
            "sat": 734,
            "unsat": 266
          }
        },
        "fuzz_online": {
          "artifact": "fuzz-results/qf_uflra-ipasir-up-interface-online-1000",
          "pass": 1000,
          "wrong": 0,
          "crash": 0,
          "timeout": 0,
          "reference_disagreement": 0,
          "answers": {
            "sat": 681,
            "unsat": 319
          }
        },
        "cryptominisat": "negative portability check: ordinary IPASIR only, so CryptoMiniSat is not a drop-in backend for Primo online theory propagation"
      },
      "outcome": "The SAT solver limitation is adapter-specific rather than fundamental for CaDiCaL: Primo now has a backend-neutral IPASIR-UP boundary and a passing fresh-observed-variable callback probe. Mixed Nelson-Oppen online propagation still uses the paired-bound precreation fallback until a later branch wires dynamic equality atom allocation into the dispatcher."
    },
    {
      "id": "2026-08-04-sat-ipasir-up-interface-qflra-qfuf-stats-local",
      "date": "2026-08-04",
      "branch": "sat-ipasir-up-interface",
      "commit": "785c534 compared against baseline 34c3d15",
      "evidence_status": "current",
      "scope": "Local deterministic statistics regression check for the backend-neutral IPASIR-UP interface refactor on a small pure QF_LRA and pure QF_UF sample. This is not a performance benchmark; wall-clock statistics were intentionally ignored.",
      "commands": {
        "current_build": "cmake --build build --target primo -j2",
        "baseline_worktree": "git worktree add --detach /tmp/primo-stats-baseline-34c3d15-20260804 34c3d15",
        "baseline_build": "cmake -S /tmp/primo-stats-baseline-34c3d15-20260804 -B /tmp/primo-stats-baseline-34c3d15-20260804/build-stats -DCMAKE_BUILD_TYPE=Release -DCLI11_INCLUDE_DIR=/workspace/contrib/local/include -DANTLR4_RUNTIME_INCLUDE_DIR=/workspace/contrib/local/include/antlr4-runtime -DANTLR4_RUNTIME_LIBRARY=/workspace/contrib/local/lib/libantlr4-runtime.a -DIPASIR_UP_INCLUDE_DIR=/workspace/contrib/local/include -DCADICAL_LIBRARY=/workspace/contrib/local/lib/libcadical.a -DGMP_INCLUDE_DIR=/workspace/contrib/local/include -DGMPXX_INCLUDE_DIR=/workspace/contrib/local/include -DGMP_LIBRARY=/workspace/contrib/local/lib/libgmp.a -DGMPXX_LIBRARY=/workspace/contrib/local/lib/libgmpxx.a && cmake --build /tmp/primo-stats-baseline-34c3d15-20260804/build-stats --target primo -j2",
        "comparison": "python3 local comparison script running baseline and current as: primo --quiet --stats [--euf-prop=online] <file>"
      },
      "environment": {
        "host": "local workspace",
        "baseline_binary": "/tmp/primo-stats-baseline-34c3d15-20260804/build-stats/primo",
        "current_binary": "/workspace/build/primo",
        "dependency_prefix": "/workspace/contrib/local"
      },
      "artifact": "results/stats-ipasir-up-interface-785c534-vs-34c3d15/summary.json",
      "sample": {
        "qf_lra_default": [
          "benchmarks/seeds/qf_lra/seed_basic.smt2",
          "benchmarks/seeds/qf_lra/seed_branching.smt2",
          "benchmarks/seeds/qf_lra/seed_unsat_pivot.smt2",
          "benchmarks/seeds/qf_lra_real/DTP-Scheduling_constraints-cooking01.smt2",
          "benchmarks/seeds/qf_lra_real/check_bignum_lra1.smt2"
        ],
        "qf_uf_default": [
          "benchmarks/smoke/qf_uf/sat_nested_functions.smt2",
          "benchmarks/smoke/qf_uf/unary_congruence_contradiction.smt2",
          "benchmarks/smoke/qf_uf/binary_congruence_contradiction.smt2",
          "benchmarks/seeds/qf_uf/seed_basic.smt2",
          "benchmarks/regression/qf_uf/online_reason_cache.smt2"
        ],
        "qf_uf_online": [
          "same five QF_UF files with --euf-prop=online"
        ]
      },
      "results": {
        "case_count": 15,
        "answer_or_status_diff_count": 0,
        "cases_with_non_time_stat_diffs": 0,
        "non_time_stat_diff_count": 0,
        "ignored_time_stat_diff_count": 71
      },
      "outcome": "All compared QF_LRA default, QF_UF default, and QF_UF --euf-prop=online runs returned the same answer/status and identical non-time statistics between baseline 34c3d15 and current 785c534. Only :time.* counters differed."
    },
    {
      "id": "2026-08-04-sat-ipasir-up-interface-qflra-qfuf-release-timing-local",
      "date": "2026-08-04",
      "branch": "sat-ipasir-up-interface",
      "commit": "785c534 compared against baseline 34c3d15; run-log entry committed immediately after",
      "evidence_status": "current",
      "scope": "Release-vs-Release local timing sanity check for the same 15-case QF_LRA/QF_UF statistics sample. This corrects the timing interpretation of the prior stats artifact, where the baseline binary was Release but the current workspace binary was Debug.",
      "commands": {
        "current_release_build": "cmake -S . -B build-stats-release -DCMAKE_BUILD_TYPE=Release -DCLI11_INCLUDE_DIR=/workspace/contrib/local/include -DANTLR4_RUNTIME_INCLUDE_DIR=/workspace/contrib/local/include/antlr4-runtime -DANTLR4_RUNTIME_LIBRARY=/workspace/contrib/local/lib/libantlr4-runtime.a -DIPASIR_UP_INCLUDE_DIR=/workspace/contrib/local/include -DCADICAL_LIBRARY=/workspace/contrib/local/lib/libcadical.a -DGMP_INCLUDE_DIR=/workspace/contrib/local/include -DGMPXX_INCLUDE_DIR=/workspace/contrib/local/include -DGMP_LIBRARY=/workspace/contrib/local/lib/libgmp.a -DGMPXX_LIBRARY=/workspace/contrib/local/lib/libgmpxx.a && cmake --build build-stats-release --target primo -j2",
        "comparison": "python3 local comparison script running baseline Release and current Release as: primo --quiet --stats [--euf-prop=online] <file>"
      },
      "environment": {
        "host": "local workspace",
        "baseline_binary": "/tmp/primo-stats-baseline-34c3d15-20260804/build-stats/primo",
        "current_binary": "/workspace/build-stats-release/primo",
        "baseline_build": "Release",
        "current_build": "Release",
        "dependency_prefix": "/workspace/contrib/local"
      },
      "artifact": "results/stats-ipasir-up-interface-release-785c534-vs-34c3d15/summary.json",
      "results": {
        "case_count": 15,
        "answer_or_status_diff_count": 0,
        "cases_with_non_time_stat_diffs": 0,
        "non_time_stat_diff_count": 0,
        "time_stat_diff_count": 65,
        "notable_total_time_deltas_us": {
          "qf_uf_default_online_reason_cache": "34548 -> 37208 (+7.7%)",
          "qf_uf_online_online_reason_cache": "42967 -> 38037 (-11.5%)",
          "qf_lra_default_DTP-Scheduling_constraints-cooking01": "691 -> 799 (+15.6%)"
        }
      },
      "outcome": "Release-vs-Release timings stayed in the expected local-noise range for this tiny sample. The largest absolute pure QF_UF case moved from 34.5 ms to 37.2 ms in default mode and from 43.0 ms to 38.0 ms in --euf-prop=online mode; small microsecond-level cases had larger percentages but negligible absolute movement."
    },
    {
      "id": "2026-08-04-sat-ipasir-up-interface-qfuf-seconds-release-local",
      "date": "2026-08-04",
      "branch": "sat-ipasir-up-interface",
      "commit": "source comparison 785c534 against baseline 34c3d15; run-log entry committed immediately after",
      "evidence_status": "current",
      "scope": "Release-vs-Release local timing and deterministic-statistics check on pure QF_UF cases whose total time is around 1.3-1.7 seconds. This extends the earlier tiny pure QF_UF/QF_LRA sample; it is not a full-corpus benchmark.",
      "commands": {
        "baseline_binary": "/tmp/primo-stats-baseline-34c3d15-20260804/build-stats/primo --quiet --stats [--euf-prop=online] <file>",
        "current_binary": "/workspace/build-stats-release/primo --quiet --stats [--euf-prop=online] <file>",
        "comparison": "python3 local comparison script, 6 tmp/QF_UF/QG-classification/qg7 files, default and --euf-prop=online, 3 repetitions per solver/configuration"
      },
      "environment": {
        "host": "local workspace",
        "baseline_build": "Release",
        "current_build": "Release",
        "dependency_prefix": "/workspace/contrib/local"
      },
      "artifact": "results/stats-ipasir-up-interface-qfuf-seconds-release-785c534-vs-34c3d15/summary.json",
      "sample": [
        "tmp/QF_UF/QG-classification/qg7/iso_brn_nogen013.smt2",
        "tmp/QF_UF/QG-classification/qg7/iso_brn_nogen017.smt2",
        "tmp/QF_UF/QG-classification/qg7/iso_brn_nogen010.smt2",
        "tmp/QF_UF/QG-classification/qg7/iso_brn_nogen011.smt2",
        "tmp/QF_UF/QG-classification/qg7/iso_brn_nogen018.smt2",
        "tmp/QF_UF/QG-classification/qg7/iso_brn_nogen016.smt2"
      ],
      "results": {
        "case_count": 12,
        "run_count": 72,
        "answer_or_status_diff_count": 0,
        "cases_with_non_time_stat_diffs": 0,
        "non_time_stat_diff_count": 0,
        "default_total_median_delta_percent_range": [
          -2.041203230965745,
          2.0519011604582444
        ],
        "default_solve_median_delta_percent_range": [
          -3.3423752290533413,
          3.5256900082525746
        ],
        "online_total_median_delta_percent_range": [
          -3.0925006422231878,
          6.795269957738739
        ],
        "online_solve_median_delta_percent_range": [
          -0.8000086283370761,
          9.187936681776234
        ]
      },
      "outcome": "The backend-neutral IPASIR-UP refactor shows no meaningful timing regression on the second-scale pure QF_UF sample. Default-mode median total time stayed within -2.1% to +2.1%; --euf-prop=online stayed within -3.1% to +6.8%. All answers/statuses and all non-time statistics matched between baseline and current."
    },
    {
      "id": "2026-08-02-qf-lra-yices-reference-and-mutant-quality",
      "started_at": "2026-08-02",
      "recorded_at": "2026-08-02",
      "kind": "analysis",
      "scope": "Evaluating Yices 2 as a QF_LRA reference solver, prompted by the question of whether it is a better reference for some families than z3. Two further findings fell out: yices cannot read YinYang mutants at all without help, and for one family YinYang's mutants are ill-formed.",
      "commit": "8eac51a",
      "environment": {
        "type": "mixed",
        "host": "workstation for the seed/generator measurements; llm2smt-slurm for the mutant scan",
        "binary": "build/primo at c29ed09, z3 5.0.0, Yices 2.7.0 (x86_64 static-gmp, GPLv3, reference-only)"
      },
      "summary": {
        "is_yices_a_better_reference": "For some families, measurably yes. At 60s z3 answers neither latendresse seed nor miplib_pp08a-9000; yices answers all three (15.9s, 15.1s, 4.7s). At the 20s mutation timeout yices oracles 29 of 34 corpus seeds against z3's 26, and its failures are a strict subset of z3's, so the union is also 29. It does not subsume z3 -- both time out on LassoRanker at 20s (yices needs 109s; primo 3s) and neither answers tropical-matrix -- so it is added as a second reference, not a replacement.",
        "generator_side": "On 150 wide-coefficient FuzzSMT cases yices agreed with z3 on all 150 and ran 6x faster (0.3s against 1.9s), so it is also the cheaper generator reference.",
        "yices_cannot_read_mutants": "yices-smt2 requires (set-logic ...) before Real is a defined sort and has no --logic flag; z3 infers a default. typefuzz strips the command -- 0 of 200 sampled mutants had one -- so yices failed every mutant at line 1 with 'undefined sort: Real'. As a third target it contributed nothing while still costing a process launch per mutant, visible as YinYang's effective-call rate dropping from 65.1% (job 118548 opfuzz) to 42.8% (job 118611 opfuzz). Solving eff = effective/total for the third target gives roughly zero, which is what pointed at rejection rather than timeout. Fixed by scripts/yices_smt2_ref.sh, which prepends the logic only when absent.",
        "typefuzz_mutants_are_ill_formed_for_ezsmt": "SUPERSEDED by the entry 2026-08-02-qf-lra-mutation-yield-is-structurally-low. The first diagnosis here -- that typefuzz invents symbols out of paren-bearing quoted names, affecting only the 2 ezsmt seeds -- was wrong on both the mechanism and the scale."
      },
      "caveats": [
        "The eff comparison 65.1% -> 42.8% confounds two changes made at once: the third target AND opfuzz iterations 300 -> 200. It is not a clean measurement of yices's effect. It was still enough to point at the real defect, which was then confirmed directly by running yices on a mutant.",
        "A prediction stated in advance -- that adding yices would raise the effective-call rate above the 28-43% band -- was wrong, and wrong for a reason worth keeping: the addition was broken, not merely unhelpful.",
        "The ill-formed-mutant finding does NOT imply false bug reports. In opfuzz mode the first solver (primo) is the oracle; it produces no sat/unsat on these, so typefuzz counts the mutant invalid and skips it. The cost is wasted budget -- about 59 of 60 mutants for that seed -- not unsoundness."
      ],
      "outcome": "Yices added as a second reference (commit 2da20f4), wrapper added (8eac51a), gate pointed at the wrapper. Job 118611 was cancelled after its opfuzz task completed, rather than spending three more hours on the broken configuration; its opfuzz result (34/34 seeds, 0 bug triggers) stands as a primo-vs-z3 result."
    },
    {
      "id": "2026-08-02-qf-lra-mutation-yield-is-structurally-low",
      "started_at": "2026-08-02",
      "recorded_at": "2026-08-02",
      "kind": "analysis",
      "scope": "Why YinYang mutation fuzzing yields so little against a QF_LRA-only solver. Measured directly on the mutants job 118611 left behind, after two earlier diagnoses in this log turned out to be wrong.",
      "commit": "fffca07",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "primo-qflra/build-slurm-rel/primo, z3 5.0.0, Yices 2.7.0"
      },
      "summary": {
        "headline": "Across 25 mutants from each of 8 seed groups (200 total), Primo can answer 15 -- 7.5%. Per group: Heizmann 0/25, ezsmt 0/25, check_bignum 2/25, DTP-Scheduling 3/25, meti-tarski 4/25, miplib 1/25, sal 3/25, spider 2/25.",
        "cause_1_declaration_order": "typefuzz emits declare-fun commands after their first use. Verified concretely: in a Heizmann mutant, motzkin_2059_0 is used at line 17 and declared at line 49, while in the parent seed it is declared at line 77 and first used at line 86. Primo and Yices both reject with 'unknown symbol'; z3 drops the offending assertions and answers anyway, i.e. answers a strictly weaker formula. Mechanically fixable by hoisting declarations.",
        "cause_2_nonlinearity_dominates": "Hoisting is not enough: the same mutant then fails with '* requires a literal rational coefficient operand (QF_LRA)'. opfuzz and typefuzz mutate operators in a SORT-aware way, and QF_LRA's linearity is a syntactic restriction beyond sorts, so operator mutation routinely produces products of non-constant terms -- e.g. (* (+ (* motzkin_2059_0 10.0) ...) ...) -- which leave the logic. Primo correctly rejects them; z3 solves them as nonlinear.",
        "conclusion": "Mutation fuzzing has a low INTRINSIC yield against a linear-arithmetic-only solver: most mutants are no longer QF_LRA. This is a property of the tool/logic pairing, not a misconfiguration, and it explains why mutation fuzzing has never found anything here. It is not unsound -- in opfuzz mode Primo is the oracle, and a mutant it cannot answer is counted invalid and skipped, so no false bug is reported. The cost is budget: roughly 13 mutants generated per usable one."
      },
      "caveats": [
        "Two earlier diagnoses in this session were wrong and are corrected here. First: that typefuzz invents symbols from paren-bearing quoted names -- it does not, the symbols are declared, just later. Second: that the problem was confined to the 2 ezsmt seeds, about 6% of the corpus -- Heizmann is 0/25 and has no quoted symbols at all.",
        "The nonlinear-product count was initially under-measured by a regex that only matched (* ident ident) on one line; the real forms are nested and multi-line. Counting shapes rather than lines is what showed it.",
        "The seed-corpus widening is still worth having: it broadens the shapes of the ~7.5% of mutants that do stay in QF_LRA. It just does not multiply the yield the way the seed count suggests."
      ],
      "outcome": "Recorded as a structural limit rather than a defect to fix. Hoisting declarations would recover cause 1, but cause 2 dominates and has no fix short of a logic-aware mutator, so it was not implemented. Generator fuzzing (the FuzzSMT ladder) remains the higher-yield path for QF_LRA and stays the primary gate."
    },
    {
      "id": "2026-08-02-model-production-merge-review",
      "started_at": "2026-08-02",
      "recorded_at": "2026-08-02",
      "kind": "analysis",
      "scope": "Review of the model-production merge (origin/main, 9 commits) for QF_LRA correctness and performance regressions, against the pre-merge baseline 53d3d9d.",
      "commit": "e8ac403",
      "environment": {
        "type": "workstation",
        "binary": "build/primo at the merge vs a git-worktree Release build of 53d3d9d; baseline verified BY CONTENT (0 vs 16 produce_model refs, model_builder.cpp 1 vs 273 lines), not by --version",
        "notes": "Both binaries confirmed deterministic across repeated runs; cmake configurations compared and equal."
      },
      "summary": {
        "correctness": "130 files, 8 per family across all 17 division families, both builds: zero wrong answers against declared :status. Answers identical except 3 files that moved unknown -> answered, all borderline at the 20s cap and confirmed solvable by both at 40s.",
        "structural": "src/theory/ is byte-identical -- the tableau and H8/H9/H10 are untouched. The merge dropped no LRA work: 37 removed lines in check_sat.cpp are all signature/constructor changes, and every LRA knob is present with identical counts. Model paths are correctly gated on options.produce_model, which is settled before solving because all commands are parsed first.",
        "defect_found": "The frontend interned a term per declared Real constant at declare-fun time, assigning TermIds in declaration order rather than first-use order. Preprocessing's Gaussian elimination pivots in ascending TermId order, so this silently changed which substitutions were accepted -- unconditionally, model requested or not. On miplib/vpm2-0: :preprocessing.solve-eqs.rewrites 390 -> 252, :lra.pivots 26890 -> 12537. Fixed in e3059e6 by recording SymbolId and materialising terms after the search.",
        "post_fix_verification": "Non-time statistics identical on 31 of 31 A/B instances across 11 families. Preprocessing time 1894376us vs 1893674us, ratio 0.9996 -- the unconditional substitution-trail building added by the merge costs nothing measurable.",
        "second_regression": "set-option moved from silently ignored to strictly parsed, so (set-option :verbosity (- 1)) is now rejected although SMT-LIB 2.6 permits an s-expression attribute value and z3 accepts it. No file in any local corpus uses set-option, so benchmarks are unaffected. Not fixed; recorded."
      },
      "caveats": [
        "Wall-clock A/B could not resolve this. Two paired runs of the same 31 instances gave ratio 0.970 (before the fix) and 1.028 (after), while the CONTROL arm -- the same baseline binary on the same files -- moved 80.80s to 84.69s between runs, a 4.8% drift. The rig's noise floor exceeds the effect size, so neither ratio is evidence. The statistics-identity comparison is what settles it.",
        "The three unknown -> answered files were first read as the new build being faster. That comparison was confounded: the baseline sweep ran concurrently with a timing probe while the new sweep ran alone. Re-running them uncontended showed both builds solve them.",
        "The QF_LRA UF rejection added by 095e07f is a real behaviour change, but correct per the logic definition and no division file triggers it."
      ],
      "outcome": "Merge accepted. One defect found and fixed (e3059e6) with a regression test; one narrow spec regression recorded and left; the TermId-order coupling underneath opened as a docket (docs/termid-order-sensitivity.md) with H11 proposed behind --lra-gaussian-markowitz."
    },
    {
      "id": "2026-08-02-qf-lra-full-fuzz-campaign-118735",
      "started_at": "2026-08-02",
      "recorded_at": "2026-08-02",
      "kind": "fuzz",
      "scope": "First campaign with every piece of this session's fuzzing work active at once: the six-profile FuzzSMT ladder, QF_LRA-restricted opfuzz and typefuzz configs, --keep-logic and --hoist-declarations (now upstream in the fork at 04c8618), Yices as a second reference, and the family-complete 34-seed corpus.",
      "commit": "67140b2",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "primo-qflra/build-slurm-rel/primo at 57fcf0a; references z3 5.0.0 and Yices 2.7.0 via scripts/yices_smt2_ref.sh",
        "notes": "Job 118735, 11 tasks, 6h wall. Prerequisites verified before submitting: cluster venv reinstalled via contrib/install_yinyang.py because it still predated the upstreamed flags (keep_logic reported False). Flags confirmed present in the ACTUAL command lines, not assumed from env vars."
      },
      "summary": {
        "generator": "5 of 6 ladder shards complete at time of writing: 2500 cases, 2455 PASS, 45 TIMEOUT, zero wrong answers and zero REF_DISAGREEMENT. Every case consulted BOTH references -- verified from the summary CSVs as 'refs per case: {2: 2500}', since fuzz_external.py does not echo its arguments and silent reference-dropping was a real defect fixed earlier the same day.",
        "opfuzz_efficiency": "The headline result. opfuzz completed all 34 seeds with 0 bug triggers at an effective-call rate of 99.7%, against 65.1% for the same task under the stock configs (job 118548) and 42.8% when Yices was added but could not read mutants (job 118611). The QF_LRA operator config plus --keep-logic is what closed it.",
        "typefuzz_efficiency": "More modest: 41.7%, 65.0% and 51.3% on the three shards that ran to the wall, against a 27-43% baseline. typefuzz is generative rather than substitutional, so it produces harder mutants; the improvement is real but not the step change opfuzz saw.",
        "bug_files": "45 files under bugs/, exactly matching the 45 FuzzSMT TIMEOUTs, all in fuzzsmt shard directories and none in any mutation bugs/ directory. No defect was found anywhere in the campaign.",
        "wall_handling": "Tasks 7, 8 and 10 each ran the full 10800s wall and exited 0 with 'reached the 10800s wall; this is a time-boxed run, not a failure'. Under the pre-b790e63 behaviour all three would have been recorded as FAILED."
      },
      "caveats": [
        "Task 9 was SIGKILLed (exit 137) at 2:06:21 and the cause was NOT established. Memory is ruled out as the explanation: tasks 7 and 10 reported higher MaxRSS (107GB and 108GB against task 9's 80GB) on the same 2G request and completed, so those figures are an accounting artifact rather than real resident size. Primo is not reproducibly implicated -- 25 minutes and 800 mutants with primo capped at 4GB of address space produced no kill and no bug, and the largest mutant (92KB) solves in 0.01s using 9MB. Recorded as unexplained rather than attributed.",
        "Ladder shard 0 was still running when this entry was written; its 500 cases are not included in the 2500 above.",
        "The opfuzz and typefuzz efficiency figures are not directly comparable to each other -- opfuzz substitutes operators in place while typefuzz generates new terms -- and the local 2-target reproduction measured 76.5%, so target count moves the number too."
      ],
      "outcome": "No defect found across roughly 4700 generator and mutation cases with two independent references. The efficiency prediction stated in advance -- that the QF_LRA configs would lift the effective-call rate above the 28-43% band -- is confirmed for opfuzz (99.7%) and only partly for typefuzz (41.7-65.0%)."
    },
    {
      "id": "2026-08-03-qf-lra-division-four-solver",
      "started_at": "2026-08-03",
      "recorded_at": "2026-08-03",
      "kind": "benchmark",
      "scope": "Adds Yices 2.7.0 to the complete non-incremental QF_LRA division comparison, and re-runs primo at the current commit. z3 and cvc5 were NOT re-run -- unchanged since job 118382, whose CSVs are reused.",
      "commit": "b6b8d55",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "primo-qflra/build-slurm-rel/primo at b6b8d55; Yices 2.7.0 from contrib/local. z3 5.0.0 and cvc5 1.3.4 rows come from job 118382 (2026-08-01).",
        "notes": "Job 118904, 2 solvers x 40 shards = 80 tasks, all COMPLETED, 40/40 shard CSVs each."
      },
      "command": {
        "job": "sbatch --array=0-79 --time=10:00:00 scripts/slurm_qf_lra_scrambled_compare.sbatch with PRIMO_COMPARE_ROOT=tmp/QF_LRA, PRIMO_COMPARE_MANIFEST=benchmarks/qf-lra-full-division.txt, PRIMO_COMPARE_TIMEOUT=300, PRIMO_COMPARE_SHARDS=40, PRIMO_COMPARE_SOLVERS='primo=build-slurm-rel/primo --quiet;yices=contrib/local/bin/yices-smt2'",
        "plot": "python3 scripts/plot_cactus.py --series yices=<118904> --series primo=<118904> --series z3=<118382> --series cvc5=<118382> --timeout 300 --out docs/_static/qf-lra-cactus.svg"
      },
      "benchmark": {
        "suite": "benchmarks/qf-lra-full-division.txt (1,753 files, 17 families)",
        "logic": "QF_LRA",
        "timeout_seconds": 300
      },
      "summary": {
        "result": "Yices 1645/1753 (93.8%) PAR2 80585; primo 1631 (93.0%) PAR2 95091; z3 1584 (90.4%) PAR2 128079; cvc5 1511 (86.2%) PAR2 181248. Yices leads on both measures; primo is second by 14 instances.",
        "standings_change": "This revises the headline. Against z3 and cvc5 alone primo led the division by 47; with Yices included it is second. Any claim that primo leads the QF_LRA division needs the qualifier 'of the three previously compared solvers'.",
        "where_it_is_decided": "LassoRanker, the division's largest family at 419 instances: Yices 381, primo 347 -- a 34-file gap against a 14-file overall margin, so that family alone decides the standings. primo recovers 24 of it elsewhere: 2017-Heizmann +16 (41 against 25), 2019-ezsmt +4, latendresse +2 (15 against 13), tta_startup +2. miplib goes to Yices by 4. Eleven of seventeen families tie exactly, ten of them saturated.",
        "complementarity": "29 instances only primo solves, 26 only Yices, 2 only z3, 3 only cvc5; 63 defeat all four. The two leaders are complementary rather than one dominating.",
        "soundness": "Zero wrong answers for all four against the division's own (set-info :status), zero cross-solver disagreements, and zero benchmarks unsolved for non-standard reasons -- every unsolved instance is an honest timeout, not a parse error or refused construct.",
        "primo_unchanged": "primo scores 1631 at b6b8d55 against 1631 at aa44320 (PAR2 95091 against 94992, 0.1%). Independent confirmation that the model-production merge plus today's frontend changes are behaviour-neutral on this division."
      },
      "caveats": [
        "Not a single simultaneous run. primo and Yices ran 2026-08-03; z3 and cvc5 come from job 118382 on 2026-08-01 and were deliberately not re-run because neither changed. Same manifest, timeout, harness and cluster, different days.",
        "The division desugaring committed today (57fcf0a) could in principle have changed primo's score: 146 of the 1753 files contain a syntactic (/ <non-numeral> ...). It did not -- a parse-only sweep of all 1753 files reports zero unsupported inputs both before and after, so those operands all resolve to literals through let-expansion.",
        "No division file uses abs or set-option, so neither the abs rejection nor the set-option change affects these numbers."
      ],
      "outcome": "Cactus plot committed at docs/_static/qf-lra-cactus.svg, generated by scripts/plot_cactus.py. Yices is now the strongest solver measured on this division."
    },
    {
      "id": "2026-08-03-qf-lra-first-remote-asan-gate",
      "started_at": "2026-08-03",
      "recorded_at": "2026-08-03",
      "kind": "fuzz",
      "scope": "First fuzz gate ever run on the cluster against a sanitizer build. Every previous Slurm gate ran the Release binary, and several run-log entries say so explicitly ('This gate therefore carries no sanitizer coverage and must not be read as if it did').",
      "commit": "2622ce1",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "primo-qflra/build-slurm-fuzz/primo -- Debug, sanitizers: address,undefined, built by scripts/build_slurm_fuzz.sh on the head node under GCCcore/11.3.0; reference z3 5.0.0",
        "notes": "Job 119005, 4 tasks. Sized down from the Release ladder (250 cases per shard, 30s timeouts) because a sanitized build runs several times slower."
      },
      "command": {
        "build": "ssh <cluster> 'cd primo-qflra && scripts/build_slurm_fuzz.sh'",
        "job": "sbatch --array=0-3 --time=06:00:00 --job-name=primo-qflra-asan-gate scripts/slurm_qfuf_fuzz_gate.sbatch with PRIMO_FUZZ_SOLVER=build-slurm-fuzz/primo, FUZZSMT_SHARDS=4, FUZZSMT_COUNT=250, FUZZSMT_TIMEOUT=30, OPFUZZ_TASKS=0, YINYANG_SHARDS=0"
      },
      "summary": {
        "result": "1000 cases across four ladder profiles: 979 PASS, 21 TIMEOUT. Zero AddressSanitizer, LeakSanitizer or UBSan reports anywhere in the shard logs. Zero wrong answers.",
        "coverage_confirmed": "All 4 of 4 shard logs report 'sanitizers: address,undefined' in the startup banner, checked rather than assumed -- a gate that silently ran the Release binary would look identical in its outcome table. 4 of 4 shard CSVs present, so no shard was lost to the wall.",
        "bug_files": "21 files under bugs/, exactly matching the 21 timeouts. fuzz_external.py copies every non-PASS case there, so a non-empty bugs/ is not a bug count."
      },
      "caveats": [
        "Generator path only. No mutation tasks ran, so opfuzz and typefuzz have still never been run under sanitizers on the cluster.",
        "1000 cases is smoke-to-merge tier, not campaign tier. It establishes that the toolchain works and finds nothing at this size; it does not replace the 3000-case Release campaign.",
        "UBSan reports and continues rather than aborting, so the stderr grep is the detection mechanism for it, not the harness's outcome column."
      ],
      "outcome": "The remote sanitizer toolchain works and its first gate is clean. Task 16 closed."
    },
    {
      "id": "2026-08-03-qf-lra-division-opensmt",
      "started_at": "2026-08-03",
      "recorded_at": "2026-08-03",
      "kind": "benchmark",
      "scope": "Adds OpenSMT 2.9.2 as a fifth reference on the complete non-incremental QF_LRA division. Only OpenSMT ran: primo, Yices, z3 and cvc5 are unchanged, so their CSVs are reused.",
      "commit": "f04fd42",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "OpenSMT 2.9.2 (opensmt-x64-linux-static) from contrib/local, installed by contrib/install_opensmt.py. primo at b6b8d55 and Yices 2.7.0 rows come from job 118904 (2026-08-03); z3 5.0.0 and cvc5 1.3.4 from job 118382 (2026-08-01).",
        "notes": "Job 119045, 1 solver x 40 shards = 40 tasks, all COMPLETED, 40/40 shard CSVs present. Same manifest, root, timeout and harness as 118904."
      },
      "command": {
        "install": "python3 contrib/install_opensmt.py  (or make contrib-opensmt)",
        "job": "sbatch --array=0-39 --time=10:00:00 scripts/slurm_qf_lra_scrambled_compare.sbatch with PRIMO_COMPARE_ROOT=tmp/QF_LRA, PRIMO_COMPARE_MANIFEST=benchmarks/qf-lra-full-division.txt, PRIMO_COMPARE_TIMEOUT=300, PRIMO_COMPARE_SHARDS=40, PRIMO_COMPARE_SOLVERS='opensmt=contrib/local/bin/opensmt'",
        "analysis": "python3 scripts/compare_solver_answers.py <119045 + 118904 + 118382 merged into one dir> --timeout 300",
        "plot": "python3 scripts/plot_cactus.py --series opensmt=<119045> --series yices=<118904> --series primo=<118904> --series z3=<118382> --series cvc5=<118382> --timeout 300 --drop-solved-by-all-under 10 --out docs/_static/qf-lra-cactus.svg  (the committed figure omits the 1,097 instances every solver finished under 10s, leaving 656; drop the flag for the unfiltered version. Filtering subtracts the same constant from every curve, so the gaps are unchanged, but the legend counts are of 656.)"
      },
      "benchmark": {
        "suite": "benchmarks/qf-lra-full-division.txt (1,753 files, 17 families)",
        "logic": "QF_LRA",
        "timeout_seconds": 300
      },
      "summary": {
        "result": "OpenSMT 1670/1753 (95.3%) PAR2 68068; Yices 1645 (93.8%) PAR2 80585; primo 1631 (93.0%) PAR2 95091; z3 1584 (90.4%) PAR2 128079; cvc5 1511 (86.2%) PAR2 181248. OpenSMT leads on both measures.",
        "standings_change": "primo drops from second to third. Its own score is unchanged at 1631 -- every movement in its apparent standing on this division (ahead by 47, then second, now third) has come from adding references, not from anything primo did. Recorded because the sequence is easy to misread as a regression.",
        "where_it_is_decided": "LassoRanker (419 files) goes 385 to primo's 347 and 2017-Heizmann 48 to 41 -- those two carry OpenSMT's 39-file margin. tropical-matrix is the sharpest single result: OpenSMT 5 of 10 where primo, Yices and z3 each take 1 and cvc5 0. primo leads 2019-ezsmt 103-95, latendresse 15-11 and ties tta_startup at 72. Ten of seventeen families are saturated for all five solvers.",
        "complementarity": "29 instances primo solves that OpenSMT does not, against 68 the other way. Uniquely solved: 23 OpenSMT, 8 primo, 8 Yices, 1 z3, 0 cvc5; 40 files defeat all five.",
        "soundness": "Zero wrong answers for all five against the division's own (set-info :status) -- 1,629 of 1,753 files carry a checkable status. Zero cross-solver disagreements across five independent implementations, and zero benchmarks unsolved for a non-standard reason: every unsolved instance is an honest timeout.",
        "budget_sensitivity": "Yices leads at every budget up to 10s (1428 to OpenSMT's 1370) and OpenSMT leads from 30s on (1527 to 1525); they cross between the two. At a 10s timeout the division standings would read Yices, OpenSMT, primo, z3, cvc5 with Yices ahead by 58 -- which reference is strongest depends on the timeout."
      },
      "caveats": [
        "Not a single simultaneous run. OpenSMT ran 2026-08-03 alongside nothing else of its own; primo and Yices come from job 118904 the same day; z3 and cvc5 from job 118382 on 2026-08-01. Same manifest, timeout, harness and cluster, different days -- the standing policy of not re-running unchanged reference solvers.",
        "OpenSMT was run at its defaults with no flags, exactly as the other references are. No attempt was made to find a better configuration for it or for primo.",
        "Reference-only: contrib/install_opensmt.py installs the release binary and nothing else. OpenSMT's source was not read, for the same clean-room reason stated for Yices -- its simplex core descends from the same Dutertre and de Moura paper primo's does."
      ],
      "outcome": "OpenSMT 2.9.2 is the strongest solver measured on this division, and the cactus plot at docs/_static/qf-lra-cactus.svg now carries five series."
    },
    {
      "id": "2026-08-03-qf-lra-scrambled-300s-opensmt",
      "started_at": "2026-08-03",
      "recorded_at": "2026-08-03",
      "kind": "benchmark",
      "scope": "Adds OpenSMT 2.9.2 to the 595-file scrambled competition set at 300s -- the set used as the promotion bar for the H-series heuristics -- so that bar is measured against the same reference set as the division.",
      "commit": "f04fd42",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "binary": "OpenSMT 2.9.2 from contrib/local. primo, z3 5.0.0 and cvc5 1.3.4 rows come from job 118310 and were not re-run.",
        "notes": "Job 119085, 1 solver x 20 shards = 20 tasks, all COMPLETED, 20/20 shard CSVs present."
      },
      "command": {
        "job": "sbatch --array=0-19 --time=10:00:00 scripts/slurm_qf_lra_scrambled_compare.sbatch with PRIMO_COMPARE_ROOT=sandbox/QF_LRA, PRIMO_COMPARE_MANIFEST=benchmarks/qf-lra-scrambled-competition.txt, PRIMO_COMPARE_TIMEOUT=300, PRIMO_COMPARE_SHARDS=20, PRIMO_COMPARE_SOLVERS='opensmt=contrib/local/bin/opensmt'",
        "analysis": "python3 scripts/compare_solver_answers.py <119085 + 118310 merged into one dir> --timeout 300"
      },
      "benchmark": {
        "suite": "benchmarks/qf-lra-scrambled-competition.txt (595 files)",
        "logic": "QF_LRA",
        "timeout_seconds": 300
      },
      "summary": {
        "result": "OpenSMT 552/595 (92.8%) PAR2 33907; primo 515 (86.6%) PAR2 61303; z3 507 (85.2%) PAR2 66718; cvc5 465 (78.2%) PAR2 96616.",
        "band_revision": "The 500KB-5MB band -- the one the H7-H10 campaign was built around -- is primo 134, z3 141, OpenSMT 166 of 174. Against z3 the remaining deficit is 7 files and the campaign recovered 56 of the original 63; against OpenSMT the deficit is 32. The campaign's diagnosis of WHERE the work was needed holds; its claim that 'most of the deficit is removed' was measured against a reference that is not the strongest available.",
        "other_bands": "0-50KB saturated for all four at 179. 50-500KB: OpenSMT 178, primo 173, z3 157, cvc5 154 -- primo's own strongest band and still ahead of both older references. >5MB: z3 30, primo 29, OpenSMT 29, cvc5 14, so nothing in that band separates the leaders.",
        "complementarity": "11 files only primo solves against 48 only OpenSMT solves; 29 of the 595 fall to OpenSMT alone, against 3 to primo alone.",
        "soundness": "Zero cross-solver disagreements over four solvers, and zero files unsolved for a non-standard reason. This set carries no (set-info :status), so disagreement is the only soundness signal it can give -- a 'wrong=0' column here means nothing on its own."
      },
      "caveats": [
        "primo, z3 and cvc5 were not re-run; their rows come from job 118310. Same manifest, root, timeout and harness.",
        "This set is a hard sample, not a division result: it under-weights the families primo is strongest on. The division comparison of the same day is the headline measurement, not this one."
      ],
      "outcome": "The promotion bar now has a fourth reference, and it moves the reading of the mid-band campaign: against OpenSMT that band is -32, not -7."
    },
    {
      "id": "2026-08-04-qf-lra-tropical-source-review-local",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "profiling",
      "scope": "Local first-pass QF_LRA tropical-matrix source review after reading docs/papers/fast-linear-arithmetic-dpllt.md; short timeout counter sweep plus one representative option matrix, not a headline benchmark.",
      "commit": "67daa27",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo at 67daa27; reference binaries present under contrib/local/bin but only used for a 15s smoke on one representative file.",
        "notes": "The worktree had unrelated untracked file 'resume'. The gprof binary was tried on constraint-199552.smt2 with --max-theory-conflicts 80, but was interrupted after 99.88s before producing useful profile data."
      },
      "command": {
        "tropical_counter_sweep": "for f in tmp/QF_LRA/tropical-matrix/*.smt2; do timeout 8s ./build/primo --quiet --stats \"$f\"; done",
        "representative_option_matrix": "timeout 15s ./build/primo --quiet --stats [default | --lra-theory-decisions | --lra-row-propagation --lra-bidirectional-row-propagation with all row caps 256 | --lra-fixed-elimination | --lra-pivoting-rule dantzig | --lra-pivoting-rule bland | --top-level-or-tseitin] tmp/QF_LRA/tropical-matrix/constraint-199552.smt2"
      },
      "benchmark": {
        "suite": "tmp/QF_LRA/tropical-matrix/*.smt2 (10 files)",
        "logic": "QF_LRA",
        "timeout_seconds": "8 for the 10-file counter sweep; 15 for the representative option matrix"
      },
      "summary": {
        "counter_sweep": "All 10 tropical files timed out at 8s locally. Preprocessing was small (roughly 14ms-113ms reported before timeout), while :lra.pivot-term-ops reached about 85M-222M per file and :lra.pivot-row-updates about 0.85M-2.16M, so the immediate local bottleneck is tableau pivot/fill-in work rather than parsing or preprocessing.",
        "representative_default": "constraint-199552.smt2 at 15s default timed out with sat.conflicts 222, sat.decisions about 7.2k, lra.online-check-calls about 5.0k, lra.pivots about 20.0k, lra.pivot-row-updates about 3.72M, and lra.pivot-term-ops about 413.6M.",
        "option_matrix": "--lra-theory-decisions was actively bad on the representative file (about 1.9M SAT decisions and 1.9M online checks in 15s). Row+bidirectional propagation with caps 256 and --lra-fixed-elimination reduced pivot-term work somewhat but still timed out. --top-level-or-tseitin increased clauses and did not help. Dantzig/Bland changed pivot counts but did not remove the fill-in bottleneck."
      },
      "caveats": [
        "Local timeout-killed runs are diagnostic only; use SLURM artifacts before making promotion or headline claims.",
        "The option matrix covered one representative file, constraint-199552.smt2, because the goal was source triage rather than benchmark evaluation.",
        "No OpenSMT or Yices source was inspected; reference solvers were treated only as behavioral comparators under the clean-room policy."
      ],
      "outcome": "Source-review leads: prioritize QF_LRA model-based phase hints (H5) and batched bound assertion/deferred update (H4), add observability for update() row visits/term work, and deprioritize top-level-OR Tseitin and round-robin theory decisions for tropical-matrix."
    },
    {
      "id": "2026-08-04-qf-lra-h5-model-phase-local",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "benchmark",
      "scope": "Implementation and local diagnostic evaluation of H5 model-based QF_LRA phase hints, including additional rows where default Primo is locally slower than both OpenSMT and Yices plus one tropical sentinel.",
      "commit": "434d50d source-equivalent worktree; run started before the commit was created",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo rebuilt from the H5 worktree later committed as 434d50d; references contrib/local/bin/yices-smt2 and contrib/local/bin/opensmt used only for behavioral timing comparison.",
        "notes": "Local workstation timing only. Results are evidence for keeping the option as an experiment, not for default promotion. No OpenSMT or Yices source was inspected."
      },
      "command": {
        "reference_scan": "python3 local runner over benchmarks/qf-lra-h5-evaluation.txt, timeout 5s, solvers: ./build/primo --quiet, contrib/local/bin/yices-smt2, contrib/local/bin/opensmt; wrote results/qf-lra-h5-local-20260804/reference-scan.csv",
        "default": "python3 scripts/bench_qf_uf_full.py --root tmp/QF_LRA --manifest benchmarks/qf-lra-h5-evaluation.txt --solver ./build/primo --solver-arg=--quiet --timeout 10 --out results/qf-lra-h5-local-20260804/default.csv --summary results/qf-lra-h5-local-20260804/default-summary.csv",
        "model_phase": "python3 scripts/bench_qf_uf_full.py --root tmp/QF_LRA --manifest benchmarks/qf-lra-h5-evaluation.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--lra-model-phase --timeout 10 --out results/qf-lra-h5-local-20260804/model-phase.csv --summary results/qf-lra-h5-local-20260804/model-phase-summary.csv"
      },
      "benchmark": {
        "suite": "benchmarks/qf-lra-h5-evaluation.txt (13 files: item-8 TM/sc/uart rows, OpenSMT/Yices-slower rows, and one tropical-matrix sentinel)",
        "logic": "QF_LRA",
        "timeout_seconds": "5 for the reference scan, 10 for default vs --lra-model-phase"
      },
      "summary": {
        "reference_slow_rows": "Under the 1.5x and >50ms local rule, default Primo was slower than both Yices and OpenSMT on sc/sc-21.induction3.cvc.smt2 (0.208s vs Yices 0.028s/OpenSMT 0.105s), uart/uart-25.induction.cvc.smt2 (0.523s vs 0.036s/0.288s), and tta_startup/simple_startup_12nodes.missing.induct.smt2 (1.237s vs 0.065s/0.493s). uart-15 was also slower than both but below the stricter 1.5x margin on the repeated scan.",
        "default_vs_h5": "Both default and --lra-model-phase solved 12/13, with tropical-matrix/constraint-199552.smt2 timing out in both. PAR2 moved from 24.080948 to 23.356696 at 10s.",
        "per_file_signal": "H5 improved TM/p-DepotsNum, sc-17, sc-19, sc-21, sc-27, uart-18, and tta_startup/simple_startup_12nodes.missing; it regressed TM/p6, uart-16, uart-17, uart-15, and uart-25. The tropical sentinel still timed out."
      },
      "caveats": [
        "The H5 source changes were committed after this local diagnostic as 434d50d; re-run before making any default or headline claim.",
        "Workstation timings are short and noisy; the option needs SLURM evaluation on the focused manifest and a broad regression bar before promotion.",
        "This run used default Primo as the reference for the additional row selection; the selection is a local diagnostic, not a full mined division comparison against the OpenSMT/Yices SLURM artifacts."
      ],
      "outcome": "H5 is implemented behind --lra-model-phase and remains opt-in. The broadened evaluation set lives in benchmarks/qf-lra-h5-evaluation.txt; local evidence is mixed but slightly positive on the focused PAR2, with clear uart regressions preventing default promotion."
    },
    {
      "id": "2026-08-04-qf-lra-h5-model-phase-fuzzsmt-local",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "fuzz",
      "scope": "Merge-gate QF_LRA FuzzSMT run for opt-in H5 model-based SAT phase hints.",
      "commit": "434d50d source-equivalent worktree; run started before the commit was created",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo rebuilt from the H5 worktree later committed as 434d50d; references z3 and contrib/local/bin/yices-smt2 used only for answer comparison."
      },
      "command": {
        "fuzz": "PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet --lra-model-phase' --refs z3 yices-smt2 --logic QF_LRA --count 1000 --timeout 5 --fuzzer-args '-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf-lra-h5-model-phase-fuzzsmt-20260804 --seed 60804",
        "summary": "python3 local CSV counter over fuzz-results/qf-lra-h5-model-phase-fuzzsmt-20260804/summary.csv"
      },
      "benchmark": {
        "suite": "1000 generated FuzzSMT QF_LRA instances",
        "logic": "QF_LRA",
        "timeout_seconds": 5,
        "seed": 60804,
        "artifact": "fuzz-results/qf-lra-h5-model-phase-fuzzsmt-20260804"
      },
      "summary": {
        "outcomes": "994 PASS, 6 TIMEOUT, 0 wrong answers, 0 crashes, 0 parser/type errors, 0 reference disagreements.",
        "answers": "Primo returned sat on 870 generated inputs, unsat on 124, and timed out on 6. The reference pair agreed on 999 inputs; one timeout case had z3=sat and yices-smt2=TIMEOUT.",
        "timeout_artifacts": "Timeout-only inputs were copied by the harness to fuzz-results/qf-lra-h5-model-phase-fuzzsmt-20260804/bugs: files 62, 410, 427, 443, 814, and 897."
      },
      "caveats": [
        "Timeout-only fuzz cases are performance artifacts, not correctness failures.",
        "This is a local merge gate for an opt-in heuristic; it is not a campaign gate for default promotion."
      ],
      "outcome": "No correctness blocker was found for keeping --lra-model-phase as an opt-in QF_LRA heuristic."
    },
    {
      "id": "2026-08-04-qf-lra-h5-ipasir-merge-local",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "merge-validation",
      "scope": "Merged the H5 opt-in QF_LRA model-phase heuristic onto origin/main after the backend-neutral IPASIR-UP callback adapter landed, then revalidated the H5 path locally.",
      "commit": "84336a2",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "build/primo at merge commit 84336a2; references z3 and contrib/local/bin/yices-smt2 used only for fuzz answer comparison."
      },
      "command": {
        "merge": "git merge origin/main, resolving docs/arithmetic.md and src/smt/check_sat.cpp by keeping upstream sat::ExternalPropagator/IpasirUpBackend and applying H5 phase hints through IpasirUpBackend::phase",
        "check": "make check",
        "docs": "make docs",
        "asan": "make asan-test",
        "tidy": "make tidy",
        "include_cleaner": "make include-cleaner (advisory; completed with the repository's broad existing include-cleaner warning class plus upstream warnings in new IPASIR/theory-combination files)",
        "fuzz": "PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet --lra-model-phase' --refs z3 yices-smt2 --logic QF_LRA --count 1000 --timeout 5 --fuzzer-args '-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf-lra-h5-ipasir-merge-fuzzsmt-20260804 --seed 60805",
        "default_benchmark": "python3 scripts/bench_qf_uf_full.py --root tmp/QF_LRA --manifest benchmarks/qf-lra-h5-evaluation.txt --solver ./build/primo --solver-arg=--quiet --timeout 10 --out results/qf-lra-h5-ipasir-merge-local-20260804/default.csv --summary results/qf-lra-h5-ipasir-merge-local-20260804/default-summary.csv",
        "model_phase_benchmark": "python3 scripts/bench_qf_uf_full.py --root tmp/QF_LRA --manifest benchmarks/qf-lra-h5-evaluation.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--lra-model-phase --timeout 10 --out results/qf-lra-h5-ipasir-merge-local-20260804/model-phase.csv --summary results/qf-lra-h5-ipasir-merge-local-20260804/model-phase-summary.csv"
      },
      "benchmark": {
        "suite": "benchmarks/qf-lra-h5-evaluation.txt (13 files) and 1000 generated FuzzSMT QF_LRA inputs",
        "logic": "QF_LRA",
        "timeout_seconds": "10 for benchmark rows, 5 for generated fuzz inputs",
        "artifacts": [
          "results/qf-lra-h5-ipasir-merge-local-20260804/default-summary.csv",
          "results/qf-lra-h5-ipasir-merge-local-20260804/model-phase-summary.csv",
          "fuzz-results/qf-lra-h5-ipasir-merge-fuzzsmt-20260804/summary.csv"
        ]
      },
      "summary": {
        "unit_and_docs": "make check, make docs, make asan-test, and make tidy passed on the merged tree.",
        "fuzz": "1000 FuzzSMT QF_LRA cases with --lra-model-phase: 996 PASS, 4 TIMEOUT, 0 wrong answers, 0 crashes, 0 parser/type errors, 0 reference disagreements. The timeout-only inputs copied to bugs were files 87, 173, 830, and 877.",
        "focused_benchmark": "Default and --lra-model-phase both solved 12/13; tropical-matrix/constraint-199552.smt2 timed out in both. Focused PAR2 moved from 25.320037 to 23.330412 at 10s.",
        "per_file_signal": "H5 improved TM/p-DepotsNum, TM/p6, sc-17, sc-19, sc-21, sc-27, uart-16, uart-18, uart-25, and tta_startup/simple_startup_12nodes.missing; it regressed uart-17 and uart-15. The tropical sentinel still timed out."
      },
      "caveats": [
        "This is a local merge validation, not a SLURM or broad-regression promotion run.",
        "Timeout-only fuzz cases are performance artifacts, not correctness failures.",
        "No OpenSMT, Yices, or other solver source was inspected."
      ],
      "outcome": "The clean IPASIR-UP merge is compatible with H5 after resolving OnlineLraPropagator to depend on sat::IpasirUpBackend instead of CadicalBackend. H5 remains opt-in; the focused local result is positive but not enough for default promotion."
    },
    {
      "id": "2026-08-04-qf-lra-slow-vs-opensmt-yices-set",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "benchmark-set",
      "scope": "Created a reusable QF_LRA manifest of instances where Primo is slower than both OpenSMT and Yices, selected from focused local triage over the full division's known separating families, then attempted the requested SLURM preflight.",
      "commit": "3512bc5 solver binary for local triage; manifest and selector committed in the adjacent benchmark-set commit",
      "environment": {
        "type": "local triage plus blocked SLURM preflight",
        "host": "workspace for local triage; private SLURM cluster access unavailable in this container",
        "binary": "build/primo --quiet at git 3512bc5; references contrib/local/bin/opensmt v2.9.2 and contrib/local/bin/yices-smt2 2.7.0 used only for timing and answer comparison"
      },
      "command": {
        "focused_source_manifest": "Generated results/qf-lra-slow-both-focused-source-20260804.txt from benchmarks/qf-lra-full-division.txt, keeping families LassoRanker, 2017-Heizmann-UltimateInvariantSynthesis, 2019-ezsmt, miplib, and tropical-matrix (634 files).",
        "local_triad": "For each solver in {primo=build/primo --quiet, opensmt=contrib/local/bin/opensmt, yices=contrib/local/bin/yices-smt2}, ran scripts/bench_qf_uf_full.py --repo . --root tmp/QF_LRA --manifest results/qf-lra-slow-both-focused-source-20260804.txt --timeout 5 --shards 8 over all shard indices; artifact results/qf-lra-slow-both-focused-triage-20260804-123923/.",
        "selection": "python3 scripts/select_qf_lra_slow_vs_opensmt_yices.py --primo 'results/qf-lra-slow-both-focused-triage-20260804-123923/primo.shard-*.csv' --opensmt 'results/qf-lra-slow-both-focused-triage-20260804-123923/opensmt.shard-*.csv' --yices 'results/qf-lra-slow-both-focused-triage-20260804-123923/yices.shard-*.csv' --timeout 5 --min-ratio 2 --min-abs-gap 0.5 --per-family 100 --limit 100 --out benchmarks/qf-lra-slow-vs-opensmt-yices.txt",
        "local_cross_check": "python3 scripts/compare_solver_answers.py results/qf-lra-slow-both-focused-triage-20260804-123923 --timeout 5",
        "slurm_validation": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_lra_scrambled_compare.sbatch; bash -n scripts/slurm_qf_lra_scrambled_compare.sbatch",
        "slurm_preflight_blocker": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --remote-dir primo-qflra-slow-both --target primo"
      },
      "benchmark": {
        "suite": "benchmarks/qf-lra-slow-vs-opensmt-yices.txt",
        "source_suite": "benchmarks/qf-lra-full-division.txt via focused local triage",
        "logic": "QF_LRA",
        "root": "tmp/QF_LRA",
        "timeout_seconds": 5,
        "artifacts": [
          "results/qf-lra-slow-both-focused-source-20260804.txt",
          "results/qf-lra-slow-both-focused-triage-20260804-123923/",
          "benchmarks/qf-lra-slow-vs-opensmt-yices.txt"
        ]
      },
      "summary": {
        "selection": "76 selected files: 73 LassoRanker and 3 miplib. Both OpenSMT and Yices solved and agreed on every selected file; Primo had no wrong answers on solved rows.",
        "selected_set_5s_counts": "On the selected 76 rows from the local triage, Primo solved 10 and timed out on 66 (PAR2 698.209 at 5s); OpenSMT solved 76 (PAR2 163.572); Yices solved 76 (PAR2 97.807).",
        "focused_triad_counts": "Across the 634-file focused source set at 5s: Primo solved 155/PAR2 5028.7, OpenSMT 220/PAR2 4491.8, Yices 315/PAR2 3632.1; zero cross-solver disagreements and zero non-standard unsolved reasons.",
        "gap_shape": "The selected set is intentionally concentrated in LassoRanker because the prior full-division SLURM run identified LassoRanker as the largest margin against both references; the strict local filter found only three additional miplib rows where both references also solved under 5s. Median selected-set gap was 2.28s against the slower reference, with 66 Primo timeouts at the 5s local cap."
      },
      "slurm_status": {
        "status": "blocked_before_submission",
        "reason": "The required SSH config /tmp/llm2smt_slurm_ssh_config was absent in this container, so the SLURM workspace check-only step could not contact the cluster and no sbatch job id exists.",
        "validated_locally": "scripts/slurm_qf_lra_scrambled_compare.sbatch passed scripts/slurm_validate_sbatch.py and bash -n before the blocked workspace preflight."
      },
      "evidence_status": "local_manifest_created_slurm_blocked"
    },
    {
      "id": "2026-08-04-qf-lra-slow-vs-opensmt-yices-slurm-119178",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "benchmark-and-profile",
      "scope": "Fresh SLURM validation of benchmarks/qf-lra-slow-vs-opensmt-yices.txt plus local profiling of a representative pivot-heavy selected instance.",
      "commit": "899234f",
      "environment": {
        "type": "private SLURM cluster plus local workspace profiling",
        "host": "private SLURM cluster details intentionally omitted; local profiling on workspace",
        "binary": "remote build-slurm-rel/primo --quiet reported git 899234f and cadical-3.0.0-7b99c07; references were contrib/local/bin/opensmt v2.9.2 and contrib/local/bin/yices-smt2 2.7.0"
      },
      "command": {
        "slurm_workspace": "scripts/slurm_prepare_benchmark_workspace.py archived tracked HEAD 899234f to the remote workspace, built --target primo, and --check-only verified git 899234f plus CaDiCaL before submission; scripts/slurm_stage_manifest_files.py staged the 76 manifest files under tmp/QF_LRA.",
        "slurm_job": "Submitted job 119178 with scripts/slurm_qf_lra_scrambled_compare.sbatch, array 0-23, 3 solvers x 8 shards, PRIMO_COMPARE_ROOT=tmp/QF_LRA, PRIMO_COMPARE_MANIFEST=benchmarks/qf-lra-slow-vs-opensmt-yices.txt, PRIMO_COMPARE_TIMEOUT=60, PRIMO_COMPARE_SHARDS=8, solvers primo/OpenSMT/Yices.",
        "analysis": "python3 scripts/compare_solver_answers.py results/qf-lra-slow-vs-opensmt-yices-slurm-119178 --timeout 60 plus a local CSV summarizer for slower-than-both counts and family counts.",
        "profile_target": "tmp/QF_LRA/LassoRanker/CooperatingT2/eric.t2.c_Iteration1_Lasso_7-phaseTemplate.smt2",
        "local_stats": "build/primo --quiet --stats profile_target; /usr/bin/time; timeout 20s ablations for default, --no-lra-sparse-leaving, --lra-pivoting-rule bland, and --lra-pivoting-rule dantzig.",
        "local_profile": "perf record was attempted but blocked by perf_event_paranoid=4; rebuilt build-gprof with -pg and ran gprof on the same target."
      },
      "benchmark": {
        "suite": "benchmarks/qf-lra-slow-vs-opensmt-yices.txt",
        "logic": "QF_LRA",
        "root": "tmp/QF_LRA",
        "timeout_seconds": 60,
        "slurm_job_id": "119178",
        "artifacts": [
          "results/qf-lra-slow-vs-opensmt-yices-slurm-119178/",
          "slurm_logs/qf-lra-slowrefs-119178/",
          "/tmp/primo-gprof-target.gprof",
          "/tmp/primo-profile-target.err"
        ]
      },
      "summary": {
        "slurm_counts": "OpenSMT solved 76/76, PAR2 181.7; Yices solved 76/76, PAR2 102.7; Primo solved 61/76 and timed out on 15, PAR2 2924.4. All three had zero errors and zero cross-solver disagreements.",
        "slower_than_both": "75/76 rows remained slower-than-both at 60s: 15 Primo timeouts with both references solved, plus 60 Primo-solved rows slower than both references. For the 60 solved-slow rows, median Primo/reference ratio against the slower reference was 6.42x, median absolute gap 13.14s; max gap 54.88s.",
        "family_counts": "LassoRanker: Primo 58/73, OpenSMT 73/73, Yices 73/73. miplib: all three 3/3.",
        "profile_default": "On eric.t2.c_Iteration1_Lasso_7-phaseTemplate.smt2 locally, default Primo solved in 5.5-6.2s with 2015 pivots, 1,221,351 pivot row updates, and 73,146,715 pivot term ops (~606 row updates and ~36k term ops per pivot).",
        "profile_gprof": "gprof attributed 71.05% self time to LraTableau::pivot. LraTableau::check was 0% self time, select_entering_variable and select_sparse_entering_variable were both 0% sampled self time, and can_enter was 0% sampled self time. update_violation_status was 2.19% self; rebuild_violated_vars 0.44% self.",
        "leaving_selection": "Disabling sparse leaving did not reveal saved overhead; it made the target time out at 20s with 4943 pivots and 249,101,775 pivot term ops. Bland and Dantzig also timed out at 20s with 201,795,909 and 231,288,256 pivot term ops respectively. The evidence points to pivot rewrite/fill-in cost, not leaving-variable selection overhead.",
        "next_mechanisms": "Local design notes still point to D2 floating-point-guided basis seeding and D4 revised simplex/LU basis representation as the plausible remaining pivot-cost directions; cheaper leaving selection is not supported by this profile."
      },
      "evidence_status": "current"
    },
    {
      "id": "2026-08-04-qf-lra-pivot-vector-capacity-prototype",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "profiling-rejected-experiment",
      "scope": "Local check of whether pivot() was missing a std::vector capacity-reuse trick on affected-row rebuilds after the 119178 pivot profile showed LraTableau::pivot dominating.",
      "commit": "b692be3",
      "environment": {
        "type": "workstation",
        "binary": "build/primo --quiet --stats, Release"
      },
      "command": {
        "target": "tmp/QF_LRA/LassoRanker/CooperatingT2/eric.t2.c_Iteration1_Lasso_7-phaseTemplate.smt2",
        "prototype": "Throwaway patch changed the default non-SOI pivot affected-row loop to append the rebuilt row into the existing row vector, then erase the old prefix, preserving per-row capacity across repeated rewrites. The SOI/trailing path kept the existing rebuild-and-move path.",
        "build": "cmake --build build --target primo primo_qf_lra_solver_tests -j4",
        "unit": "./build/primo_qf_lra_solver_tests",
        "timing": "for i in 1 2 3; do /usr/bin/time -f 'run$i elapsed %e maxrss %M' build/primo --quiet --stats target >/tmp/primo-vector-proto-$i.out; done"
      },
      "summary": {
        "baseline": "The same target at b692be3 default solved in about 5.6s, with 2015 pivots, 1,221,351 pivot row updates, 73,146,715 pivot term ops, zero Rational promotions and zero Rational big operations.",
        "prototype_result": "The prototype preserved the exact search and pivot counters but was slower: 6.58s, 6.73s, 6.63s wall time, max RSS about 129 MB. Reported solve-us was 6.40M, 6.54M, 6.44M.",
        "interpretation": "Capacity reuse is not free in the current vector-of-pairs representation: appending the rebuilt output and erasing the old prefix adds a compaction/move pass over the same hot row data. That cost outweighed any avoided allocation on this representative pivot-heavy case.",
        "outcome": "Rejected and reverted. The likely vector-level opportunity is not simple capacity reuse; any worthwhile representation change probably needs a different sparse matrix layout such as row/column linked entries or CSR-style occurrence storage, which belongs with the larger D4/revised-simplex representation work."
      },
      "evidence_status": "rejected"
    },
    {
      "id": "2026-08-04-qf-lra-csr-library-triage",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "design-triage",
      "scope": "Triage of whether a respectable CSR/sparse-matrix or LP library could turn the remaining QF_LRA pivot-vector cost into a local implementation task.",
      "commit": "7820508",
      "environment": {
        "type": "workstation",
        "notes": "Documentation and design triage only; no source implementation."
      },
      "sources": [
        "Eigen sparse-matrix documentation: https://libeigen.gitlab.io/eigen/docs-nightly/group__TutorialSparse.html",
        "SuiteSparse: https://github.com/DrTimothyAldenDavis/SuiteSparse",
        "HiGHS: https://highs.dev/",
        "COIN-OR CLP: https://github.com/coin-or/Clp"
      ],
      "summary": {
        "conclusion": "Tabled as a shortcut. Respectable libraries exist, but plain CSR and off-the-shelf sparse containers optimize mostly-static sparse algebra, while Primo's hot operation is a mutable exact tableau pivot that changes row length, updates a transpose occurrence view, removes zero cancellations, and must remain explainable and undoable.",
        "eigen_suitesparse": "Eigen SparseMatrix and SuiteSparse are credible sparse-matrix/factorization tools, but they would not remove the need to maintain row/column synchronization, exact Rational arithmetic, strict-delta assignments, and Farkas reason extraction.",
        "highs_clp": "HiGHS and CLP are the relevant respectable simplex/LP libraries, but direct use would be a solver architecture decision: numerical LP/simplex behavior would still need exact verification and SMT explanations, so this is D4-scale work rather than a container swap.",
        "what_becomes_harder_under_csr": "Frequent structural row updates, deletion after coefficient cancellation, cheap column access for occurs_in_/sparse pricing/update propagation, SOI/pivot undo, and exact-arithmetic ownership.",
        "status": "Recorded in docs/qf-lra-heuristics.md under D4. D4 itself remains open; the CSR/library shortcut is tabled."
      },
      "evidence_status": "tabled"
    },
    {
      "id": "2026-08-04-qf-lra-tropical-phase-investigation",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "profiling",
      "scope": "Separate-branch local investigation of tropical-matrix heuristics, including whether OpenSMT statistics suggest a mechanism and whether the stale offset-equality note is still open.",
      "commit": "23699c9",
      "branch": "qflra-tropical-investigation",
      "environment": {
        "type": "workstation",
        "binary": "build/primo at 23699c9; OpenSMT 2.9.2 and Yices 2.7.0 from contrib/local/bin",
        "notes": "Diagnostic local runs only. Not a SLURM benchmark and not promotion evidence."
      },
      "command": {
        "shape_census": "Python text census over tmp/QF_LRA/tropical-matrix/*.smt2: bytes, assertions, OR/AND/ITE/equality/comparison/declaration counts.",
        "difference_logic_census": "Local Python S-expression census over tmp/QF_LRA/tropical-matrix/*.smt2 with declaration-sort tracking and let expansion; classified arithmetic atoms as unary/two-variable unit-coefficient difference-logic shaped versus larger linear rows.",
        "opensmt_stats_probe": "OpenSMT public --help exposes only --verbose, but the SMT-LIB option :verbosity 1 prints a search trace. Ran `{ (set-option :verbosity 1) (set-option :time-queries true) <file> } | contrib/local/bin/opensmt --pipe` on constraint-199552.smt2; :produce-stats/:stats-out created no useful final stats file in this build.",
        "single_file_matrix": "On constraint-199552.smt2, ran Primo variants default, --lra-model-phase, --theory-phase positive/negative, row+bidirectional propagation caps 1024, --lra-fixed-elimination, --top-level-or-tseitin, and --no-lra-sparse-leaving under a 45s diagnostic cap; then re-ran --theory-phase positive with full stats.",
        "ten_file_probe": "Parallel local 60s probe over all 10 tropical files for Primo --theory-phase positive and OpenSMT :verbosity 1. Artifact results/tropical-investigation-local/tropical-primo-positive-opensmt-60s.csv."
      },
      "benchmark": {
        "suite": "tmp/QF_LRA/tropical-matrix/*.smt2",
        "logic": "QF_LRA",
        "timeout_seconds": "45 and 60 locally, plus one 90s Yices/OpenSMT check on constraint-199552.smt2",
        "artifacts": [
          "results/tropical-investigation-local/",
          "results/tropical-investigation-local/tropical-primo-positive-opensmt-60s.csv"
        ]
      },
      "summary": {
        "shape": "Each tropical file is one huge assertion with no ITEs. constraint-199552.smt2 has 36 Bool marker declarations, 36 Real cost declarations, 2265 OR nodes, 1377 AND nodes, 2322 equalities, 1512 <= atoms, 756 < atoms, 72 >= atoms, and 84 > atoms.",
        "difference_logic_shape": "The family is close to RDL but not inside it. Across the 10 files, 69.7-71.7% of arithmetic atoms are unary or two-variable unit-coefficient bounds/equalities. The non-RDL residue is systematic: cost-composition definitions such as l1c = f13c + f15c and l0c = f12c + f12c, which normalize to three-variable rows or non-unit coefficients. constraint-199552.smt2 has 2250 arithmetic atoms: 1602 DL-shaped and 648 non-DL.",
        "opensmt_signal": "OpenSMT solves constraint-199552.smt2 sat in 29.39s with max RSS 37.9 MB and a verbose trace reaching about 56k conflicts. On the same file Yices timed out at 90s. OpenSMT exposes coarse SAT progress but not detailed LRA pivot counters in this build, so the behavioral indication is many conflicts at low memory, not an instant preprocessing shortcut.",
        "primo_phase_positive": "On constraint-199552.smt2, default, negative phase, model phase, row+bidirectional propagation at 1024 caps, fixed elimination, top-level-OR Tseitin, and no-sparse-leaving all ran past a 45s diagnostic cap. --theory-phase positive solved sat in 19-26s. The full-stats positive run had 5773 SAT conflicts, 33056 decisions, 30739 LRA online checks, 40504 pivots, 5.88M pivot row updates, 478M pivot term ops, and solve-us 19.7M.",
        "default_contrast": "The 45s default/negative partial runs did not solve and accumulated roughly 1.36-1.38B pivot term ops. This keeps pivot/fill-in as the local cost, but shows polarity can decide whether that cost is spent on a useful sat branch.",
        "ten_file_probe": "At a local 60s cap, Primo --theory-phase positive solved 2/10 tropical files: constraint-199552 and constraint-223827. OpenSMT :verbosity 1 also solved exactly those 2/10 in this local cap. This is below OpenSMT's 5/10 at the 300s SLURM division run, so longer SLURM evaluation is still needed.",
        "offset_equalities": "The stale H7 paragraph that said offset equalities were untested was corrected. D3 remains closed by the D1/D3 sweep; offset equalities are not the tropical lead from this probe."
      },
      "outcome": "Next plausible cheap tropical experiment: an auto positive-phase rule for the tropical shape (single huge assertion, many OR/equality atoms, many positive theory atoms, no ITEs), evaluated first on the 10-file tropical set and then against the full QF_LRA division for regressions. Difference logic is plausible only as a hybrid or special recognizer for the guarded comparison/min subgraph; a pure RDL handoff cannot cover these instances because of the sum-definition layer. Do not promote from local evidence alone.",
      "evidence_status": "diagnostic"
    },
    {
      "id": "2026-08-04-qf-lra-guarded-real-equality-lowering-local",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "implementation-benchmark-fuzz",
      "scope": "Option 2 tropical experiment: distribute a single guarded Real equality directly to two guarded inequalities in the existing Real-equality lowering pass. A follow-up change made this opt-in behind --guarded-real-equality-lowering because the local 10-file evidence was mixed.",
      "commit": "b8dde6e",
      "branch": "qflra-tropical-investigation",
      "environment": {
        "type": "workstation",
        "binary": "build/primo from working tree before commit; references z3 and yices-smt2 from contrib/local/bin",
        "notes": "Local correctness and diagnostic performance evidence only; not a SLURM promotion run."
      },
      "command": {
        "focused_tests": "cmake --build build --target primo_preprocessing_tests primo -j4 && ./build/primo_preprocessing_tests; cmake --build build --target primo_qf_lra_solver_tests primo_lra_atom_tests primo_lra_tableau_tests -j4 && ./build/primo_qf_lra_solver_tests && ./build/primo_lra_atom_tests && ./build/primo_lra_tableau_tests",
        "check": "make check",
        "fuzz": "PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet' --refs z3 yices-smt2 --logic QF_LRA --count 1000 --timeout 5 --fuzzer-args '-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf-lra-guarded-real-equality-lowering-20260804 --seed 60806",
        "single_file_default": "/usr/bin/time -f 'elapsed %e maxrss %M' timeout 60s build/primo --quiet --stats tmp/QF_LRA/tropical-matrix/constraint-199552.smt2 > results/tropical-option2-local/199552-default.out 2> results/tropical-option2-local/199552-default.err",
        "single_file_positive": "/usr/bin/time -f 'elapsed %e maxrss %M' timeout 60s build/primo --quiet --stats --theory-phase positive tmp/QF_LRA/tropical-matrix/constraint-199552.smt2 > results/tropical-option2-local/199552-positive.out 2> results/tropical-option2-local/199552-positive.err",
        "ten_file_probe": "Local Python subprocess probe over tmp/QF_LRA/tropical-matrix/*.smt2 at 60s for default and --theory-phase positive; wrote results/tropical-option2-local/tropical-default-60s.csv and results/tropical-option2-local/tropical-positive-60s.csv."
      },
      "benchmark": {
        "suite": "tmp/QF_LRA/tropical-matrix/*.smt2",
        "logic": "QF_LRA",
        "timeout_seconds": 60,
        "artifacts": [
          "results/tropical-option2-local/",
          "fuzz-results/qf-lra-guarded-real-equality-lowering-20260804/summary.csv",
          "fuzz-results/qf-lra-guarded-real-equality-lowering-20260804/bugs/"
        ]
      },
      "summary": {
        "implementation": "The guarded distribution shortcut rewrites an Or with exactly one Real equality child as two guarded inequality disjunctions, avoiding the extra Tseitin variable for the lowered equality conjunction. Multiple guarded Real equalities in the same Or still use the old non-distributed lowering. A follow-up change made the shortcut opt-in behind --guarded-real-equality-lowering; the mandatory generic Real-equality lowering remains default-on.",
        "single_file_default": "constraint-199552.smt2 solved sat at the 60s cap in 5.3-5.8s, with 648 guarded distributions, 5460 SAT vars, 10059 SAT clauses, 93 conflicts, 7679 LRA pivots, and 128M pivot term ops. The earlier same-branch default probe had timed out at 45s after about 1.36B pivot term ops.",
        "single_file_positive": "With --theory-phase positive, constraint-199552.smt2 solved sat in about 11.1s, with 3074 SAT conflicts, 22596 LRA pivots, and 266M pivot term ops. This is still faster than the earlier positive run on the old encoding, but slower than the new default run.",
        "ten_file_default": "At a local 60s cap, default Primo with this rewrite solved 1/10 tropical files: constraint-199552.smt2. The other 9 timed out.",
        "ten_file_positive": "At the same local 60s cap, --theory-phase positive with this rewrite also solved 1/10. This regressed the earlier positive-phase diagnostic where constraint-223827.smt2 solved in about 11.3s.",
        "fuzz": "QF_LRA fuzzsmt count 1000, seed 60806, timeout 5s, refs z3 and yices-smt2: 995 PASS, 5 timeout-only cases, 0 wrong answers, 0 crashes, 0 reference disagreements.",
        "interpretation": "Sound and useful as a small SAT-encoding simplification, with a large local win on constraint-199552.smt2, but not a tropical-family solution. Do not cite as broad performance improvement until a SLURM tropical/full-QF_LRA A/B is run."
      },
      "evidence_status": "current-local"
    },
    {
      "id": "2026-08-04-qf-lra-guarded-real-equality-lowering-option-fuzz",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "implementation-fuzz",
      "scope": "Follow-up optionization of the guarded Real equality distribution shortcut. Generic Real equality lowering remains default-on for correctness, while the guarded distribution shortcut is reachable only through --guarded-real-equality-lowering.",
      "commit": "81f9988",
      "branch": "main",
      "environment": {
        "type": "workstation",
        "binary": "build/primo from working tree before commit; references z3 and yices-smt2 from contrib/local/bin",
        "notes": "Correctness gate for the opt-in option path. This is not a performance promotion run."
      },
      "command": {
        "focused_tests": "cmake --build build --target primo_preprocessing_tests primo_qf_lra_solver_tests primo -j4 && ./build/primo_preprocessing_tests && ./build/primo_qf_lra_solver_tests",
        "cli_stats_default": "build/primo --quiet --stats on a guarded Real equality smoke input reported sat, :preprocessing.real-equality-lowering.lowered 1, and :preprocessing.real-equality-lowering.guarded-distributed 0.",
        "cli_stats_option": "build/primo --quiet --stats --guarded-real-equality-lowering on the same guarded Real equality smoke input reported sat, :preprocessing.real-equality-lowering.lowered 1, and :preprocessing.real-equality-lowering.guarded-distributed 1.",
        "check": "make check",
        "docs": "make docs",
        "fuzz": "PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build/primo --quiet --guarded-real-equality-lowering' --refs z3 yices-smt2 --logic QF_LRA --count 1000 --timeout 5 --fuzzer-args '-ms 1 -Ms 3 -mv 1 -Mv 3 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/qf-lra-guarded-real-equality-lowering-option-20260804 --seed 60807"
      },
      "benchmark": {
        "suite": "fuzzsmt-generated QF_LRA",
        "logic": "QF_LRA",
        "timeout_seconds": 5,
        "artifacts": [
          "fuzz-results/qf-lra-guarded-real-equality-lowering-option-20260804/summary.csv",
          "fuzz-results/qf-lra-guarded-real-equality-lowering-option-20260804/bugs/"
        ]
      },
      "summary": {
        "option_status": "--guarded-real-equality-lowering is default-off. The shortcut rewrites only a disjunction with exactly one Real equality child to two guarded inequalities; multiple equality children and non-Real equalities keep generic lowering.",
        "fuzz": "QF_LRA fuzzsmt count 1000, seed 60807, timeout 5s, refs z3 and yices-smt2: 994 PASS, 6 timeout-only cases, 0 wrong answers, 0 crashes, 0 reference disagreements. The timeout cases were file_414, file_423, file_613, file_665, file_668, and file_74, all with references reporting sat.",
        "review": "The shortcut remains opt-in because the local 10-file tropical result in 2026-08-04-qf-lra-guarded-real-equality-lowering-local was mixed."
      },
      "evidence_status": "current-local"
    },
    {
      "id": "2026-08-07-qf-lra-division-regression-bisected-to-dispatch",
      "started_at": "2026-08-06",
      "recorded_at": "2026-08-07",
      "kind": "analysis",
      "scope": "Full QF_LRA division (1753 files, 300s) on this branch came back 1588 solved against the 1631 recorded at b6b8d55. Established where the loss comes from: not this branch.",
      "commit": "9dadfa1 (branch HEAD); culprit identified as ffaf9eb on main",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "current",
      "environment": {
        "type": "mixed",
        "notes": "Division runs on Slurm (119970 contended, 120072 spread over node-01/03/07 with --cpus-per-task=3); per-instance bisection local on the workstation, Release builds, deterministic across repeated runs."
      },
      "result": {
        "division_runs": {
          "ref_b6b8d55_job_118904": {
            "solved": 1631,
            "wrong": 0
          },
          "HEAD_job_119970_contended": {
            "solved": 1584,
            "wrong": 0
          },
          "HEAD_job_120072_spread": {
            "solved": 1588,
            "wrong": 0,
            "gained": 12,
            "lost": 55
          }
        },
        "lost_by_family": {
          "LassoRanker": 40,
          "2019-ezsmt": 12,
          "miplib": 2,
          "tropical-matrix": 1
        },
        "instance_bisected": "2019-ezsmt/travellingSalesperson/tsp_rand_70_300_1155482584_7.lp.smt2",
        "three_way_local": {
          "b6b8d55": "sat 0.20s, 879 pivots, 30 conflicts",
          "main 0c0843d": "unknown at 90s, 1,092,680 pivots",
          "HEAD": "unknown at 90s, 1,142,628 pivots"
        },
        "first_bad_commit": "ffaf9eb 'Add separable QF_UFLRA final checks' (2026-07-30)",
        "parent_good": "4d4a185 'Add QF_LRA model printing': sat 0.93s, 11,735 pivots, twice",
        "mechanism": "ffaf9eb added contains_euf_predicate_atom, which counts any Bool-sorted Application OR Constant as an EUF predicate. A plain propositional variable qualifies, so the dispatch (has_equality || has_euf_predicate) && has_arithmetic flips this pure-QF_LRA file from :solver.qf-lra 1 to :solver.qf-uflra 1. Verified directly: the counters flip across exactly that commit pair."
      },
      "conclusion": "The division regression predates this branch and belongs to main. main at 0c0843d reproduces the timeout with pivot counts in the same regime as HEAD (1.09M vs 1.14M) while b6b8d55 solves in 0.20s, so the branch is not the cause. The mechanism is the dispatch trigger already recorded as open-leads lead 2b, whose 'performance-neutral' verdict was measured on the stratified sample at 15s and does NOT hold on the full division at 300s. CAVEAT: this explains the 12 2019-ezsmt losses; LassoRanker (40 losses) reports :solver.qf-lra 1, the pure path, and is NOT explained by this -- tracked separately.",
      "process_notes": "Two wrong turns worth recording. (1) The first division run put 67 tasks on one 56-core node; the contention hypothesis was stated too confidently and re-running with --cpus-per-task=3 moved the result by only 4 files, so contention was not the cause. (2) The first bisect script omitted --quiet and read the version banner instead of the answer, so every commit tested 'bad' and it converged on a docs-only commit. Both were caught before being reported as conclusions, but each was the first draft."
    },
    {
      "id": "2026-08-07-qf-lra-lassoranker-regression-bisected-to-no-merge",
      "started_at": "2026-08-07",
      "recorded_at": "2026-08-07",
      "kind": "analysis",
      "scope": "The 40 LassoRanker losses in the full division, which the dispatch finding (ffaf9eb) does NOT explain because those files stay on :solver.qf-lra 1.",
      "commit": "9dadfa1 (branch HEAD); regression traced to 84336a2 on main",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "current",
      "environment": {
        "type": "local",
        "notes": "Release builds of b6b8d55, 0c0843d and branch HEAD on the workstation. perf unavailable in this sandbox (cannot open events), so no profile yet."
      },
      "result": {
        "instance": "LassoRanker/CooperatingT2/dropbuf.t2.c_Iteration3_Loop_4-pieceTemplate.smt2 (3.4MB)",
        "three_way": {
          "b6b8d55": "sat 12.98s, :solver.qf-lra 1, 10,217 pivots, 256,688 decisions",
          "main 0c0843d": "unknown at 150s, :solver.qf-lra 1, 3,793 pivots, 190,089 decisions",
          "HEAD": "unknown at 150s, :solver.qf-lra 1, 4,183 pivots, 198,695 decisions"
        },
        "dispatch": "UNCHANGED -- both sides report :solver.qf-lra 1, so this is not the ffaf9eb dispatch flip",
        "preprocessing": "not the cause: --preprocess-only is 1.35s at b6b8d55 vs 1.42s at main",
        "where_the_time_is_not": "not the tableau. At a 45s cap main does 1,472 pivots and 1.66M pivot-term-ops against b6b8d55's 10,217 and 76.1M in 13s. Online check-call rate falls from 13,976/s to 2,143/s while per-call LRA work SHRINKS, so the added cost is outside the simplex.",
        "first_bad_commit": "84336a2 'Merge remote-tracking branch origin/main' -- the merge that brought theory_combination.{cpp,hpp} and the Nelson-Oppen closure work into main (46 files, 14,392 insertions). First parent 38be7fd is good."
      },
      "conclusion": "Both families of division losses arrive with the Nelson-Oppen merge, but by two different mechanisms. 2019-ezsmt is the dispatch flip (ffaf9eb). LassoRanker is NOT: same solver path, less tableau work, ~6.5x slower per online check call. Mechanism unidentified. This is a main-branch regression either way -- HEAD tracks main closely (4,183 vs 3,793 pivots) while b6b8d55 solves in 13s -- so it is not caused by this branch.",
      "next_step": "Profile main on this instance. perf is blocked in this sandbox; use a -pg build (the repo already has a build-gprof workflow) or run perf on the cluster. The question to answer is what runs per online check call on the pure QF_LRA path after the merge that did not before.",
      "process_notes": "The first two LassoRanker bisections were invalid and both converged on a docs-only commit. Cause: main contains merge commits from the Nelson-Oppen branch, and that branch's own history predates QF_LRA support, so those commits answer 'unsupported logic: QF_LRA'. The script marked them bad instead of skipping. Fixed by skipping on 'unsupported'/no-answer AND bisecting with --first-parent so only mainline states are tested."
    },
    {
      "id": "2026-08-07-qf-lra-division-three-way-branch-vs-main",
      "started_at": "2026-08-07",
      "recorded_at": "2026-08-07",
      "kind": "benchmark",
      "scope": "Full QF_LRA division (1753 files, 300s) run on main 0c0843d under conditions matched to the branch run, to separate this branch's effect from main's own regression.",
      "commit": "9dadfa1 (branch) and 0c0843d (main)",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm via ProxyJump",
        "notes": "Jobs 120072 (branch) and 120122 (main), both array 0-39, --cpus-per-task=3, both landing on node-01/03/07 with the same 28/28/24 split. Reference row is job 118904 at b6b8d55 (4 nodes). Corpus hard-linked into both workspaces."
      },
      "command": {
        "job_main": "120122",
        "job_branch": "120072",
        "job_ref": "118904 (2026-08-03)",
        "settings": "PRIMO_COMPARE_TIMEOUT=300, SHARDS=40, manifest benchmarks/qf-lra-full-division.txt, solver 'primo --quiet' (default profile)"
      },
      "result": {
        "b6b8d55_ref": {
          "solved": 1631,
          "wrong": 0,
          "par2": 95091
        },
        "main_0c0843d": {
          "solved": 1572,
          "wrong": 0,
          "par2": 136330
        },
        "branch_HEAD": {
          "solved": 1588,
          "wrong": 0,
          "par2": 127101
        },
        "main_vs_ref": {
          "gained": 2,
          "lost": 61,
          "lost_by_family": {
            "LassoRanker": 46,
            "2019-ezsmt": 12,
            "miplib": 2,
            "tropical-matrix": 1
          }
        },
        "branch_vs_main": {
          "gained": 16,
          "lost": 0,
          "gained_by_family": {
            "LassoRanker": 16
          },
          "paired_ratio_n573_over_1s": {
            "p10": 0.69,
            "median": 0.94,
            "p90": 1.03
          }
        }
      },
      "conclusion": "The branch is strictly better than main on the full division: +16 solved, ZERO lost, PAR2 136330 -> 127101, median paired 0.94. All 16 gains are LassoRanker, the family main regressed hardest on. Separately confirmed: main has lost 59 net files against b6b8d55 (gained 2, lost 61), which is the regression bisected to the Nelson-Oppen merge (84336a2) and, for 2019-ezsmt, to ffaf9eb's dispatch flip. The earlier '1588 vs 1631' framing was comparing the branch against a pre-regression commit and wrongly implicated the branch; against the branch's actual merge base it gains and loses nothing. Zero wrong answers in all three runs, on a corpus that carries (set-info :status)."
    },
    {
      "id": "2026-08-07-qf-lra-euf-dispatch-routing-prototype",
      "started_at": "2026-08-07",
      "recorded_at": "2026-08-07",
      "kind": "profiling",
      "scope": "Prototype and measure the Mechanism A fix from docs/nelson-oppen-qf-lra-regression.md: restrict has_euf_predicate to a Bool-sorted Application so a plain propositional variable no longer routes a QF_LRA formula to solve_qf_uf_lra.",
      "commit": "ac7acce plus a one-line prototype patch (not committed)",
      "branch": "qflra-tropical-t1-propagation (prototype in a scratch worktree)",
      "evidence_status": "current",
      "environment": {
        "type": "local",
        "notes": "Baseline and prototype built from the SAME commit in separate worktrees, differing only in that predicate -- verified by diff. Earlier binaries could not be trusted for this because their baked git revision strings were stale and '-dirty'."
      },
      "result": {
        "sample": "150 random files from tmp/QF_LRA, 10s cap",
        "answer_disagreements": 0,
        "path_changed": "65 of 150 (43%), all qf-uflra -> qf-lra",
        "solved": {
          "base": 114,
          "prototype": 115
        },
        "gained": 2,
        "lost": 1,
        "paired_ratio_n26_over_0_5s": {
          "p10": 0.46,
          "median": 0.96,
          "p90": 1.04
        },
        "target_instance": "tsp_rand_70_300_1155482584_7: timeout -> sat 0.28s",
        "worst_regression": "2019-ezsmt/routingMax/SCC_strong/p50.56: 0.23s (mixed) -> 13.01s (pure). Still SAT, so a slowdown rather than a capability loss.",
        "boolean_shape_cases": "propositional vars and a nested Bool equality both move to qf-lra with unchanged answers; a genuine Bool-sorted application (f x) correctly stays on qf-uflra; true/false literals unaffected (TermKind::BoolValue is distinct from Constant)."
      },
      "conclusion": "The routing fix is one line and sound on this sample (0 disagreements of 150), and it removes the pathological case worth 39.4M merges. It is NOT an unambiguous speedup: 43% of files change solver, the distribution is two-tailed (p10 0.46, p90 1.04), and one file is 56x slower on the pure path -- which is lead 2b's 'neither path dominates' showing up again. A 150-file random sample at 10s is the wrong instrument; promote only on a full-division run reporting gained/lost per family.",
      "correction": "A 'second over-trigger' claimed in an earlier version of the note -- that a Bool equality sets has_equality and routes the same way -- was measured and does NOT exist. Bool-sorted equalities are rewritten during preprocessing before summarize_formula_features runs, so no Equality node over Bool reaches the dispatch. has_euf_predicate on a Bool Constant is therefore the single trigger."
    },
    {
      "id": "2026-08-07-qf-uf-bool-argument-congruence-wrong-answer",
      "started_at": "2026-08-07",
      "recorded_at": "2026-08-07",
      "kind": "defect",
      "scope": "WRONG ANSWER found while checking the proposed dispatch change: congruence is dropped for Bool-sorted uninterpreted function arguments.",
      "commit": "0c0843d (main) and b6b8d55 -- present in both, long-standing",
      "branch": "main",
      "evidence_status": "current",
      "environment": {
        "type": "local",
        "notes": "Release builds; deterministic over repeated runs; z3 from contrib/local as reference."
      },
      "result": {
        "reproducer": "(set-logic QF_UF)(declare-fun p () Bool)(declare-fun q () Bool)(declare-fun f (Bool) Bool)(assert (= p q))(assert (not (= (f p) (f q))))(check-sat)",
        "expected": "unsat (congruence: p=q implies f(p)=f(q))",
        "z3": "unsat",
        "primo_main": "sat",
        "primo_b6b8d55": "sat",
        "not_an_euf_bug": "Adding an uninterpreted sort to force :solver.qf-uf gives the correct unsat, so EUF handles Bool arguments correctly when it runs.",
        "cause": "Two behaviours compose. (1) Bool-sorted equalities are rewritten during preprocessing before summarize_formula_features, so has_equality is false when every equality is over Bool. (2) The QF_UF dispatch keys ONLY on has_equality; has_euf_predicate is computed but not consulted there. The formula therefore reaches solve_boolean_conjunction, which abstracts (f p) and (f q) to independent propositional variables with no congruence rule."
      },
      "conclusion": "A documented-as-supported feature (architecture.md: 'QF_UF inputs may pass Boolean formulas as arguments to uninterpreted functions') returns a wrong answer. Independent of the Nelson-Oppen regression and older than it. The classifier is too NARROW here -- the unsoundness direction. Fix direction: dispatch on has_application_term rather than has_equality alone, which widens what reaches solve_qf_uf and is therefore a dispatch change needing gained/lost measurement.",
      "coverage_gap": "Neither fuzz gate generates this shape: FuzzSMT's QF_UF/QF_LRA invocations do not request Bool-sorted function arguments, and mutation fuzzing can only produce what the seed corpus contains -- the QF_LRA seeds have no uninterpreted functions at all."
    },
    {
      "id": "2026-08-07-qf-uf-bool-argument-congruence-fix-gate",
      "started_at": "2026-08-07",
      "recorded_at": "2026-08-07",
      "kind": "implementation-fuzz-gate",
      "scope": "Merge gate for the Bool-argument congruence fix (f96834c) plus a pre-fix CONTROL run establishing that the new mutation seeds actually catch the bug rather than merely existing.",
      "commit": "f96834c (fixed) and 0c0843d (pre-fix control)",
      "branch": "main",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm via ProxyJump, node-01",
        "remote_dir": "/home/janotmik/primo-uffix",
        "notes": "Remote binary verified as git f96834c AND verified to answer unsat on the bug seed before submitting, so the gate could not be testing a stale build. Pre-fix control used the already-built /home/janotmik/primo-main-0c0843d/build-slurm-rel/primo, verified to answer sat on the same seed."
      },
      "command": {
        "gate_job": "120192, scripts/slurm_qfuf_fuzz_gate.sbatch, array 0-8, PRIMO_FUZZ_SOLVER=build-slurm-rel/primo",
        "control_job": "120201, same script, array 6-8 (mutation only), PRIMO_FUZZ_SOLVER=pre-fix binary",
        "failed_attempts": "120180 mutation tasks failed with \"'opfuzz' not found\" -- the QF_UF gate never put the workspace-local .venv-yinyang/bin on PATH while the QF_LRA gate always had; fixed in 6ecd73d. 120189 then failed on build-slurm-fuzz/primo not existing -- this gate defaults to a different build dir than the QF_LRA one; fixed by passing PRIMO_FUZZ_SOLVER."
      },
      "result": {
        "fixed_binary_job_120192": {
          "fuzzsmt": "6 shards, 3000 cases, 3000 PASS, 0 wrong; 6 summary.csv files confirmed against 6 shards so no shard was silently lost to the wall clock",
          "opfuzz_task_6": "7 seeds, 7 valid, 0 invalid, 0 bug triggers",
          "typefuzz_tasks_7_8": "7 seeds, 7 valid, 0 invalid, 0 bug triggers each",
          "all_tasks": "COMPLETED"
        },
        "prefix_control_job_120201": {
          "opfuzz_task_6": "3 bug triggers",
          "typefuzz_task_7": "1 bug trigger",
          "typefuzz_task_8": "3 bug triggers",
          "total_bug_smt2_files": 7,
          "by_originating_seed": {
            "seed_bool_argument_compound": 3,
            "seed_bool_argument_congruence_unsat": 2,
            "seed_bool_argument_predicate": 2
          },
          "from_the_three_pre_existing_qf_uf_seeds": 0,
          "example": "(assert (f (and p q))) (assert (and (not (f (or q p))) (f (or p q)))) -- (or q p) and (or p q) are the same term, so this is unsat; the pre-fix binary answered sat."
        }
      },
      "conclusion": "Gate PASSES on the fix: 3000/3000 FuzzSMT cases and all three mutation tasks clean. The control run is the load-bearing part: the identical seeds and iterations against the PRE-FIX binary produce 7 incorrect-answer cases, every one derived from a newly added Bool-argument seed and NONE from the three pre-existing QF_UF seeds. So the added coverage is real rather than nominal -- the old corpus provably could not catch this bug, and the new one does. Note that a satisfiable seed (seed_bool_argument_predicate) also yielded 2 bug cases once mutated, so sat seeds are not useless here even though a sat seed cannot expose the bug unmutated.",
      "still_open": "qf_uflra_smoke_fuzz.py emits Bool-returning but never Bool-argument functions, so the MIXED path retains the same blind spot; and FuzzSMT's parameters have not been checked for whether Bool-sorted arguments can be requested at all."
    },
    {
      "id": "2026-08-04-qf-lra-tropical-matrix-structure-analysis",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "profiling",
      "scope": "Structural analysis of the tropical-matrix QF_LRA family read from the benchmark source, plus a local A/B testing whether the 468 guarded arithmetic definitions can be soundly unguarded. Establishes the encoding (tropical/arctic semiring, paired Bool -infinity flag and Real value), verifies the don't-care precondition, and measures fill-in on the one instance Primo solves. Diagnostic only; no solver change is proposed as promoted on this evidence.",
      "commit": "058929d",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "local-only",
      "environment": {
        "type": "workstation",
        "binary": "build/primo, Release",
        "notes": "14 cores, load average ~2.1 during both A/B runs; the concurrent tropical propagation sweep was running but single-threaded, so contention is not a plausible explanation for a 27x gap. Local diagnostic, not a SLURM benchmark claim."
      },
      "command": {
        "structure_census": "grep/regex census over sandbox/non-incremental/QF_LRA/tropical-matrix/constraint-199552.smt2: 954 m/c variable pairs (36 f*, 918 l*), 468 unconditional Boolean definitions (= lKm (or lIm lJm)), 468 guarded arithmetic definitions (or lKm (= lKc (+ a b))), 0 ite, 0 multiplications.",
        "dont_care_check": "scratchpad guard_check2.py: inlines let bindings and walks the term with an explicit stack, treating both guard polarities (positive sibling disjunct in an or, negative sibling conjunct in an and).",
        "baseline": "build/primo --quiet --stats --guarded-real-equality-lowering constraint-199552.smt2",
        "unguarded": "same binary on a rewritten copy with all 468 (or lKm (= lKc (+ a b))) replaced by (= lKc (+ a b))"
      },
      "result": {
        "dont_care_precondition": "All 468 guarded arithmetic definitions have every occurrence of their c-variable protected by their own m-flag, so unguarding is satisfiability-preserving. 774 of 954 c-variables are fully protected; 3,774 of 5,106 occurrences (73.9%). Checking only one guard polarity reports 0 of 468 and is wrong.",
        "baseline": "sat in 4.13s; 15,766 decisions, 93 conflicts, 7,679 pivots, 128.4M pivot term ops.",
        "unguarded": "sat in 112s; 125,603 decisions, 13,359 conflicts, 526,566 pivots, 3,831M pivot term ops.",
        "conclusion": "Unguarding is sound (both answer sat) but 27x slower with 68x the pivots. The guards are load-bearing: setting lKm true discharges the definition at the Boolean level, so the case split is cheaper than the tableau row it avoids. This rejects the family of guard-simplifying preprocessing ideas and explains why T1 helps only because it keeps the guard.",
        "fill_in": "On the solved baseline run: 1,440 rows, 3,519 row-nonzeros (initial average row length 2.44), 164 rows touched per pivot, ~102 terms per row update -- roughly 42x fill-in. :lra.fixed-variables and :lra.elimination-pivots are both 0, so existing elimination machinery does nothing on this family."
      },
      "artifacts": {
        "analysis_note": "docs/tropical-matrix-structure.md",
        "scripts": "scratchpad only (guard_check2.py, unguard.py); not committed -- the note records the method and the counts, and the rewrite is a four-line regex substitution reproducible from the note."
      },
      "follow_up": "Two leads recorded in docs/tropical-matrix-structure.md: L1, prefer m-flag variables in decision order (cheap, the Boolean layer is self-contained over 36 free inputs and the solved run shows 15,766 decisions against 93 conflicts); L2, relevancy propagation to avoid asserting theory atoms under already-satisfied guards (literature-backed, absent from Primo, needs a paper note first). Neither is implemented."
    },
    {
      "id": "2026-08-04-qf-lra-tropical-t1-row-propagation-rejected",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "parameter-tuning",
      "scope": "Local A/B of row and bidirectional row propagation layered on top of T1 (--guarded-real-equality-lowering) over all 10 tropical-matrix files, sweeping the four propagation caps. Tests whether T1's leaner CNF makes propagation pay off on the out = a + b cost rows, a combination never measured before: propagation had only been tried on the pre-T1 encoding. Rejected.",
      "commit": "a83243a",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "local-only",
      "environment": {
        "type": "workstation",
        "binary": "build/primo, Release",
        "notes": "14 cores; sweep ran one solver process at a time. Local diagnostic screen, not a SLURM benchmark claim. No SLURM A/B and no fuzz gate were run because nothing is promoted by this result."
      },
      "command": {
        "manifest": "benchmarks/qf-lra-tropical-matrix.txt (all 10 sandbox/non-incremental/QF_LRA/tropical-matrix files)",
        "timeout_seconds": 60,
        "baseline": "build/primo --quiet --stats --guarded-real-equality-lowering <file>",
        "propagation": "same plus --lra-row-propagation --lra-bidirectional-row-propagation, with the four cap options at default, 128 and 1024",
        "driver": "scripts/bench_tropical_matrix_sweep.py"
      },
      "result": {
        "solved": {
          "t1_only": "1/10 (constraint-199552, 4.214s)",
          "t1_rowprop_default_caps": "0/10",
          "t1_rowprop_128": "0/10",
          "t1_rowprop_1024": "0/10"
        },
        "mechanism_fired": "Yes: 2,088 :lra.row-propagations and 128 :lra.bidirectional-row-propagations on constraint-199552. Not a null result from code that never ran.",
        "caps_not_binding": "Pivots, term ops and both propagation counters are IDENTICAL at default, 128 and 1024 caps (64,272 pivots / 1,012,810,802 term ops / 2,088 / 128). Unlike the mid-band files behind D1 (fanout 521, rows of 91 terms), tropical never approaches even the default caps, so the caps were never the binding constraint.",
        "cost": "Against T1 alone on constraint-199552 (7,679 pivots, 128.4M term ops), propagation gives 64,272 pivots and 1,013M term ops -- 8.4x the pivots and 7.9x the term ops -- and loses the file.",
        "conclusion": "Rejected at every cap setting tested. Propagation is not neutral on this family, it is a regression: it loses the single file the baseline solves. Combined with the separate finding that unguarding the definitions is 27x slower (see 2026-08-04-qf-lra-tropical-matrix-structure-analysis), the encoding needs neither more propagation nor fewer guards."
      },
      "artifacts": {
        "results_dir": "results/tropical-t1-propagation/ (CSV per config plus fired-*.err counter dumps); local-only, not committed",
        "write_up": "docs/qf-lra-heuristics.md section T2, and docs/tropical-matrix-structure.md for the structural half"
      },
      "follow_up": "Not a pivoting-rule or propagation-cap question. Live leads are recorded in docs/tropical-matrix-structure.md: m-flag-first decision ordering (cheap) and relevancy propagation (larger, absent from Primo, needs a paper note first)."
    },
    {
      "id": "2026-08-05-qf-lra-tropical-lead-triage",
      "started_at": "2026-08-05",
      "recorded_at": "2026-08-05",
      "kind": "profiling",
      "scope": "Triage of the two leads recorded in docs/tropical-matrix-structure.md, checking whether either is already implemented before proposing work. Establishes that both are untried, that the existing --lra-theory-decisions does the opposite of L1 and is catastrophic here, and that a third and cheaper lead (L3) exists because the pure-theory-filter machinery already computes what it needs but is gated to QF_UF.",
      "commit": "c3748c0",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "local-only",
      "environment": {
        "type": "workstation",
        "binary": "build/primo, Release",
        "notes": "Single-file diagnostic on constraint-199552.smt2. Local only."
      },
      "command": {
        "l1_control": "build/primo --quiet --stats --guarded-real-equality-lowering [--lra-theory-decisions] constraint-199552.smt2",
        "l3_ablation": "build/primo --quiet --guarded-real-equality-lowering --pure-theory-filter=on|off constraint-199552.smt2",
        "code_check": "src/smt/check_sat.cpp cb_decide(): skips atoms where !prepared_atom.is_arithmetic"
      },
      "result": {
        "l1_status": "Untried. --lra-theory-decisions is the nearest existing mechanism and does the inverse: cb_decide() decides arithmetic atoms first and defers Boolean flags to VSIDS.",
        "l1_measurement": "Baseline 3.5s sat; with --lra-theory-decisions, timeout at 90s after 9,185,550 theory decisions. A falsification test of the structural reading that came out as predicted: deciding arithmetic before the flags that make it relevant is the pathological order.",
        "l2_status": "Untried and genuinely absent -- no relevancy machinery in src/. The only adjacent thing is the polarity-based pure-theory-filter, which is L3.",
        "l3_finding": "On constraint-199552: :euf.theory-atoms 3846, :euf.pure-atoms.positive 2892 (75%), :euf.pure-atoms.negative 0, :euf.pure-filter.enabled 0, :euf.pure-literals.filtered 0. The polarity analysis runs and finds three quarters of theory atoms pure-positive, then filters none, because the mechanism is implemented for QF_UF only. Ablation confirms inertness: --pure-theory-filter=on 4.152s vs off 4.150s."
      },
      "follow_up": "Ranked L3 (extend pure-theory-filter to LRA; cheapest, machinery already computes the answer), then L1 (invert the cb_decide filter; small, with --lra-theory-decisions as a ready-made control), then L2 (dynamic relevancy propagation; largest, needs a paper note first and should follow L3's outcome)."
    },
    {
      "id": "2026-08-05-qf-lra-monotone-variable-elimination-rejected",
      "started_at": "2026-08-05",
      "recorded_at": "2026-08-05",
      "kind": "profiling",
      "scope": "Applicability screen for monotone (one-sided) real-variable elimination across eight QF_LRA families, using the new scripts/analyze_smt2.py. Supersedes an earlier regex screen whose counts were artifacts.",
      "commit": "953f058",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "local-only",
      "environment": {
        "type": "workstation",
        "binary": "python3 scripts/analyze_smt2.py",
        "notes": "Static analysis of benchmark files; no solver run involved."
      },
      "command": {
        "analysis": "python3 scripts/analyze_smt2.py --json <one file per family>",
        "selftest": "python3 scripts/analyze_smt2.py --selftest"
      },
      "result": {
        "one_sided_reals": "latendresse 0/1708, miplib 0/996, uart 0/171, sc 0/128, DTP-Scheduling 1/11, clock_synchro 0/210, tta_startup 0/104, tropical-matrix 0/4552.",
        "conclusion": "Rejected on applicability. Monotone elimination is sound -- Fourier-Motzkin on a single-sign variable generates no new constraints -- but there is essentially nothing to eliminate in these families.",
        "supersedes": "An earlier regex screen reported 456 of 996 danoint-166 reals as one-sided. That was an artifact of matching only flat atoms and skipping nested arithmetic such as (<= (+ (* 2 x) y) 5); the correct answer is 0. The retraction is why the analyzer was written.",
        "incidental_validation": "The analyzer independently reproduces two previously hand-derived figures: 774 guard-protected reals on tropical-matrix/constraint-199552, and the recorded 70-72% unary/two-variable census (1,611 of 2,250, 71.6%). It also confirms the tropical don't-care structure is family-wide, not instance-specific: 3,972 of 4,552 reals guard-protected on a second, larger file.",
        "known_limitation": "Several families still report opaque atoms (latendresse 899, miplib 248, clock_synchro 204, tta_startup 200, sc 50). Opaque forces the conservative classification, so conclusions stay sound, but those constructs are worth identifying before the analyzer is relied on for finer questions."
      },
      "follow_up": "Lead closed in docs/open-leads.md. The analyzer is committed at scripts/analyze_smt2.py with a --selftest covering both retracted grep errors."
    },
    {
      "id": "2026-08-05-qf-lra-monotone-screen-corpus-wide-reopens-lead",
      "started_at": "2026-08-05",
      "recorded_at": "2026-08-05",
      "kind": "profiling",
      "scope": "Corpus-wide one-sided (monotone) variable screen over the entire local QF_LRA benchmark set, run to check a lead that had been closed on a sample of one file per family. The corpus contradicts the sample: the lead is reopened.",
      "commit": "328790c",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "local-only",
      "environment": {
        "type": "workstation",
        "binary": "python3 scripts/analyze_smt2.py via scripts/screen_qf_lra_corpus.py",
        "notes": "14 cores, 30GB RAM. 6 parallel workers, 180s per-file timeout, 6144MB RSS cap per worker. Static analysis only; no solver was run."
      },
      "command": {
        "screen": "python3 scripts/screen_qf_lra_corpus.py sandbox/non-incremental/QF_LRA --out results/qf-lra-corpus-screen --jobs 6 --timeout 180 --mem-mb 6144",
        "selftest": "python3 scripts/analyze_smt2.py --selftest"
      },
      "result": {
        "coverage": "1753 of 1753 files analyzed successfully. Zero timeouts, zero OOMs, zero parse failures. Slowest file 43.15s against the 180s cap, so no file was excluded and the denominator is complete.",
        "headline": "86,126 one-sided reals out of 4,756,176 (1.8%) corpus-wide. This contradicts the earlier 8-file screen, which found essentially none and on which the lead had been closed.",
        "per_family": {
          "2017-Heizmann-UltimateInvariantSynthesis": {
            "files": 58,
            "analyzed": 58,
            "failed": 0,
            "reals": 22319,
            "one_sided": 442,
            "opaque_pct": 0.0
          },
          "2019-ezsmt": {
            "files": 105,
            "analyzed": 105,
            "failed": 0,
            "reals": 91853,
            "one_sided": 10,
            "opaque_pct": 0.0
          },
          "DTP-Scheduling": {
            "files": 91,
            "analyzed": 91,
            "failed": 0,
            "reals": 7650,
            "one_sided": 52,
            "opaque_pct": 0.0
          },
          "LassoRanker": {
            "files": 419,
            "analyzed": 419,
            "failed": 0,
            "reals": 4455966,
            "one_sided": 85120,
            "opaque_pct": 0.0
          },
          "TM": {
            "files": 25,
            "analyzed": 25,
            "failed": 0,
            "reals": 14531,
            "one_sided": 41,
            "opaque_pct": 0.0
          },
          "check": {
            "files": 2,
            "analyzed": 2,
            "failed": 0,
            "reals": 12,
            "one_sided": 0,
            "opaque_pct": 0.0
          },
          "clock_synchro": {
            "files": 36,
            "analyzed": 36,
            "failed": 0,
            "reals": 3663,
            "one_sided": 0,
            "opaque_pct": 0.0
          },
          "keymaera": {
            "files": 21,
            "analyzed": 21,
            "failed": 0,
            "reals": 89,
            "one_sided": 29,
            "opaque_pct": 0.0
          },
          "latendresse": {
            "files": 18,
            "analyzed": 18,
            "failed": 0,
            "reals": 30280,
            "one_sided": 0,
            "opaque_pct": 0.0
          },
          "meti-tarski": {
            "files": 488,
            "analyzed": 488,
            "failed": 0,
            "reals": 1480,
            "one_sided": 365,
            "opaque_pct": 0.0
          },
          "miplib": {
            "files": 42,
            "analyzed": 42,
            "failed": 0,
            "reals": 26256,
            "one_sided": 0,
            "opaque_pct": 0.0
          },
          "sal": {
            "files": 107,
            "analyzed": 107,
            "failed": 0,
            "reals": 7226,
            "one_sided": 67,
            "opaque_pct": 0.0
          },
          "sc": {
            "files": 144,
            "analyzed": 144,
            "failed": 0,
            "reals": 40356,
            "one_sided": 0,
            "opaque_pct": 20.8
          },
          "spider_benchmarks": {
            "files": 42,
            "analyzed": 42,
            "failed": 0,
            "reals": 1956,
            "one_sided": 0,
            "opaque_pct": 1.7
          },
          "tropical-matrix": {
            "files": 10,
            "analyzed": 10,
            "failed": 0,
            "reals": 18691,
            "one_sided": 0,
            "opaque_pct": 0.0
          },
          "tta_startup": {
            "files": 72,
            "analyzed": 72,
            "failed": 0,
            "reals": 6768,
            "one_sided": 0,
            "opaque_pct": 12.1
          },
          "uart": {
            "files": 73,
            "analyzed": 73,
            "failed": 0,
            "reals": 27080,
            "one_sided": 0,
            "opaque_pct": 0.0
          }
        },
        "mechanism": "The one-sided variables in 2017-Heizmann are named motzkin_*: Farkas/Motzkin multipliers from constraint-based invariant synthesis, non-negative by construction and therefore one-directional. LassoRanker is the same lineage (ranking-function synthesis via Farkas' lemma), consistent with its 85,120. This is a structural feature of how those benchmarks are generated, not incidental.",
        "opaque_caveat": "Overall opaque-atom rate 0.2%, but concentrated: sc 20.8% (all 144 files) and tta_startup 12.1% (all 72 files), from ite inside arithmetic terms. For those two families a zero one-sided count means the analyzer could not tell, not that none exist. Every other family is at 0.0%.",
        "analyzer_fixes_this_run": "Handling (* (- 1) x) via a new const_value() ground-term evaluator removed the great majority of opaque atoms corpus-wide (latendresse's first file: 899 opaque -> 0). Separately, ite_count was undercounting because the traversal stops at atom boundaries; sc actually has 380 ites per file and tta_startup 854, where the report previously said 0."
      },
      "follow_up": "Lead reopened as entry 9 in docs/open-leads.md with a falsifier: implement detection only, report :preprocessing.monotone-eliminable on LassoRanker and Heizmann, and check it against :lra.rows / :lra.row-nonzeros. If eliminating those columns does not reduce rows or fill-in, the lead closes on solver counters rather than on a syntactic census. Separate performance follow-up recorded in the analyzer docstring: inline_lets materialises the let-DAG into a tree, which is what makes the largest files slow (~43s, ~1GB); traversing the DAG directly needs a memo key of (node, polarity, guards), never node alone."
    },
    {
      "id": "2026-08-05-qf-lra-monotone-elimination-prototype",
      "started_at": "2026-08-05",
      "recorded_at": "2026-08-05",
      "kind": "profiling",
      "scope": "External prototype of monotone (one-sided) variable elimination, to answer whether the reopened lead is worth implementing in the solver. Folds every atom mentioning a one-sided real to the constant its own polarity requires, then measures Primo before and after.",
      "commit": "7afc623",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "local-only",
      "environment": {
        "type": "workstation",
        "binary": "build/primo Release; z3 from contrib/local/bin",
        "notes": "Prototype transformer lives in the session scratchpad and is not committed; it inlines lets and does no model reconstruction, so it is a measurement device, not a candidate implementation."
      },
      "command": {
        "transform": "scratchpad monotone_elim.py <in> <out>, built on scripts/analyze_smt2.py",
        "soundness": "z3 on original vs transformed, 24 files with a one-sided population and zero opaque atoms, 20s cap",
        "measurement": "build/primo --quiet --stats on original vs transformed, 90s cap"
      },
      "result": {
        "soundness": "24 checked, 24 agree, 0 disagree.",
        "heizmann_standard_copy4": "192 atoms folded; unsat both; :sat.clauses 2909->2507, :lra.rows 618->543, :lra.pivots 146833->147931, time 15.77s->14.15s (-10%).",
        "lassoranker_ex3_20": "21 atoms folded; unsat both; :sat.clauses 1946->1925, :lra.rows 622->622 (unchanged), :lra.pivots 97777->69828, time 12.19s->7.84s (-36%).",
        "interpretation": "The saving is mostly Boolean, not tableau. The LassoRanker file folds only 21 atoms and reduces no rows at all, yet is 36% faster -- a smaller Boolean structure yields a better search. Small meti-tarski files are discharged entirely (:sat.clauses to 0) but already solve instantly, so they are not evidence of value.",
        "falsifier_correction": "The lead's previously stated falsifier -- close it if rows/fill-in do not drop -- is the WRONG test and would have closed a lead that works. Judge on end-to-end time and :sat.clauses instead."
      },
      "follow_up": "Lead 9 in docs/open-leads.md updated with the measurements and a revised effort estimate. Detection and rewrite are small; model reconstruction for eliminated variables is the real work (Primo emits models, and an eliminated variable must be valued after the rest of the model from its discharged constraints, in dependency order). A Slurm fuzz gate is mandatory as this changes preprocessing."
    },
    {
      "id": "2026-08-05-qf-lra-monotone-elimination-slurm-fuzz-gate",
      "started_at": "2026-08-05",
      "recorded_at": "2026-08-05",
      "kind": "implementation-fuzz",
      "scope": "Correctness gate for the opt-in --monotone-elimination preprocessing pass and its model reconstruction. QF_LRA answer fuzzing differentially against z3, plus Dolmen/z3 model validation of every produced model, plus opfuzz and YinYang mutation over real QF_LRA seeds.",
      "commit": "c054811",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (node-head, compute partition, node-01) via SSH ProxyJump jump-data-ciirc",
        "remote_dir": "/home/janotmik/primo-monotone-c054811",
        "binary": "build-slurm-rel/primo, Release, no sanitizers; --version reported 'git: c054811' and cadical-3.0.0-7b99c07 at preflight",
        "notes": "Remote had only cadical provisioned; fuzzsmt, z3 5.0.0 and the yinyang venv (opfuzz/typefuzz) were installed and smoke-run before submission. Dolmen is unavailable on this cluster, so model validation used the documented z3 fallback for Real-constant models; the fallback was verified locally first (pass=2 on crafted cases) rather than assumed."
      },
      "command": {
        "job_id": "119430",
        "submit": "sbatch --export=ALL,PRIMO_WORKDIR=<workdir>,PATH=<workdir>/contrib/local/bin:<workdir>/.venv-yinyang/bin:$PATH,PRIMO_FUZZ_SOLVER_EXTRA_ARGS=--monotone-elimination scripts/slurm_qf_lra_model_fuzz_gate.sbatch",
        "layout": "array 0-8: 6 FuzzSMT shards x 500 cases (5s timeout) with model validation, 1 opfuzz task, 2 YinYang/typefuzz shards over benchmarks/seeds/qf_lra_real",
        "prerequisite": "PRIMO_FUZZ_SOLVER_EXTRA_ARGS was added to the gate in commit c054811. Without it the flag reaches the answer fuzzer but is silently dropped by the Dolmen model validator, which takes --solver as a bare executable plus discrete --solver-arg entries -- the gate would have looked clean while testing nothing about model reconstruction."
      },
      "result": {
        "answer_fuzzing": "3,000 generated cases: 2,977 PASS, 23 TIMEOUT, 0 wrong answers, 0 crashes, 0 parser/type errors.",
        "model_validation": "2,594 pass, 0 invalid models, 389 not-sat (unsat input, no model expected), 17 solver-timeout.",
        "mutation": "opfuzz task and 2 YinYang/typefuzz shards: 14 seeds each, 14 valid, 0 invalid, 0 bug triggers.",
        "task_exit_status": "sacct reports the six FuzzSMT array tasks as FAILED with exit 1:0. This is fuzz_external.py exiting nonzero when any row is non-PASS; the only non-PASS rows are the 23 timeouts, and the bugs/ directories contain exactly those 23 files. Not a soundness failure.",
        "timeout_triage": "All 23 saved bug files cross-check as TIMEOUT rows in the shard summaries (23 files, 23 TIMEOUT rows, no bug file with any other outcome). Each was re-run at a 20s budget with and without --monotone-elimination: ZERO cases changed outcome. Pairs were sat/sat, unknown/unknown and unsat/unsat throughout, so the timeouts are inherent to the generated instances rather than introduced by the pass. (The raw triage log carries a few duplicate rows from a first attempt killed mid-loop before the detached rerun; the distinct case set is 23.)"
      },
      "artifacts": {
        "remote_results": "/home/janotmik/primo-monotone-c054811/fuzz-results/qf-lra-model-gate-119430 (per-shard summary.csv, model-validation/, bugs/); cluster-local, not committed",
        "logs": "logs/primo-qflra-model-fuzz-119430-*.out|.err on the same host"
      },
      "follow_up": "Correctness gate satisfied for the opt-in pass. Still outstanding before any default change: a benchmark evaluation on the stratified sample, since performance evidence is currently two locally prototyped files (-10% and -36%)."
    },
    {
      "id": "2026-08-05-qf-lra-monotone-elimination-stratified-sample",
      "started_at": "2026-08-05",
      "recorded_at": "2026-08-05",
      "kind": "benchmark",
      "scope": "Promotion-bar A/B for the opt-in --monotone-elimination pass: default Primo against the same binary with the flag, over the 237-file QF_LRA stratified sample at the standing 10s bar. Reference solvers deliberately not re-run; z3/cvc5 CSVs from job 114200 are unchanged.",
      "commit": "c054811",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm, compute partition, node-01",
        "remote_dir": "/home/janotmik/primo-monotone-c054811",
        "binary": "build-slurm-rel/primo Release; both tasks logged 'git: c054811' and cadical-3.0.0-7b99c07",
        "notes": "First submission (job 119463) failed in 11s: bench_qf_uf_full.py calls path.relative_to(repo), so benchmarks must live inside the workspace and a symlink to another checkout resolves outside it. Re-run after copying the 237 manifest files (344MB) into tmp/QF_LRA."
      },
      "command": {
        "job_id": "119465",
        "submit": "sbatch --array=0-1 --export=ALL,PRIMO_WORKDIR=<w>,PRIMO_COMPARE_TIMEOUT=10,'PRIMO_COMPARE_SOLVERS=primo-default=build-slurm-rel/primo --quiet;primo-monotone=build-slurm-rel/primo --quiet --monotone-elimination' scripts/slurm_qf_lra_solver_compare.sbatch",
        "manifest": "benchmarks/qf-lra-stratified-sample.txt (237 files)",
        "timeout_seconds": 10
      },
      "result": {
        "default": "solved 174/237, PAR2 1415.098, wrong 0, unsupported 0",
        "monotone": "solved 173/237, PAR2 1432.843, wrong 0, unsupported 0",
        "verdict": "Does NOT clear the promotion bar: -1 solved and worse PAR2.",
        "lost_file": "LassoRanker/CooperatingT2/byron-2.t2.c_Iteration2_Loop_7-phaseTemplate.smt2, default sat in 3.19s, monotone timed out. Re-run at a 120s budget it is a real 3.5x slowdown (3.14s vs 10.91s), not churn at the timeout boundary. Nothing was gained anywhere.",
        "paired_effect": "Over the 71 files both configurations solve in more than 0.2s: median default/monotone ratio 0.997, p10 0.986, p90 1.014, monotone more than 10% faster on 5 and more than 10% slower on 1, total 147.9s against 149.1s. The effect is neutral, not positive.",
        "par2_accounting": "PAR2 delta 17.75, of which the single lost file accounts for 16.81 -- essentially the whole regression.",
        "correctness": "Zero wrong answers in both configurations, confirming the fuzz gate's result at benchmark scale.",
        "retracted_intermediate": "A first cut of this analysis reported 'monotone faster on 57 files, slower on 1'. That counted files taking well under a second, where the ratio is noise. Restricted to non-trivial instances the effect disappears. The figure is recorded as retracted so it is not quoted from an intermediate log."
      },
      "artifacts": {
        "remote_results": "/home/janotmik/primo-monotone-c054811/results/qf-lra-solver-compare-119465/{primo-default,primo-monotone}{,-summary}.csv; cluster-local",
        "failed_first_attempt": "job 119463, no results, see environment note"
      },
      "follow_up": "The two prototype wins (-10% and -36% on single files) did not generalize. The pass stays opt-in and is not proposed for default. Lead 9 in docs/open-leads.md moves from reopened to evaluated-and-not-promoted."
    },
    {
      "id": "2026-08-05-qf-lra-monotone-elimination-local-correctness",
      "started_at": "2026-08-05",
      "recorded_at": "2026-08-05",
      "kind": "implementation-fuzz",
      "scope": "Local correctness evidence gathered while implementing --monotone-elimination, recorded separately from the Slurm gate because it is local-only and because one item found a real bug the unit tests missed. Supports commit 4bed99c.",
      "commit": "4bed99c",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "local-only",
      "environment": {
        "type": "workstation",
        "binary": "build/primo Release; z3 from contrib/local/bin",
        "notes": "Supplementary to the Slurm gate (job 119430), not a substitute for it."
      },
      "command": {
        "exhaustive_differential": "python3 scripts/check_monotone_elimination.py --max-size 2 and --max-size 3",
        "benchmark_model_validation": "scratchpad validate_models.py over 600 corpus files with a one-sided population, 20s cap",
        "reversed_order_experiment": "the same validation over 120 files with apply_monotone_eliminations temporarily iterating the eliminated list in reverse",
        "soundness_batch": "z3 on original vs transformed for 24 files, using the external prototype"
      },
      "result": {
        "exhaustive_size2": "756 formulas: no answer changes, no z3 disagreements, no invalid models.",
        "exhaustive_size3": "4,116 formulas: no answer changes, no z3 disagreements, no invalid models.",
        "benchmark_model_validation": "66 models validated, 0 invalid, 534 skipped as non-sat or timed out at the 20s cap. The high skip rate reflects how hard the one-sided-population files are, not a gap in checking.",
        "reversed_order": "108 valid, 0 invalid, with some models differing in value from the forward order -- the evidence that reconstruction needs no dependency ordering.",
        "bug_found": "This is where the reconstruction bug surfaced: folding an atom discharges it for every variable in it, so a disqualified variable can lose its last constraint and vanish from the tableau. Reconstruction skipped such bounds and emitted models violating the discharged constraint. Unit tests did not catch it; validating printed models against z3 on real benchmarks did. Fixed and pinned by monotone_elimination_values_variables_that_lost_all_constraints."
      },
      "artifacts": {
        "committed": "scripts/check_monotone_elimination.py",
        "scratchpad_only": "validate_models.py, monotone_elim.py -- measurement devices, not candidate implementations"
      },
      "follow_up": "Superseded for headline purposes by the Slurm gate (job 119430) and the stratified-sample A/B (job 119465)."
    },
    {
      "id": "2026-08-05-qf-lra-pure-theory-filter-lra-downgraded",
      "started_at": "2026-08-05",
      "recorded_at": "2026-08-05",
      "kind": "profiling",
      "scope": "Tests lead 1 in docs/open-leads.md -- extending --pure-theory-filter to LRA atoms -- by applying the change and measuring, rather than reasoning from counter names. Downgrades the lead and corrects two errors in its stated evidence. CORRECTED 2026-08-05: the first version of this entry recorded a measurement taken on a code path these files do not execute.",
      "commit": "c054811",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "local-only",
      "environment": {
        "type": "workstation",
        "binary": "build/primo Release, with a temporary two-line change reverted afterwards",
        "notes": "Diagnostic only; no committed behaviour change."
      },
      "command": {
        "code_reading": "src/smt/check_sat.cpp: should_filter_assignment, the two assigned_atoms_from_backend overloads, and the five LRA sites that skip on atom.filtered",
        "experiment": "passed options.pure_theory_filter at the two solve_qf_lra_impl call sites, rebuilt, and compared --pure-theory-filter=off against =auto on tropical-matrix/constraint-199552.smt2"
      },
      "result": {
        "correction_1": "The filter is NOT 'QF_UF only'. The rule needs only occurs_positive/occurs_negative and the LRA side already consumes it -- five sites skip on !prepared_atom.is_arithmetic || atom.filtered. The QF_LRA path calls the two-argument assigned_atoms_from_backend overload, which hardcodes PureTheoryFilterMode::Off. A documented scope decision, not a bug.",
        "correction_2": "SUPERSEDED. The original text claimed the 2,892 pure-positive figure overstates the opportunity because such atoms are mostly assigned true. The supporting measurement was invalid -- it patched solve_qf_lra_impl, but these files run solve_qf_uf_lra (:solver.qf-uflra 1, :solver.qf-lra 0), so the patch was inert and the identical counters proved nothing.",
        "measurement": "With the two-line change applied, --pure-theory-filter=off and =auto give IDENTICAL counters on constraint-199552: 7,679 pivots and 128,402,240 pivot term ops. The filter finds nothing to do on the file that motivated the lead.",
        "misleading_stats": "':euf.pure-filter.enabled' and ':euf.pure-literals.filtered' are set inside solve_qf_uf, so both read 0 on any QF_LRA file regardless of the mechanism's behaviour. That is what made the original reading look confirmed.",
        "verdict": "Lead downgraded, but for a different and more useful reason than first recorded. To matter, the filter must reach the online propagator's assertion path -- a materially larger change that belongs with lead 5 (relevancy propagation), since both are then about not asserting atoms during search.",
        "corrected_measurement": "Redone at the live call site (assigned_atoms_from_backend for lra_atoms inside solve_qf_uf_lra) with a temporary probe: of 2,892 LRA atoms, 1,177 (41%) are filtered with --pure-theory-filter=auto and 0 with =off. So the atoms ARE assigned against their polarity and the filter DOES fire hard -- and :lra.pivots (7,679) and :lra.pivot-term-ops (128,402,240) are identical either way.",
        "actual_reason": "':lra.theory-checks 1' against ':lra.online-check-calls 6528'. Wiring the filter at assigned_atoms_from_backend reaches only the final check, which runs once; all 7,679 pivots happen in the online propagator, which never consults 'filtered'. The cheap version of the lead is worthless by construction rather than by accident of this benchmark."
      },
      "follow_up": "Lead 2 (flag-first decision ordering) is top of docs/open-leads.md. Lead 1 merges into lead 5. Method note for future work: check which solve path a family actually takes (:solver.* counters) BEFORE patching one -- QF_LRA benchmarks in this corpus run solve_qf_uf_lra, not solve_qf_lra."
    },
    {
      "id": "2026-08-05-qf-lra-flag-first-decisions-blocked",
      "started_at": "2026-08-05",
      "recorded_at": "2026-08-05",
      "kind": "profiling",
      "scope": "Attempt at lead 2 in docs/open-leads.md: decide the non-arithmetic Boolean flags before any arithmetic atom on guarded families. Verified the code path first, per the method note from the previous entry. The stated mechanism does not exist and the real one is owned by the theory-combination layer; prototype reverted, nothing committed.",
      "commit": "c63aa23",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "local-only",
      "environment": {
        "type": "workstation",
        "binary": "build/primo Release with a temporary prototype, reverted",
        "notes": "Diagnostic only; no committed behaviour change."
      },
      "command": {
        "path_check": ":solver.* counters on tropical-matrix/constraint-199552 and a uart file",
        "atom_probe": "temporary probe counting non-arithmetic entries in lra_atoms and sampling euf_atoms",
        "prototype": "passed euf_atoms into OnlineLraPropagator and returned their literals from cb_decide, behind --lra-flag-first-decisions"
      },
      "result": {
        "path": "Both files run solve_qf_uf_lra (:solver.qf-uflra 1, :solver.qf-lra 0). OnlineLraPropagator is the live propagator and does receive options.lra_theory_decisions, so its cb_decide is the right hook.",
        "atom_sets": "lra_atoms is built by is_lra_theory_atom and is 100% arithmetic: 2,892 atoms with 0 non-arithmetic on tropical, 1,363 with 0 on uart. Inverting cb_decide's is_arithmetic filter would therefore yield an EMPTY candidate set and disable theory decisions rather than reorder them. The flags are the 954 euf_atoms -- Bool-sorted Constant terms -- split off by is_euf_theory_atom.",
        "dispatcher": "MixedTheoryPropagationDispatcher::cb_decide merely delegates to the LRA propagator, and is constructed only when nelson_oppen_propagation == Online, which is not the default (Final).",
        "hard_blocker": "Returning a euf_atom literal from OnlineLraPropagator::cb_decide aborts: 'cadical: fatal error: invalid API usage of ask_decision(): external decisions are only allowed over observed variables.' A propagator may only decide variables it observes.",
        "verdict": "Lead 2's stated mechanism ('invert the filter, a small change') is wrong on every count. Making the Boolean flags observed by the LRA propagator changes which callbacks CaDiCaL delivers and is a theory-combination decision, so the work belongs on the combination layer where MixedTheoryPropagationDispatcher already sees both atom sets."
      },
      "follow_up": "Reverted rather than finished, to avoid entrenching a layering violation and to avoid colliding with in-flight Nelson-Oppen work in another branch. Recorded as a design-ownership note: cross-theory decision ordering belongs to the theory-combination layer. Next actionable lead is 3 (MathSAT's actual leaving-variable rule), which is confined to LraTableau and touches no combination code."
    },
    {
      "id": "2026-08-05-qf-lra-boolean-constant-dispatch-finding",
      "started_at": "2026-08-05",
      "recorded_at": "2026-08-05",
      "kind": "profiling",
      "scope": "Why pure QF_LRA benchmarks route through solve_qf_uf_lra, and what happens if they do not. Prompted by the observation that Nelson-Oppen should not fire at all on a formula with no uninterpreted content.",
      "commit": "dd048dc",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "local-only",
      "environment": {
        "type": "workstation",
        "binary": "build/primo Release, with a temporary one-line experiment that was reverted"
      },
      "command": {
        "root_cause_read": "summarize_formula_features in src/smt/check_sat.cpp",
        "experiment": "restricted has_euf_predicate to TermKind::Application (dropping bare Bool Constant), rebuilt, re-ran tropical-matrix/constraint-199552",
        "dispatch_census": "ran 40 files of benchmarks/qf-lra-stratified-sample.txt and read :solver.qf-lra / :solver.qf-uflra"
      },
      "result": {
        "root_cause": "has_euf_predicate is set by `(kind == Application || kind == Constant) && sort == Bool`. A bare Boolean Constant -- an ordinary propositional variable -- therefore counts as an EUF predicate, and line 9108's `(has_equality || has_euf_predicate) && has_arithmetic` dispatches the formula to solve_qf_uf_lra. constraint-199552 declares no sorts and no uninterpreted functions at all: it is pure QF_LRA plus propositional variables.",
        "cost_of_the_misclassification": "On tropical it builds a congruence closure over the 954 Boolean constants: :euf.incremental.terms 956, :euf.incremental.merges 954. Nelson-Oppen itself no-ops (no shared real terms, :no.purification.skipped-no-sites 1).",
        "SURPRISE": "Routing the file to the pure QF_LRA solver instead is DRASTICALLY WORSE, not better. With has_euf_predicate restricted to Application: :solver.qf-lra 1, :euf.incremental.merges 0, and the file TIMES OUT at 180s having done 230,163 pivots. The default QF_UFLRA path solves it in 4.39s with 7,679 pivots. That is a 40x-plus regression from 'fixing' the classification.",
        "dispatch_census": "14 of 40 sampled stratified-sample files (35%) take the QF_UFLRA path; 25 take the pure QF_LRA path.",
        "interpretation": "The misclassification is not overhead being paid for nothing -- it is load-bearing on at least one family. The 954 merges are a trivial one-time cost, and something about the QF_UFLRA solve loop is worth far more than that on this shape. Why the leaner path is 40x worse is now the open question, and it is a question about Primo's own QF_LRA solver rather than about theory combination.",
        "localisation": "Localised at a 60s budget, same file and options. Identical: :sat.clauses 10,059, :lra.rows 1,440, :lra.tableau-vars 2,394. Divergent: :sat.conflicts 5,256 vs 93, :sat.decisions 59,388 vs 15,766, :lra.online-check-calls 58,146 vs 6,528, :lra.pivots 98,191 vs 7,679. Preprocessing, clausification and tableau construction agree exactly; the entire divergence is in search.",
        "ruled_out": "NOT the observed-variable set. solve_qf_lra observes all 3,846 theory atoms while solve_qf_uf_lra observes only the 2,892 arithmetic ones, which looked like the obvious cause. Restricting the pure path to observe only arithmetic atoms does not help: still a 180s timeout, at 307,336 pivots, slightly worse. Also NOT Nelson-Oppen doing useful work -- it no-ops for lack of shared real terms."
      },
      "follow_up": "Filed as a TODO in docs/open-leads.md rather than fixed, on instruction: Nelson-Oppen is heavily under construction in another branch and this sits in solve_qf_uf_lra and the dispatch, both of which that work touches. Two paths producing identical encodings and wildly different searches is a behaviour bug regardless of which is faster; the goal is convergence, and 'always assume NO' is a legitimate route since on a single theory the combination layer should reduce to nothing. The remaining check is to diff the two solve LOOPS, not their setup, which is already known to agree."
    },
    {
      "id": "2026-08-05-qf-lra-least-violated-leaving-rule",
      "started_at": "2026-08-05",
      "recorded_at": "2026-08-05",
      "kind": "benchmark",
      "scope": "Promotion-bar three-way for lead 3: MathSAT's actual leaving-variable rule (Griggio thesis 2.5.3 p.53, least-violated first with short-row tie-break) against both leaving policies Primo already had. First evaluation to apply the complementarity criterion from docs/open-leads.md.",
      "commit": "dfb83f8",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm, compute partition, node-07",
        "remote_dir": "/home/janotmik/primo-leaving-dfb83f8",
        "binary": "build-slurm-rel/primo Release; all three tasks logged 'git: dfb83f8'"
      },
      "command": {
        "job_id": "119530",
        "manifest": "benchmarks/qf-lra-stratified-sample.txt (237 files)",
        "timeout_seconds": 10,
        "solvers": "shortrow-default (current default); most-violated (--no-lra-sparse-leaving); least-violated (--lra-least-violated-leaving)"
      },
      "result": {
        "shortrow_default": "solved 174/237, PAR2 1415.974, wrong 0",
        "most_violated": "solved 162/237, PAR2 1653.456, wrong 0",
        "least_violated": "solved 167/237, PAR2 1543.921, wrong 0",
        "verdict": "Does NOT clear the promotion bar. The new rule sits between the two existing policies: 7 solved behind the shortest-row default, 5 ahead of Dantzig-style most-violated.",
        "complementarity": "least-violated vs default: gained 2, lost 9. least-violated vs most-violated: gained 12, lost 7. Virtual best of all three 177/237; of default+least-violated 176/237 against the default's 174.",
        "churn_check": "The two gained files are boundary effects, not capability, per the caveat in docs/open-leads.md. Re-run at 120s the default solves both: rand_80_340_1159656267_18.lp in 14.73s (against 2.99s) and 0051-labyrinth-12-0 in 10.10s (against 6.60s). So the portfolio case is weak -- though the first is a genuine 5x per-instance speedup.",
        "corroborates_the_primary_source": "least-violated beats most-violated by 5 solved and 110 PAR2, gaining 12 files against it. Griggio's actual rule really is better than the most-violated rule Primo's docs had attributed to him -- which is independent support for that attribution having been wrong, on this project's own benchmarks rather than on the thesis's numbers."
      },
      "follow_up": "Lead 3 closed for default promotion; kept as an option. The attribution correction in docs/papers/griggio-mathsat-thesis.md and docs/papers/lra-related-work.md now has local empirical support, not only the primary source."
    },
    {
      "id": "2026-08-06-qf-lra-dispatch-path-comparison",
      "started_at": "2026-08-05",
      "recorded_at": "2026-08-06",
      "kind": "benchmark",
      "scope": "Whether the two QF_LRA solve paths differ systematically or just chaotically. Settles the claim in an earlier entry that their divergence is a behaviour bug -- it is not.",
      "commit": "dfb83f8",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "local-only",
      "environment": {
        "type": "workstation",
        "binary": "two builds differing only in the has_euf_predicate line: /tmp/primo-mixed (Bool Constant counts, current default) and /tmp/primo-pure (Application only). Both from dfb83f8; neither change is committed.",
        "notes": "15s per file. Local because the question is a direction check across many small runs, not a headline benchmark claim."
      },
      "command": {
        "selection": "every stratified-sample file whose dispatch actually differs: has a Bool 0-ary constant, no uninterpreted function, no declared sort -- 130 of 237",
        "driver": "scratchpad pathcmp.sh, timing both builds per file"
      },
      "result": {
        "tally": "comparable 80 (62%), both timeout 21, pure faster 19 (1.5-7.6x), mixed faster 6 (2.2-55.2x), pure solves where mixed times out 2, mixed solves where pure times out 2.",
        "verdict": "Neither path dominates. Timeout wins are exactly even at 2-2, and where the paths differ the pure path is faster more often. The divergence is chaotic, as expected from a search perturbation in CDCL(T), not systematic.",
        "supersedes": "The earlier entry 2026-08-05-qf-lra-boolean-constant-dispatch-finding called this a behaviour bug on the strength of a single 40x instance. That framing was an overclaim from n=1 and is retracted; the 40x is one draw from a two-tailed distribution.",
        "cross_check": "rand_80_340_1159656267_18.lp and 0051-labyrinth-12-0 each appear as large swings both here and in the lead 3 leaving-rule comparison, on opposite sides -- instances that swing hard swing hard under any perturbation."
      },
      "follow_up": "Design decision recorded in docs/open-leads.md: KEEP the dedicated LRA-only solver without Nelson-Oppen, since on a single theory the combination layer has nothing to do. What is recorded instead is the hazard -- dispatch is a nondeterminism trigger. Adding one (declare-fun p () Bool) to a pure QF_LRA problem changes which solver runs and can change runtime by an order of magnitude either way, so benchmark results are not comparable across an edit that adds or removes a Boolean constant, performance reports should name :solver.qf-lra vs :solver.qf-uflra, and mutation-fuzzer timing data is not meaningful (answers still are)."
    },
    {
      "id": "2026-08-06-qf-lra-pivot-gprof-profile",
      "started_at": "2026-08-06",
      "recorded_at": "2026-08-06",
      "kind": "profiling",
      "scope": "Where LRA time actually goes, to settle lead 7 (row representation: sorted arrays of pairs versus hash tables, per Griggio thesis 2.5.2) with a profile rather than a transplanted benchmark number.",
      "commit": "2f17f35",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "local-only",
      "environment": {
        "type": "workstation",
        "binary": "build-gprof/primo, RelWithDebInfo with -pg -O2 -g",
        "notes": "perf is unavailable in this sandbox (kernel.perf_event_paranoid = 4, 'Failure to open any events'); callgrind was started and abandoned once gprof answered the question."
      },
      "command": {
        "build": "cmake -S . -B build-gprof -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS='-pg -O2 -g' -DCMAKE_EXE_LINKER_FLAGS=-pg",
        "run": "build-gprof/primo --quiet --guarded-real-equality-lowering tropical-matrix/constraint-199552.smt2; gprof over gmon.out",
        "instance": "tropical-matrix/constraint-199552.smt2: 7,679 pivots, 1,260,035 pivot row updates, 128.4M pivot term ops"
      },
      "result": {
        "flat_profile": "LraTableau::pivot 74.08% self (2.83s of 3.82s, 7,679 calls, 0.37ms/call); Rational::operator* 12.04% (48.1M calls); Rational::from_int128_reduced 3.93% (83.0M calls); Rational::operator+ 2.88% (34.8M calls); LraTableau::update 2.09%; Rational copy constructor 1.05% (53.6M calls); CaDiCaL internals about 2% in total.",
        "aggregate": "pivot plus rational arithmetic is roughly 94% of runtime: 74% in pivot's own merge loop and 20% in rational operations.",
        "answers_lead_7": "There is NO hash or map cost in the LRA hot path at all. The only hashtable entries in the profile are TermPairKey lookups (Nelson-Oppen interface equalities) at 0.00%. Primo's Row is already std::vector<std::pair<LraVarId, Rational>> kept ordered by var id -- the sorted-array-of-pairs design the thesis endorses -- with lower_bound for coefficient lookup and a linear two-way merge for combination (item H8). The thesis's 1.20x for choosing wrongly is therefore already banked, and the class comment records that rows_ WAS std::unordered_map and was migrated away for exactly this reason.",
        "what_the_profile_points_at_instead": "Term-operation volume and rational cost, not the container. 83.0M from_int128_reduced calls against 48.1M multiplies means roughly 1.7 normalisations per multiply, and 53.6M Rational copies is a large number for 1.26M row updates. Reducing fill-in (fewer terms) or making the small-rational path cheaper are the levers this profile supports."
      },
      "follow_up": "Lead 7 closed as already-implemented, on profile evidence rather than on a code read alone. Also fixed a stale comment in select_entering_variable that claimed 'Row isn't sorted by var id', contradicting the Row invariant that pivot()'s merge depends on."
    },
    {
      "id": "2026-08-06-qf-lra-occurs-in-removal-scan-cost",
      "started_at": "2026-08-06",
      "recorded_at": "2026-08-06",
      "kind": "profiling",
      "scope": "Measures the cost of the linear occurs_in_ removal inside LraTableau::pivot, after a gprof profile put pivot at 74% self time with rational arithmetic separately accounted for. Answers whether the erase/remove scan is rare bookkeeping or a dominant cost.",
      "commit": "10b894c",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "local-only",
      "environment": {
        "type": "workstation",
        "binary": "build/primo Release with three temporary counters, reverted afterwards"
      },
      "command": {
        "instance": "tropical-matrix/constraint-199552.smt2 with --guarded-real-equality-lowering",
        "probe": "counted occurs_in entries iterated per pivot, calls to the erase/remove in the cancellation branch, and the total elements those scans touched"
      },
      "result": {
        "iterated": "1,260,035 occurs_in entries iterated in total (this is the Markowitz factor, |occurs_in(entering)| summed over pivots)",
        "erase_calls": "12,033,307 -- about 9.5 removals per pivot row update, i.e. roughly TEN TIMES more removals than iterations",
        "erase_scanned": "8,174,083,067 elements scanned by those removals; average occurrence-list length 679",
        "magnitude": "8.17 billion scanned elements against 128.4M pivot term ops -- 64x more work in the bookkeeping than in the arithmetic it maintains. At a generous 4 elements/ns that is about 2.0s of pure scanning in a 4.4s solve, consistent with pivot's 74% self time and with Rational copies being only 1.05%.",
        "correction": "An earlier reading of this code claimed removals were rare, taken from the comment 'This is the *only* removal the loop performs' -- which says WHICH removal, not how often. The measurement says the opposite."
      },
      "follow_up": "Filed as a lead in docs/open-leads.md. The container question is now settled by data rather than by the general principle that vectors iterate better than hash sets: iteration is 6,500x cheaper than the removal scans here, so almost any structure with sub-linear removal wins, even one with slower iteration."
    },
    {
      "id": "2026-08-06-qf-lra-occurs-in-hashset-prototype",
      "started_at": "2026-08-06",
      "recorded_at": "2026-08-06",
      "kind": "profiling",
      "scope": "Prototype of lead 3b candidate 3: replace occurs_in_'s per-variable std::vector with std::unordered_set so removal is O(1), including the requested initial-capacity (reserve) variants. Also establishes that the cancellation rate generalises beyond tropical-matrix.",
      "commit": "5385cf0",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "local-only",
      "environment": {
        "type": "workstation",
        "binary": "four builds from the same tree: baseline, unordered_set with no reserve, and with per-variable reserve(8) and reserve(32). All prototypes reverted; nothing committed."
      },
      "command": {
        "cancellation_census": "temporary counters on both occurs_in_ erase sites, across five families",
        "ab": "same instance through each build, comparing wall time and :lra.pivots"
      },
      "result": {
        "cancellation_generalises": "Cancellation is NOT tropical-specific: 9.4% of merged terms on tropical constraint-199552, 13.8% latendresse ecoli, 18.0% miplib danoint-166, 12.1% uart-16, 9.5% sc-21. Scanned-elements-per-merged-term ranges 6x to 64x.",
        "search_unchanged": ":lra.pivots is IDENTICAL between baseline and prototype on every instance measured (7,679 / 3,654 / 847 / 282,354), so unordered_set's different iteration order does not perturb pivot selection and the timings measure container cost cleanly rather than a search change.",
        "ab_results": "tropical constraint-199552 4.24s -> 3.20s (-25%); sc-21 0.48 -> 0.47 (-2%); uart-16 0.26 -> 0.25 (-4%); latendresse ecoli 0.26 -> 0.34 (+31%); miplib danoint-166 65.19s -> 77.52s (+19%).",
        "the_deciding_factor": "AVERAGE OCCURRENCE-LIST LENGTH, not total elements scanned. danoint-166 scans 1.8x MORE elements in total than tropical (14.6B vs 8.2B) and gets 19% WORSE, because its average list is 76 against tropical's 679. The vector scan is contiguous, vectorisable and cache-friendly, so it is very cheap per element; a hash erase costs a hash plus a probe plus a likely cache miss regardless of list length. Hashing only wins once the list is long enough to amortise that. Crossover is somewhere between 76 and 679.",
        "reserve_result": "The requested initial-capacity setting makes things WORSE, not better: on tropical, no-reserve 3.20s against reserve(8) 3.50s and reserve(32) 3.38s. Reserving per variable pays allocation and memory for every variable, and most occurrence lists are short.",
        "model_correction": "The framing that '8.17 billion scanned elements must be the bottleneck' was too simple. Removing the scans entirely on tropical wins 25%, not the ~45% a 2.0s-of-4.4s estimate implied, which means contiguous scanning is substantially faster per element than that estimate assumed."
      },
      "follow_up": "Candidate 3 (unordered_set) is rejected as a blanket change: it is a regression on three of five instances including the largest. What survives is the diagnosis -- long occurrence lists are expensive to maintain -- and the two untried candidates, tombstone/superset and swap-and-pop with a position index, both of which keep contiguous iteration. A length-triggered hybrid is also now suggested by the data."
    },
    {
      "id": "2026-08-06-qf-lra-occurs-in-swappop-and-histogram",
      "started_at": "2026-08-06",
      "recorded_at": "2026-08-06",
      "kind": "profiling",
      "scope": "Second prototype for lead 3b (swap-and-pop with a position index), plus the occurrence-list length histogram that explains where the scan cost actually lives and suggests it may be predictable from the formula.",
      "commit": "aa76386",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "local-only",
      "environment": {
        "type": "workstation",
        "binary": "builds from the same tree: baseline, unordered_set, swap-and-pop with an unordered_map position index. All prototypes reverted; nothing committed."
      },
      "result": {
        "histogram": "At each cancellation erase on tropical constraint-199552 (12.0M calls, 8.17B elements): lists under 256 account for 2.9% of scanning, 256-511 for 10.5%, 512-1023 for 51.6%, and 1024+ for 34.9%. So 86.5% of all scanning happens on lists of 512 or more -- the mean of 679 hides a heavily skewed population.",
        "why": "Consistent with docs/tropical-matrix-structure.md: the family is a DAG of definitions over 36 free f* variables, so pivoting composes rows back toward those few variables and their occurrence lists become enormous. The long lists follow from the formula's shape.",
        "predictability_hypothesis": "UNTESTED. scripts/analyze_smt2.py already recovers free-versus-derived structure and occurrence counts statically. If occurrence-length distribution correlates with a static measure, representation could be chosen per instance or per variable before search. The correlation has not been checked and that check gates any adaptive scheme.",
        "swappop": "tropical 4.11s -> 3.70s; sc-21 0.46 -> 0.50; uart-16 0.23 -> 0.27; latendresse 0.25 -> 0.37. Worse than the unordered_set prototype on every instance.",
        "why_swappop_loses": "Structural, not an implementation detail: the position index is itself a hash map, so each erase costs a hash find, a hash erase, and a hash write to repair the moved element -- two to three hash operations against unordered_set::erase's one, plus swap bookkeeping. It only wins with a non-hash index, and a dense pos_[var][basic] is O(vars^2): 23MB for tropical's 2,394 tableau variables but about 34GB for a LassoRanker instance with 92,937 reals.",
        "test_gap_found": "The first swap-pop version cleared occurs_in_'s vectors in rebuild_occurs_in_index without clearing the position index, leaving stale positions for a later erase to act on. All 13 unit suites passed with that bug present, so nothing currently exercises a rebuild followed by a removal."
      },
      "follow_up": "Two of three candidates now rejected by measurement. What remains is the tombstone/superset variant, and the principled version of swap-and-pop -- the standard sparse-matrix representation with each nonzero linked into both a row and a column list, carrying its position in the row entry so no separate index exists (King's thesis Section 2.2.7). Also recorded as a prerequisite for any adaptive scheme: check whether occurrence-length distribution is predictable from static formula structure."
    },
    {
      "id": "2026-08-06-qf-lra-crosslink-occurs-in-gates",
      "started_at": "2026-08-06",
      "recorded_at": "2026-08-06",
      "kind": "benchmark",
      "scope": "Correctness gate and promotion-bar A/B for the cross-linked occurs_in_ change (lead 3b): row entries carry a back-index into the column list so pivot() unlinks an occurrence in O(log row) instead of scanning it.",
      "commit": "83afe14",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm, node-01",
        "remote_dir": "/home/janotmik/primo-crosslink-83afe14",
        "notes": "Both A/B arms ran in ONE job on ONE node to avoid cross-node confounds; task logs confirm git: dfb83f8 for the baseline arm (binary from the primo-leaving-dfb83f8 workspace) and git: 83afe14 for the crosslink arm. Connectivity note: the ProxyJump host's sshd went down mid-session while answering on 443; the SSH config now prefers the direct route on the local network."
      },
      "command": {
        "ab_job": "119555, array 0-1, benchmarks/qf-lra-stratified-sample.txt, 10s",
        "fuzz_job": "119566, scripts/slurm_qf_lra_model_fuzz_gate.sbatch, array 0-8",
        "failed_first_fuzz_attempt": "119556 failed in 0s with exit 2:0 -- 'required tool fuzzsmt not found on PATH'. slurm_prepare_benchmark_workspace.py builds primo but not the fuzzers, and this workspace had no contrib/. Provisioned it and resubmitted. The gate's explicit tool check turned a documented SILENT no-op into a loud failure."
      },
      "result": {
        "fuzz_answers": "3,000 FuzzSMT cases: 2,983 PASS, 17 TIMEOUT, 0 wrong answers, 0 crashes.",
        "fuzz_models": "2,593 models validated, 0 invalid, 397 not-sat (unsat input), 10 solver-timeout.",
        "fuzz_mutation": "opfuzz and 2 YinYang shards: 0 bug triggers.",
        "fuzz_task_status": "4 of 9 tasks report FAILED with exit 1:0; as in the earlier gate this is fuzz_external.py exiting nonzero on any non-PASS row, and the only non-PASS rows are the 17 timeouts.",
        "ab": "baseline 174 solved / PAR2 1428.194 / 0 wrong; crosslink 174 solved / PAR2 1420.189 / 0 wrong. gained 0, lost 0.",
        "ab_paired": "Over the 75 instances both solve in more than 0.2s: median baseline/crosslink ratio 1.008, p10 0.913, p90 1.181, crosslink more than 10% faster on 15 and more than 10% slower on 7, total 160.9s against 155.8s (-3.2%).",
        "NOISE_FLOOR": "The identical baseline binary and configuration measured PAR2 1415.974 in job 119530 and 1428.194 in job 119555 -- a 12.22 spread run to run. The crosslink's PAR2 improvement is 8.00, so the aggregate gain is SMALLER THAN THE NOISE FLOOR and must not be reported as an improvement.",
        "why_the_bar_misses_it": "The local wins are concentrated where occurrence lists are long: -41% on tropical-matrix/constraint-199552 (avg list 679) and -12% on sc-21 (176). tropical-matrix is not in the stratified sample at all -- qf-lra-heuristics.md excludes it as a family all three reference solvers fail -- and the sample is dominated by short-list instances where the change is neutral to slightly negative."
      },
      "follow_up": "Correctness gate passes. On the promotion bar the change is NEUTRAL, not an improvement: same solved count, PAR2 gain inside run-to-run noise, nothing gained or lost. The measured wins are real but sit on instances the bar does not contain. Keeping it therefore needs a different justification than the bar -- either a manifest that includes long-list families, or the argument that a 41% win on an open family at no cost elsewhere is worth the added invariant. Recorded for that decision rather than presented as a win."
    },
    {
      "id": "2026-08-06-qf-lra-crosslink-tropical-1200s",
      "started_at": "2026-08-06",
      "recorded_at": "2026-08-06",
      "kind": "benchmark",
      "scope": "Cross-linked occurs_in_ (lead 3b) vs baseline on the 10-file tropical-matrix family at a 1200s budget. Run because the family is 1/10 at 60s, so the stratified sample -- which excludes tropical-matrix entirely, every reference solver failing it -- cannot see whether the change's constant-factor gain converts into solves.",
      "commit": "83afe14",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm, node-01",
        "remote_dir": "/home/janotmik/primo-crosslink-83afe14",
        "notes": "Both arms in one job array (119577_0 baseline dfb83f8, 119577_1 crosslink 83afe14) on one node. COMPLETED 0:0 after 03:00:16 and 02:53:26."
      },
      "command": {
        "job": "119577, array 0-1, benchmarks/qf-lra-tropical-matrix.txt, 1200s",
        "solver_args": "--guarded-real-equality-lowering (both arms)",
        "results_dir": "~/primo-crosslink-83afe14/results/qf-lra-solver-compare-119577"
      },
      "result": {
        "baseline": {
          "solved": 1,
          "total": 10,
          "par2": 21610.650982,
          "wrong": 0
        },
        "crosslink": {
          "solved": 2,
          "total": 10,
          "par2": 19998.333974,
          "wrong": 0
        },
        "gained": [
          "constraint-223827.smt2: timeout(1200s) -> sat in 791.53s"
        ],
        "lost": [],
        "per_file": {
          "constraint-199552.smt2": "10.65s -> 6.80s (-36%)"
        },
        "par2_gain": 1612.317008
      },
      "conclusion": "The change clears the bar on this family: +1 solved, 0 lost, PAR2 -1612. The gain is causally attributable rather than lucky search: the same day, the branch's default profile was verified search-identical to main on 25 solved stratified-sample files (identical :lra.pivots, :lra.pivot-term-ops, :sat.decisions, :sat.conflicts), so this change cannot perturb the search path -- the extra solve is the constant-factor speedup alone. Caveats: n=10, single run, and 791s of a 1200s budget is close enough to the line that a rerun could lose it.",
      "artifacts": "baseline.csv, crosslink.csv, baseline-summary.csv, crosslink-summary.csv in the results dir above"
    },
    {
      "id": "2026-08-06-qf-lra-crosslink-regression-analysis",
      "started_at": "2026-08-06",
      "recorded_at": "2026-08-06",
      "kind": "analysis",
      "scope": "Per-file paired analysis of job 119555 (237-file stratified sample, crosslink vs pre-crosslink baseline) to answer whether the cross-link change costs anything outside the tropical family. Valid as a pure constant-factor measurement because the change was independently verified search-identical.",
      "commit": "83afe14",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "current",
      "environment": {
        "type": "local",
        "notes": "Analysis of CSVs produced by Slurm job 119555; no new solver runs except two --stats calls for row/nonzero shape."
      },
      "result": {
        "gained": 0,
        "lost": 0,
        "wrong": 0,
        "solved_by_both": 174,
        "paired_ratio_all_174": {
          "median": 1.014,
          "p10": 0.428,
          "p90": 1.374,
          "max": 5.272,
          "over_10pct_slower": 40,
          "over_10pct_faster": 40
        },
        "paired_ratio_baseline_over_0_2s_n83": {
          "median": 0.985,
          "over_10pct_slower": 7,
          "over_10pct_faster": 22,
          "max": 1.584
        },
        "paired_ratio_baseline_over_1s_n44": {
          "median": 0.988,
          "over_10pct_slower": 0,
          "over_10pct_faster": 6,
          "max": 1.1
        },
        "regressions_over_10pct": [
          "ecoliFBAyicesTest-500 1.58x",
          "p6-zenonumeric_s5 1.45x",
          "p50.56 1.29x",
          "d50.9 1.28x",
          "ecoliFBAyicesTest-750 1.14x",
          "clocksynchro_6clocks 1.13x",
          "ecoliFBAyicesTest-63875-64 1.12x"
        ],
        "shape": {
          "ecoliFBAyicesTest-500": ":lra.rows 695, :lra.row-nonzeros 6142, rows reach 691 terms",
          "constraint-199552": ":lra.rows 1440, :lra.row-nonzeros 3519, columns average 679"
        }
      },
      "conclusion": "Yes, it costs something, and the cost has one shape. 3 of the 7 regressions over 10% are latendresse/ecoli, the family with the longest rows in the corpus (691 terms). unlink_occurrence repairs the moved entry's back-index with a std::lower_bound over that entry's ROW, so long-row instances pay O(log row) where they previously paid a short column scan -- the exact mirror of tropical's long-column win. RowEntry growing 32->40 bytes is a second candidate cause predicting the same family; narrowing LraVarId to 32 bits separates them. The principled fix is to finish the cross-link (store the row slot in occurs_in_ too), making the fixup O(1). Net today: 0 lost, worst ~10% above 1s, against tropical 1/10 -> 2/10."
    },
    {
      "id": "2026-08-06-qf-lra-tuning-knobs-slurm-fuzz-gate",
      "started_at": "2026-08-06",
      "recorded_at": "2026-08-06",
      "kind": "implementation-fuzz-gate",
      "scope": "Merge-tier gate for commit 705c4a6, which exposed kSparsePricingCandidateLimit and the two Bland-fallback coefficients as CLI options. Gated at NON-DEFAULT values deliberately: the defaults were already shown inert (bit-identical counters against main on 25 solved stratified files), so the untested surface is the new code paths a tuning campaign will actually drive.",
      "commit": "9dadfa1 (tree containing 705c4a6; archive sync strips .git, so the binary reports 'git: unknown' -- source-equivalent worktree, verified by --help exposing the three new options)",
      "branch": "qflra-tropical-t1-propagation",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm via ProxyJump, node-09",
        "remote_dir": "/home/janotmik/primo-tuning-9dadfa1",
        "notes": "Direct route 10.35.125.63:22 was timing out this session while the data.ciirc.cvut.cz ProxyJump worked -- the reverse of the previous session, so neither route is dependable alone. Workspace built with an absolute cmake path (/home/janotmik/.local/bin/cmake): a non-interactive ssh shell has no cmake on PATH, and a first detached build died instantly on that. Fuzz toolchain (fuzzsmt, z3, .venv-yinyang, 14 QF_LRA seeds) copied from primo-crosslink-83afe14 rather than rebuilt."
      },
      "command": {
        "job_a": "119949, scripts/slurm_qf_lra_model_fuzz_gate.sbatch, array 0-8, PRIMO_FUZZ_SOLVER_EXTRA_ARGS='--lra-sparse-pricing-candidates 1 --lra-bland-fallback-factor 0 --lra-bland-fallback-offset 0'",
        "job_b": "119950, same script, PRIMO_FUZZ_SOLVER_EXTRA_ARGS='--lra-sparse-pricing-candidates 0'",
        "reference": "z3",
        "generator": "fuzzsmt, 6 shards x 500 cases, 5s timeout, plus 1 opfuzz and 2 yinyang/typefuzz tasks over real QF_LRA seeds"
      },
      "result": {
        "job_a_aggressive_corner": {
          "answer_pass": 2980,
          "answer_timeout": 20,
          "wrong": 0,
          "model_pass": 2580,
          "model_not_sat": 405,
          "model_solver_timeout": 15,
          "invalid_models": 0
        },
        "job_b_unbounded_pricing": {
          "answer_pass": 2979,
          "answer_timeout": 21,
          "wrong": 0,
          "model_pass": 2577,
          "model_not_sat": 410,
          "model_solver_timeout": 13,
          "invalid_models": 0
        },
        "slurm_task_states": "tasks 0-5 FAILED 1:0 in both jobs, tasks 6-8 COMPLETED"
      },
      "conclusion": "PASS on substance: 0 wrong answers and 0 invalid models across 6000 FuzzSMT cases in two non-default configurations. The FAILED task states are NOT a correctness signal -- validate_qfuf_models_with_dolmen.py counts its own 10s solver timeouts as failures and returns 1, and the sbatch runs under `set -euo pipefail`, so the validator's exit code becomes the task's. Tasks 6-8 passed only because the opfuzz/yinyang branch does not invoke the model validator. Gate ergonomics finding worth acting on: a slow-but-correct configuration cannot pass this gate, which matters because exploring speed trade-offs is precisely what these knobs are for.",
      "artifacts": "~/primo-tuning-9dadfa1/fuzz-results/{tuning-corner-aggressive,tuning-unbounded-pricing}/"
    },
    {
      "id": "2026-08-07-lassoranker-regression-found-and-fixed",
      "started_at": "2026-08-07",
      "recorded_at": "2026-08-07",
      "kind": "profiling",
      "scope": "Identify and fix the LassoRanker half of main's division regression -- 46 of the 61 lost files, which the dispatch mechanisms did not explain.",
      "commit": "fb3c875 (merged main) + fix",
      "branch": "main",
      "evidence_status": "current",
      "environment": {
        "type": "local",
        "notes": "gprof builds (-pg -O2 -g, PRIMO_WARNINGS_AS_ERRORS=OFF -- the default -Werror trips a libstdc++ false positive under these flags). perf is unavailable in this sandbox."
      },
      "method": "Ran both commits under --max-theory-conflicts 2000 so each stopped after the SAME logical work: both answered sat with 884 conflicts and 10,217 pivots, byte-identical search. That made the flat profiles directly comparable as pure constant factor, with no trajectory noise.",
      "result": {
        "instance": "LassoRanker/CooperatingT2/dropbuf.t2.c_Iteration3_Loop_4-pieceTemplate.smt2",
        "matched_work_runs": {
          "b6b8d55": "sat 43.2s under gprof",
          "main": "sat 329.3s under gprof",
          "slowdown": "7.6x with identical conflicts and pivots"
        },
        "profile_b6b8d55": "LraTableau::pivot 19.7%, update_violation_status 17.0%, Rational comparisons -- ordinary simplex",
        "profile_main": "OnlineLraPropagator::notify_backtrack 62.1% (94.97s over 9,348 calls), _Hashtable<TermPairKey,...>::_M_find_before_node 28.9% with 1,404,326,272 calls (~150k lookups per backtrack)",
        "mechanism": "notify_backtrack calls rebuild_true_interface_bounds() unconditionally, which rescans EVERY theory atom and hash-inserts each true one into true_lra_le_reasons_. pending_interface_equalities_ is drained only by MixedTheoryPropagationDispatcher, so on the pure QF_LRA path nothing consumes any of it -- filled on every assignment, rebuilt on every backtrack, discarded.",
        "fix": "interface_equalities_enabled_ defaults to false; MixedTheoryPropagationDispatcher (the only consumer) turns it on. Guards both rebuild_true_interface_bounds and observe_true_interface_bound.",
        "instance_after_fix": "200s timeout -> sat in 12.16s, with 10,217 pivots and 884 conflicts -- identical to the pre-regression commit, and marginally faster than its 13.44s",
        "no_path_unaffected": "With --nelson-oppen-prop online on a formula where x<=y and y<=x must publish x=y to EUF, both builds give unsat with :no.online.lra-published-equalities 1 and precreated 2. Pinned by a new regression test asserting >= 1.",
        "differential_120_qf_lra_files_20s": {
          "disagreements": 0,
          "gained": 6,
          "lost": 0,
          "paired_n23_over_0_5s": {
            "p10": 0.32,
            "median": 0.79,
            "p90": 0.98,
            "max": 1.01
          }
        },
        "unit_tests": "13/13 pass"
      },
      "conclusion": "The LassoRanker regression is Nelson-Oppen interface-equality bookkeeping running on the pure QF_LRA path, where nothing consumes it. Gating it on the one consumer recovers the instance exactly (identical search counters to b6b8d55) and gains 6 files with 0 lost on a 120-file sample, never slower than baseline (max paired ratio 1.01). All six gains are LassoRanker. This is the third and largest of the three mechanisms in docs/nelson-oppen-qf-lra-regression.md and the one that accounts for 46 of main's 61 lost files.",
      "still_open": "The full-division re-run has not been done on the fixed tree, so the corpus-level recovery is projected from a 120-file sample rather than measured."
    },
    {
      "id": "2026-08-07-qf-lra-merged-tree-asan",
      "started_at": "2026-08-07",
      "recorded_at": "2026-08-07",
      "kind": "implementation-fuzz-gate",
      "scope": "Local ASAN coverage for the merged tree. The cross-linked occurs_in_ change rewrites row memory, and docs/arithmetic.md records a prior heap-use-after-free in exactly that loop (H8, which moves rows into the trail), so the representation change warrants sanitizer coverage beyond unit tests.",
      "commit": "d52799c",
      "branch": "main",
      "evidence_status": "current",
      "environment": {
        "type": "local",
        "notes": "make asan-build (Debug + -DPRIMO_SANITIZERS=address); ASAN_OPTIONS=detect_leaks=1:strict_init_order=1. Remote ASAN toolchain is documented broken (docs/arithmetic.md), so this is local by necessity."
      },
      "result": {
        "unit_suites": "13/13 pass under ASAN, 28.1s",
        "real_instances": {
          "files": 30,
          "sanitizer_reports": 0,
          "timeout_per_file": "60s"
        },
        "family_coverage": {
          "LassoRanker": 6,
          "tta_startup": 4,
          "latendresse": 4,
          "2019-ezsmt": 4,
          "meti-tarski": 3,
          "tropical-matrix": 2,
          "sc": 2,
          "clock_synchro": 2
        },
        "selection": "deliberately weighted to latendresse, LassoRanker and tropical-matrix -- the families where the cross-link change is known to act (long rows and long columns respectively) -- plus a random spread."
      },
      "conclusion": "Clean: 0 sanitizer reports across 30 real instances and 13/13 unit suites. Covers the representation change on the families that stress it hardest. Not a substitute for the Slurm fuzz gate, which tests answers rather than memory.",
      "caveat": "Smoke-to-merge tier, not campaign tier: 30 instances is coverage of the hot path, not of the input space."
    },
    {
      "id": "2026-08-07-qf-lra-routing-and-interface-gate-fuzz",
      "started_at": "2026-08-07",
      "recorded_at": "2026-08-07",
      "kind": "implementation-fuzz-gate",
      "scope": "Merge gate for the two ungated QF_LRA changes: 0c553e8 (interface-equality publishing gated on its one consumer) and 54e0ade (a propositional variable is no longer an EUF predicate). Also the FIRST gate run over the family-complete seed corpus.",
      "commit": "d52799c",
      "branch": "main",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm via ProxyJump",
        "remote_dir": "/home/janotmik/primo-eval-23bd391",
        "notes": "Binary verified as git 23bd391 AND verified on three probes before submission: the congruence reproducer answers unsat, the uninterpreted-sort case reaches :solver.qf-uflra, and the bisected 2019-ezsmt instance solves on :solver.qf-lra. yices-smt2 provisioned from primo-qflra to satisfy the second mutation reference."
      },
      "command": {
        "job": "120855, scripts/slurm_qf_lra_model_fuzz_gate.sbatch, array 0-8",
        "seeds": "benchmarks/seeds/qf_lra_division, BUILT BY THE GATE from tmp/QF_LRA (the corpus is gitignored, so a synced workspace does not carry it)",
        "references": "z3 model_validate=true and scripts/yices_smt2_ref.sh"
      },
      "result": {
        "fuzzsmt": {
          "summaries": 6,
          "expected_shards": 6,
          "pass": 2977,
          "timeout": 23,
          "wrong": 0
        },
        "model_validation": {
          "pass": 2610,
          "not_sat": 375,
          "solver_timeout": 15,
          "invalid": 0
        },
        "mutation": {
          "seeds_processed": 34,
          "valid": 34,
          "invalid": 0,
          "bug_triggers": 0
        },
        "slurm_task_states": "tasks 0-5 FAILED 1:0, tasks 6-8 COMPLETED"
      },
      "conclusion": "PASS. 0 wrong answers and 0 invalid models. The FAILED task states are the known artifact, not a correctness signal: validate_qfuf_models_with_dolmen.py counts its own 10s solver timeouts as failures and returns 1, and the sbatch runs under `set -euo pipefail`, so that becomes the task's exit code. Summaries counted 6 against 6 shards, so no shard was lost to the wall clock.",
      "coverage_milestone": "First gate run over the family-complete corpus: 34 seeds across all 17 division families, against the previous default of 14 seeds covering 3 families plus gasburner (not in the division at all). '34 valid, 0 invalid' confirms the 200000-byte limit change worked -- at typefuzz's own 20000-byte default the 12 largest seeds, including both latendresse and LassoRanker, would have dropped silently as they did in job 118543."
    },
    {
      "id": "2026-08-07-qf-lra-full-division-recovery-measured",
      "started_at": "2026-08-07",
      "recorded_at": "2026-08-07",
      "kind": "benchmark",
      "scope": "Full SMT-LIB QF_LRA division on the fixed tree, measuring the corpus-level outcome of the three regression fixes plus the merged arithmetic work. Replaces the projection from a 120-file sample.",
      "commit": "d52799c",
      "branch": "main",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm via ProxyJump",
        "remote_dir": "/home/janotmik/primo-eval-23bd391",
        "notes": "Job 120784, array 0-79 = 2 primo arms x 40 shards, --cpus-per-task=3, spread across node-01/03/07/08/09. BOTH ARMS IN ONE JOB on the same nodes, which is what makes the comparison free of the cross-job contention that produced a false alarm earlier in the session. All 160 task rows COMPLETED, 40/40 shard CSVs per arm. Binary verified before submission on three probes."
      },
      "command": {
        "job": "120784",
        "settings": "PRIMO_COMPARE_MANIFEST=benchmarks/qf-lra-full-division.txt (1753 files, carries :status), TIMEOUT=300, SHARDS=40",
        "arms": "new=d52799c ; base=0c0843d (the merge base)",
        "references": "NOT re-run -- z3/cvc5 from job 118382, yices from 118904, opensmt from 119045, all at 300s on this manifest"
      },
      "result": {
        "table": {
          "opensmt 2.9.2": {
            "solved": 1670,
            "wrong": 0,
            "par2": 68068
          },
          "primo NEW d52799c": {
            "solved": 1657,
            "wrong": 0,
            "par2": 79646
          },
          "yices 2.7.0": {
            "solved": 1645,
            "wrong": 0,
            "par2": 80585
          },
          "primo b6b8d55 pre-regression": {
            "solved": 1631,
            "wrong": 0,
            "par2": 95091
          },
          "z3 5.0.0": {
            "solved": 1584,
            "wrong": 0,
            "par2": 128079
          },
          "primo 0c0843d pre-fix": {
            "solved": 1572,
            "wrong": 0,
            "par2": 135691
          },
          "cvc5 1.3.4": {
            "solved": 1511,
            "wrong": 0,
            "par2": 181248
          }
        },
        "vs_merge_base_0c0843d": {
          "gained": 87,
          "lost": 2,
          "net": "+85",
          "par2": "135691 -> 79646",
          "gained_by_family": {
            "LassoRanker": 71,
            "2019-ezsmt": 12,
            "miplib": 2,
            "2017-Heizmann": 1,
            "tropical-matrix": 1
          },
          "lost_by_family": {
            "miplib": 2
          },
          "the_two_losses": "pp08a-4000 129.2s -> timeout; fixnet-1000 90.0s -> timeout",
          "paired_n552_over_1s": {
            "p10": 0.18,
            "median": 0.56,
            "p90": 0.96
          }
        },
        "vs_pre_regression_b6b8d55": {
          "gained": 26,
          "lost": 0,
          "net": "+26",
          "gained_by_family": {
            "LassoRanker": 25,
            "2017-Heizmann": 1
          }
        }
      },
      "conclusion": "The regression is not merely repaired, it is overtaken. 1657 solved against the pre-regression 1631 -- gained 26, LOST 0 against that commit, so nothing it solved was given up. Against the merge base: +87/-2 and PAR2 nearly halved (135691 -> 79646), with paired median 0.56 on files over a second. Zero wrong answers in every arm, on the one QF_LRA corpus that carries (set-info :status) and therefore checks answers rather than only cross-solver agreement. Competitively primo now sits second of five, ahead of yices (1645), z3 (1584) and cvc5 (1511), and 13 behind opensmt (1670). The 2019-ezsmt gains are the routing fix, the LassoRanker gains the interface-equality gate, and the single tropical-matrix gain is the cross-link change showing at 300s.",
      "caveat": "The two miplib losses (pp08a-4000 at 129s, fixnet-1000 at 90s, both to timeout) are real, not boundary churn -- miplib is a known trade for the cross-link change on long-row instances. Reference rows come from other jobs, so reference TIMINGS carry a cross-job caveat that the two primo arms do not."
    },
    {
      "id": "2026-08-04-qf-uflra-online-lazy-ipasir-up-local",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "validation",
      "scope": "Local validation for replacing the opt-in QF_UFLRA online paired-bound precreation fallback with true lazy IPASIR-UP create-and-observe from MixedTheoryPropagationDispatcher::cb_propagate().",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "commit": "5de7341-dirty",
      "environment": {
        "type": "local",
        "host": "workspace",
        "binary": "./build/primo --version reported primo 0.1.0, git 5de7341-dirty, Debug build, CaDiCaL cadical-3.0.0-7b99c07; reference solver was contrib/local/bin/z3 version 5.0.0",
        "notes": "The run was executed before the validation commit, so the binary identifies the working tree as dirty relative to 5de7341."
      },
      "commands": {
        "build": "cmake --build build --target primo_sat_backend_tests primo_qf_lra_solver_tests primo -j2",
        "focused_tests": "./build/primo_sat_backend_tests && ./build/primo_qf_lra_solver_tests",
        "full_ctest": "ctest --test-dir build --output-on-failure",
        "docs": "make docs",
        "format_diff": "clang-format -i src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp tests/unit/sat_backend_tests.cpp; git diff --check",
        "fuzz": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--nelson-oppen-prop=online --ref contrib/local/bin/z3 --count 1000 --seed 2026080403 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-online-lazy-ipasir-up-1000",
        "counter_probe": "./build/primo --quiet --stats --nelson-oppen-prop=online < simple paired-bound QF_UFLRA probe",
        "lint": "make lint",
        "check": "make check",
        "efficiency_review": "git diff --stat; git diff --check; scripts/solver_efficiency_snapshot.py --repo . (helper missing); manual callback hot-path review"
      },
      "artifact": "fuzz-results/qf_uflra-online-lazy-ipasir-up-1000/summary.csv",
      "summary": {
        "unit_tests": "Focused SAT backend and QF_UFLRA unit tests passed. Full ctest passed 13/13. make docs passed.",
        "fuzz": {
          "count": 1000,
          "pass": 1000,
          "wrong_answer": 0,
          "crash_or_error": 0,
          "timeout": 0,
          "reference_disagreement": 0
        },
        "counter_probe": {
          ":no.online.precreated-equality-atoms": 0,
          ":no.online.paired-bound-precreate-candidates": 0,
          ":no.online.lra-published-equalities": 1,
          ":no.online.lra-bound-equality-candidates": 1,
          ":no.online.lra-bound-equality-materialized": 1,
          ":no.online.lazy-equality-atoms-created": 1,
          ":no.online.lazy-equality-vars-observed": 1,
          ":no.online.propagations": 1,
          ":no.online.reason-lits": 2
        },
        "lint_check": "make lint and make check both fail at the existing Ruff baseline before this change's C++ tests: 66 reported Python issues across contrib/ and scripts/, including EXE001 shebang executability, I001 import order, UP022 capture_output, ISC004 implicit concatenation, and PLW1510 explicit check.",
        "efficiency_review": "No added full shared-pair precreation or all-pairs callback scan found. The dispatcher queues selected candidate pairs, materializes only at cb_propagate(), and reuses the existing paired-bound two-literal reason. The skill-requested scripts/solver_efficiency_snapshot.py helper was absent from this repository."
      },
      "outcome": "Local evidence supports the lazy IPASIR-UP online path: the SAT backend accepts fresh observed variables from cb_propagate(), online NO precreates zero equality atoms, the simple paired-bound case lazily creates and observes exactly one interface equality atom before propagation, and 1000 generated mixed QF_UFLRA cases agree with Z3. The feature remains opt-in."
    },
    {
      "id": "2026-08-04-qf-uflra-online-lazy-ipasir-up-slurm",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "validation",
      "scope": "SLURM merge-gate validation and 20-file QF_UFLRA sample comparison for the opt-in lazy IPASIR-UP Nelson-Oppen online propagation path.",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "commit": "7838c2e",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm via ssh -J janotmik@data.ciirc.cvut.cz janotmik@10.35.125.63",
        "workspace": "primo-online-lazy-7838c2e",
        "binary": "build-slurm-rel/primo --version reported primo 0.1.0, git 7838c2e, Release build, CaDiCaL cadical-3.0.0-7b99c07; reference solver contrib/local/bin/z3 reported Z3 version 5.0.0.",
        "notes": "Remote workspace was prepared with scripts/slurm_prepare_benchmark_workspace.py and verified with --check-only immediately before submission. Z3 was installed into the remote workspace after the first reference-dependent submission failed because contrib/local/bin/z3 was absent."
      },
      "commands": {
        "workspace_prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config $CFG --remote primo-slurm --remote-dir primo-online-lazy-7838c2e --target primo --jobs 4",
        "workspace_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config $CFG --remote primo-slurm --remote-dir primo-online-lazy-7838c2e --target primo --check-only",
        "stage_sample": "python3 scripts/slurm_stage_manifest_files.py --ssh-config $CFG --remote primo-slurm --remote-dir primo-online-lazy-7838c2e --root tmp/QF_UFLRA --manifest benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "install_z3_after_failed_first_attempt": "ssh -F $CFG primo-slurm 'cd primo-online-lazy-7838c2e && python3 contrib/install_z3.py --prefix contrib/local'",
        "fuzz": "sbatch --export=ALL,PRIMO_WORKDIR=$PWD,PRIMO_FUZZ_COUNT=250,PRIMO_FUZZ_SEED_BASE=2026080404,PRIMO_FUZZ_OUT_DIR=slurm-results/qf_uflra-online-lazy-fuzz-7838c2e-z3 primo_qf_uflra_online_lazy_fuzz.sbatch",
        "sample": "sbatch --array=0-2 --export=ALL,PRIMO_WORKDIR=$PWD,PRIMO_COMPARE_TIMEOUT=10,PRIMO_COMPARE_OUT_ROOT=results/qf-uflra-online-lazy-sample-7838c2e,PRIMO_COMPARE_SOLVERS='final=build-slurm-rel/primo --quiet --stats;online=build-slurm-rel/primo --quiet --stats --nelson-oppen-prop=online;z3=contrib/local/bin/z3' scripts/slurm_qf_uflra_sample_compare.sbatch",
        "sample_z3_rerun": "sbatch --array=2 with the same PRIMO_COMPARE_* environment after installing contrib/local/bin/z3",
        "analysis": "python3 scripts/compare_solver_answers.py results/qf-uflra-online-lazy-sample-7838c2e --timeout 10; python3 scripts/render_solver_compare_html.py results/qf-uflra-online-lazy-sample-7838c2e --solvers final online z3 --title 'QF_UFLRA online lazy sample 7838c2e' --timeout 10 --out results/qf-uflra-online-lazy-sample-7838c2e/index.html; aggregate task-*/summary.csv from the fuzz output"
      },
      "benchmark": {
        "fuzz": "1000 generated mixed QF_UFLRA cases, 4 array tasks x 250 cases, seeds 2026080404..2026080407, 5s per case, online mode compared against Z3 5.0.0",
        "sample": "benchmarks/qf_uflra-smtlib-sample-5-per-family.txt, 20 files from FFT, cpachecker-bmc-svcomp14, cpachecker-induction-svcomp14, and mathsat/RandomCoupled, 10s per file",
        "logic": "QF_UFLRA"
      },
      "jobs": {
        "failed_first_attempts": "119166 fuzz array failed all 4 tasks with REFERENCE_UNUSABLE/MISSING because z3 was absent; 119170_2 sample z3 task failed with FileNotFoundError for contrib/local/bin/z3. Primo final and online sample tasks 119170_0 and 119170_1 completed and were retained.",
        "fuzz": "119173 array 0-3, all COMPLETED 0:0 in 00:00:06 per task.",
        "sample": "119170_0 final COMPLETED 0:0 in 00:00:46; 119170_1 online COMPLETED 0:0 in 00:00:44; 119177_2 z3 rerun COMPLETED 0:0 in 00:00:04."
      },
      "artifacts": {
        "local_fuzz": "slurm-results/qf_uflra-online-lazy-fuzz-7838c2e-z3/task-*/summary.csv",
        "local_sample": "results/qf-uflra-online-lazy-sample-7838c2e/",
        "remote_logs": "primo-online-lazy-7838c2e/slurm_logs/ and primo-online-lazy-7838c2e/logs/",
        "evidence_status": "current; raw generated cases and CSVs are local ignored artifacts, with remote copies retained in the SLURM workspace."
      },
      "summary": {
        "fuzz": {
          "count": 1000,
          "pass": 1000,
          "wrong_answer": 0,
          "crash_or_error": 0,
          "timeout": 0,
          "reference_disagreement": 0,
          "reference_unusable_after_rerun": 0
        },
        "sample": {
          "final": "20 files, solved 16, sat 13, unsat 3, timeout 4, error 0, PAR2 84.888647.",
          "online": "20 files, solved 16, sat 13, unsat 3, timeout 4, error 0, PAR2 83.274290.",
          "z3": "20 files, solved 20, sat 17, unsat 3, timeout 0, error 0, PAR2 3.757215.",
          "cross_solver_disagreements": 0,
          "non_standard_unsolved_reasons": 0,
          "coverage": "Solved by nobody: 0; only final: 0; only online: 0; only z3: 4."
        }
      },
      "outcome": "SLURM evidence supports merging the opt-in lazy online path: the 1000-case QF_UFLRA online fuzz gate passes against Z3, and the 20-file sample has identical final and online solved counts and zero disagreements with Z3. The first reference-dependent submission is recorded as rejected evidence because the remote Z3 binary was missing."
    },
    {
      "id": "2026-08-04-qf-uflra-model-equality-arrangement-state",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "validation",
      "scope": "Local validation for the default-off QF_UFLRA model-equality assumption lifecycle refactor.",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "commit": "5d89a32",
      "environment": {
        "type": "local",
        "host": "/workspace",
        "binary": "./build/primo from commit 5d89a32 after make check rebuild; CaDiCaL rel-3.0.0 via contrib/local; reference solver contrib/local/bin/z3.",
        "notes": "The change does not add a new entailed propagation rule. It moves queued and active model-equality SAT assumptions, failed-assumption blocking, and adaptive rejection state into ModelEqualityArrangementState."
      },
      "commands": {
        "focused_unit": "cmake --build build --target primo_qf_lra_solver_tests -j2; ./build/primo_qf_lra_solver_tests",
        "lint": "make lint",
        "docs": "make docs",
        "check": "make check",
        "diff_check": "git diff --check",
        "clang_tidy": "git ls-files '*.cpp' | rg -v '(^build/|/generated/|ANTLR|antlr)' | xargs -r clang-tidy -p build --quiet",
        "include_cleaner_advisory": "git ls-files '*.cpp' | rg -v '(^build/|/generated/|ANTLR|antlr)' | xargs -r clang-tidy -p build --quiet -checks='-*,misc-include-cleaner'",
        "efficiency_snapshot": "python3 /home/user/.codex/skills/solver-efficiency-review/scripts/solver_efficiency_snapshot.py --repo .",
        "fuzz": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--model-equality-branching --ref contrib/local/bin/z3 --count 300 --seed 2026080405 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-model-equality-arrangement-300"
      },
      "benchmark": {
        "logic": "QF_UFLRA",
        "suite": "300 generated mixed QF_UFLRA formulas from scripts/qf_uflra_smoke_fuzz.py",
        "seed": 2026080405,
        "timeout_seconds": 5,
        "solver_argv": "./build/primo --quiet --model-equality-branching",
        "reference_argv": "contrib/local/bin/z3"
      },
      "artifacts": {
        "fuzz_summary": "fuzz-results/qf_uflra-model-equality-arrangement-300/summary.csv",
        "fuzz_cases": "fuzz-results/qf_uflra-model-equality-arrangement-300/cases/",
        "evidence_status": "current local smoke evidence; generated cases and CSVs are ignored artifacts."
      },
      "summary": {
        "focused_unit": "primo_qf_lra_solver_tests passed.",
        "make_check": "13/13 CTest tests passed.",
        "fuzz": {
          "count": 300,
          "pass": 300,
          "wrong_answer": 0,
          "crash_or_error": 0,
          "timeout": 0,
          "reference_disagreement": 0
        },
        "clang_tidy": "Whole-tree tracked non-generated .cpp clang-tidy sweep completed with no diagnostics.",
        "include_cleaner_advisory": "misc-include-cleaner reported the existing broad include baseline, mostly self-include and direct-include warnings outside this diff; no include change was made for this milestone.",
        "efficiency_review": "No new callback full-pair scan, no default-path activation, and no entailed model-equality propagation found. The only added vector work is on the default-off assumption lifecycle path; SAT failed-assumption blocking still emits clauses over negated guessed literals."
      },
      "outcome": "Local evidence supports the model-equality arrangement-state refactor: lifecycle counters are covered by focused QF_UFLRA tests, standard local checks pass, and 300 generated QF_UFLRA model-branching cases agree with Z3. The mode remains default-off and is still documented as a partial assumption loop, not full DPLL(T^M)."
    },
    {
      "id": "2026-08-04-qf-uflra-care-queued-model-equality",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "validation",
      "scope": "Validation for the default-off QF_UFLRA care-queued model-equality branch policy. The policy builds a bounded queue from EUF care pairs only, keeps model-equality guesses as IPASIR assumptions, and does not create equality atoms for full shared-Real pairs that are not care candidates.",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "commit": "10541bd",
      "environment": {
        "local": "./build/primo from commit 10541bd after make check rebuild; CaDiCaL rel-3.0.0 via contrib/local; reference solver contrib/local/bin/z3.",
        "slurm": "Release build from archived clean HEAD 10541bd with CaDiCaL 3.0.0 and repo-managed Z3 5.0.0. Cluster identifiers and the scheduler job id are intentionally redacted from the committed log; the final status was COMPLETED with exit code 0 for all six array tasks."
      },
      "commands": {
        "focused_unit": "cmake --build build --target primo_qf_lra_solver_tests -j2 && ./build/primo_qf_lra_solver_tests",
        "cli_care_stats_probe": "./build/primo --quiet --stats --model-equality-branching --model-equality-branch-policy=care-queued --no-model-equality-mutation",
        "diff_check": "git diff --check",
        "lint": "make lint",
        "docs": "make docs",
        "check": "make check",
        "clang_tidy": "make tidy",
        "include_cleaner_advisory": "make include-cleaner",
        "efficiency_snapshot": "/home/user/.codex/skills/solver-efficiency-review/scripts/solver_efficiency_snapshot.py --repo .",
        "local_fuzz": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--model-equality-branching --solver-arg=--model-equality-branch-policy=care-queued --ref contrib/local/bin/z3 --count 1000 --seed 2026080406 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-care-queued-model-equality-1000",
        "slurm_sbatch_validation": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_sample_compare.sbatch && bash -n scripts/slurm_qf_uflra_sample_compare.sbatch",
        "slurm_workspace_check": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified remote build git: 10541bd and cadical: cadical-3.0.0-7b99c07 immediately before sbatch",
        "slurm_sample": "scripts/slurm_qf_uflra_sample_compare.sbatch with variants default, first, ranked, adaptive, care, and z3; PRIMO_COMPARE_SOLVERS included care=build-slurm-rel/primo --quiet --stats --model-equality-branching --model-equality-branch-policy care-queued"
      },
      "benchmark": {
        "fuzz": {
          "logic": "QF_UFLRA",
          "suite": "1000 generated mixed QF_UFLRA formulas from scripts/qf_uflra_smoke_fuzz.py",
          "seed": 2026080406,
          "timeout_seconds": 5,
          "solver_argv": "./build/primo --quiet --model-equality-branching --model-equality-branch-policy=care-queued",
          "reference_argv": "contrib/local/bin/z3"
        },
        "sample": {
          "logic": "QF_UFLRA",
          "suite": "benchmarks/qf_uflra-smtlib-sample-5-per-family.txt staged from tmp/QF_UFLRA",
          "files": 20,
          "timeout_seconds": 10,
          "variants": {
            "default": "build-slurm-rel/primo --quiet --stats",
            "first": "build-slurm-rel/primo --quiet --stats --model-equality-branching",
            "ranked": "build-slurm-rel/primo --quiet --stats --model-equality-branching --model-equality-branch-policy ranked",
            "adaptive": "build-slurm-rel/primo --quiet --stats --model-equality-branching --model-equality-branch-policy adaptive",
            "care": "build-slurm-rel/primo --quiet --stats --model-equality-branching --model-equality-branch-policy care-queued",
            "z3": "contrib/local/bin/z3"
          }
        }
      },
      "artifacts": {
        "local_fuzz_summary": "fuzz-results/qf_uflra-care-queued-model-equality-1000/summary.csv",
        "local_fuzz_cases": "fuzz-results/qf_uflra-care-queued-model-equality-1000/cases/",
        "slurm_sample_csvs": "results/qf-uflra-care-queued-sample-10541bd/",
        "slurm_logs": "results/slurm_logs/qf-uflra-care-queued-sample-10541bd/",
        "evidence_status": "current local and SLURM-backed validation evidence; large generated artifacts are ignored and not committed."
      },
      "summary": {
        "focused_unit": "primo_qf_lra_solver_tests passed, including care-queued care-only, no-full-fallback, and mutation-skip-before-atom-creation regressions.",
        "make_check": "13/13 CTest tests passed.",
        "local_fuzz": {
          "count": 1000,
          "pass": 1000,
          "wrong_answer": 0,
          "crash_or_error": 0,
          "timeout": 0,
          "reference_disagreement": 0
        },
        "pure_probes": "Small QF_LRA and QF_UF CLI probes with --model-equality-branching --model-equality-branch-policy=care-queued stayed out of the mixed QF_UFLRA coordinator; no model-equality queue counters were emitted.",
        "slurm_sample": {
          "default": "16/20 solved, 4 timeouts, 0 wrong, PAR2 84.897226.",
          "first": "16/20 solved, 4 timeouts, 0 wrong, PAR2 84.671552; 2645 scanned model-equality pairs and 31 candidates.",
          "ranked": "16/20 solved, 4 timeouts, 0 wrong, PAR2 84.644687; 2645 scanned model-equality pairs and 31 candidates.",
          "adaptive": "16/20 solved, 4 timeouts, 0 wrong, PAR2 84.633643; 2645 scanned model-equality pairs and 31 candidates.",
          "care": "16/20 solved, 4 timeouts, 0 wrong, PAR2 84.529365; 12 queue builds, 111 queued/popped candidates, 111 scanned model-equality pairs, 26 mutation skips, and 0 optional model-equality assumptions on this sample.",
          "z3": "20/20 solved, 0 wrong, PAR2 3.907417."
        },
        "efficiency_review": "No default-path activation, no callback full-pair scan, and no entailed model-equality propagation found. The expected fresh vectors are confined to the default-off care-queued final-check branch selector. The SLURM sample shows the queued selector greatly reduces model-equality pair scans relative to first/ranked/adaptive on this sample, but does not improve solved count."
      },
      "outcome": "Accepted as a default-off pruning policy for the model-equality assumption scaffold. It is correctness-gated locally and on a SLURM sample, remains off by default, and should not be promoted as a performance win until broader QF_UFLRA campaigns show solved-count or PAR2 gains."
    },
    {
      "id": "2026-08-04-qf-uflra-model-equality-query-api-7239e07",
      "started_at": "2026-08-04T18:45:00+02:00",
      "recorded_at": "2026-08-04T19:10:00+02:00",
      "kind": "validation",
      "scope": "Local validation for the model-equality query API slice in the default-off QF_UFLRA model-equality assumption path. The implementation adds theory::ModelEqualityEvaluation, routes LRA model-equality branch classification through LraTheoryModelView, and keeps model equalities as SAT assumptions rather than entailed M-Propagate consequences.",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "commit": "7239e07",
      "environment": {
        "local": "./build/primo from source commit 7239e07; CaDiCaL rel-3.0.0 via contrib/local; reference solver contrib/local/bin/z3.",
        "slurm": null
      },
      "commands": {
        "paper_extraction": "pdftotext -layout <reading-copy:MouraB08> /tmp/model-guided-no.txt (historical input filename replaced by docs/references.bib key on 2026-09-30)",
        "focused_unit": "cmake --build build --target primo_qf_lra_solver_tests -j2 && ./build/primo_qf_lra_solver_tests",
        "build_check_lint_docs": "cmake --build build --target primo -j2 && make check && make lint && make docs",
        "test": "make test",
        "asan": "make asan-test",
        "diff_check": "git diff --check",
        "clang_tidy": "make tidy",
        "include_cleaner_advisory": "make include-cleaner",
        "efficiency_snapshot": "/home/user/.codex/skills/solver-efficiency-review/scripts/solver_efficiency_snapshot.py --repo .",
        "mixed_stats_probe": "./build/primo --quiet --stats --model-equality-branching --model-equality-branch-policy=care-queued --no-model-equality-mutation",
        "pure_qfuf_probe": "./build/primo --quiet --stats --model-equality-branching --model-equality-branch-policy=care-queued on a small QF_UF input with an explicit uninterpreted sort",
        "pure_qflra_probe": "./build/primo --quiet --stats --model-equality-branching --model-equality-branch-policy=care-queued on a small QF_LRA input",
        "local_fuzz": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--model-equality-branching --solver-arg=--model-equality-branch-policy=care-queued --ref contrib/local/bin/z3 --count 1000 --seed 2026080410 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-model-equality-api-1000-7239e07"
      },
      "benchmark": {
        "fuzz": {
          "logic": "QF_UFLRA",
          "suite": "1000 generated mixed QF_UFLRA formulas from scripts/qf_uflra_smoke_fuzz.py",
          "seed": 2026080410,
          "timeout_seconds": 5,
          "solver_argv": "./build/primo --quiet --model-equality-branching --model-equality-branch-policy=care-queued",
          "reference_argv": "contrib/local/bin/z3"
        }
      },
      "artifacts": {
        "local_fuzz_summary": "fuzz-results/qf_uflra-model-equality-api-1000-7239e07/summary.csv",
        "local_fuzz_cases": "fuzz-results/qf_uflra-model-equality-api-1000-7239e07/cases/",
        "evidence_status": "current local validation evidence; generated fuzz artifacts are ignored and not committed."
      },
      "summary": {
        "focused_unit": "primo_qf_lra_solver_tests passed, including new assertions for :no.interface.model-equality-api-* counters in mutation-disabled and mutation-filtered paths.",
        "make_check": "13/13 CTest tests passed.",
        "make_test": "13/13 CTest tests passed.",
        "asan": "13/13 ASAN CTest tests passed.",
        "local_fuzz": {
          "count": 1000,
          "pass": 1000,
          "wrong_answer": 0,
          "crash_or_error": 0,
          "timeout": 0,
          "reference_disagreement": 0,
          "sat": 726,
          "unsat": 274
        },
        "pure_probes": "Small QF_UF and QF_LRA CLI probes with model-equality branch options stayed out of the mixed QF_UFLRA coordinator; the new :no.interface.model-equality-api-* counters are emitted by the mixed path only.",
        "mixed_stats_probe": "The care-queued mixed probe reported :no.interface.model-equality-api-builds=2, :no.interface.model-equality-api-queries=1, :no.interface.model-equality-api-equal=1, and :no.interface.model-equality-api-mutation-unqueried=1 with mutation disabled.",
        "efficiency_review": "solver_efficiency_snapshot.py reported no added hot-path patterns. Manual review found no new default-path work, no callback scan, no entailed propagation without explanation, and no new SAT equality atom creation before the existing care-queued branch filter. make include-cleaner completed with the repository's existing advisory baseline; it did not report a changed check_sat.cpp include issue."
      },
      "outcome": "Accepted as a paper-grounded API/classification slice. It does not implement full DPLL(T^M), model mutation by freedom intervals, or model-equality M-Propagate; it only gives the existing default-off LRA model-equality assumption branch a theory-layer query result and observable counters."
    },
    {
      "id": "2026-08-04-qf-uflra-model-equality-forced-clause-71417a1",
      "started_at": "2026-08-04T15:55:00+02:00",
      "recorded_at": "2026-08-04T16:31:59+02:00",
      "kind": "validation",
      "scope": "Local validation for the default-off QF_UFLRA mutation-forced model-equality clause path. The implementation keeps avoidable LRA model equalities as skipped model artifacts, but when both strict separations conflict it learns a guarded interface-equality clause from those two LRA conflict reasons instead of queuing an IPASIR assumption.",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "commit": "71417a1",
      "environment": {
        "local": "./build/primo from source commit 71417a1; CaDiCaL rel-3.0.0 via contrib/local; reference solver contrib/local/bin/z3.",
        "slurm": null
      },
      "commands": {
        "focused_unit": "cmake --build build --target primo_qf_lra_solver_tests -j4 && ./build/primo_qf_lra_solver_tests",
        "forced_counter_probe": "./build/primo --quiet --stats --model-equality-branching --nelson-oppen-prop=off on a QF_UFLRA x<=y, y<=x, p(x), not p(y) probe",
        "lint_check_docs_test_asan": "make lint && make check && make docs && make test && make asan-test",
        "local_fuzz": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--model-equality-branching --ref contrib/local/bin/z3 --count 1000 --seed 2026080411 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-model-equality-forced-clause-1000",
        "clang_tidy": "make tidy",
        "include_cleaner_advisory": "make include-cleaner",
        "diff_check": "git diff --check",
        "efficiency_snapshot": "/home/user/.codex/skills/solver-efficiency-review/scripts/solver_efficiency_snapshot.py --repo .",
        "code_review": "Manual smt-code-review pass using skills/code-review/SKILL.md."
      },
      "benchmark": {
        "fuzz": {
          "logic": "QF_UFLRA",
          "suite": "1000 generated mixed QF_UFLRA formulas from scripts/qf_uflra_smoke_fuzz.py",
          "seed": 2026080411,
          "timeout_seconds": 5,
          "solver_argv": "./build/primo --quiet --model-equality-branching",
          "reference_argv": "contrib/local/bin/z3"
        }
      },
      "artifacts": {
        "local_fuzz_summary": "fuzz-results/qf_uflra-model-equality-forced-clause-1000/summary.csv",
        "local_fuzz_cases": "fuzz-results/qf_uflra-model-equality-forced-clause-1000/cases/",
        "evidence_status": "current local validation evidence; generated fuzz artifacts are ignored and not committed."
      },
      "summary": {
        "focused_unit": "primo_qf_lra_solver_tests passed, including qf_uf_lra_model_equality_forced_by_lra_gets_explained_clause.",
        "forced_counter_probe": "Returned unsat with :no.interface.model-equality-forced-propagations=1, :no.interface.model-equality-forced-clauses=1, :no.interface.model-equality-forced-created-atoms=1, :no.interface.model-equality-forced-reason-lits=2, :no.interface.model-equality-assumptions=0, and :no.interface.lra-to-euf-equalities=0.",
        "make_lint": "python bytecode lint passed.",
        "make_check": "13/13 CTest tests passed.",
        "make_docs": "Jupyter Book build succeeded.",
        "make_test": "13/13 CTest tests passed.",
        "asan": "13/13 ASAN CTest tests passed.",
        "local_fuzz": {
          "count": 1000,
          "pass": 1000,
          "wrong_answer": 0,
          "crash_or_error": 0,
          "timeout": 0,
          "reference_disagreement": 0,
          "sat": 720,
          "unsat": 280
        },
        "clang_tidy": "make tidy completed over 63 tracked non-generated C++ files without blocking diagnostics.",
        "include_cleaner": "make include-cleaner completed with the repository's existing advisory baseline; no changed check_sat.cpp or qf_lra_solver_tests.cpp include issue was identified.",
        "diff_check": "git diff --check passed.",
        "efficiency_review": "solver_efficiency_snapshot.py reported the expected new SAT clause emission in src/smt/check_sat.cpp. Manual review found the path remains default-off behind --model-equality-branching, adds no callback scan, learns at most one selected equality clause per branch-selection pass, strips the synthetic strict-probe literal from LRA reasons, and does not query fresh CaDiCaL equality variables before re-entering SAT.",
        "code_review": "code review pass: no blocking issues found. The remaining known gap is algorithmic, not from this patch: generic DPLL(T^M), freedom-interval mutation, and non-LRA model-equality propagation are still unsupported."
      },
      "outcome": "Accepted as a conservative QF_UFLRA slice. Mutation-forced LRA model equalities now become explained guarded clauses, while avoidable model equalities remain skipped and unexplained model guesses remain SAT assumptions. The behavior remains default-off under --model-equality-branching and is not a default performance claim."
    },
    {
      "id": "2026-08-04-slurm-qf-uflra-model-equality-forced-clause-06ae7ad",
      "started_at": "2026-08-04T16:48:00+02:00",
      "recorded_at": "2026-08-04T16:56:04+02:00",
      "kind": "validation",
      "scope": "SLURM validation for the default-off QF_UFLRA mutation-forced model-equality clause path. This validates the pushed nelson-oppen-online-lazy-ipasir-up branch on the remote Release build and compares the model-equality branch option against default Primo and Z3 on the deterministic QF_UFLRA sample.",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "commit": "06ae7ad",
      "environment": {
        "type": "slurm",
        "host": "SLURM remote workspace",
        "slurm_job_ids": {
          "qf_uflra_fuzz_gate": "119319",
          "qf_uflra_sample_compare": "119323"
        },
        "binary": "build-slurm-rel/primo reports git: 06ae7ad, build: Release, sanitizers: none, cadical: cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3 reports Z3 version 5.0.0 - 64 bit"
      },
      "commands": {
        "workspace_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --remote <slurm-remote> --remote-dir <remote-workspace> --target primo --check-only",
        "validate_fuzz_sbatch": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_fuzz_gate.sbatch && bash -n scripts/slurm_qf_uflra_fuzz_gate.sbatch",
        "validate_sample_sbatch": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_sample_compare.sbatch && bash -n scripts/slurm_qf_uflra_sample_compare.sbatch",
        "stage_manifest": "python3 scripts/slurm_stage_manifest_files.py --root tmp/QF_UFLRA --manifest benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "fuzz_submit": "sbatch --export=ALL,PRIMO_WORKDIR=$PWD,PRIMO_FUZZ_COUNT=250,PRIMO_FUZZ_SEED_BASE=2026080412,PRIMO_FUZZ_OUT_DIR=slurm-results/qf_uflra-model-eq-forced-fuzz-06ae7ad-z3 scripts/slurm_qf_uflra_fuzz_gate.sbatch",
        "sample_submit": "sbatch --array=0-2 --export=ALL,PRIMO_WORKDIR=$PWD,PRIMO_COMPARE_TIMEOUT=10,PRIMO_COMPARE_OUT_ROOT=results/qf-uflra-model-eq-forced-sample-06ae7ad,PRIMO_COMPARE_SOLVERS='default=build-slurm-rel/primo --quiet --stats;model=build-slurm-rel/primo --quiet --stats --model-equality-branching;z3=contrib/local/bin/z3' scripts/slurm_qf_uflra_sample_compare.sbatch",
        "fuzz_aggregate": "python3 csv aggregation over slurm-results/qf_uflra-model-eq-forced-fuzz-06ae7ad-z3/task-*/summary.csv",
        "sample_compare": "python3 scripts/compare_solver_answers.py results/qf-uflra-model-eq-forced-sample-06ae7ad --timeout 10",
        "sample_html": "python3 scripts/render_solver_compare_html.py results/qf-uflra-model-eq-forced-sample-06ae7ad --solvers default model z3 --title 'QF_UFLRA model equality forced sample 06ae7ad' --timeout 10 --out results/qf-uflra-model-eq-forced-sample-06ae7ad/index.html"
      },
      "benchmark": {
        "fuzz": {
          "logic": "QF_UFLRA",
          "suite": "1000 generated mixed QF_UFLRA formulas from scripts/qf_uflra_smoke_fuzz.py split across four SLURM array tasks",
          "seed_base": 2026080412,
          "array_tasks": 4,
          "count_per_task": 250,
          "timeout_seconds": 5,
          "solver_argv": "./build-slurm-rel/primo",
          "reference_argv": "z3"
        },
        "sample": {
          "logic": "QF_UFLRA",
          "suite": "20-file deterministic sample from benchmarks/qf_uflra-smtlib-sample-5-per-family.txt staged from tmp/QF_UFLRA",
          "timeout_seconds": 10,
          "solvers": {
            "default": "build-slurm-rel/primo --quiet --stats",
            "model": "build-slurm-rel/primo --quiet --stats --model-equality-branching",
            "z3": "contrib/local/bin/z3"
          }
        }
      },
      "artifacts": {
        "fuzz_summary_glob": "slurm-results/qf_uflra-model-eq-forced-fuzz-06ae7ad-z3/task-*/summary.csv",
        "fuzz_cases": "slurm-results/qf_uflra-model-eq-forced-fuzz-06ae7ad-z3/task-*/cases/",
        "sample_results": "results/qf-uflra-model-eq-forced-sample-06ae7ad/",
        "sample_html": "results/qf-uflra-model-eq-forced-sample-06ae7ad/index.html",
        "slurm_logs": "results/slurm_logs/qf-uflra-model-eq-forced-06ae7ad/",
        "evidence_status": "current SLURM validation evidence; generated fuzz cases, benchmark CSVs, and SLURM logs are local artifacts and are not committed."
      },
      "summary": {
        "fuzz": {
          "total": 1000,
          "pass": 1000,
          "wrong_answer": 0,
          "crash_or_error": 0,
          "timeout": 0,
          "reference_disagreement": 0,
          "primo_sat": 702,
          "primo_unsat": 298,
          "z3_sat": 702,
          "z3_unsat": 298
        },
        "sample_compare": {
          "cross_solver_disagreements": 0,
          "non_standard_unsolved": 0,
          "default": {
            "files": 20,
            "solved": 16,
            "sat": 13,
            "unsat": 3,
            "timeout": 4,
            "error": 0,
            "par2": 84.929014
          },
          "model": {
            "files": 20,
            "solved": 16,
            "sat": 13,
            "unsat": 3,
            "timeout": 4,
            "error": 0,
            "par2": 84.658873
          },
          "z3": {
            "files": 20,
            "solved": 20,
            "sat": 17,
            "unsat": 3,
            "timeout": 0,
            "error": 0,
            "par2": 3.752949
          }
        }
      },
      "outcome": "Accepted as SLURM-backed validation evidence for commit 06ae7ad. The model-equality branch option shows no wrong answers or non-timeout errors in this gate and no dramatic timing change versus default Primo on the deterministic 20-file QF_UFLRA sample; Z3 remains substantially faster on the sample."
    },
    {
      "id": "2026-08-04-slurm-qf-uflra-full-gap-mine-77599f4",
      "started_at": "2026-08-04T17:40:00+02:00",
      "recorded_at": "2026-08-04T18:20:00+02:00",
      "kind": "benchmark",
      "scope": "Full local QF_UFLRA corpus mining for the actionable performance sample: files where Z3 is fast and Primo times out. This run also validates Z3 -st statistics capture in the benchmark CSV parser and checks whether the default-off model-equality branch path learns forced equality clauses on real benchmark instances.",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "commit": "77599f4",
      "environment": {
        "type": "slurm",
        "host": "SLURM remote workspace",
        "slurm_job_ids": "kept out of committed run-log; available in local notes and conversation",
        "binary": "build-slurm-rel/primo reports git: 77599f4, build: Release, sanitizers: none, cadical: cadical-3.0.0-7b99c07",
        "reference": "contrib/local/bin/z3 reports Z3 version 5.0.0 - 64 bit"
      },
      "commands": {
        "workspace_check": "python3 scripts/slurm_prepare_benchmark_workspace.py --remote <slurm-remote> --remote-dir <remote-workspace> --target primo --check-only",
        "validate_sbatch": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_model_mine.sbatch && bash -n scripts/slurm_qf_uflra_model_mine.sbatch",
        "stage_corpus": "rsync tmp/QF_UFLRA/ to the prepared remote workspace",
        "default_submit": "sbatch --array=0-3 --time=00:45:00 --export=ALL,PRIMO_MINE_TIMEOUT=5,PRIMO_MINE_SHARDS=4,PRIMO_MINE_OUT_ROOT=results/qf-uflra-full-mine-default-77599f4-5s,PRIMO_MINE_SOLVER='build-slurm-rel/primo --quiet --stats' scripts/slurm_qf_uflra_model_mine.sbatch",
        "model_submit": "sbatch --array=0-3 --time=00:45:00 --export=ALL,PRIMO_MINE_TIMEOUT=5,PRIMO_MINE_SHARDS=4,PRIMO_MINE_OUT_ROOT=results/qf-uflra-full-mine-model-77599f4-5s,PRIMO_MINE_SOLVER='build-slurm-rel/primo --quiet --stats --model-equality-branching' scripts/slurm_qf_uflra_model_mine.sbatch",
        "z3_submit": "sbatch --array=0-3 --time=00:45:00 --export=ALL,PRIMO_MINE_TIMEOUT=5,PRIMO_MINE_SHARDS=4,PRIMO_MINE_OUT_ROOT=results/qf-uflra-full-mine-z3stats-77599f4-5s,PRIMO_MINE_SOLVER='contrib/local/bin/z3 -st' scripts/slurm_qf_uflra_model_mine.sbatch",
        "aggregation": "Merged shard-0.csv through shard-3.csv per solver and ranked cases where Z3 solved in <=1s while default Primo timed out at 5s."
      },
      "benchmark": {
        "logic": "QF_UFLRA",
        "suite": "1284 files under tmp/QF_UFLRA: FFT, cpachecker-bmc-svcomp14, cpachecker-induction-svcomp14, and mathsat",
        "timeout_seconds": 5,
        "par2_timeout_seconds": 10,
        "shards": 4,
        "solvers": {
          "default": "build-slurm-rel/primo --quiet --stats",
          "model": "build-slurm-rel/primo --quiet --stats --model-equality-branching",
          "z3stats": "contrib/local/bin/z3 -st"
        }
      },
      "artifacts": {
        "default_results": "results/qf-uflra-full-mine-default-77599f4-5s/",
        "model_results": "results/qf-uflra-full-mine-model-77599f4-5s/",
        "z3_stats_results": "results/qf-uflra-full-mine-z3stats-77599f4-5s/",
        "gap_ranking": "results/qf-uflra-full-mine-z3-fast-default-timeout-77599f4-5s.csv",
        "gap_manifest": "benchmarks/qf_uflra-z3-fast-primo-timeout-100.txt",
        "slurm_logs": "results/slurm_logs/qf-uflra-full-mine-77599f4/",
        "evidence_status": "current SLURM mining evidence; generated CSVs and logs are local ignored artifacts, while the reusable sbatch and top-100 gap manifest are committed."
      },
      "summary": {
        "cross_solver_disagreements_when_both_solved": 0,
        "default": {
          "files": 1284,
          "solved": 600,
          "sat": 121,
          "unsat": 479,
          "timeout": 684,
          "par2": 6946.117713,
          "families": {
            "FFT": {
              "solved": 10,
              "timeout": 0
            },
            "cpachecker-bmc-svcomp14": {
              "solved": 4,
              "timeout": 11
            },
            "cpachecker-induction-svcomp14": {
              "solved": 123,
              "timeout": 236
            },
            "mathsat": {
              "solved": 463,
              "timeout": 437
            }
          }
        },
        "model": {
          "files": 1284,
          "solved": 605,
          "sat": 127,
          "unsat": 478,
          "timeout": 679,
          "par2": 6977.939077,
          "families": {
            "FFT": {
              "solved": 10,
              "timeout": 0
            },
            "cpachecker-bmc-svcomp14": {
              "solved": 4,
              "timeout": 11
            },
            "cpachecker-induction-svcomp14": {
              "solved": 119,
              "timeout": 240
            },
            "mathsat": {
              "solved": 472,
              "timeout": 428
            }
          }
        },
        "z3stats": {
          "files": 1284,
          "solved": 1234,
          "sat": 736,
          "unsat": 498,
          "timeout": 50,
          "par2": 758.708455,
          "families": {
            "FFT": {
              "solved": 10,
              "timeout": 0
            },
            "cpachecker-bmc-svcomp14": {
              "solved": 7,
              "timeout": 8
            },
            "cpachecker-induction-svcomp14": {
              "solved": 317,
              "timeout": 42
            },
            "mathsat": {
              "solved": 900,
              "timeout": 0
            }
          },
          "stats_totals": {
            ":conflicts": 290447,
            ":decisions": 533644,
            ":propagations": 12993881,
            ":binary-propagations": 2028005,
            ":arith-conflicts": 794,
            ":arith-lower": 623392,
            ":arith-upper": 603095,
            ":arith-make-feasible": 377330,
            ":mk-bool-var": 413631,
            ":mk-clause": 891024,
            ":mk-clause-binary": 1092871,
            ":rlimit-count": 1095142234,
            ":total-time": 189.99,
            ":max-memory": 24700.93
          }
        },
        "gap_sample": {
          "z3_solved_le_1s_default_timeout": 582,
          "top100_manifest": "benchmarks/qf_uflra-z3-fast-primo-timeout-100.txt",
          "selection": "Top 100 by Z3 wall time among full-corpus cases where Z3 solved in <=1s and default Primo timed out at 5s."
        },
        "model_equality_mechanism": {
          "api_queries": 371969,
          "api_equal": 108680,
          "mutation_forced": 4831,
          "active_files_with_mutation_forced": 287,
          "forced_candidates": 4830,
          "forced_already_true": 4830,
          "forced_clauses": 0,
          "assumptions": 0
        }
      },
      "outcome": "Accepted as the better QF_UFLRA performance triage sample. The original 20-file sample was not diagnostic. The full-corpus mining finds 582 fast-Z3/default-timeout files and commits a top-100 manifest for the next optimization loop. The current model-equality branch path is not the likely lever for these gaps: it solves five more files but has worse PAR2, and all mutation-forced equalities seen in this run were already true at the SAT level, so no forced equality clauses were learned."
    },
    {
      "id": "2026-08-04-local-qf-uflra-preprocessing-opportunity-triage-9229169",
      "date": "2026-08-04",
      "kind": "profile",
      "scope": "Local structural mining and profiling of QF_UFLRA fast-Z3/default-Primo-timeout files to identify benchmark clusters where preprocessing is likely to help before adding new solver logic.",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "commit": "9229169 plus docs-only commit 416b6c1",
      "environment": {
        "type": "local",
        "binary": "./build/primo from the current branch; debug info present",
        "profiler": "perf unavailable locally because perf_event_paranoid=4; callgrind used as fallback"
      },
      "commands": {
        "structural_mining": "Python csv/text scan over results/qf-uflra-full-mine-z3-fast-default-timeout-77599f4-5s.csv and tmp/QF_UFLRA",
        "preprocess_snapshots": "./build/primo --quiet --stats --preprocess-only <candidate>",
        "solve_snapshots": "timeout --signal=TERM --kill-after=2 5 ./build/primo --quiet --stats <candidate>",
        "profile_attempt": "perf record -F 99 -g ... failed with perf_event_paranoid=4",
        "callgrind": "timeout --signal=TERM --kill-after=2 18 valgrind --tool=callgrind --callgrind-out-file=results/profiling/qf-uflra-preprocess-candidates/callgrind.mathsat.pb_real_20_0200_10_28.<timestamp> ./build/primo --quiet tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_20_0200_10_28.smt2",
        "gprof_build": "cmake -S . -B build-gprof -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS_RELWITHDEBINFO='-O2 -g -DNDEBUG -pg' -DCMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO='-pg' -DCMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO='-pg' && cmake --build build-gprof --target primo -j4",
        "gprof_run": "cd results/profiling/qf-uflra-preprocess-candidates/gprof-mathsat && timeout --signal=TERM --kill-after=2 8 /workspace/build-gprof/primo --quiet /workspace/tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_20_0200_10_28.smt2 && gprof /workspace/build-gprof/primo gmon.out > pb_real_20_0200_10_28.gprof.txt"
      },
      "artifacts": {
        "input_ranking": "results/qf-uflra-full-mine-z3-fast-default-timeout-77599f4-5s.csv",
        "top100_gap_manifest": "benchmarks/qf_uflra-z3-fast-primo-timeout-100.txt",
        "preprocessing_opportunity_manifest": "benchmarks/qf_uflra-preprocessing-opportunity-sample.txt",
        "callgrind_profile": "results/profiling/qf-uflra-preprocess-candidates/callgrind.mathsat.pb_real_20_0200_10_28.*",
        "gprof_profile": "results/profiling/qf-uflra-preprocess-candidates/gprof-mathsat/pb_real_20_0200_10_28.gprof.txt",
        "evidence_status": "current local triage evidence; callgrind profile is local ignored artifact, manifest is committed"
      },
      "summary": {
        "gap_rows_scanned": 582,
        "mathsat_random_rows": {
          "RandomDecoupled": 268,
          "RandomCoupled": 167,
          "top100_manifest_mathsat_rows": 90
        },
        "cpa_real_domain_alias_rows": 130,
        "representative_mathsat": {
          "file": "mathsat/RandomCoupled/pb_real_20_0200_10_28.smt2",
          "z3_seconds": 0.037458,
          "default_primo_status": "timeout at 5s in SLURM mining",
          "preprocess_only": {
            "assertions": 52,
            "real_equalities_lowered": 24,
            "finite_domain_domains": 0,
            "finite_domain_amo_clauses": 0,
            "equality_definitions": 0,
            "purification_definitions": 43,
            "top_level_or_nodes": 200
          },
          "sigterm_snapshot": {
            "sat_vars": 219,
            "sat_clauses": 323,
            "sat_decisions": 73,
            "sat_conflicts": 0,
            "lra_online_check_calls": 54,
            "lra_theory_propagations": 19,
            "shared_real_pairs": 1711,
            "interface_equalities_propagated": 0
          },
          "gprof_flat_profile": {
            "sample_seconds": 3.23,
            "LraTableau::pivot_percent": 34.06,
            "Rational::operator_multiply_percent": 26.93,
            "Rational::operator_add_percent": 10.53,
            "Rational::from_int128_reduced_percent": 5.57,
            "LraTableau::update_percent": 5.26,
            "PreparedLraTheory_constructor_percent": 2.79
          }
        },
        "representative_cpa": {
          "file": "cpachecker-induction-svcomp14/cpachecker-induction.Problem01_00_true-unreach-call.c.smt2",
          "z3_seconds": 0.046994,
          "default_primo_status": "timeout at 5s in SLURM mining",
          "alias_resolved_domain_variables": 13,
          "alias_resolved_domain_values": 46,
          "max_alias_resolved_domain_size": 6,
          "current_finite_domain_domains_reported": 0
        }
      },
      "outcome": "Accepted as preprocessing-target triage. The primary next target is the MathSAT random pb_real cluster because it accounts for 90 of the committed top-100 fast-Z3/default-timeout files and current preprocessing only lowers Real equalities and purifies mixed UF/LRA applications there. The secondary target is CPAchecker Real equality-to-constant alias DAGs, where small Real domains are visible after resolving nullary define-fun aliases but current finite-domain preprocessing remains UF-oriented and reports zero domains."
    },
    {
      "id": "2026-08-04-qf-uflra-extra-atom-probe-cap-smoke",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "local-smoke",
      "scope": "QF_UFLRA temporary LRA extra-atom probe budget on profiled MathSAT candidate",
      "commit": "6b0dc07",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "./build/primo --quiet --stats --nelson-oppen-arrangement-probe-limit 5 tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_20_0200_10_28.smt2 2>&1 | rg '^(sat|unsat|unknown|:no\\.interface\\.(arrangement|lra-extra)|:time\\.|:sat\\.|:lra\\.)'",
      "solver": {
        "name": "Primo",
        "argv": "--quiet --stats --nelson-oppen-arrangement-probe-limit 5"
      },
      "inputs": {
        "logic": "QF_UFLRA",
        "file": "tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_20_0200_10_28.smt2",
        "source_manifest": "benchmarks/qf_uflra-preprocessing-opportunity-sample.txt"
      },
      "summary": {
        "status": "unknown",
        "time_total_us": 41290,
        "time_solve_us": 23683,
        "sat_solve_calls": 1,
        "sat_decisions": 73,
        "sat_conflicts": 0,
        "lra_online_check_calls": 54,
        "lra_extra_atom_probes": 5,
        "lra_extra_atoms_probed": 5,
        "arrangement_lra_extra_atom_probes": 0,
        "probe_limit_hit": 1
      },
      "outcome": "Accepted as a local smoke check for the opt-in soft cap. The cap now stops the conservative final LRA-to-EUF temporary-probe scan before the model-arrangement phase; a prior cap limited only separation probes and still allowed 5471 broad extra-atom probes on the same input before returning unknown. This is diagnostic/runtime-control evidence, not a default-profile benchmark claim.",
      "evidence_status": "current-local"
    },
    {
      "id": "2026-08-04-qf-uflra-probe-cap-local-fuzz-200",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "fuzz",
      "scope": "QF_UFLRA generated smoke cases, default and opt-in temporary LRA probe cap",
      "commit": "6b0dc07",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 100 --seed 20260804 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-probe-cap-default-z3-20260804; python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--nelson-oppen-arrangement-probe-limit --solver-arg=20 --ref contrib/local/bin/z3 --count 100 --seed 20260805 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-probe-cap-opt-z3-20260804",
      "solver": {
        "name": "Primo",
        "argv": "default; --nelson-oppen-arrangement-probe-limit 20"
      },
      "references": [
        {
          "name": "z3",
          "argv": "contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py",
        "logic": "QF_UFLRA",
        "shape": "mixed",
        "count": 200,
        "seeds": [
          20260804,
          20260805
        ],
        "timeout_seconds": 5
      },
      "artifacts": [
        "fuzz-results/qf_uflra-probe-cap-default-z3-20260804/summary.csv",
        "fuzz-results/qf_uflra-probe-cap-opt-z3-20260804/summary.csv"
      ],
      "summary": {
        "default": {
          "pass": 100,
          "wrong_answer": 0,
          "crash": 0,
          "timeout": 0,
          "unknown_involved": 0,
          "reference_unusable": 0
        },
        "probe_cap_20": {
          "pass": 94,
          "unknown_involved": 6,
          "wrong_answer": 0,
          "crash": 0,
          "timeout": 0,
          "reference_unusable": 0
        }
      },
      "outcome": "Accepted as a local smoke fuzz gate for the default path and the opt-in temporary LRA probe cap. The capped profile may return unknown when the soft budget is hit; no wrong answers, crashes, or reference-unusable results occurred. This is not a replacement for the SLURM QF_UFLRA merge gate before making a default-profile performance claim.",
      "evidence_status": "current-local"
    },
    {
      "id": "2026-08-04-qf-uflra-candidate-final-scan-local-gate",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "implementation-validation",
      "scope": "Opt-in QF_UFLRA candidate-first final LRA equality scan",
      "commit": "working-tree-after-597ccf0",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "cmake --build build --target primo_qf_lra_solver_tests primo -j4 && ./build/primo_qf_lra_solver_tests; make lint; make check; make docs; python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--qf-uflra-candidate-final-scan --ref contrib/local/bin/z3 --count 100 --seed 20260804 --timeout 5 --shape mixed --out fuzz-results/qf_uflra_candidate_final_scan_smoke_20260804_b",
      "solver": {
        "name": "Primo",
        "argv": "--qf-uflra-candidate-final-scan"
      },
      "references": [
        {
          "name": "z3",
          "argv": "contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py",
        "logic": "QF_UFLRA",
        "shape": "mixed",
        "count": 100,
        "seed": 20260804,
        "timeout_seconds": 5
      },
      "artifacts": [
        "fuzz-results/qf_uflra_candidate_final_scan_smoke_20260804_b/summary.csv"
      ],
      "summary": {
        "focused_unit_target": "pass",
        "make_lint": "pass",
        "make_check": "pass, 13/13 tests",
        "make_docs": "pass",
        "fuzz": {
          "pass": 100,
          "wrong_answer": 0,
          "crash": 0,
          "timeout": 0,
          "unknown_involved": 0
        },
        "pure_theory_sample": {
          "qf_lra_files": 2,
          "qf_uf_files": 2,
          "default_and_candidate_results_match": true,
          "candidate_mixed_path_entered": false
        },
        "mathsat_representative_probe_cap_1000": {
          "file": "tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_20_0200_10_28.smt2",
          "default": {
            "status": "unknown",
            "elapsed_seconds": 3.36,
            "sat_decisions": 73,
            "sat_propagations": 378,
            "lra_extra_atom_probes": 1000,
            "candidate_pairs": 0,
            "candidate_equalities": 0
          },
          "candidate_final_scan": {
            "status": "unknown",
            "elapsed_seconds": 17.74,
            "sat_decisions": 615,
            "sat_propagations": 1639,
            "lra_extra_atom_probes": 1000,
            "candidate_pairs": 195,
            "candidate_skipped_pairs": 1516,
            "candidate_equalities": 29,
            "candidate_fallbacks": 1,
            "candidate_fallback_equalities": 0
          }
        }
      },
      "outcome": "Accepted as correctness evidence for an opt-in candidate-first final scan. The MathSAT representative shows that the candidate scan prunes equality probes and finds equalities, but under a 1000-probe cap it is slower than the default capped run because final arrangement separation dominates afterward. Do not promote this option as a performance win or default behavior without a broader SLURM run and an arrangement-side improvement.",
      "evidence_status": "current-local"
    },
    {
      "id": "2026-08-04-qf-uflra-candidate-final-scan-slurm-sample",
      "started_at": "2026-08-04",
      "recorded_at": "2026-08-04",
      "kind": "benchmark",
      "scope": "QF_UFLRA preprocessing opportunity sample, default vs candidate final scan vs Z3",
      "commit": "7a585fc",
      "environment": {
        "type": "slurm",
        "host": "cluster",
        "slurm_job_id": "omitted from committed run log per cluster privacy policy; recorded in the agent transcript"
      },
      "command": "sbatch scripts/slurm_qf_uflra_candidate_final_scan_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "default; --qf-uflra-candidate-final-scan"
      },
      "references": [
        {
          "name": "z3",
          "argv": "contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "manifest": "benchmarks/qf_uflra-preprocessing-opportunity-sample.txt",
        "root": "tmp/QF_UFLRA",
        "logic": "QF_UFLRA",
        "count": 45,
        "timeout_seconds": 10
      },
      "artifacts": [
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/default-summary.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/candidate-summary.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/z3-summary.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/default.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/candidate.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/z3.csv"
      ],
      "summary": {
        "default": {
          "total": 45,
          "solved": 7,
          "timeout": 38,
          "wrong": 0,
          "par2": 814.425316,
          "families": {
            "mathsat": {
              "solved": 6,
              "timeout": 19
            },
            "cpachecker-induction-svcomp14": {
              "solved": 1,
              "timeout": 18
            },
            "cpachecker-bmc-svcomp14": {
              "solved": 0,
              "timeout": 1
            }
          }
        },
        "candidate_final_scan": {
          "total": 45,
          "solved": 14,
          "timeout": 31,
          "wrong": 0,
          "par2": 695.106294,
          "families": {
            "mathsat": {
              "solved": 14,
              "timeout": 11
            },
            "cpachecker-induction-svcomp14": {
              "solved": 0,
              "timeout": 19
            },
            "cpachecker-bmc-svcomp14": {
              "solved": 0,
              "timeout": 1
            }
          }
        },
        "z3": {
          "total": 45,
          "solved": 45,
          "timeout": 0,
          "wrong": 0,
          "par2": 5.834142,
          "families": {
            "mathsat": {
              "solved": 25,
              "timeout": 0
            },
            "cpachecker-induction-svcomp14": {
              "solved": 19,
              "timeout": 0
            },
            "cpachecker-bmc-svcomp14": {
              "solved": 1,
              "timeout": 0
            }
          }
        }
      },
      "outcome": "Accepted as current SLURM evidence for the default-off candidate final scan. It improves the MathSAT slice of this sample, solving 14/25 MathSAT files versus 6/25 for default at 10s, and improves total solved from 7/45 to 14/45 with no wrong answers. It regresses the CPAchecker induction slice by losing the single default solve, and Z3 remains much faster at 45/45 solved. Keep the option default-off and continue with arrangement/preprocessing work before any default-profile claim.",
      "evidence_status": "current-slurm"
    },
    {
      "id": "2026-08-05-qf-uflra-candidate-final-scan-slurm-sample-60s",
      "started_at": "2026-08-05",
      "recorded_at": "2026-08-05",
      "kind": "benchmark",
      "scope": "QF_UFLRA preprocessing opportunity sample, default vs candidate final scan vs Z3, 60s timeout",
      "commit": "7a585fc",
      "environment": {
        "type": "slurm",
        "host": "cluster",
        "slurm_job_id": "omitted from committed run log per cluster privacy policy; recorded in the agent transcript"
      },
      "command": "sbatch --time=01:10:00 --export=ALL,PRIMO_COMPARE_TIMEOUT=60 scripts/slurm_qf_uflra_candidate_final_scan_compare.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "default; --qf-uflra-candidate-final-scan"
      },
      "references": [
        {
          "name": "z3",
          "argv": "contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "manifest": "benchmarks/qf_uflra-preprocessing-opportunity-sample.txt",
        "root": "tmp/QF_UFLRA",
        "logic": "QF_UFLRA",
        "count": 45,
        "timeout_seconds": 60
      },
      "artifacts": [
        "remote:primo-candidate-final-7a585fc/logs/primo-qfuflra-cand-<job-id>-0.out",
        "remote:primo-candidate-final-7a585fc/logs/primo-qfuflra-cand-<job-id>-1.out",
        "remote:primo-candidate-final-7a585fc/logs/primo-qfuflra-cand-<job-id>-2.out",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/default-summary.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/candidate-summary.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/z3-summary.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/default.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/candidate.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/z3.csv"
      ],
      "summary": {
        "default": {
          "total": 45,
          "solved": 26,
          "timeout": 19,
          "wrong": 0,
          "par2": 2673.602478,
          "families": {
            "mathsat": {
              "solved": 18,
              "timeout": 7
            },
            "cpachecker-induction-svcomp14": {
              "solved": 8,
              "timeout": 11
            },
            "cpachecker-bmc-svcomp14": {
              "solved": 0,
              "timeout": 1
            }
          },
          "selected_stats": {
            "lra_extra_atom_probes": 1182416,
            "lra_extra_atoms_probed": 22488350,
            "arrangement_lra_extra_atom_probes": 21127,
            "arrangement_lra_extra_atoms_probed": 21327061,
            "lra_to_euf_equalities": 6535,
            "lra_to_euf_rechecks": 309,
            "sat_equalities_forced": 3561
          }
        },
        "candidate_final_scan": {
          "total": 45,
          "solved": 28,
          "timeout": 17,
          "wrong": 0,
          "par2": 2338.964269,
          "families": {
            "mathsat": {
              "solved": 20,
              "timeout": 5
            },
            "cpachecker-induction-svcomp14": {
              "solved": 8,
              "timeout": 11
            },
            "cpachecker-bmc-svcomp14": {
              "solved": 0,
              "timeout": 1
            }
          },
          "selected_stats": {
            "candidate_final_scan_pairs": 49155,
            "candidate_final_scan_skipped_pairs": 200593,
            "candidate_final_scan_equalities": 21353,
            "candidate_final_scan_fallbacks": 18,
            "candidate_final_scan_fallback_equalities": 246,
            "lra_extra_atom_probes": 510105,
            "lra_extra_atoms_probed": 30601795,
            "arrangement_lra_extra_atom_probes": 30339,
            "arrangement_lra_extra_atoms_probed": 30122029,
            "lra_to_euf_equalities": 21353,
            "lra_to_euf_rechecks": 1163,
            "sat_equalities_forced": 11335
          }
        },
        "z3": {
          "total": 45,
          "solved": 45,
          "timeout": 0,
          "wrong": 0,
          "par2": 8.192999,
          "families": {
            "mathsat": {
              "solved": 25,
              "timeout": 0
            },
            "cpachecker-induction-svcomp14": {
              "solved": 19,
              "timeout": 0
            },
            "cpachecker-bmc-svcomp14": {
              "solved": 1,
              "timeout": 0
            }
          }
        }
      },
      "outcome": "Accepted as current SLURM evidence for the default-off candidate final scan at a 60s timeout. Candidate final scan improves the sample from 26/45 to 28/45 solved and improves PAR2 from 2673.602478 to 2338.964269 with no wrong answers. The gain is again on MathSAT, improving 18/25 to 20/25, while CPAchecker results are neutral at this timeout. Candidate mode reduces the number of temporary LRA probe calls but increases equality traffic and arrangement atoms probed, so the evidence supports keeping it default-off and using it to guide the next arrangement/preprocessing optimization rather than promoting it.",
      "evidence_status": "current-slurm"
    },
    {
      "id": "2026-08-05-qf-uflra-interface-arrangement-local-gate",
      "date": "2026-08-05",
      "commit": "7763845",
      "host": "local-workspace",
      "scope": "Local validation for restricting QF_UFLRA final arrangement/model reconstruction to shared Real interface terms",
      "command": "cmake --build build --target primo_qf_lra_solver_tests primo -j4 && ./build/primo_qf_lra_solver_tests; make lint; make check; make docs; PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --ref z3 --count 1000 --seed 20260805 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-interface-arrangement-20260805; ./build/primo --quiet --stats --nelson-oppen-arrangement-probe-limit=1 <representative-cpachecker-kbfiltr-file>",
      "parameters": {
        "logic": "QF_UFLRA",
        "fuzz_count": 1000,
        "fuzz_seed": 20260805,
        "fuzz_timeout_seconds": 5,
        "fuzz_shape": "mixed",
        "reference": "z3",
        "probe_limit": 1
      },
      "artifacts": [
        "fuzz-results/qf_uflra-interface-arrangement-20260805/summary.csv",
        "fuzz-results/qf_uflra-interface-arrangement-20260805/cases/",
        "local:/tmp/primo-cpa-cap.stats"
      ],
      "summary": {
        "focused_tests": "primo_qf_lra_solver_tests passed",
        "make_lint": "passed",
        "make_check": "13/13 tests passed",
        "make_docs": "passed",
        "fuzz": {
          "pass": 1000,
          "wrong": 0,
          "crash": 0,
          "timeout": 0
        },
        "representative_cpachecker_probe": {
          "result": "unknown due requested probe cap",
          "sat_decisions": 1,
          "lra_theory_checks": 1,
          "shared_real_terms": 105,
          "model_real_terms_before_interface_filter": 105,
          "model_real_terms_filtered": 0,
          "lra_extra_atom_probes": 1,
          "arrangement_checks": 0
        }
      },
      "outcome": "Accepted as a correctness and invariant gate for the source change, not as performance-win evidence. The new unit tests cover EUF-only Real constants being excluded from final arrangement and model reconstruction. The representative CPAchecker timeout still has 105 common EUF/LRA Real interface terms and filters none of them, so the remaining CPAchecker gap is genuine shared-interface explosion rather than broad EUF-only leakage.",
      "evidence_status": "current-local"
    },
    {
      "id": "2026-08-05-qf-uflra-interface-arrangement-slurm-sample-60s",
      "started_at": "2026-08-05",
      "recorded_at": "2026-08-05",
      "kind": "benchmark",
      "scope": "QF_UFLRA preprocessing opportunity sample after restricting final arrangement to shared Real interface terms, default vs candidate final scan vs Z3, 60s timeout",
      "commit": "7763845",
      "environment": {
        "type": "slurm",
        "host": "cluster",
        "slurm_job_id": "omitted from committed run log per cluster privacy policy; recorded in the agent transcript"
      },
      "command": "PRIMO_COMPARE_TIMEOUT=60 sbatch scripts/primo_qfuflra_iface_45m.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "default; --qf-uflra-candidate-final-scan"
      },
      "references": [
        {
          "name": "z3",
          "argv": "contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "manifest": "benchmarks/qf_uflra-preprocessing-opportunity-sample.txt",
        "root": "tmp/QF_UFLRA",
        "logic": "QF_UFLRA",
        "count": 45,
        "timeout_seconds": 60
      },
      "artifacts": [
        "remote:primo-candidate-final-7a585fc/logs/primo-qfuflra-iface-<job-id>-0.out",
        "remote:primo-candidate-final-7a585fc/logs/primo-qfuflra-iface-<job-id>-1.out",
        "remote:primo-candidate-final-7a585fc/logs/primo-qfuflra-iface-<job-id>-2.out",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/default-summary.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/candidate-summary.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/z3-summary.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/default.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/candidate.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/z3.csv"
      ],
      "supersedes": [
        {
          "job": "previous 20-minute SLURM submission, omitted from committed run log per cluster privacy policy",
          "reason": "The Z3 array task finished, but the default and candidate Primo array tasks hit the batch wall limit before merged CSV summaries were written. The 45-minute submission repeated the same 60s-per-instance comparison and completed."
        }
      ],
      "summary": {
        "default": {
          "total": 45,
          "solved": 26,
          "timeout": 19,
          "wrong": 0,
          "par2": 2569.220419,
          "families": {
            "mathsat": {
              "solved": 18,
              "timeout": 7
            },
            "cpachecker-induction-svcomp14": {
              "solved": 8,
              "timeout": 11
            },
            "cpachecker-bmc-svcomp14": {
              "solved": 0,
              "timeout": 1
            }
          },
          "selected_stats": {
            "model_real_terms_before_interface_filter": 3840,
            "model_real_terms_filtered": 67,
            "shared_real_terms": 3773,
            "model_separation_candidates": 134245,
            "lra_extra_atom_probes": 1174141,
            "lra_extra_atoms_probed": 16027054,
            "arrangement_lra_extra_atom_probes": 15474,
            "arrangement_lra_extra_atoms_probed": 14868387,
            "lra_to_euf_equalities": 6513,
            "lra_to_euf_rechecks": 309,
            "sat_equalities_forced": 3552
          }
        },
        "candidate_final_scan": {
          "total": 45,
          "solved": 28,
          "timeout": 17,
          "wrong": 0,
          "par2": 2218.235007,
          "families": {
            "mathsat": {
              "solved": 20,
              "timeout": 5
            },
            "cpachecker-induction-svcomp14": {
              "solved": 8,
              "timeout": 11
            },
            "cpachecker-bmc-svcomp14": {
              "solved": 0,
              "timeout": 1
            }
          },
          "selected_stats": {
            "model_real_terms_before_interface_filter": 3840,
            "model_real_terms_filtered": 67,
            "shared_real_terms": 3773,
            "model_separation_candidates": 204846,
            "candidate_final_scan_pairs": 49155,
            "candidate_final_scan_equalities": 21605,
            "lra_extra_atom_probes": 506050,
            "lra_extra_atoms_probed": 22458798,
            "arrangement_lra_extra_atom_probes": 22066,
            "arrangement_lra_extra_atoms_probed": 21974814,
            "lra_to_euf_equalities": 21605,
            "lra_to_euf_rechecks": 1177,
            "sat_equalities_forced": 11462
          }
        },
        "z3": {
          "total": 45,
          "solved": 45,
          "timeout": 0,
          "wrong": 0,
          "par2": 5.65906,
          "families": {
            "mathsat": {
              "solved": 25,
              "timeout": 0
            },
            "cpachecker-induction-svcomp14": {
              "solved": 19,
              "timeout": 0
            },
            "cpachecker-bmc-svcomp14": {
              "solved": 1,
              "timeout": 0
            }
          }
        },
        "comparison_to_previous_sample": {
          "baseline_commit": "f9bd054",
          "default_solved_delta": 0,
          "candidate_solved_delta": 0,
          "default_par2_before": 2673.602478,
          "default_par2_after": 2569.220419,
          "candidate_par2_before": 2338.964269,
          "candidate_par2_after": 2218.235007,
          "default_arrangement_atoms_probed_before": 21327061,
          "default_arrangement_atoms_probed_after": 14868387,
          "candidate_arrangement_atoms_probed_before": 30122029,
          "candidate_arrangement_atoms_probed_after": 21974814
        }
      },
      "outcome": "Accepted as current SLURM evidence for the shared-interface final-arrangement fix at a 60s timeout. The invariant change produced no wrong answers and reduced broad arrangement probe work, but solved counts did not improve on this sample: default remains 26/45 and candidate final scan remains 28/45. Only 67 of 3840 EUF model Real terms were filtered out, so the MathSAT/CPAchecker gap is dominated by genuine shared-interface arrangement traffic rather than accidental EUF-only Real constants. Candidate mode remains default-off.",
      "evidence_status": "current-slurm"
    },
    {
      "id": "2026-08-05-qf-uflra-euf-forbidden-arrangement-local-gate",
      "date": "2026-08-05",
      "commit": "8b3bb4e",
      "host": "local-workspace",
      "scope": "Local validation for pruning final QF_UFLRA strict Real arrangement candidates to pairs whose equality is EUF-forbidden",
      "command": "cmake --build build --target primo_qf_lra_solver_tests primo -j4 && ./build/primo_qf_lra_solver_tests; make lint; make check; make docs; git diff --check; python3 -m json.tool docs/run-log.json; PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --ref z3 --count 1000 --seed 20260805 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-euf-forbidden-arrangement-20260805; make tidy; python3 /home/user/.codex/skills/solver-efficiency-review/scripts/solver_efficiency_snapshot.py --repo .",
      "parameters": {
        "logic": "QF_UFLRA",
        "fuzz_count": 1000,
        "fuzz_seed": 20260805,
        "fuzz_timeout_seconds": 5,
        "fuzz_shape": "mixed",
        "reference": "z3"
      },
      "artifacts": [
        "fuzz-results/qf_uflra-euf-forbidden-arrangement-20260805/summary.csv",
        "fuzz-results/qf_uflra-euf-forbidden-arrangement-20260805/cases/"
      ],
      "summary": {
        "focused_tests": "primo_qf_lra_solver_tests passed",
        "make_lint": "passed",
        "make_check": "13/13 tests passed",
        "make_docs": "passed",
        "json_tool": "docs/run-log.json validated",
        "git_diff_check": "passed",
        "make_tidy": "whole-tree clang-tidy over 63 tracked non-generated C++ files passed",
        "efficiency_snapshot": "no added hot-path patterns detected",
        "fuzz": {
          "pass": 1000,
          "wrong": 0,
          "crash": 0,
          "timeout": 0
        }
      },
      "outcome": "Accepted as local correctness evidence for the default final-arrangement pruning change. Unit regressions cover EUF-mergeable shared Real pairs being skipped in non-model final arrangement, model reconstruction, and candidate-final fallback paths, while EUF-forbidden pairs still require strict LRA separation.",
      "evidence_status": "current-local"
    },
    {
      "id": "2026-08-05-qf-uflra-euf-forbidden-arrangement-slurm-sample-60s",
      "started_at": "2026-08-05",
      "recorded_at": "2026-08-05",
      "kind": "benchmark",
      "scope": "QF_UFLRA preprocessing opportunity sample after pruning final strict arrangements to EUF-forbidden shared Real pairs, default vs candidate final scan vs Z3, 60s timeout",
      "commit": "8b3bb4e",
      "environment": {
        "type": "slurm",
        "host": "cluster",
        "slurm_job_id": "omitted from committed run log per cluster privacy policy; recorded in the agent transcript"
      },
      "command": "PRIMO_COMPARE_TIMEOUT=60 sbatch scripts/primo_qfuflra_euf_forbidden_45m.sbatch",
      "solver": {
        "name": "Primo",
        "argv": "default; --qf-uflra-candidate-final-scan"
      },
      "references": [
        {
          "name": "z3",
          "argv": "contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "manifest": "benchmarks/qf_uflra-preprocessing-opportunity-sample.txt",
        "root": "tmp/QF_UFLRA",
        "logic": "QF_UFLRA",
        "count": 45,
        "timeout_seconds": 60
      },
      "artifacts": [
        "remote:primo-candidate-final-7a585fc/logs/primo-qfuflra-iface-<job-id>-0.out",
        "remote:primo-candidate-final-7a585fc/logs/primo-qfuflra-iface-<job-id>-1.out",
        "remote:primo-candidate-final-7a585fc/logs/primo-qfuflra-iface-<job-id>-2.out",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/default-summary.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/candidate-summary.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/z3-summary.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/default.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/candidate.csv",
        "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-<job-id>/z3.csv"
      ],
      "summary": {
        "default": {
          "total": 45,
          "solved": 33,
          "timeout": 12,
          "wrong": 0,
          "par2": 1736.479228,
          "families": {
            "mathsat": {
              "solved": 18,
              "timeout": 7
            },
            "cpachecker-induction-svcomp14": {
              "solved": 15,
              "timeout": 4
            },
            "cpachecker-bmc-svcomp14": {
              "solved": 0,
              "timeout": 1
            }
          },
          "selected_stats": {
            "shared_real_terms": 3773,
            "model_real_terms_before_interface_filter": 3840,
            "model_real_terms_filtered": 67,
            "model_separation_candidates": 60,
            "model_separation_euf_forbidden_pairs": 60,
            "model_separation_euf_mergeable_pairs": 134185,
            "arrangement_separations": 60,
            "arrangement_lra_extra_atom_probes": 54,
            "arrangement_lra_extra_atoms_probed": 1170,
            "lra_extra_atom_probes": 1159625,
            "lra_extra_atoms_probed": 1160741,
            "lra_to_euf_equalities": 6480,
            "lra_to_euf_rechecks": 307,
            "sat_equalities_forced": 3523,
            "sat_decisions": 56085,
            "sat_conflicts": 4898
          }
        },
        "candidate_final_scan": {
          "total": 45,
          "solved": 38,
          "timeout": 7,
          "wrong": 0,
          "par2": 903.689026,
          "families": {
            "mathsat": {
              "solved": 21,
              "timeout": 4
            },
            "cpachecker-induction-svcomp14": {
              "solved": 17,
              "timeout": 2
            },
            "cpachecker-bmc-svcomp14": {
              "solved": 0,
              "timeout": 1
            }
          },
          "selected_stats": {
            "shared_real_terms": 3696,
            "model_real_terms_before_interface_filter": 3761,
            "model_real_terms_filtered": 65,
            "model_separation_candidates": 62,
            "model_separation_euf_forbidden_pairs": 62,
            "model_separation_euf_mergeable_pairs": 204916,
            "candidate_final_scan_pairs": 48741,
            "candidate_final_scan_skipped_pairs": 198081,
            "candidate_final_scan_equalities": 17858,
            "candidate_final_scan_fallbacks": 0,
            "arrangement_separations": 62,
            "arrangement_lra_extra_atom_probes": 95,
            "arrangement_lra_extra_atoms_probed": 1737,
            "lra_extra_atom_probes": 379468,
            "lra_extra_atoms_probed": 381110,
            "lra_to_euf_equalities": 17858,
            "lra_to_euf_rechecks": 1013,
            "sat_equalities_forced": 9601,
            "sat_decisions": 78796,
            "sat_conflicts": 4298
          }
        },
        "z3": {
          "total": 45,
          "solved": 45,
          "timeout": 0,
          "wrong": 0,
          "par2": 7.525657,
          "families": {
            "mathsat": {
              "solved": 25,
              "timeout": 0
            },
            "cpachecker-induction-svcomp14": {
              "solved": 19,
              "timeout": 0
            },
            "cpachecker-bmc-svcomp14": {
              "solved": 1,
              "timeout": 0
            }
          }
        },
        "comparison_to_previous_sample": {
          "baseline_commit": "494a915",
          "default_solved_before": 26,
          "default_solved_after": 33,
          "candidate_solved_before": 28,
          "candidate_solved_after": 38,
          "default_par2_before": 2569.220419,
          "default_par2_after": 1736.479228,
          "candidate_par2_before": 2218.235007,
          "candidate_par2_after": 903.689026,
          "default_model_separation_candidates_before": 134245,
          "default_model_separation_candidates_after": 60,
          "candidate_model_separation_candidates_before": 204846,
          "candidate_model_separation_candidates_after": 62,
          "default_arrangement_atoms_probed_before": 14868387,
          "default_arrangement_atoms_probed_after": 1170,
          "candidate_arrangement_atoms_probed_before": 21974814,
          "candidate_arrangement_atoms_probed_after": 1737
        }
      },
      "outcome": "Accepted as current SLURM performance evidence for the EUF-forbidden final-arrangement pruning change. The default profile improves from 26/45 to 33/45 solved and PAR2 improves from 2569.220419 to 1736.479228 with no wrong answers. Candidate final scan improves from 28/45 to 38/45 solved and PAR2 improves from 2218.235007 to 903.689026 with no wrong answers. The counters show that almost all previous strict separation candidates were EUF-mergeable rather than EUF-forbidden, reducing default model-separation candidates from 134245 to 60 and candidate-mode candidates from 204846 to 62. Z3 remains much faster at 45/45 solved, so remaining work should target equality traffic, candidate scan cost, and the remaining MathSAT/CPAchecker timeouts.",
      "evidence_status": "current-slurm"
    },
    {
      "date": "2026-08-05",
      "commit": "931598f",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "kind": "reference-stat-diagnosis",
      "host": "SLURM login node via /tmp/primo_slurm_ssh_config",
      "command": "cd primo-candidate-final-7a585fc && contrib/local/bin/z3 -smt2 -st <selected QF_UFLRA file>; compared with results/qf-uflra-candidate-final-119470/{candidate,z3}.csv",
      "inputs": {
        "source_artifact": "remote:primo-candidate-final-7a585fc/results/qf-uflra-candidate-final-119470",
        "selected_files": [
          "tmp/QF_UFLRA/mathsat/RandomDecoupled/pb_real_30_60_45_31.smt2",
          "tmp/QF_UFLRA/mathsat/RandomDecoupled/pb_real_40_80_60_36.smt2",
          "tmp/QF_UFLRA/mathsat/RandomDecoupled/pb_real_40_80_60_96.smt2",
          "tmp/QF_UFLRA/mathsat/RandomDecoupled/pb_real_30_60_45_30.smt2",
          "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.Problem01_00_true-unreach-call.c.smt2",
          "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.Problem14_60_false-unreach-call.c.smt2",
          "tmp/QF_UFLRA/cpachecker-bmc-svcomp14/cpachecker-bmc.diskperf_false-unreach-call.i.cil.c.smt2",
          "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.email_spec3_product29_false-unreach-call.cil.c.smt2",
          "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.email_spec3_product27_false-unreach-call.cil.c.smt2",
          "tmp/QF_UFLRA/mathsat/RandomDecoupled/pb_real_30_60_45_91.smt2"
        ]
      },
      "summary": {
        "remaining_candidate_timeouts": [
          {
            "file": "tmp/QF_UFLRA/mathsat/RandomDecoupled/pb_real_30_60_45_31.smt2",
            "z3_seconds": 0.023797,
            "z3_conflicts": 40,
            "z3_decisions": 72,
            "z3_final_checks": 1,
            "primo_lra_extra_atom_probes": 100144,
            "primo_lra_to_euf_equalities": 6807,
            "primo_lra_to_euf_rechecks": 422,
            "primo_sat_equalities_forced": 4069
          },
          {
            "file": "tmp/QF_UFLRA/mathsat/RandomDecoupled/pb_real_40_80_60_36.smt2",
            "z3_seconds": 0.026763,
            "z3_conflicts": 60,
            "z3_decisions": 122,
            "z3_final_checks": 2,
            "z3_interface_eqs": 1,
            "primo_lra_extra_atom_probes": 60718,
            "primo_lra_to_euf_equalities": 2801,
            "primo_lra_to_euf_rechecks": 128,
            "primo_sat_equalities_forced": 1165
          },
          {
            "file": "tmp/QF_UFLRA/mathsat/RandomDecoupled/pb_real_30_60_45_30.smt2",
            "z3_seconds": 0.036989,
            "z3_conflicts": 47,
            "z3_decisions": 86,
            "z3_final_checks": 2,
            "z3_interface_eqs": 1,
            "primo_lra_extra_atom_probes": 121045,
            "primo_lra_to_euf_equalities": 6210,
            "primo_lra_to_euf_rechecks": 414,
            "primo_sat_equalities_forced": 3313
          },
          {
            "file": "tmp/QF_UFLRA/cpachecker-bmc-svcomp14/cpachecker-bmc.diskperf_false-unreach-call.i.cil.c.smt2",
            "z3_seconds": 0.974501,
            "z3_conflicts": 150,
            "z3_decisions": 1699,
            "z3_final_checks": 6,
            "z3_interface_eqs": 5,
            "primo_lra_extra_atom_probes": 2759,
            "primo_candidate_final_scan_pairs": 3948
          }
        ],
        "solved_but_slow_candidate_cases": [
          {
            "file": "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.email_spec3_product29_false-unreach-call.cil.c.smt2",
            "candidate_seconds": 11.625156,
            "z3_seconds": 0.046272,
            "z3_final_checks": 1,
            "primo_sat_solve_calls": 2,
            "primo_lra_extra_atom_probes": 17554,
            "primo_lra_to_euf_equalities": 262,
            "primo_sat_equalities_forced": 131
          },
          {
            "file": "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.email_spec3_product27_false-unreach-call.cil.c.smt2",
            "candidate_seconds": 10.68164,
            "z3_seconds": 0.048901,
            "z3_final_checks": 1,
            "primo_sat_solve_calls": 2,
            "primo_lra_extra_atom_probes": 16510,
            "primo_lra_to_euf_equalities": 254,
            "primo_sat_equalities_forced": 127
          },
          {
            "file": "tmp/QF_UFLRA/mathsat/RandomDecoupled/pb_real_30_60_45_91.smt2",
            "candidate_seconds": 5.428374,
            "z3_seconds": 0.048547,
            "z3_conflicts": 48,
            "z3_decisions": 80,
            "z3_final_checks": 1,
            "primo_sat_solve_calls": 14,
            "primo_lra_extra_atom_probes": 1011,
            "primo_lra_to_euf_equalities": 68,
            "primo_sat_equalities_forced": 37
          }
        ]
      },
      "outcome": "Z3 statistics show very small search on the remaining fast-reference/slow-Primo cases: the sampled MathSAT timeouts use tens of conflicts, under 130 decisions, and one or two final checks in Z3, while Primo performs many SAT re-entry cycles and tens to hundreds of thousands of LRA extra-atom probes. The sampled CPAchecker solved-but-slow cases are especially diagnostic because Primo has only two SAT/LRA checks and few SAT decisions but still spends seconds in candidate equality probing. This supports prioritizing model-guided/equality-probe reduction before SAT-solver tuning.",
      "evidence_status": "current-slurm-derived"
    },
    {
      "id": "2026-08-05-qfuflra-shared-equality-ledger-smoke-ca97c1d",
      "started_at": "2026-08-05T18:59:00+02:00",
      "recorded_at": "2026-08-05T19:02:35+02:00",
      "kind": "fuzz",
      "scope": "QF_UFLRA mixed smoke cases for shared equality ledger ownership cleanup",
      "commit": "ca97c1da9d558fe46eb65676f783cf1a10a398d6",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "environment": {
        "type": "local",
        "host": "/workspace",
        "slurm_job_id": null
      },
      "command": "PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --ref z3 --count 1000 --seed 20260805 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-equality-ledger-cleanup-20260805",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "references": [
        {
          "name": "z3",
          "argv": "z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py",
        "logic": "QF_UFLRA",
        "shape": "mixed",
        "seed": 20260805,
        "count": 1000,
        "timeout_seconds": 5,
        "manifest": null
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uflra-equality-ledger-cleanup-20260805/summary.csv",
        "results": "fuzz-results/qf_uflra-equality-ledger-cleanup-20260805/cases",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "parser_or_type_error": 0,
        "reference_disagreement": 0,
        "sat": 703,
        "unsat": 297
      },
      "outcome": "Accepted local smoke evidence for the behavior-neutral TheoryCombinationManager shared equality ledger cleanup. The run compares 1000 generated mixed QF_UFLRA cases against Z3 and finds no wrong answers, crashes, timeouts, unsupported outcomes, parser/type errors, or reference disagreements. This is not a performance claim.",
      "evidence_status": "current-local"
    },
    {
      "id": "2026-08-05-qfuflra-lra-euf-filter-local-sample-676b7af",
      "started_at": "2026-08-05T20:20:00+02:00",
      "recorded_at": "2026-08-05T20:30:00+02:00",
      "kind": "benchmark",
      "scope": "Local Release 20-file QF_UFLRA sample for consumer-aware LRA-to-EUF equality filtering, compared with pre-filter Primo and Z3",
      "commit": "676b7af350a51e59d83c6b53a604c64d01a6c647",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "environment": {
        "type": "local",
        "host": "/workspace",
        "slurm_job_id": null
      },
      "command": "cmake --build build-lra-euf-filter-rel --target primo -j4; python3 scripts/bench_qf_uf_full.py --repo . --root tmp/QF_UFLRA --manifest benchmarks/qf_uflra-smtlib-sample-5-per-family.txt --solver build-lra-euf-filter-rel/primo --solver-arg=--quiet --solver-arg=--stats --timeout 5 --out results/qf_uflra-lra-euf-filter-local-current-release-676b7af/results.csv --summary results/qf_uflra-lra-euf-filter-local-current-release-676b7af/summary.csv --log-dir results/qf_uflra-lra-euf-filter-local-current-release-676b7af/logs",
      "solver": {
        "name": "Primo",
        "argv": "build-lra-euf-filter-rel/primo --quiet --stats"
      },
      "references": [
        {
          "name": "z3",
          "argv": "contrib/local/bin/z3",
          "artifact": "results/qf_uflra-lra-euf-filter-local-z3/summary.csv"
        }
      ],
      "inputs": {
        "manifest": "benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "root": "tmp/QF_UFLRA",
        "logic": "QF_UFLRA",
        "count": 20,
        "timeout_seconds": 5
      },
      "artifacts": {
        "before_summary": "results/qf_uflra-lra-euf-filter-local-before-release-9ffbf0f/summary.csv",
        "before_results": "results/qf_uflra-lra-euf-filter-local-before-release-9ffbf0f/results.csv",
        "current_summary": "results/qf_uflra-lra-euf-filter-local-current-release-676b7af/summary.csv",
        "current_results": "results/qf_uflra-lra-euf-filter-local-current-release-676b7af/results.csv",
        "z3_summary": "results/qf_uflra-lra-euf-filter-local-z3/summary.csv",
        "z3_results": "results/qf_uflra-lra-euf-filter-local-z3/results.csv"
      },
      "baseline": {
        "commit": "9ffbf0f",
        "solved": 16,
        "timeout": 4,
        "wrong": 0,
        "par2": 41.266967,
        "sat_equalities_forced": 42,
        "lra_to_euf_rechecks": 8,
        "lra_to_euf_equalities": 78,
        "sat_solve_calls": 34,
        "solve_us": 1211009
      },
      "summary": {
        "current": {
          "solved": 16,
          "timeout": 4,
          "wrong": 0,
          "par2": 40.568299,
          "sat_equalities_forced": 0,
          "lra_to_euf_rechecks": 0,
          "lra_to_euf_equalities": 36,
          "lra_to_euf_mergeable_skipped": 26,
          "lra_to_euf_forbidden_forced": 0,
          "sat_solve_calls": 19,
          "solve_us": 514084
        },
        "z3": {
          "solved": 20,
          "timeout": 0,
          "wrong": 0,
          "par2": 1.670959
        },
        "families": {
          "FFT": {
            "current_solved": 5,
            "current_timeout": 0
          },
          "cpachecker-bmc-svcomp14": {
            "current_solved": 3,
            "current_timeout": 2,
            "z3_solved": 5
          },
          "cpachecker-induction-svcomp14": {
            "current_solved": 3,
            "current_timeout": 2,
            "z3_solved": 5
          },
          "mathsat": {
            "current_solved": 5,
            "current_timeout": 0,
            "z3_solved": 5
          }
        }
      },
      "outcome": "Accepted as local performance smoke evidence for the consumer-aware LRA-to-EUF filter. The sample keeps the same solved count but eliminates SAT-forced LRA-to-EUF equality atoms and rechecks on this sample, reducing SAT solve calls. Z3 still solves all 20, so this is not a headline parity claim and needs SLURM revalidation on the broader opportunity set.",
      "evidence_status": "current-local"
    },
    {
      "id": "2026-08-05-qfuflra-lra-euf-filter-fuzz-676b7af",
      "started_at": "2026-08-05T20:18:00+02:00",
      "recorded_at": "2026-08-05T20:31:00+02:00",
      "kind": "fuzz",
      "scope": "QF_UFLRA mixed smoke cases after consumer-aware LRA-to-EUF equality filtering",
      "commit": "676b7af350a51e59d83c6b53a604c64d01a6c647",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "environment": {
        "type": "local",
        "host": "/workspace",
        "slurm_job_id": null
      },
      "command": "PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --ref /workspace/contrib/local/bin/z3 --count 1000 --seed 20260806 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-lra-euf-filter-676b7af",
      "solver": {
        "name": "Primo",
        "argv": "./build/primo --quiet"
      },
      "references": [
        {
          "name": "z3",
          "argv": "/workspace/contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py",
        "logic": "QF_UFLRA",
        "shape": "mixed",
        "seed": 20260806,
        "count": 1000,
        "timeout_seconds": 5,
        "manifest": null
      },
      "artifacts": {
        "summary": "fuzz-results/qf_uflra-lra-euf-filter-676b7af/summary.csv",
        "results": "fuzz-results/qf_uflra-lra-euf-filter-676b7af/cases",
        "logs": null,
        "bugs": null
      },
      "summary": {
        "total": 1000,
        "pass": 1000,
        "wrong": 0,
        "crash": 0,
        "timeout": 0,
        "unsupported": 0,
        "parser_or_type_error": 0,
        "reference_disagreement": 0,
        "sat": 716,
        "unsat": 284
      },
      "outcome": "Accepted local smoke evidence for the LRA-to-EUF filter. The run compares 1000 generated mixed QF_UFLRA cases against Z3 with no wrong answers, crashes, timeouts, unsupported outcomes, parser/type errors, or reference disagreements.",
      "evidence_status": "current-local"
    },
    {
      "id": "2026-08-05-qfuflra-lra-euf-filter-slurm-sample-119506",
      "started_at": "2026-08-05T20:20:00+02:00",
      "recorded_at": "2026-08-05T20:27:00+02:00",
      "kind": "benchmark",
      "scope": "SLURM 20-file QF_UFLRA sample at 60s timeout for consumer-aware LRA-to-EUF equality filtering, default and candidate-final-scan profiles",
      "commit": "5e7c24e",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "environment": {
        "type": "slurm",
        "host": "cluster",
        "remote_workspace": "primo-lra-euf-filter-5e7c24e",
        "slurm_job_id": "119506"
      },
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/primo_slurm_ssh_config --remote primo-slurm --remote-dir primo-lra-euf-filter-5e7c24e --local-dir . --target primo --check-only && ssh -F /tmp/primo_slurm_ssh_config primo-slurm 'cd primo-lra-euf-filter-5e7c24e && PRIMO_COMPARE_TIMEOUT=60 PRIMO_COMPARE_SOLVERS=\"default=build-slurm-rel/primo --quiet --stats;candidate=build-slurm-rel/primo --quiet --stats --qf-uflra-candidate-final-scan;z3=contrib/local/bin/z3\" sbatch scripts/slurm_qf_uflra_sample_compare.sbatch'",
      "solver": {
        "name": "Primo",
        "argv": "default: build-slurm-rel/primo --quiet --stats; candidate: build-slurm-rel/primo --quiet --stats --qf-uflra-candidate-final-scan"
      },
      "references": [
        {
          "name": "z3",
          "argv": "contrib/local/bin/z3",
          "status": "failed in this fresh remote workspace because contrib/local/bin/z3 was not installed"
        }
      ],
      "inputs": {
        "manifest": "benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "root": "tmp/QF_UFLRA",
        "logic": "QF_UFLRA",
        "count": 20,
        "timeout_seconds": 60
      },
      "artifacts": {
        "default_summary": "remote:primo-lra-euf-filter-5e7c24e/results/qf-uflra-sample-119506/default-summary.csv",
        "default_results": "remote:primo-lra-euf-filter-5e7c24e/results/qf-uflra-sample-119506/default.csv",
        "candidate_summary": "remote:primo-lra-euf-filter-5e7c24e/results/qf-uflra-sample-119506/candidate-summary.csv",
        "candidate_results": "remote:primo-lra-euf-filter-5e7c24e/results/qf-uflra-sample-119506/candidate.csv",
        "logs": "remote:primo-lra-euf-filter-5e7c24e/logs/primo-qfuflra-sample-119506-*.{out,err}"
      },
      "summary": {
        "default": {
          "solved": 16,
          "timeout": 4,
          "wrong": 0,
          "par2": 481.388154,
          "sat_equalities_forced": 0,
          "lra_to_euf_rechecks": 0,
          "lra_to_euf_equalities": 36,
          "lra_to_euf_mergeable_skipped": 26,
          "lra_to_euf_forbidden_forced": 0,
          "sat_solve_calls": 19,
          "solve_us": 1246554
        },
        "candidate_final_scan": {
          "solved": 17,
          "timeout": 3,
          "wrong": 0,
          "par2": 415.679421,
          "sat_equalities_forced": 0,
          "lra_to_euf_rechecks": 0,
          "lra_to_euf_equalities": 29,
          "lra_to_euf_mergeable_skipped": 27,
          "lra_to_euf_forbidden_forced": 0,
          "sat_solve_calls": 19,
          "solve_us": 55498139
        },
        "z3_task": {
          "state": "FAILED",
          "exit_code": "1:0",
          "reason": "contrib/local/bin/z3 missing in fresh remote workspace"
        }
      },
      "outcome": "Accepted as SLURM smoke evidence for the committed filter on the deterministic 20-file QF_UFLRA sample. The default profile preserves the local solved count at a longer timeout and keeps LRA-to-EUF SAT forcing at zero; candidate-final-scan solves one additional cpachecker-induction row. The Z3 array task is not usable evidence for this remote run because Z3 was absent from the fresh workspace; use the local Z3 entry for reference on this milestone or rerun SLURM after provisioning Z3.",
      "evidence_status": "current-slurm-partial-reference-invalidated-by-2026-08-05-qfuflra-full-5s-rejected"
    },
    {
      "id": "2026-08-05-qfuflra-full-5s-rejected-unsound-filter",
      "started_at": "2026-08-05T21:05:00+02:00",
      "recorded_at": "2026-08-05T21:25:00+02:00",
      "kind": "benchmark-correctness-triage",
      "scope": "Aborted full 1284-file QF_UFLRA SLURM evaluation after wrong answers in the LRA-to-EUF filtering path",
      "commit": "f7c8bd7",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "environment": {
        "type": "slurm",
        "host": "cluster",
        "remote_workspace": "primo-lra-euf-filter-5e7c24e",
        "slurm_job_ids": [
          "119514",
          "119515"
        ]
      },
      "command": "Prepared remote workspace with scripts/slurm_prepare_benchmark_workspace.py --with-z3, then submitted Primo-only 5s full QF_UFLRA arrays reusing existing Z3 artifact results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv. Job 119515 ran --qf-uflra-candidate-final-scan to completion; job 119514 default was canceled after wrong answers were found and the user approved stopping.",
      "solver": {
        "name": "Primo",
        "argv": "candidate: build-slurm-rel/primo --quiet --stats --qf-uflra-candidate-final-scan; default: build-slurm-rel/primo --quiet --stats"
      },
      "references": [
        {
          "name": "z3",
          "argv": "existing artifact results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv",
          "status": "reused; benchmark set and timeout matched the Primo run"
        }
      ],
      "inputs": {
        "root": "tmp/QF_UFLRA",
        "logic": "QF_UFLRA",
        "count": 1284,
        "timeout_seconds": 5,
        "manifest": null
      },
      "artifacts": {
        "candidate_results": "remote:primo-lra-euf-filter-5e7c24e/results/qf-uflra-full-lra-euf-filter-candidate-f7c8bd7-5s/shard-*.csv",
        "candidate_logs": "remote:primo-lra-euf-filter-5e7c24e/logs/primo-qfuflra-mine-119515-*.{out,err}",
        "z3_results": "results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv",
        "default_partial_results": "remote:primo-lra-euf-filter-5e7c24e/results/qf-uflra-full-lra-euf-filter-default-f7c8bd7-5s/"
      },
      "summary": {
        "candidate_final_scan": {
          "total": 1284,
          "solved": 1144,
          "timeout": 140,
          "error": 0,
          "wrong": 3,
          "par2": 1837.467774,
          "lra_to_euf_equalities": 10173,
          "lra_to_euf_mergeable_skipped": 9916,
          "lra_to_euf_forbidden_forced": 0,
          "candidate_final_scan_equalities": 10173,
          "candidate_final_scan_fallbacks": 0
        },
        "z3_reused_baseline": {
          "total": 1284,
          "solved": 1234,
          "timeout": 50,
          "wrong": 0,
          "par2": 758.708455
        },
        "wrong_rows": [
          {
            "file": "tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_30_0600_10_18.smt2",
            "primo_candidate": "sat",
            "z3": "unsat",
            "status": "unsat"
          },
          {
            "file": "tmp/QF_UFLRA/mathsat/RandomDecoupled/pb_real_40_80_60_01.smt2",
            "primo_candidate": "sat",
            "z3": "unsat",
            "status": "unsat"
          },
          {
            "file": "tmp/QF_UFLRA/FFT/smtlib.624916.smt2",
            "primo_candidate": "sat",
            "z3": "unsat",
            "status": "unsat"
          }
        ],
        "local_default_repro": {
          "binary_git": "676b7af",
          "note": "HEAD f7c8bd7 changes SLURM prep/docs only; local default returned sat on the same checked MathSAT/FFT unsat rows, so the default filter path is also under suspicion."
        }
      },
      "outcome": "Rejected as performance evidence. The broad run found wrong answers after only the candidate-final array completed, and local repro showed the default filter path can also return sat for the same unsat benchmark rows. Stop performance work, preserve these rows as regressions, and fix or disable the unsound LRA-to-EUF mergeable-skipping path before rerunning benchmarks.",
      "evidence_status": "rejected-wrong-answer"
    },
    {
      "id": "2026-08-05-qfuflra-mergeable-forced-repair-local-gate",
      "started_at": "2026-08-05T21:30:00+02:00",
      "recorded_at": "2026-08-05T21:55:00+02:00",
      "kind": "implementation-validation",
      "scope": "Conservative repair for unsound LRA-to-EUF mergeable equality skipping",
      "commit": "working-tree-after-f7c8bd7",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "environment": {
        "type": "local",
        "host": "workspace",
        "slurm_job_id": null
      },
      "command": "cmake --build build --target primo_qf_lra_solver_tests primo -j4 && ./build/primo_qf_lra_solver_tests; make lint; make docs; make check; make asan-test; clang-tidy -p build src/smt/check_sat.cpp tests/unit/qf_lra_solver_tests.cpp --quiet; PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --ref z3 --count 1000 --seed 20260807 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-mergeable-forced-default-20260807; PATH=\"$PWD/contrib/local/bin:$PATH\" python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--qf-uflra-candidate-final-scan --ref z3 --count 1000 --seed 20260808 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-mergeable-forced-candidate-final-20260808; compared benchmarks/seeds/qf_uflra/*.smt2 with ./build/primo --quiet and contrib/local/bin/z3",
      "solver": {
        "name": "Primo",
        "argv": "default and --qf-uflra-candidate-final-scan"
      },
      "references": [
        {
          "name": "z3",
          "argv": "contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py",
        "logic": "QF_UFLRA",
        "shape": "mixed",
        "count_per_profile": 1000,
        "seeds": {
          "default": 20260807,
          "candidate_final_scan": 20260808
        },
        "timeout_seconds": 5,
        "tracked_seed_corpus": "benchmarks/seeds/qf_uflra"
      },
      "artifacts": {
        "default_fuzz_summary": "fuzz-results/qf_uflra-mergeable-forced-default-20260807/summary.csv",
        "candidate_final_fuzz_summary": "fuzz-results/qf_uflra-mergeable-forced-candidate-final-20260808/summary.csv",
        "tracked_seed": "benchmarks/seeds/qf_uflra/real_congruence_forced_unsat.smt2"
      },
      "summary": {
        "focused_qf_uflra_unit_tests": "pass",
        "make_lint": "pass",
        "make_docs": "pass",
        "make_check": "pass, 13/13 tests",
        "make_asan_test": "pass, 13/13 tests",
        "clang_tidy_scoped": "pass",
        "tracked_seed_corpus": {
          "total": 1,
          "pass": 1,
          "wrong": 0
        },
        "default_fuzz": {
          "total": 1000,
          "pass": 1000,
          "wrong": 0,
          "crash": 0,
          "timeout": 0,
          "sat": 721,
          "unsat": 279
        },
        "candidate_final_scan_fuzz": {
          "total": 1000,
          "pass": 1000,
          "wrong": 0,
          "crash": 0,
          "timeout": 0,
          "sat": 719,
          "unsat": 281
        },
        "wrong_row_spot_check_after_repair": {
          "mathsat_random_coupled": "Primo unknown, Z3 unsat",
          "mathsat_random_decoupled": "Primo unknown, Z3 unsat",
          "fft": "Primo unsat, Z3 unsat"
        }
      },
      "outcome": "Accepted as local correctness evidence for the conservative repair. EUF-mergeable LRA-implied equalities are no longer accepted as internal model equalities; they are counted by :no.interface.lra-to-euf-equalities-euf-mergeable-forced and routed through guarded SAT-visible equality clauses. This fixes the minimized regression and removes wrong answers on the three rejected full-run rows in local spot checks, but it is expected to lose the attempted performance gain and needs a fresh SLURM benchmark before any performance claim.",
      "evidence_status": "current-local"
    },
    {
      "id": "2026-08-06-qfuflra-generated-fuzz-slurm-119533",
      "started_at": "2026-08-05T22:55:00+02:00",
      "recorded_at": "2026-08-06T07:45:00+02:00",
      "kind": "fuzz",
      "scope": "SLURM generated mixed QF_UFLRA fuzz gate for default and candidate-final profiles after mergeable-forced repair",
      "commit": "4631aef",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "environment": {
        "type": "slurm",
        "host": "cluster",
        "remote_workspace": "primo-qfuflra-overnight-4631aef",
        "slurm_job_id": "119533"
      },
      "command": "sbatch --array=0-7 qfuflra-overnight-generated-4631aef.sbatch with PRIMO_FUZZ_COUNT=1250, PRIMO_FUZZ_SEED_BASE=202608090; tasks 0-3 ran default, tasks 4-7 ran --qf-uflra-candidate-final-scan; reference contrib/local/bin/z3",
      "solver": {
        "name": "Primo",
        "argv": "build-slurm-rel/primo; candidate tasks add --qf-uflra-candidate-final-scan"
      },
      "references": [
        {
          "name": "z3",
          "argv": "contrib/local/bin/z3"
        }
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py",
        "logic": "QF_UFLRA",
        "shape": "mixed",
        "seed_range": "202608090..202608097",
        "count_per_task": 1250,
        "tasks_per_profile": 4,
        "count_per_profile": 5000,
        "timeout_seconds": 5
      },
      "artifacts": {
        "summary": "remote:primo-qfuflra-overnight-4631aef/slurm-results/qf_uflra-generated-gate-4631aef/{default,candidate-final}/task-*/summary.csv",
        "logs": "remote:primo-qfuflra-overnight-4631aef/slurm_logs/primo-qfuflra-gen-119533-*.{out,err}",
        "bugs": null
      },
      "summary": {
        "default": {
          "total": 5000,
          "pass": 5000,
          "wrong": 0,
          "crash": 0,
          "timeout": 0,
          "unsupported": 0,
          "reference_disagreement": 0
        },
        "candidate_final_scan": {
          "total": 5000,
          "pass": 5000,
          "wrong": 0,
          "crash": 0,
          "timeout": 0,
          "unsupported": 0,
          "reference_disagreement": 0
        }
      },
      "outcome": "Accepted generated-fuzz evidence for the exact default and candidate-final option sets at commit 4631aef. This does not by itself validate real benchmark mutation coverage.",
      "evidence_status": "current-slurm"
    },
    {
      "id": "2026-08-06-qfuflra-yinyang-infra-failures-119534-119544",
      "started_at": "2026-08-05T22:55:00+02:00",
      "recorded_at": "2026-08-06T07:55:00+02:00",
      "kind": "fuzz-infrastructure-triage",
      "scope": "Failed QF_UFLRA YinYang/typefuzz SLURM attempts before solver mutation fuzzing completed",
      "commit": "4631aef",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "environment": {
        "type": "slurm",
        "host": "cluster",
        "remote_workspace": "primo-qfuflra-overnight-4631aef",
        "slurm_job_ids": [
          "119534",
          "119544"
        ]
      },
      "command": "119534 used an sbatch that tried to pip install git+https://github.com/MikolasJanota/yinyang.git from compute nodes; 119544 used a preinstalled venv but called scripts/yinyang_fuzz.sh without a task-local YinYang log directory. Both failed before yielding correctness evidence. Full benchmark jobs 119535 and 119545 were dependency-cancelled.",
      "solver": {
        "name": "Primo",
        "argv": "default and --qf-uflra-candidate-final-scan, not reached for 119534; 119544 failed in harness before useful coverage"
      },
      "references": [
        {
          "name": "z3",
          "argv": "contrib/local/bin/z3 model_validate=true"
        }
      ],
      "inputs": {
        "logic": "QF_UFLRA",
        "seed_corpus": "remote:primo-qfuflra-overnight-4631aef/slurm-results/qf_uflra-leaf-and-regression-seeds",
        "seed_count": 19,
        "iterations": 200,
        "timeout_seconds": 8
      },
      "artifacts": {
        "logs": "remote:primo-qfuflra-overnight-4631aef/slurm_logs/primo-qfuflra-yy-119534-*.{out,err}; remote:primo-qfuflra-overnight-4631aef/slurm_logs/primo-qfuflra-yy2-119544-*.{out,err}",
        "bugs": "remote:primo-qfuflra-overnight-4631aef/slurm-results/qf_uflra-yinyang-4631aef* (empty or absent)",
        "dependent_benchmarks": "119535 and 119545 cancelled by dependency"
      },
      "summary": {
        "job_119534": "failed installing yinyang from compute nodes with network unreachable / github timeout; no bug files",
        "job_119544": "one task failed immediately with typefuzz 'log folder cannot be created'; no bug files from failed task",
        "generated_fuzz_job_119533": "clean and recorded separately",
        "full_benchmark": "not run because mutation gate did not pass"
      },
      "outcome": "Rejected as correctness evidence. Root cause was harness misuse: the QF_UFLRA run did not use the existing login-node make contrib-yinyang provisioning and did not isolate YinYang log directories per task. scripts/yinyang_fuzz.sh and checked-in SLURM templates were updated after this triage.",
      "evidence_status": "rejected-infrastructure"
    },
    {
      "id": "2026-08-06-qfuflra-yinyang-rerun-submitted-119547",
      "started_at": "2026-08-06T07:48:00+02:00",
      "recorded_at": "2026-08-06T07:55:00+02:00",
      "kind": "fuzz",
      "scope": "Replacement QF_UFLRA YinYang/typefuzz real-seed mutation gate currently running after preinstalling the pinned fork",
      "commit": "4631aef",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "environment": {
        "type": "slurm",
        "host": "cluster",
        "remote_workspace": "primo-qfuflra-overnight-4631aef",
        "slurm_job_id": "119547",
        "dependent_job_id": "119548"
      },
      "command": "Preinstalled .venv-yinyang on the login node from MikolasJanota/yinyang commit 04c8618, then submitted qfuflra-overnight-yinyang-direct-4631aef.sbatch. Task 0 runs build-slurm-rel/primo --quiet; task 1 runs build-slurm-rel/primo --quiet --qf-uflra-candidate-final-scan; reference contrib/local/bin/z3 model_validate=true. Dependent full 60s QF_UFLRA benchmark job 119548 waits on afterok:119547.",
      "solver": {
        "name": "Primo",
        "argv": "default and --qf-uflra-candidate-final-scan"
      },
      "references": [
        {
          "name": "z3",
          "argv": "contrib/local/bin/z3 model_validate=true"
        }
      ],
      "inputs": {
        "logic": "QF_UFLRA",
        "seed_corpus": "remote:primo-qfuflra-overnight-4631aef/slurm-results/qf_uflra-leaf-and-regression-seeds",
        "seed_count": 19,
        "iterations": 200,
        "timeout_seconds": 8,
        "wall_seconds": 27000
      },
      "artifacts": {
        "logs": "remote:primo-qfuflra-overnight-4631aef/slurm_logs/primo-qfuflra-yy3-119547-*.{out,err}",
        "bugs": "remote:primo-qfuflra-overnight-4631aef/slurm-results/qf_uflra-yinyang-4631aef-direct/{default,candidate-final}/bugs",
        "dependent_benchmark": "remote:primo-qfuflra-overnight-4631aef/slurm-results/qf_uflra-full-60s-4631aef-direct, job 119548"
      },
      "summary": {
        "status_at_recording": "119547_0 and 119547_1 running; 119548 pending on dependency",
        "observed_progress": "both tasks started typefuzz over 19 seeds; no final pass/fail result yet"
      },
      "outcome": "Running, not yet accepted evidence. Do not use the dependent full benchmark as performance evidence unless this mutation gate exits cleanly with zero bug triggers.",
      "evidence_status": "current-slurm-running"
    },
    {
      "id": "2026-08-06-qfuflra-yinyang-rerun-complete-119547",
      "started_at": "2026-08-06T07:48:00+02:00",
      "recorded_at": "2026-08-06T11:40:00+02:00",
      "kind": "fuzz",
      "scope": "Completed QF_UFLRA YinYang/typefuzz real-seed mutation gate after preinstalling the pinned fork",
      "commit": "4631aef",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "environment": {
        "type": "slurm",
        "host": "cluster",
        "remote_workspace": "primo-qfuflra-overnight-4631aef",
        "slurm_job_id": "119547"
      },
      "command": "qfuflra-overnight-yinyang-direct-4631aef.sbatch; task 0: build-slurm-rel/primo --quiet; task 1: build-slurm-rel/primo --quiet --qf-uflra-candidate-final-scan; reference contrib/local/bin/z3 model_validate=true; typefuzz from .venv-yinyang installed from MikolasJanota/yinyang commit 04c8618; -kl and -hd enabled",
      "solver": {
        "name": "Primo",
        "argv": "default and --qf-uflra-candidate-final-scan"
      },
      "references": [
        {
          "name": "z3",
          "argv": "contrib/local/bin/z3 model_validate=true"
        }
      ],
      "inputs": {
        "logic": "QF_UFLRA",
        "seed_corpus": "remote:primo-qfuflra-overnight-4631aef/slurm-results/qf_uflra-leaf-and-regression-seeds",
        "seed_count": 19,
        "iterations": 200,
        "timeout_seconds": 8,
        "wall_seconds": 27000,
        "seed_coverage": "5 leaf families plus the committed regression and three previous wrong-answer rows"
      },
      "artifacts": {
        "logs": "remote:primo-qfuflra-overnight-4631aef/slurm_logs/primo-qfuflra-yy3-119547-*.{out,err}",
        "bugs": "remote:primo-qfuflra-overnight-4631aef/slurm-results/qf_uflra-yinyang-4631aef-direct/{default,candidate-final}/bugs"
      },
      "summary": {
        "default": {
          "state": "COMPLETED",
          "exit_code": "0:0",
          "elapsed": "01:44:29",
          "seeds_processed": 19,
          "valid_seeds": 19,
          "invalid_seeds": 0,
          "bug_triggers": 0,
          "bug_files": 0
        },
        "candidate_final_scan": {
          "state": "COMPLETED",
          "exit_code": "0:0",
          "elapsed": "01:28:07",
          "seeds_processed": 19,
          "valid_seeds": 19,
          "invalid_seeds": 0,
          "bug_triggers": 0,
          "bug_files": 0
        }
      },
      "outcome": "Accepted real-seed mutation evidence for the exact default and candidate-final option sets at commit 4631aef. Together with job 119533, this clears the intended QF_UFLRA fuzz gate for running the dependent full benchmark.",
      "evidence_status": "current-slurm"
    },
    {
      "id": "2026-08-06-qfuflra-full-60s-infra-fail-119548",
      "started_at": "2026-08-06T09:32:00+02:00",
      "recorded_at": "2026-08-06T11:40:00+02:00",
      "kind": "benchmark-infrastructure-triage",
      "scope": "Dependent full 60s QF_UFLRA comparison failed before running benchmark rows due to temporary sbatch argument passing",
      "commit": "4631aef",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "environment": {
        "type": "slurm",
        "host": "cluster",
        "remote_workspace": "primo-qfuflra-overnight-4631aef",
        "slurm_job_id": "119548"
      },
      "command": "qfuflra-overnight-full-compare-4631aef.sbatch attempted to pass --quiet --stats as part of bench_qf_uf_full.py --solver nargs, causing argparse to reject them as harness options. Both array tasks exited 2 in about one second.",
      "solver": {
        "name": "Primo",
        "argv": "default and --qf-uflra-candidate-final-scan, not reached for benchmark rows"
      },
      "references": [],
      "inputs": {
        "root": "tmp/QF_UFLRA",
        "logic": "QF_UFLRA",
        "count": 1284,
        "timeout_seconds": 60
      },
      "artifacts": {
        "logs": "remote:primo-qfuflra-overnight-4631aef/slurm_logs/primo-qfuflra-full-119548-*.{out,err}",
        "results": "remote:primo-qfuflra-overnight-4631aef/slurm-results/qf_uflra-full-60s-4631aef-direct (empty)"
      },
      "summary": {
        "default": {
          "state": "FAILED",
          "exit_code": "2:0",
          "elapsed": "00:00:01",
          "benchmark_rows_run": 0
        },
        "candidate_final_scan": {
          "state": "FAILED",
          "exit_code": "2:0",
          "elapsed": "00:00:01",
          "benchmark_rows_run": 0
        }
      },
      "outcome": "Rejected as benchmark evidence. A corrected full comparison was submitted as job 119551 using --solver-arg for Primo options.",
      "evidence_status": "rejected-infrastructure"
    },
    {
      "id": "2026-08-06-qfuflra-full-60s-rerun-submitted-119551",
      "started_at": "2026-08-06T11:39:00+02:00",
      "recorded_at": "2026-08-06T11:40:00+02:00",
      "kind": "benchmark",
      "scope": "Corrected full 1284-file QF_UFLRA 60s SLURM comparison, default and candidate-final profiles",
      "commit": "4631aef",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "environment": {
        "type": "slurm",
        "host": "cluster",
        "remote_workspace": "primo-qfuflra-overnight-4631aef",
        "slurm_job_id": "119551"
      },
      "command": "qfuflra-full-compare-fixed-4631aef.sbatch; task 0 default uses build-slurm-rel/primo --quiet --stats; task 1 candidate uses build-slurm-rel/primo --quiet --stats --qf-uflra-candidate-final-scan; options are passed to bench_qf_uf_full.py through --solver-arg; timeout 60s",
      "solver": {
        "name": "Primo",
        "argv": "default: build-slurm-rel/primo --quiet --stats; candidate: build-slurm-rel/primo --quiet --stats --qf-uflra-candidate-final-scan"
      },
      "references": [],
      "inputs": {
        "root": "tmp/QF_UFLRA",
        "logic": "QF_UFLRA",
        "count": 1284,
        "timeout_seconds": 60
      },
      "artifacts": {
        "default_summary": "remote:primo-qfuflra-overnight-4631aef/slurm-results/qf_uflra-full-60s-4631aef-fixed/default-summary.csv",
        "default_results": "remote:primo-qfuflra-overnight-4631aef/slurm-results/qf_uflra-full-60s-4631aef-fixed/default.csv",
        "candidate_summary": "remote:primo-qfuflra-overnight-4631aef/slurm-results/qf_uflra-full-60s-4631aef-fixed/candidate-final-summary.csv",
        "candidate_results": "remote:primo-qfuflra-overnight-4631aef/slurm-results/qf_uflra-full-60s-4631aef-fixed/candidate-final.csv",
        "logs": "remote:primo-qfuflra-overnight-4631aef/slurm_logs/primo-qfuflra-full2-119551-*.{out,err}"
      },
      "summary": {
        "status_at_recording": "119551_0 and 119551_1 running after about 14 seconds; no final benchmark result yet"
      },
      "outcome": "Running, not yet accepted evidence. The corrected benchmark should be summarized after completion and checked for wrong rows before performance claims.",
      "evidence_status": "current-slurm-running"
    },
    {
      "id": "2026-08-06-qfuflra-full-60s-running-progress-119551",
      "started_at": "2026-08-06T11:39:00+02:00",
      "recorded_at": "2026-08-06T14:30:00+02:00",
      "kind": "benchmark-progress",
      "scope": "Partial progress check for corrected full 1284-file QF_UFLRA 60s SLURM comparison",
      "commit": "4631aef",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "environment": {
        "type": "slurm",
        "host": "cluster",
        "remote_workspace": "primo-qfuflra-overnight-4631aef",
        "slurm_job_id": "119551"
      },
      "command": "Direct SSH to local-network SLURM head node; parsed slurm_logs/primo-qfuflra-full2-119551-*.out for completed row lines and compared reported sat/unsat answers against SMT-LIB :status in tmp/QF_UFLRA. The job is still running and no CSV has been written yet because bench_qf_uf_full.py writes CSVs at process completion.",
      "solver": {
        "name": "Primo",
        "argv": "default: build-slurm-rel/primo --quiet --stats; candidate: build-slurm-rel/primo --quiet --stats --qf-uflra-candidate-final-scan"
      },
      "references": [],
      "inputs": {
        "root": "tmp/QF_UFLRA",
        "logic": "QF_UFLRA",
        "count": 1284,
        "timeout_seconds": 60
      },
      "artifacts": {
        "stdout_logs": "remote:primo-qfuflra-overnight-4631aef/slurm_logs/primo-qfuflra-full2-119551-*.out",
        "stderr_logs": "remote:primo-qfuflra-overnight-4631aef/slurm_logs/primo-qfuflra-full2-119551-*.err",
        "expected_results": "SMT-LIB :status fields in remote tmp/QF_UFLRA files",
        "csv_results": "not yet written at recording time"
      },
      "summary": {
        "slurm_state": "119551_0 and 119551_1 RUNNING at elapsed 02:50:57 of 08:00:00",
        "default": {
          "processed_rows": 591,
          "total_rows": 1284,
          "ok": 451,
          "timeout": 140,
          "sat": 290,
          "unsat": 161,
          "unknown": 140,
          "partial_elapsed_sum_seconds": 10159.902,
          "partial_wrong": 0,
          "last_file": "tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_30_0300_10_16.smt2"
        },
        "candidate_final_scan": {
          "processed_rows": 723,
          "total_rows": 1284,
          "ok": 574,
          "timeout": 149,
          "sat": 371,
          "unsat": 203,
          "unknown": 149,
          "partial_elapsed_sum_seconds": 10128.08,
          "partial_wrong": 0,
          "last_file": "tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_40_0600_10_28.smt2"
        }
      },
      "outcome": "Running, not accepted final benchmark evidence. The long runtime is explained by an unsharded temporary full-run script: each of the two profile tasks is running the full 1284-file manifest serially at a 60s timeout, and CSV summaries will appear only when tasks finish. Partial processed prefixes show no wrong answers so far.",
      "evidence_status": "current-slurm-running"
    },
    {
      "id": "2026-08-06-qfuflra-full-60s-candidate-complete-119551",
      "started_at": "2026-08-06T11:39:00+02:00",
      "recorded_at": "2026-08-06T14:50:00+02:00",
      "kind": "benchmark-progress",
      "scope": "Completed candidate-final array and still-running default array for the full 1284-file QF_UFLRA 60s SLURM comparison",
      "commit": "4631aef",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "environment": {
        "type": "slurm",
        "host": "cluster",
        "remote_workspace": "primo-qfuflra-overnight-4631aef",
        "slurm_job_id": "119551"
      },
      "command": "Direct local-network SSH status check; read candidate-final-summary.csv after task 119551_1 completed and parsed durable stdout progress for still-running task 119551_0",
      "solver": {
        "name": "Primo",
        "argv": "default: build-slurm-rel/primo --quiet --stats; candidate: build-slurm-rel/primo --quiet --stats --qf-uflra-candidate-final-scan"
      },
      "references": [],
      "inputs": {
        "root": "tmp/QF_UFLRA",
        "logic": "QF_UFLRA",
        "count": 1284,
        "timeout_seconds": 60
      },
      "artifacts": {
        "candidate_summary": "remote:primo-qfuflra-overnight-4631aef/slurm-results/qf_uflra-full-60s-4631aef-fixed/candidate-final-summary.csv",
        "candidate_results": "remote:primo-qfuflra-overnight-4631aef/slurm-results/qf_uflra-full-60s-4631aef-fixed/candidate-final.csv",
        "default_stdout": "remote:primo-qfuflra-overnight-4631aef/slurm_logs/primo-qfuflra-full2-119551-0.out"
      },
      "summary": {
        "candidate_final_scan": {
          "state": "COMPLETED",
          "exit_code": "0:0",
          "elapsed": "05:03:39",
          "total": 1284,
          "solved": 1013,
          "timeout": 271,
          "unsupported": 0,
          "checked": 1282,
          "wrong": 0,
          "par2": 34267.899005,
          "families": {
            "FFT": {
              "solved": 10,
              "timeout": 0
            },
            "cpachecker-bmc-svcomp14": {
              "solved": 4,
              "timeout": 11
            },
            "cpachecker-induction-svcomp14": {
              "solved": 246,
              "timeout": 113
            },
            "mathsat": {
              "solved": 753,
              "timeout": 147
            }
          },
          "selected_stats": {
            "candidate_final_scan_pairs": 4312141,
            "candidate_final_scan_skipped_pairs": 29108941,
            "candidate_final_scan_equalities": 398936,
            "interface_equality_clauses": 228847,
            "interface_equality_reason_lits": 34241886,
            "interface_equality_rechecks": 24364,
            "sat_solve_calls": 34974,
            "euf_checks": 34514,
            "shared_real_pairs": 34779350,
            "online_propagations": 0,
            "euf_diseq_ack_propagated": 0,
            "euf_dynamic_ack_sat_visible_clauses": 0
          }
        },
        "default": {
          "state": "RUNNING",
          "elapsed_at_recording": "05:09:56",
          "processed_rows": 1037,
          "ok": 794,
          "timeout": 243,
          "last_file": "tmp/QF_UFLRA/mathsat/RandomDecoupled/pb_real_40_80_60_52.smt2"
        }
      },
      "outcome": "Candidate-final is accepted as completed current evidence for diagnosing its own equality traffic, not as a completed profile comparison or default-promotion result. Its 34.2 million interface reason literals, 24,364 equality rechecks, quadratic shared-pair count, and zero mixed online-EUF/dynamic-Ackermann activity motivate the documented non-LRA-first roadmap. The default array is still running and must complete before solved/PAR2 comparison.",
      "evidence_status": "current-slurm-partial"
    },
    {
      "id": "2026-08-06-qfuflra-local-reasons-sparse-ledger-d22244d",
      "date": "2026-08-06",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "commit": "d22244d",
      "evidence_status": "current-local",
      "scope": "Local representative-case check for proof-local interface equality explanations and the sparse TheoryCombinationManager equality ledger. This is implementation evidence, not a corpus-level performance claim.",
      "commands": {
        "verification": "make check; make lint; make docs; make asan-test; make tidy; git diff --check",
        "representative": "build Release primo --quiet --stats --qf-uflra-candidate-final-scan tmp/QF_UFLRA/mathsat/RandomDecoupled/pb_real_40_80_60_36.smt2"
      },
      "environment": {
        "host": "local workspace",
        "build": "Release for representative timing; Debug/ASan for correctness gates",
        "sat_backend": "CaDiCaL 3.0.0 through IPASIR-UP"
      },
      "inputs": {
        "logic": "QF_UFLRA",
        "count": 1,
        "file": "tmp/QF_UFLRA/mathsat/RandomDecoupled/pb_real_40_80_60_36.smt2"
      },
      "summary": {
        "answer": "sat",
        "wall_seconds": 5.104,
        "shared_real_pairs": 3403,
        "materialized_pairs": 28,
        "interface_equality_clauses": 28,
        "interface_equality_reason_lits": 57,
        "interface_equality_fallback_reasons": 0,
        "interface_equality_rechecks": 5,
        "tests": "13/13 regular and 13/13 ASan"
      },
      "artifacts": {
        "raw_output": "local terminal only",
        "durable_evidence": "this run-log entry plus the committed benchmark path and command"
      },
      "outcome": "The manager retains the 3403-pair diagnostic count but materializes only 28 requested pairs. All 28 learned equality clauses use local EUF/LRA explanations and no whole-assignment fallback. Broader SLURM comparison remains separate."
    },
    {
      "id": "2026-08-06-qfuflra-online-euf-cbe1cfc-local",
      "date": "2026-08-06",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "commit": "cbe1cfc",
      "evidence_status": "current-local-experimental",
      "scope": "Local correctness, pure-theory regression, and 45-file on/off performance evaluation for the default-off mixed QF_UFLRA incremental EUF callback multiplexer.",
      "commands": {
        "verification": "make check; make lint; make docs; make asan-test; make tidy; make include-cleaner; clang-tidy -p build src/smt/check_sat.cpp; git diff --check",
        "fuzz": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--nelson-oppen-prop=online --solver-arg=--qf-uflra-online-euf --ref /workspace/contrib/local/bin/z3 --count 1000 --seed 2026080601 --timeout 5 --shape mixed --out fuzz-results/qf_uflra-mixed-online-euf-1000-post-review",
        "benchmark_default": "python3 scripts/bench_qf_uf_full.py --root tmp/QF_UFLRA --manifest benchmarks/qf_uflra-preprocessing-opportunity-sample.txt --repo /workspace --solver ./build-no-online-euf-rel/primo --solver-arg=--nelson-oppen-prop=online --timeout 3 --out results/qf_uflra-online-euf-ablation-cbe1cfc/default.csv --summary results/qf_uflra-online-euf-ablation-cbe1cfc/default-summary.csv --log-dir results/qf_uflra-online-euf-ablation-cbe1cfc/default-logs",
        "benchmark_optin": "same command with --solver-arg=--qf-uflra-online-euf and optin output paths",
        "pure_regression": "In-memory comparison script ran d22244d and cbe1cfc Release binaries with --quiet --stats, removed :time.* counters, and compared answers plus all remaining statistics on six QG-classification qg7 QF_UF files and five QF_LRA seeds."
      },
      "environment": {
        "host": "local workspace",
        "build": "Release benchmark binaries; Debug and ASan verification binaries",
        "sat_backend": "CaDiCaL 3.0.0 through IPASIR-UP",
        "reference": "Z3 from /workspace/contrib/local/bin/z3"
      },
      "inputs": {
        "benchmark_manifest": "benchmarks/qf_uflra-preprocessing-opportunity-sample.txt",
        "benchmark_count": 45,
        "benchmark_timeout_seconds": 3,
        "fuzz_generator": "scripts/qf_uflra_smoke_fuzz.py mixed shape",
        "fuzz_seed": 2026080601,
        "fuzz_count": 1000,
        "fuzz_timeout_seconds": 5
      },
      "summary": {
        "fuzz": {
          "pass": 1000,
          "wrong": 0,
          "crash": 0,
          "timeout": 0,
          "sat": 712,
          "unsat": 288
        },
        "benchmark_default": {
          "solved": 43,
          "timeout": 2,
          "wrong": 0,
          "par2": 20.660422
        },
        "benchmark_online_euf": {
          "solved": 43,
          "timeout": 2,
          "wrong": 0,
          "par2": 20.638966
        },
        "pure_regression": {
          "qf_uf_cases": 6,
          "qf_lra_cases": 5,
          "answer_differences": 0,
          "non_time_stat_differences": 0,
          "qf_uf_parent_total_us_range": [
            1358819,
            1594016
          ],
          "qf_uf_current_total_us_range": [
            1380498,
            1601153
          ]
        },
        "verification": "13/13 regular tests and 13/13 ASan tests; lint/docs/tidy passed. Advisory include-cleaner reported the existing whole-tree baseline, with no warning in changed check_sat.cpp, main.cpp, or qf_lra_solver_tests.cpp."
      },
      "artifacts": {
        "fuzz": "local:fuzz-results/qf_uflra-mixed-online-euf-1000-post-review/summary.csv",
        "benchmark_default": "local:results/qf_uflra-online-euf-ablation-cbe1cfc/default.csv",
        "benchmark_optin": "local:results/qf_uflra-online-euf-ablation-cbe1cfc/optin.csv",
        "benchmark_summaries": "local:results/qf_uflra-online-euf-ablation-cbe1cfc/{default,optin}-summary.csv"
      },
      "outcome": "The IPASIR-UP multiplexer, dynamic generated-equality registration, reason routing, and EUF external-clause routing are correctness-clean in this local gate. The 45-file solved count is unchanged and the PAR2 difference is negligible, so --qf-uflra-online-euf remains explicit, experimental, and default-off. A 5000-case SLURM generated gate plus real-seed mutation gate is still required before any promotion or headline performance claim."
    },
    {
      "id": "2026-08-06-qfuflra-online-euf-slurm-submitted-119928-119932",
      "date": "2026-08-06",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "commit": "9bf9fc1",
      "evidence_status": "current-slurm-correctness",
      "scope": "SLURM merge-grade generated and real-seed mutation correctness gates for the exact default-off mixed online-EUF option set.",
      "environment": {
        "host": "cluster",
        "remote_workspace": "primo-online-euf-9bf9fc1",
        "build": "Release",
        "sat_backend": "CaDiCaL 3.0.0-7b99c07 through IPASIR-UP",
        "reference": "Z3 5.0.0",
        "yinyang": "editable install from the pinned repository revision provisioned by contrib/install_yinyang.py"
      },
      "preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified git 9bf9fc1, the CaDiCaL version, Z3, typefuzz, and the linked Release binary immediately before sbatch. Both checked-in sbatch files passed scripts/slurm_validate_sbatch.py and bash -n locally.",
      "jobs": {
        "generated": {
          "slurm_job_id": "119928",
          "array": "0-3",
          "count_per_task": 1250,
          "total_count": 5000,
          "seed_base": 2026080607,
          "timeout_seconds": 5,
          "options": "--nelson-oppen-prop=online --qf-uflra-online-euf",
          "artifact": "remote:primo-online-euf-9bf9fc1/slurm-results/qf_uflra-online-euf-generated-5000/task-*/summary.csv",
          "logs": "remote:primo-online-euf-9bf9fc1/slurm_logs/primo-qf-uflra-fuzz-119928_*.{out,err}"
        },
        "mutation": {
          "slurm_job_id": "119932_2",
          "array_task": 2,
          "iterations": 1000,
          "wall_seconds": 27000,
          "solver_timeout_seconds": 8,
          "options": "--nelson-oppen-prop=online --qf-uflra-online-euf",
          "seeds": "benchmarks/seeds/qf_uflra",
          "artifact": "remote:primo-online-euf-9bf9fc1/fuzz-results/qf-uflra-online-euf-mutation/online-euf",
          "rolling_logs": "remote:primo-online-euf-9bf9fc1/fuzz-results/qf-uflra-online-euf-mutation/online-euf/logs"
        }
      },
      "completion": {
        "scheduler": "All four generated array tasks and mutation task 2 completed with exit code 0 in 81-82 seconds.",
        "generated": {
          "pass": 5000,
          "sat_or_unsat_matches": 5000,
          "wrong_answer": 0,
          "reference_disagreement": 0,
          "crash": 0,
          "timeout": 0,
          "unsupported": 0
        },
        "mutation": {
          "seeds_found": 1,
          "seeds_valid": 1,
          "seeds_invalid": 0,
          "requested_mutants": 1000,
          "successful_generations": 1000,
          "unsuccessful_generations": 0,
          "solver_calls": 1878,
          "bug_triggers": 0,
          "bug_files": 0
        }
      },
      "artifact_details": {
        "generated_summaries": "remote:primo-online-euf-9bf9fc1/slurm-results/qf_uflra-online-euf-generated-5000/task-{0,1,2,3}/summary.csv",
        "generated_logs": "remote:primo-online-euf-9bf9fc1/slurm_logs/primo-qf-uflra-fuzz-119928_*.{out,err}",
        "mutation_log": "remote:primo-online-euf-9bf9fc1/fuzz-results/qf-uflra-online-euf-mutation/online-euf/logs/typefuzz-2026-08-06-44:50-PM-UO0kQ.log",
        "mutation_scheduler_logs": "remote:primo-online-euf-9bf9fc1/slurm_logs/primo-qfuflra-mut-119932-2.{out,err}"
      },
      "limitations": "The generated gate is the merge-grade correctness evidence. The mutation gate is supplementary and thin because the checked-in QF_UFLRA mutation corpus contains one seed; its log also reports many ignore-list classifications even though typefuzz completed all 1000 requested generations.",
      "outcome": "Correctness gate passed for the explicit mixed online-EUF profile: 5000/5000 generated QF_UFLRA cases matched Z3 and the real-seed mutation task found no bug trigger. This establishes gate correctness evidence, not a performance win or readiness to enable the option by default."
    },
    {
      "id": "2026-08-06-qfuflra-online-euf-full-submitted-119933-119934",
      "date": "2026-08-06",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "commit": "9bf9fc1",
      "evidence_status": "rejected-wrong-answer",
      "scope": "Sharded full-corpus 60-second comparison of ordinary online Nelson-Oppen propagation against the explicit mixed online-EUF callback profile. Z3 is not rerun because the corpus and reference solver have not changed.",
      "environment": {
        "host": "cluster",
        "remote_workspace": "primo-online-euf-9bf9fc1",
        "build": "Release",
        "sat_backend": "CaDiCaL 3.0.0-7b99c07 through IPASIR-UP"
      },
      "preflight": "scripts/slurm_qf_uflra_model_mine.sbatch passed scripts/slurm_validate_sbatch.py and bash -n. Immediately before submission, scripts/slurm_prepare_benchmark_workspace.py --check-only used a detached local 9bf9fc1 worktree and verified the remote binary revision, CaDiCaL version, linkage, and available Z3 installation. The already-staged historical corpus was copied within the cluster and its 1284 SMT-LIB file count was verified.",
      "jobs": {
        "ordinary_online": {
          "slurm_job_id": "119933",
          "array": "0-7",
          "solver": "build-slurm-rel/primo --quiet --stats --nelson-oppen-prop=online",
          "artifact": "remote:primo-online-euf-9bf9fc1/results/qf-uflra-online-full-60s-9bf9fc1/shard-{0..7}.csv",
          "logs": "remote:primo-online-euf-9bf9fc1/logs/primo-qfuflra-online-119933-*.{out,err}"
        },
        "online_euf": {
          "slurm_job_id": "119934",
          "array": "0-7",
          "solver": "build-slurm-rel/primo --quiet --stats --nelson-oppen-prop=online --qf-uflra-online-euf",
          "artifact": "remote:primo-online-euf-9bf9fc1/results/qf-uflra-online-euf-full-60s-9bf9fc1/shard-{0..7}.csv",
          "logs": "remote:primo-online-euf-9bf9fc1/logs/primo-qfuflra-online-euf-119934-*.{out,err}"
        }
      },
      "inputs": {
        "logic": "QF_UFLRA",
        "root": "tmp/QF_UFLRA",
        "count": 1284,
        "families": [
          "FFT",
          "cpachecker-bmc-svcomp14",
          "cpachecker-induction-svcomp14",
          "mathsat"
        ],
        "timeout_seconds": 60,
        "shards_per_profile": 8,
        "task_time_limit": "04:00:00"
      },
      "baseline_context": {
        "historical_default_commit": "4631aef",
        "historical_default_solved": 959,
        "historical_default_timeout": 325,
        "historical_default_wrong": 0,
        "historical_candidate_final_solved": 1013,
        "historical_candidate_final_timeout": 271,
        "historical_candidate_final_wrong": 0,
        "note": "These historical results are context only. The direct decision is between the two concurrently submitted current profiles; existing run-log Z3 evidence will be reused rather than recomputed."
      },
      "completion": {
        "scheduler": "All sixteen shards completed with exit code 0 and empty stderr files.",
        "ordinary_online": {
          "rows": 1284,
          "solved": 1216,
          "timeout": 66,
          "unsupported": 2,
          "wrong_answer": 2,
          "par2": 8790.864115,
          "families": {
            "FFT": "10 solved / 10",
            "cpachecker-bmc-svcomp14": "7 solved / 15",
            "cpachecker-induction-svcomp14": "299 solved, 58 timeout, 2 unsupported / 359",
            "mathsat": "900 solved / 900"
          },
          "statistics": {
            "no.online.precreated-equality-atoms": 0,
            "no.online.lazy-equality-atoms-created": 32418,
            "no.online.propagations": 1434257,
            "sat.decisions": 12884088,
            "sat.solve-calls": 24045
          }
        },
        "online_euf": {
          "rows": 1284,
          "solved": 1216,
          "timeout": 66,
          "unsupported": 2,
          "wrong_answer": 1,
          "par2": 8751.370907,
          "families": {
            "FFT": "10 solved / 10",
            "cpachecker-bmc-svcomp14": "7 solved / 15",
            "cpachecker-induction-svcomp14": "299 solved, 58 timeout, 2 unsupported / 359",
            "mathsat": "900 solved / 900"
          },
          "statistics": {
            "no.online.euf-enabled-files": 1179,
            "no.online.euf-propagations": 456,
            "no.online.euf-propagation-files": 47,
            "no.online.euf-external-clauses": 601,
            "no.online.euf-external-clause-files": 127,
            "no.online.euf-generated-equalities-registered": 43196,
            "no.online.euf-generated-equality-registration-failures": 0,
            "no.online.euf-generated-equality-observation-failures": 0,
            "sat.decisions": 12615967,
            "sat.solve-calls": 23308
          }
        }
      },
      "wrong_answers": [
        {
          "file": "tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_30_0600_10_18.smt2",
          "sha256": "3b922f3b52029b8fb11691f792349b9502d0d3d73c798dc7ad8dc830c7c13802",
          "expected": "unsat",
          "z3": "unsat",
          "ordinary_online": "sat",
          "online_euf": "sat"
        },
        {
          "file": "tmp/QF_UFLRA/mathsat/RandomDecoupled/pb_real_40_80_60_01.smt2",
          "sha256": "de25cbe4e8ba7db7c5377b9652cde01dc95b32df1c44dfb6c82d33ab174c1d3d",
          "expected": "unsat",
          "z3": "unsat",
          "ordinary_online": "sat",
          "online_euf": "unsat"
        }
      ],
      "diagnosis": "The online policy skipped the broad final LRA implied-equality scan after any paired-bound equality was materialized. That condition is unsound: model separation can succeed even when a different omitted LRA equality makes an EUF pair congruent and contradictory. The generated gate did not contain this shape, and the one-seed mutation corpus was too thin to qualify the profile for broad evaluation.",
      "outcome": "Rejected as performance evidence because of wrong answers. No solved-count, PAR2, decision, or propagation difference from these jobs may support promotion. Restore mandatory complete final equality validation, preserve both exact wrong rows as regression seeds, and require an exact original-seed differential gate before any future broad benchmark."
    },
    {
      "id": "2026-08-06-qfuflra-online-final-scan-soundness-8b4af47-local",
      "date": "2026-08-06",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "commit": "8b4af47",
      "evidence_status": "current-local-merge-gate",
      "scope": "Correctness repair for the unsound online final LRA equality-scan skip, plus a deterministic original-seed gate that fails before mutation on wrong answers, timeouts, crashes, unsupported results, or declared-status mismatches.",
      "environment": {
        "host": "local workstation",
        "build": "Release for differential probes; Debug and ASan for repository tests",
        "solver_version": "primo 0.1.0, git 8b4af47",
        "sat_backend": "CaDiCaL 3.0.0-7b99c07 through IPASIR-UP",
        "reference": "Z3 5.0.0"
      },
      "implementation": {
        "final_validation": "Online mode again always runs the complete lra_implied_real_equalities scan unless the separate default-off candidate-final experiment is selected. The online skip/fallback/capped compatibility counters remain zero.",
        "regressions": "Both exact MathSAT wrong-answer inputs from jobs 119933/119934 and a compact non-paired congruence case are tracked under benchmarks/seeds/qf_uflra.",
        "gate": "scripts/check_solver_seed_corpus.py checks every original seed with the exact candidate options before scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch starts YinYang. Exact seeds use an independent 60-second default timeout."
      },
      "commands": {
        "focused": "./build/primo_qf_lra_solver_tests",
        "check": "make check",
        "asan": "make asan-test",
        "lint": "make lint",
        "docs": "make docs",
        "clang_tidy": "make tidy",
        "include_cleaner": "make include-cleaner",
        "sbatch_validation": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch && bash -n scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch",
        "ordinary_seed_gate": "PATH=$PWD/contrib/local/bin:$PATH python3 scripts/check_solver_seed_corpus.py --seeds benchmarks/seeds/qf_uflra --solver ./build-stats-release/primo --solver-arg=--quiet --solver-arg=--nelson-oppen-prop=online --ref z3 --ref-arg=-smt2 --timeout 60 --out fuzz-results/online-soundness-8b4af47-seeds.csv",
        "online_euf_seed_gate": "same command with --solver-arg=--qf-uflra-online-euf and output fuzz-results/online-euf-soundness-8b4af47-seeds.csv",
        "ordinary_generated": "PATH=$PWD/contrib/local/bin:$PATH python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build-stats-release/primo --solver-arg=--nelson-oppen-prop=online --ref z3 --count 1000 --seed 2026080613 --timeout 5 --shape mixed --out fuzz-results/online-soundness-8b4af47-2026080613",
        "online_euf_generated": "PATH=$PWD/contrib/local/bin:$PATH python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build-stats-release/primo --solver-arg=--nelson-oppen-prop=online --solver-arg=--qf-uflra-online-euf --ref z3 --count 1000 --seed 2026080614 --timeout 5 --shape mixed --out fuzz-results/online-euf-soundness-8b4af47-2026080614"
      },
      "results": {
        "exact_seeds_each_profile": {
          "pass": 4,
          "wrong_answer": 0,
          "timeout": 0,
          "crash": 0,
          "unsupported": 0,
          "status_mismatch": 0
        },
        "ordinary_generated": {
          "pass": 1000,
          "sat": 697,
          "unsat": 303,
          "wrong_answer": 0,
          "timeout": 0,
          "crash": 0,
          "unsupported": 0,
          "reference_disagreement": 0
        },
        "online_euf_generated": {
          "pass": 1000,
          "sat": 679,
          "unsat": 321,
          "wrong_answer": 0,
          "timeout": 0,
          "crash": 0,
          "unsupported": 0,
          "reference_disagreement": 0
        },
        "old_binary_control": "The strict four-seed gate against Release commit cbe1cfc fails with two disagreements: both preserved MathSAT inputs are reported sat while Z3 and their declared status report unsat."
      },
      "artifacts": {
        "ordinary_seed_summary": "local:fuzz-results/online-soundness-8b4af47-seeds.csv",
        "online_euf_seed_summary": "local:fuzz-results/online-euf-soundness-8b4af47-seeds.csv",
        "ordinary_generated": "local:fuzz-results/online-soundness-8b4af47-2026080613/summary.csv",
        "online_euf_generated": "local:fuzz-results/online-euf-soundness-8b4af47-2026080614/summary.csv"
      },
      "review": "Whole-tree clang-tidy completed without findings. The advisory include-cleaner reported the existing baseline warnings but none in the changed check_sat.cpp path. The solver-efficiency snapshot found no newly added hot-path pattern; this repair deliberately restores the existing complete scan and makes no performance claim.",
      "outcome": "Local correctness repair and merge-grade generated gate passed. A fresh SLURM generated and real-seed mutation gate for commit 8b4af47 remains required before rerunning broad performance evaluation."
    },
    {
      "id": "2026-08-07-qfuflra-online-soundness-slurm-120112-120121",
      "date": "2026-08-07",
      "branch": "nelson-oppen-online-lazy-ipasir-up",
      "commit": "aa81e02",
      "evidence_status": "current-slurm-complete",
      "scope": "Fresh SLURM correctness gate after restoring mandatory online final LRA equality validation. The generated arrays cover ordinary online and online+EUF; the mutation task checks every original regression seed before mutating compact seeds.",
      "environment": {
        "host": "cluster",
        "remote_workspace": "primo-online-euf-9bf9fc1",
        "build": "Release",
        "sat_backend": "CaDiCaL 3.0.0-7b99c07 through IPASIR-UP",
        "reference": "Z3 5.0.0",
        "yinyang": "editable pinned installation described by contrib/install_yinyang.py"
      },
      "preflight": "Both sbatch files passed scripts/slurm_validate_sbatch.py and bash -n. scripts/slurm_prepare_benchmark_workspace.py --check-only verified the exact binary revision, CaDiCaL, Z3, and typefuzz immediately before submission. A stale-object binary produced by a manual timestamp-preserving sync failed the new exact-seed gate before submission; it was not evaluated. The workspace was subsequently prepared at 0b9b2cd with the helper's --reuse-dependencies mode, which preserved contrib/local and rebuilt Primo from a clean build-slurm-rel tree.",
      "jobs": {
        "ordinary_generated": {
          "slurm_job_id": "120116",
          "array": "0-3",
          "commit": "aa81e02",
          "count_per_task": 1250,
          "total_count": 5000,
          "seed_base": 2026080615,
          "options": "--nelson-oppen-prop=online",
          "artifact": "remote:primo-online-euf-9bf9fc1/slurm-results/qf_uflra-online-soundness-aa81e02/task-*/summary.csv"
        },
        "online_euf_generated": {
          "slurm_job_id": "120112",
          "array": "0-3",
          "commit": "aa81e02",
          "count_per_task": 1250,
          "total_count": 5000,
          "seed_base": 2026080619,
          "options": "--nelson-oppen-prop=online --qf-uflra-online-euf",
          "artifact": "remote:primo-online-euf-9bf9fc1/slurm-results/qf_uflra-online-euf-soundness-aa81e02/task-*/summary.csv"
        },
        "rejected_mutation_setup": {
          "slurm_job_id": "120120_2",
          "commit": "aa81e02",
          "state": "cancelled after 00:09:53",
          "reason": "The 200000-byte mutation limit caused typefuzz to spend most of the allocation on a 25017-byte exact regression seed. Exact checking passed 4/4, but mutation throughput made this setup unsuitable as a bounded gate."
        },
        "compact_mutation": {
          "slurm_job_id": "120121_2",
          "commit": "0b9b2cd",
          "state": "completed, exit code 0, elapsed 00:05:25",
          "iterations_per_accepted_seed": 1000,
          "solver_timeout_seconds": 8,
          "exact_seed_timeout_seconds": 60,
          "mutation_file_size_limit_bytes": 1000,
          "options": "--nelson-oppen-prop=online --qf-uflra-online-euf",
          "artifact": "remote:primo-online-euf-9bf9fc1/fuzz-results/qf-uflra-online-euf-compact-0b9b2cd/online-euf",
          "note": "The exact pre-mutation gate passed all four original seeds. The mutation wrapper explicitly excludes the two 25-33 KB MathSAT inputs and mutates the two compact mechanism seeds."
        }
      },
      "completed_results": {
        "ordinary_generated": {
          "pass": 5000,
          "sat": 3508,
          "unsat": 1492,
          "wrong_answer": 0,
          "timeout": 0,
          "crash": 0,
          "unsupported": 0,
          "reference_disagreement": 0
        },
        "online_euf_generated": {
          "pass": 5000,
          "sat": 3553,
          "unsat": 1447,
          "wrong_answer": 0,
          "timeout": 0,
          "crash": 0,
          "unsupported": 0,
          "reference_disagreement": 0
        },
        "compact_mutation_exact_seed_gate": {
          "pass": 4,
          "wrong_answer": 0,
          "timeout": 0,
          "crash": 0,
          "unsupported": 0,
          "status_mismatch": 0
        },
        "compact_mutation": {
          "seeds_found": 4,
          "seeds_valid_for_mutation": 2,
          "seeds_intentionally_excluded_by_size": 2,
          "requested_mutants_per_valid_seed": 1000,
          "successful_generations": 2000,
          "unsuccessful_generations": 0,
          "solver_calls": 3828,
          "bug_triggers": 0,
          "bug_files": 0
        }
      },
      "outcome": "The repaired profiles passed both 5000-case generated SLURM gates. The online+EUF mutation task first passed all four exact regression seeds, then completed 2000 successful mutations across the two compact seeds with zero bug triggers. The correctness gate is complete; no replacement broad performance benchmark has been submitted yet."
    },
    {
      "id": "2026-08-07-qf-uflra-opportunity-45-3451af9",
      "date": "2026-08-07",
      "kind": "benchmark",
      "scope": "45-file QF_UFLRA preprocessing-opportunity comparison after the repaired online soundness gate",
      "commit": "3451af9",
      "host": "SLURM primo-slurm",
      "job_id": "120165",
      "manifest": "benchmarks/qf_uflra-preprocessing-opportunity-sample.txt",
      "count": 45,
      "timeout_seconds": 60,
      "command": "scripts/slurm_stage_manifest_files.py --root tmp/QF_UFLRA --manifest benchmarks/qf_uflra-preprocessing-opportunity-sample.txt; PRIMO_COMPARE_TIMEOUT=60 PRIMO_COMPARE_MANIFEST=benchmarks/qf_uflra-preprocessing-opportunity-sample.txt sbatch scripts/slurm_qf_uflra_candidate_final_scan_compare.sbatch",
      "artifact": "results/qf-uflra-opportunity-45-3451af9-rerun/{default,candidate,z3}{,-summary}.csv",
      "results": {
        "default": {
          "solved": 42,
          "timeouts": 3,
          "wrong_answers": 0,
          "sum_seconds": 533.59,
          "par2_seconds": 533.33
        },
        "candidate_final_scan": {
          "solved": 42,
          "timeouts": 3,
          "wrong_answers": 0,
          "sum_seconds": 246.2,
          "par2_seconds": 245.86,
          "arrangement_separations": 67,
          "arrangement_extra_atom_probes": 94,
          "candidate_pairs": 49150,
          "skipped_pairs": 200598,
          "candidate_equalities": 2133
        },
        "z3": {
          "solved": 45,
          "timeouts": 0,
          "wrong_answers": 0,
          "sum_seconds": 10.94,
          "par2_seconds": 10.94
        }
      },
      "remaining_timeout_rows": [
        "cpachecker-induction.Problem01_00_true-unreach-call.c.smt2",
        "cpachecker-induction.Problem14_60_false-unreach-call.c.smt2",
        "cpachecker-bmc.diskperf_false-unreach-call.i.cil.c.smt2"
      ],
      "evidence_status": "current",
      "outcome": "Candidate-final scan is a substantial targeted improvement in wall time and arrangement work, with identical solved count and no wrong answers. It does not solve the three CPAchecker timeout rows; the next performance investigation should focus on those rows rather than broadening this scan claim."
    },
    {
      "id": "2026-08-07-qf-uflra-bool-argument-generator-bc2acfc",
      "date": "2026-08-07",
      "kind": "fuzz",
      "scope": "QF_UFLRA Boolean-argument generator differential smoke",
      "commit": "working tree after bc2acfc",
      "host": "local workspace",
      "command": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 100 --seed 20260807 --timeout 5 --shape bool-arguments; python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 100 --seed 20260808 --timeout 5 --shape mixed",
      "results": {
        "bool_arguments": {
          "count": 100,
          "pass": 100,
          "wrong_answer": 0,
          "timeout": 0,
          "crash": 0,
          "unsupported": 0
        },
        "mixed": {
          "count": 100,
          "pass": 100,
          "wrong_answer": 0,
          "timeout": 0,
          "crash": 0,
          "unsupported": 0
        }
      },
      "artifact": "/tmp/qf-uflra-{bool-generator-3,mixed-generator-3}",
      "evidence_status": "local-only",
      "outcome": "The new dedicated and mixed generator shapes agree with Z3 on all 200 cases. A fresh SLURM merge gate is still required before campaign-level coverage claims."
    },
    {
      "id": "2026-08-07-qf-uflra-bool-bridge-local-verified",
      "date": "2026-08-07",
      "kind": "fuzz",
      "scope": "Boolean-domain EUF bridge regression and generator gate",
      "commit": "working tree",
      "host": "local workspace",
      "commands": [
        "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 1000 --seed 20260809 --timeout 5 --shape bool-arguments",
        "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 1000 --seed 20260810 --timeout 5 --shape mixed",
        "make check"
      ],
      "results": {
        "bool_arguments": {
          "count": 1000,
          "pass": 1000,
          "wrong_answer": 0,
          "unsupported": 0
        },
        "mixed": {
          "count": 1000,
          "pass": 1000,
          "wrong_answer": 0,
          "unsupported": 0
        },
        "ctest": {
          "tests": 13,
          "passed": 13
        }
      },
      "artifacts": [
        "/tmp/qf-uflra-bool-generator-fixed-4/summary.csv",
        "/tmp/qf-uflra-mixed-generator-fixed/summary.csv"
      ],
      "evidence_status": "local-only",
      "outcome": "The finite-domain Boolean bridge fixed the three minimized wrong-answer reproducers and passed both 1000-case differential gates. SLURM campaign validation remains required before promotion claims."
    },
    {
      "id": "2026-08-07-qf-uflra-bool-bridge-local-campaign",
      "date": "2026-08-07",
      "kind": "fuzz",
      "scope": "QF_UFLRA Boolean-argument campaign gate",
      "commit": "47fd382",
      "host": "local workspace",
      "command": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 3000 --seed 20260811 --timeout 5 --shape bool-arguments --out /tmp/qf-uflra-bool-generator-campaign-3000",
      "results": {
        "count": 3000,
        "pass": 3000,
        "wrong_answer": 0,
        "timeout": 0,
        "crash": 0,
        "unsupported": 0
      },
      "artifact": "/tmp/qf-uflra-bool-generator-campaign-3000/summary.csv",
      "evidence_status": "local-only",
      "outcome": "All 3000 generated Boolean-argument QF_UFLRA cases agreed with Z3. Direct cluster campaign remains unavailable because 10.35.125.63 timed out on direct SSH."
    },
    {
      "id": "2026-08-07-qf-uflra-bool-canonical-bridge-verified",
      "date": "2026-08-07",
      "kind": "fuzz",
      "scope": "Canonical SAT-linked Boolean-domain bridge regression gate",
      "commit": "working tree after 6de46b8",
      "host": "local workspace",
      "commands": [
        "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 1000 --seed 20260812 --timeout 5 --shape bool-arguments",
        "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 1000 --seed 20260813 --timeout 5 --shape mixed",
        "make check",
        "make asan-test"
      ],
      "results": {
        "bool_arguments": {
          "count": 1000,
          "pass": 1000,
          "wrong_answer": 0,
          "timeout": 0,
          "crash": 0,
          "unsupported": 0
        },
        "mixed": {
          "count": 1000,
          "pass": 1000,
          "wrong_answer": 0,
          "timeout": 0,
          "crash": 0,
          "unsupported": 0
        },
        "ctest": {
          "tests": 13,
          "passed": 13
        },
        "asan_ctest": {
          "tests": 13,
          "passed": 13
        }
      },
      "artifacts": [
        "/tmp/qf-uflra-bool-canonical-fixed-1000/summary.csv",
        "/tmp/qf-uflra-mixed-canonical-fixed-1000/summary.csv"
      ],
      "evidence_status": "local-only",
      "outcome": "The persistent true/false EUF bridge passed both differential gates and all regular and ASAN tests. An initial use-after-free in the term traversal was caught by ASAN on the first campaign attempt and fixed before these final results."
    },
    {
      "id": "2026-08-07-qf-uflra-bool-result-bridge-fixed",
      "date": "2026-08-07",
      "kind": "fuzz",
      "scope": "Boolean-valued UF result and nested/complement argument bridge regression",
      "commit": "working tree",
      "host": "local workspace",
      "commands": [
        "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 300 --seed 20260816 --timeout 5 --shape bool-arguments --out /tmp/qf-uflra-bool-extended-fixed-300",
        "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 3000 --seed 20260817 --timeout 5 --shape bool-arguments --out /tmp/qf-uflra-bool-extended-fixed-3000",
        "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 3000 --seed 20260818 --timeout 5 --shape mixed --out /tmp/qf-uflra-mixed-extended-fixed-3000",
        "make check"
      ],
      "results": {
        "focused_regression": {
          "count": 1,
          "pass": 1,
          "wrong_answer": 0
        },
        "bool_arguments_300": {
          "count": 300,
          "pass": 300,
          "wrong_answer": 0,
          "timeout": 0,
          "crash": 0
        },
        "bool_arguments_3000": {
          "count": 3000,
          "pass": 3000,
          "wrong_answer": 0,
          "timeout": 0,
          "crash": 0
        },
        "mixed_3000": {
          "count": 3000,
          "pass": 3000,
          "wrong_answer": 0,
          "timeout": 0,
          "crash": 0
        },
        "ctest": {
          "tests": 13,
          "passed": 13
        }
      },
      "artifacts": [
        "/tmp/qf-uflra-bool-extended-fixed-300/summary.csv",
        "/tmp/qf-uflra-bool-extended-fixed-3000/summary.csv",
        "/tmp/qf-uflra-mixed-extended-fixed-3000/summary.csv"
      ],
      "evidence_status": "local-only",
      "outcome": "The narrow bridge extension fixed the discovered Boolean-result/complement disagreement. The extended Boolean generator and broader mixed generator both passed with zero disagreements."
    },
    {
      "id": "2026-08-07-qf-uflra-recursive-boolean-proxies",
      "date": "2026-08-07",
      "kind": "fuzz",
      "scope": "Recursive nested Boolean formulas as UF arguments and equality operands",
      "commit": "working tree",
      "host": "local workspace",
      "commands": [
        "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 300 --seed 20260819 --timeout 5 --shape recursive-bool --out /tmp/qf-uflra-recursive-bool-proxy-300",
        "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 3000 --seed 20260820 --timeout 5 --shape recursive-bool --out /tmp/qf-uflra-recursive-bool-proxy-3000",
        "make check"
      ],
      "results": {
        "recursive_bool_300": {
          "count": 300,
          "pass": 300,
          "wrong_answer": 0,
          "unsupported": 0
        },
        "recursive_bool_3000": {
          "count": 3000,
          "pass": 3000,
          "wrong_answer": 0,
          "unsupported": 0
        },
        "ctest": {
          "tests": 13,
          "passed": 13
        }
      },
      "artifacts": [
        "/tmp/qf-uflra-recursive-bool-proxy-300/summary.csv",
        "/tmp/qf-uflra-recursive-bool-proxy-3000/summary.csv"
      ],
      "evidence_status": "local-only",
      "outcome": "Nested Boolean formulas are now accepted as opaque EUF proxy terms when used as equality operands or UF arguments. Both recursive differential gates passed with zero disagreements and zero unsupported cases."
    },
    {
      "id": "2026-08-07-qf-uflra-boolean-proxy-mixed-regression",
      "date": "2026-08-07",
      "kind": "fuzz",
      "scope": "Mixed QF_UFLRA regression after Boolean proxy flat-term support",
      "commit": "working tree",
      "host": "local workspace",
      "command": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 1000 --seed 20260821 --timeout 5 --shape mixed --out /tmp/qf-uflra-mixed-proxy-1000",
      "results": {
        "count": 1000,
        "pass": 1000,
        "wrong_answer": 0,
        "timeout": 0,
        "crash": 0,
        "unsupported": 0
      },
      "artifact": "/tmp/qf-uflra-mixed-proxy-1000/summary.csv",
      "evidence_status": "local-only",
      "outcome": "The Boolean proxy support introduced no disagreement or unsupported case in the broader mixed generator."
    },
    {
      "id": "2026-08-07-qf-uflra-opensmt-reference-probe",
      "date": "2026-08-07",
      "kind": "reference-solver",
      "scope": "OpenSMT v2.9.2 probe on recursive Boolean QF_UFLRA cases",
      "commit": "ee03539",
      "host": "local workspace",
      "command": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/opensmt --count 100 --seed 20260822 --timeout 5 --shape recursive-bool --out /tmp/qf-uflra-recursive-opensmt-100",
      "results": {
        "count": 100,
        "pass": 80,
        "reference_disagreement": 20,
        "wrong_answer": 0,
        "unsupported": 0
      },
      "artifact": "/tmp/qf-uflra-recursive-opensmt-100/summary.csv",
      "evidence_status": "local-only",
      "outcome": "OpenSMT is installed and usable as an optional executable reference, but it disagreed with both Primo and Z3 on 20/100 recursive Boolean cases. It is therefore not treated as an authoritative oracle for this QF_UFLRA Boolean campaign without per-case triage."
    },
    {
      "id": "2026-08-07-qf-uflra-opensmt-witness-cvc5-triage",
      "date": "2026-08-07",
      "kind": "reference-solver",
      "scope": "OpenSMT disagreement witness checked against current Primo, Z3, and cvc5",
      "commit": "ee03539",
      "host": "local workspace",
      "commands": [
        "./build/primo bugs/opensmt-qf-uflra-boolean-disagreement/witness.smt2",
        "contrib/local/bin/z3 bugs/opensmt-qf-uflra-boolean-disagreement/witness.smt2",
        "contrib/local/bin/opensmt bugs/opensmt-qf-uflra-boolean-disagreement/witness.smt2",
        "contrib/local/bin/cvc5 bugs/opensmt-qf-uflra-boolean-disagreement/witness.smt2"
      ],
      "results": {
        "primo": "unsat",
        "z3": "unsat",
        "opensmt": "sat",
        "cvc5": "unsat"
      },
      "artifact": "bugs/opensmt-qf-uflra-boolean-disagreement/",
      "evidence_status": "local-only",
      "outcome": "The witness is confirmed as an OpenSMT disagreement: Primo, Z3, cvc5, and Yices agree on unsat, while OpenSMT reports sat."
    },
    {
      "id": "2026-08-07-qf-uflra-opensmt-witness-yices-triage",
      "date": "2026-08-07",
      "kind": "reference-solver",
      "scope": "OpenSMT disagreement witness checked against Yices 2.7.0",
      "commit": "f6b7925",
      "host": "local workspace",
      "command": "contrib/local/bin/yices-smt2 bugs/opensmt-qf-uflra-boolean-disagreement/witness.smt2",
      "results": {
        "yices": "unsat"
      },
      "artifact": "bugs/opensmt-qf-uflra-boolean-disagreement/",
      "evidence_status": "local-only",
      "outcome": "Yices 2.7.0 agrees with Primo, Z3, and cvc5 on unsat, strengthening the classification as an OpenSMT disagreement."
    },
    {
      "id": "2026-08-07-qf-uflra-opensmt-witness-minimized",
      "date": "2026-08-07",
      "kind": "reference-solver",
      "scope": "Delta-minimized OpenSMT disagreement witness",
      "commit": "working tree",
      "host": "local workspace",
      "commands": [
        "./build/primo bugs/opensmt-qf-uflra-boolean-disagreement/witness.smt2",
        "contrib/local/bin/z3 bugs/opensmt-qf-uflra-boolean-disagreement/witness.smt2",
        "contrib/local/bin/opensmt bugs/opensmt-qf-uflra-boolean-disagreement/witness.smt2",
        "contrib/local/bin/cvc5 bugs/opensmt-qf-uflra-boolean-disagreement/witness.smt2",
        "contrib/local/bin/yices-smt2 bugs/opensmt-qf-uflra-boolean-disagreement/witness.smt2"
      ],
      "results": {
        "primo": "unsat",
        "z3": "unsat",
        "opensmt": "sat",
        "cvc5": "unsat",
        "yices": "unsat"
      },
      "artifact": "bugs/opensmt-qf-uflra-boolean-disagreement/witness.smt2",
      "evidence_status": "local-only",
      "outcome": "Removed all nested UF, ite, and double-negation assertions while preserving the same solver results. The remaining four assertions are the minimized disagreement core."
    },
    {
      "id": "2026-08-07-prepared-euf-reuse-local",
      "date": "2026-08-07",
      "kind": "solver-change-validation",
      "scope": "Mixed QF_UFLRA EUF structural preparation reuse",
      "commit": "working tree",
      "host": "local workspace",
      "commands": [
        "cmake --build build -j4",
        "make lint",
        "make docs",
        "./build/primo --quiet --stats < mixed QF_UFLRA smoke input",
        "PATH=\"$PWD/.venv-yinyang/bin:$PWD/contrib/local/bin:$PATH\" python3 scripts/fuzz_external.py --fuzzer yinyang --seeds benchmarks/seeds/qf_uflra --solver ./build/primo --refs z3 cvc5 --logic QF_UFLRA --count 1000 --timeout 5 --out fuzz-results/qf_uflra-prepared-euf-reuse"
      ],
      "results": {
        "build": "passed",
        "lint": "passed",
        "docs": "passed",
        "smoke": "unsat; euf-prepared-reused=1; euf-prepared-augmented=1",
        "focused_tests": "boolean, EUF, and theory-combination tests passed",
        "qf_lra_suite": "interrupted after more than 16 minutes without output",
        "fuzz_gate": "blocked: local yinyang installation missing; harness recorded SKIPPED_MISSING_FUZZER"
      },
      "artifact": "docs/run-log.json",
      "evidence_status": "local-only",
      "outcome": "PreparedFlatTheory is now reused across mixed SAT rounds and append-only augmented for lazy interface equality atoms; the per-round closure remains copied. The required QF_UFLRA fuzz gate remains incomplete because yinyang is unavailable locally."
    },
    {
      "id": "2026-08-07-prepared-euf-reuse-qf-uflra-slurm-gate",
      "date": "2026-08-07",
      "kind": "fuzz",
      "scope": "QF_UFLRA prepared EUF reuse mutation gate",
      "commit": "3139470",
      "host": "llm2smt-slurm",
      "job_id": "121020",
      "command": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0-2 with PRIMO_WORKDIR=/home/janotmik/primo-online-lazy-7838c2e and PATH including the existing remote typefuzz and Z3 installations",
      "results": {
        "slurm_state": "FAILED",
        "tasks": {
          "default": "9 PASS, 1 INCOMPLETE timeout",
          "candidate-final": "9 PASS, 1 INCOMPLETE timeout",
          "online-euf": "8 PASS, 2 INCOMPLETE timeouts"
        },
        "wrong_answers": 0,
        "crashes": 0,
        "mutation_started": false
      },
      "artifact": "/home/janotmik/primo-online-lazy-7838c2e/fuzz-results/qf-uflra-mutation-gate-121020/",
      "evidence_status": "slurm-complete-failed",
      "outcome": "The deterministic seed gate failed before mutation because existing MathSAT seeds timed out under the configured 60-second seed timeout. No wrong answers or crashes were observed, but this is incomplete fuzz evidence and does not pass the promotion gate."
    },
    {
      "id": "2026-08-07-prepared-euf-reuse-qf-uflra-slurm-gate-300s",
      "date": "2026-08-07",
      "kind": "fuzz",
      "scope": "QF_UFLRA prepared EUF reuse mutation gate with extended seed timeout",
      "commit": "3139470",
      "host": "llm2smt-slurm",
      "job_id": "121023",
      "command": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0-2 with PRIMO_FUZZ_SEED_TIMEOUT=300",
      "results": {
        "slurm_state": "FAILED",
        "tasks": {
          "default": "9 PASS, 1 INCOMPLETE timeout",
          "candidate-final": "9 PASS, 1 INCOMPLETE timeout",
          "online-euf": "8 PASS, 2 INCOMPLETE timeouts"
        },
        "wrong_answers": 0,
        "crashes": 0,
        "mutation_started": false
      },
      "artifact": "/home/janotmik/primo-online-lazy-7838c2e/fuzz-results/qf-uflra-mutation-gate-121023/",
      "evidence_status": "slurm-complete-failed",
      "outcome": "The 300-second rerun still stopped before mutation on the same slow MathSAT seeds. No wrong answers or crashes were observed, but the deterministic seed gate remains incomplete."
    },
    {
      "id": "2026-08-07-qfuflra-compact-mutation-seeds-local",
      "date": "2026-08-07",
      "kind": "fuzz-harness-validation",
      "scope": "Separate compact QF_UFLRA mutation seeds from deferred full-size performance regressions",
      "commit": "working tree",
      "host": "local workspace",
      "commands": [
        "cmake --build build -j4",
        "python3 scripts/check_solver_seed_corpus.py --seeds benchmarks/seeds/qf_uflra --solver ./build/primo --solver-arg=--quiet [profile args] --ref contrib/local/bin/z3 --timeout 60 --out /tmp/primo-compact-seed-check/<profile>.csv",
        "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch",
        "bash -n scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch",
        "make lint",
        "make docs",
        "ctest --test-dir build --output-on-failure -R primo_(theory_combination|qf_lra_solver)_tests"
      ],
      "results": {
        "compact_seed_count": 8,
        "default": "8 PASS, 0 disagreement, 0 timeout, 0 crash",
        "candidate_final": "8 PASS, 0 disagreement, 0 timeout, 0 crash",
        "online_euf": "8 PASS, 0 disagreement, 0 timeout, 0 crash",
        "deferred_performance_inputs": 2,
        "compact_seed_size_limit_bytes": 4096,
        "theory_combination_test": "passed",
        "qf_lra_test_binary": "interrupted after more than 16 minutes of CPU-bound execution with no failure output",
        "lint": "passed",
        "docs": "passed",
        "sbatch_validation": "passed"
      },
      "artifacts": [
        "/tmp/primo-compact-seed-check/default.csv",
        "/tmp/primo-compact-seed-check/candidate-final.csv",
        "/tmp/primo-compact-seed-check/online-euf.csv",
        "benchmarks/qf_uflra-deferred-performance-regressions.txt"
      ],
      "evidence_status": "local-only",
      "outcome": "All compact seeds pass the bounded deterministic check under all three mutation-gate profiles. The two full MathSAT witnesses remain tracked as deferred convex QF_UFLRA performance regressions and no longer prevent YinYang from starting. Fresh SLURM mutation evidence remains required."
    },
    {
      "id": "2026-08-07-qfuflra-compact-mutation-slurm-121092-rejected",
      "date": "2026-08-07",
      "kind": "fuzz",
      "scope": "First SLURM attempt after separating compact QF_UFLRA mutation seeds",
      "commit": "e6dddd4",
      "host": "SLURM",
      "job_id": "121092",
      "results": {
        "tasks": "3 FAILED with exit code 2",
        "deterministic_seed_gate": "8 PASS in each profile",
        "mutation_started": false,
        "wrong_answers": 0,
        "crashes": 0
      },
      "artifact": "remote:fuzz-results/qf-uflra-mutation-gate-121092/",
      "evidence_status": "rejected-harness",
      "outcome": "The inherited user-level typefuzz package did not support --hoist-declarations. All compact source seeds passed, but mutation did not start; this run is harness diagnosis only."
    },
    {
      "id": "2026-08-07-qfuflra-compact-mutation-slurm-121098-smoke",
      "date": "2026-08-07",
      "kind": "fuzz",
      "scope": "QF_UFLRA compact-seed mutation smoke with the pinned YinYang fork",
      "commit": "e6dddd4",
      "host": "SLURM",
      "job_id": "121098",
      "generator": "typefuzz from YinYang fork commit 04c8618",
      "reference": "Z3 5.0.0 with model_validate=true",
      "results": {
        "tasks": "3 COMPLETED",
        "elapsed_seconds": [
          45,
          43,
          45
        ],
        "deterministic_seed_gate": "8 PASS in each profile",
        "generated_mutants_per_profile": 1600,
        "source_seeds": "8 processed, 8 valid, 0 invalid in each profile",
        "final_reported_solver_calls": {
          "default": 3048,
          "candidate_final": 3078,
          "online_euf": 3022
        },
        "final_reported_effective_call_rate": {
          "default": "9.5%",
          "candidate_final": "12.3%",
          "online_euf": "6.4%"
        },
        "bug_triggers": 0,
        "bug_files": 0
      },
      "artifact": "remote:fuzz-results/qf-uflra-mutation-gate-121098/",
      "evidence_status": "slurm-smoke",
      "outcome": "The compact corpus allows mutation to complete quickly and found no disagreement, but typefuzz filtered most generated mutants. This is smoke evidence only; the merge-grade rerun needs a larger iteration count and explicit random seeds."
    },
    {
      "id": "2026-08-07-slurm-reuse-ipasir-header-cfe7e0c",
      "date": "2026-08-07",
      "kind": "build-workflow",
      "scope": "SLURM reusable-dependency preflight accepts either supported IPASIR header",
      "commit": "cfe7e0c",
      "host": "SLURM",
      "command": "python3 scripts/slurm_prepare_benchmark_workspace.py --with-z3 --reuse-dependencies --sync-mode archive --jobs 4",
      "results": {
        "dependency_reprovisioning": false,
        "clean_primo_rebuild": "passed",
        "binary_revision": "cfe7e0c",
        "cadical": "cadical-3.0.0-7b99c07",
        "z3_preflight": "passed"
      },
      "artifact": "remote build-slurm-rel/primo",
      "evidence_status": "slurm-complete",
      "outcome": "The helper recognized the existing ipasir.h installation and skipped repeated ANTLR, CaDiCaL, GMP, CLI11, and Z3 provisioning. It rebuilt only the clean Primo build tree and verified the expected revision."
    },
    {
      "id": "2026-08-07-qfuflra-compact-mutation-slurm-121108",
      "date": "2026-08-07",
      "kind": "fuzz",
      "scope": "Reproducible merge-grade QF_UFLRA compact-seed mutation gate",
      "commit": "cfe7e0c",
      "host": "SLURM",
      "job_id": "121108",
      "generator": "typefuzz from YinYang fork commit 04c8618",
      "reference": "Z3 5.0.0 with model_validate=true",
      "inputs": {
        "profiles": [
          "default",
          "candidate-final",
          "online-euf"
        ],
        "compact_seeds": 8,
        "mutations_per_seed": 2000,
        "generated_mutants_per_profile": 16000,
        "random_seed_base": 2026080700,
        "random_seeds": [
          2026080700,
          2026080701,
          2026080702
        ],
        "solver_timeout_seconds": 8,
        "source_seed_timeout_seconds": 60
      },
      "results": {
        "slurm_state": "all three tasks cancelled after first disagreement",
        "deterministic_seed_gate": "8 PASS in each profile",
        "wrong_answers": 1,
        "wrong_answer_profile": "candidate-final",
        "primo_result": "sat",
        "reference_result": "unsat",
        "crashes": 0,
        "regression_seed": "benchmarks/seeds/qf_uflra/seed_bool_application_formula_equality_unsat.smt2"
      },
      "artifact": "remote:fuzz-results/qf-uflra-mutation-gate-121108/",
      "evidence_status": "slurm-cancelled-correctness-failure",
      "outcome": "The candidate-final task found a SAT/UNSAT disagreement after about 165 seconds. The array was cancelled immediately. The minimized cause is source-level Boolean equality with a UF application operand being represented as an independently assignable EUF equality instead of propositional equivalence. The witness also fails the default profile and pure QF_UF after arithmetic tautologies are preprocessed away."
    },
    {
      "id": "2026-08-07-boolean-uf-application-equality-local-fix",
      "date": "2026-08-07",
      "kind": "correctness-fix-validation",
      "scope": "Uniform propositional lowering of source-level Boolean equality and disequality with UF application operands",
      "commit": "working tree",
      "host": "local workspace",
      "commands": [
        "ctest --test-dir build --output-on-failure -R ^primo_boolean_solver_tests$",
        "python3 scripts/check_solver_seed_corpus.py --seeds benchmarks/seeds/qf_uflra --solver ./build/primo --solver-arg=--quiet [default, candidate-final, online-euf] --ref contrib/local/bin/z3 --timeout 60",
        "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 1000 --seed 20260823 --timeout 5 --shape bool-arguments --out /tmp/qf-uflra-bool-equality-fix-1000",
        "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 1000 --seed 20260824 --timeout 5 --shape mixed --out /tmp/qf-uflra-bool-equality-mixed-1000",
        "make check",
        "make asan-build && ASAN_OPTIONS=detect_leaks=1:strict_init_order=1 ctest --test-dir build-asan --output-on-failure -R ^primo_boolean_solver_tests$",
        "make tidy",
        "make include-cleaner",
        "make lint",
        "make docs"
      ],
      "results": {
        "focused_unit_tests": "passed",
        "compact_seed_gate": "10 PASS in each of three profiles",
        "bool_argument_generated": {
          "count": 1000,
          "pass": 1000,
          "wrong_answer": 0,
          "timeout": 0,
          "crash": 0
        },
        "mixed_generated": {
          "count": 1000,
          "pass": 1000,
          "wrong_answer": 0,
          "timeout": 0,
          "crash": 0
        },
        "original_fuzz_witness": "unsat in default, candidate-final, and online-euf profiles, matching Z3",
        "old_binary_regression_check": "cfe7e0c returns sat on the preprocessing-to-QF_UF seed and unsat on the mixed companion; the fixed binary returns unsat on both",
        "make_check": "tests 1-9 passed; interrupted the known CPU-bound primo_qf_lra_solver_tests after 20 minutes with no failure output",
        "asan_focused": "passed",
        "clang_tidy": "all 63 tracked non-generated C++ translation units passed",
        "include_cleaner": "advisory baseline diagnostics only in unrelated files; no diagnostics in changed C++ files",
        "lint": "passed",
        "docs": "passed"
      },
      "artifacts": [
        "/tmp/qf-uflra-bool-equality-fix-1000/summary.csv",
        "/tmp/qf-uflra-bool-equality-mixed-1000/summary.csv",
        "/tmp/primo-bool-equality-default.csv",
        "/tmp/primo-bool-equality-candidate.csv",
        "/tmp/primo-bool-equality-online.csv"
      ],
      "evidence_status": "local-merge-gate",
      "outcome": "The saved disagreement is fixed by lowering every source-level Bool equality to bidirectional implication and every Bool disequality to XOR, independent of UF applications in the operands. Fresh SLURM mutation evidence against the fixing commit remains required."
    },
    {
      "id": "2026-08-07-boolean-uf-application-equality-slurm-gate-121115",
      "date": "2026-08-07",
      "kind": "fuzz",
      "scope": "Merge-grade QF_UFLRA mutation rerun after uniform Boolean equality lowering",
      "commit": "cf13025",
      "host": "SLURM",
      "job_id": "121115",
      "generator": "typefuzz from YinYang fork commit 04c8618",
      "reference": "Z3 5.0.0 with model_validate=true",
      "inputs": {
        "profiles": [
          "default",
          "candidate-final",
          "online-euf"
        ],
        "compact_seeds": 10,
        "mutations_per_seed": 2000,
        "generated_mutants_per_profile": 20000,
        "random_seeds": [
          2026080700,
          2026080701,
          2026080702
        ],
        "solver_timeout_seconds": 8,
        "source_seed_timeout_seconds": 60
      },
      "results": {
        "slurm_state": "all three tasks COMPLETED with exit code 0",
        "elapsed": {
          "default": "00:12:54",
          "candidate_final": "00:13:00",
          "online_euf": "00:13:52"
        },
        "deterministic_seed_gate": "10 PASS in each profile",
        "source_seeds": "10 processed, 10 valid, 0 invalid in each profile",
        "final_reported_solver_calls": {
          "default": 39930,
          "candidate_final": 39978,
          "online_euf": 39904
        },
        "final_reported_effective_call_rate": {
          "default": "7.9%",
          "candidate_final": "8.0%",
          "online_euf": "8.0%"
        },
        "wrong_answers": 0,
        "crashes": 0,
        "bug_triggers": 0,
        "bug_files": 0
      },
      "artifact": "remote:fuzz-results/qf-uflra-mutation-gate-121115/; local ignored copy fuzz-results/collected-121115/",
      "evidence_status": "slurm-complete",
      "outcome": "The exact candidate mutation stream that exposed the old Boolean-equality bug completed past the prior trigger and through all 20,000 mutations without disagreement. Default and online-euf completed the same gate without disagreement or crash."
    },
    {
      "id": "2026-08-08-convex-no-local-validation-9481bfb",
      "date": "2026-08-08",
      "kind": "implementation-validation",
      "scope": "Convex EUF-LRA equality fixpoint and mixed-only fixed-elimination default",
      "commit": "9481bfb",
      "host": "local workspace",
      "commands": [
        "ctest --test-dir build --output-on-failure -R ^primo_qf_lra_solver_tests$",
        "make check",
        "make asan-test",
        "make lint",
        "make docs",
        "make tidy",
        "make include-cleaner",
        "git diff --check"
      ],
      "results": {
        "focused_qf_uflra": "passed",
        "make_check": "13/13 passed",
        "asan": "13/13 passed",
        "lint": "passed",
        "docs": "passed",
        "clang_tidy": "63 tracked non-generated translation units passed with only suppressed non-user diagnostics",
        "include_cleaner": "advisory repository-baseline diagnostics; no diagnostics in the changed C++ files",
        "diff_check": "passed"
      },
      "evidence_status": "local-complete",
      "outcome": "The mixed coordinator reaches a convex EUF/LRA equality fixpoint, consumes explained LRA FixedEq/EqRow consequences, and retains exact unresolved-pair separation as the completeness fallback. Pure QF_UF and pure QF_LRA dispatch remain outside this path."
    },
    {
      "id": "2026-08-08-convex-no-generated-ablation-121391-121392",
      "date": "2026-08-08",
      "kind": "fuzz-ablation",
      "scope": "Generated QF_UFLRA comparison before promoting mixed fixed elimination",
      "commit": "8626669",
      "host": "SLURM",
      "job_ids": [
        "121391",
        "121392"
      ],
      "command": "sbatch --array=0-3 with PRIMO_FUZZ_COUNT=750, PRIMO_FUZZ_SEED_BASE=2026080710, separate default/fixed PRIMO_FUZZ_SOLVER_ARGS, and separate PRIMO_FUZZ_OUT_DIR values scripts/slurm_qf_uflra_fuzz_gate.sbatch",
      "generator": "scripts/qf_uflra_smoke_fuzz.py",
      "reference": "Z3 5.0.0",
      "inputs": {
        "profiles": [
          "default",
          "--lra-fixed-elimination"
        ],
        "cases_per_profile": 3000,
        "shards": 4,
        "cases_per_shard": 750,
        "random_seeds": [
          2026080710,
          2026080711,
          2026080712,
          2026080713
        ]
      },
      "results": {
        "default": "3000 PASS, 0 wrong answer, 0 crash, 0 timeout",
        "fixed_elimination": "3000 PASS, 0 wrong answer, 0 crash, 0 timeout",
        "slurm_state": "all eight tasks COMPLETED with exit code 0"
      },
      "artifacts": "remote:slurm_logs/primo-qf-uflra-fuzz-121391_*.out and 121392_*.out; generated case directories were superseded by the exact-promotion workspace sync",
      "evidence_status": "slurm-complete-logs-retained",
      "outcome": "Both sides of the fixed-elimination ablation agreed with Z3 on all generated cases."
    },
    {
      "id": "2026-08-08-convex-no-mutation-ablation-121393",
      "date": "2026-08-08",
      "kind": "fuzz",
      "scope": "QF_UFLRA seed mutation after convex fixpoint integration",
      "commit": "8626669",
      "host": "SLURM",
      "job_id": "121393",
      "command": "sbatch --array=0-2 with PRIMO_FUZZ_YINYANG_ITERATIONS=2000, PRIMO_FUZZ_YINYANG_TIMEOUT=8, PRIMO_FUZZ_MUTATION_SEED_BASE=2026080700, and PRIMO_FUZZ_OUT_ROOT=fuzz-results/qf-uflra-mutation-gate-121393 scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch",
      "generator": "typefuzz from YinYang fork commit 04c8618",
      "reference": "Z3 5.0.0 with model_validate=true",
      "inputs": {
        "profiles": [
          "default",
          "candidate-final",
          "online-euf"
        ],
        "compact_seeds": 10,
        "mutations_per_seed": 2000,
        "generated_mutants_per_profile": 20000,
        "random_seeds": [
          2026080700,
          2026080701,
          2026080702
        ],
        "solver_timeout_seconds": 8
      },
      "results": {
        "deterministic_seed_gate": "10 PASS in each profile",
        "final_reported_solver_calls": {
          "default": 39958,
          "candidate_final": 39946,
          "online_euf": 39900
        },
        "wrong_answers": 0,
        "crashes": 0,
        "bug_files": 0,
        "slurm_state": "all three tasks COMPLETED with exit code 0"
      },
      "artifact": "remote:fuzz-results/qf-uflra-mutation-gate-121393/; local ignored copy fuzz-results/collected-121393/",
      "evidence_status": "slurm-complete",
      "outcome": "All three profiles completed the 20,000-mutation campaign without a disagreement or crash."
    },
    {
      "id": "2026-08-08-convex-no-exact-generated-ablation-121426-121427",
      "date": "2026-08-08",
      "kind": "fuzz-ablation",
      "scope": "Exact-commit generated sanity check before the 45-file fixed-elimination benchmark",
      "commit": "3fbd2ce",
      "host": "SLURM",
      "job_ids": [
        "121426",
        "121427"
      ],
      "command": "sbatch --array=0-3 with PRIMO_FUZZ_COUNT=250, separate exact-default/exact-fixed solver arguments and output roots scripts/slurm_qf_uflra_fuzz_gate.sbatch",
      "generator": "scripts/qf_uflra_smoke_fuzz.py",
      "reference": "Z3 5.0.0",
      "inputs": {
        "profiles": [
          "default",
          "--lra-fixed-elimination"
        ],
        "cases_per_profile": 1000,
        "shards": 4,
        "cases_per_shard": 250
      },
      "results": {
        "default": "1000 PASS",
        "fixed_elimination": "1000 PASS",
        "wrong_answers": 0,
        "crashes": 0,
        "timeouts": 0,
        "slurm_state": "all eight tasks COMPLETED with exit code 0"
      },
      "artifacts": "remote:slurm_logs/primo-qf-uflra-fuzz-121426_*.out and 121427_*.out",
      "evidence_status": "slurm-complete-logs-retained",
      "outcome": "The exact benchmark harness commit passed both generated ablation profiles before performance measurement."
    },
    {
      "id": "2026-08-08-convex-no-fixed-elimination-ablation-121439",
      "date": "2026-08-08",
      "kind": "benchmark",
      "scope": "45-file QF_UFLRA preprocessing-opportunity sample, fixed elimination and candidate-final ablation",
      "commit": "3fbd2ce",
      "host": "SLURM",
      "job_id": "121439",
      "command": "sbatch --array=0-3 --time=01:10:00 with PRIMO_COMPARE_TIMEOUT=60 and default/fixed/candidate/candidate-fixed solver specs scripts/slurm_qf_uflra_sample_compare.sbatch",
      "inputs": {
        "manifest": "benchmarks/qf_uflra-preprocessing-opportunity-sample.txt",
        "files": 45,
        "timeout_seconds": 60,
        "families": {
          "mathsat": 25,
          "cpachecker_induction": 19,
          "cpachecker_bmc": 1
        },
        "profiles": [
          "default",
          "fixed",
          "candidate",
          "candidate-fixed"
        ]
      },
      "results": {
        "default": "42 solved, 3 timeout, 0 wrong, PAR2 685.074817",
        "fixed": "42 solved, 3 timeout, 0 wrong, PAR2 596.128110",
        "candidate": "42 solved, 3 timeout, 0 wrong, PAR2 422.894464",
        "candidate_fixed": "42 solved, 3 timeout, 0 wrong, PAR2 403.335129",
        "family_solved": "MathSAT 25/25, CPA induction 17/19, CPA BMC 0/1 in every profile",
        "fixed_effect": "EqRow 233 to 2163; exact fallback pairs 464994 to 295539; SAT decisions 33230 to 29187; SAT propagations 250721 to 208421"
      },
      "artifact": "local ignored results/qf-uflra-convex-no-fixed-ablation-3fbd2ce/; remote:results/qf-uflra-convex-no-fixed-ablation-3fbd2ce/",
      "evidence_status": "slurm-complete",
      "outcome": "Mixed fixed elimination preserved solved and correctness counts while reducing fallback work and PAR2 in both final-scan profiles; this justified the scoped default implemented in 9481bfb."
    },
    {
      "id": "2026-08-08-convex-no-promoted-generated-121495",
      "date": "2026-08-08",
      "kind": "fuzz",
      "scope": "Exact promoted-default generated QF_UFLRA gate",
      "commit": "9481bfb",
      "host": "SLURM",
      "job_id": "121495",
      "command": "sbatch --array=0-3 with PRIMO_FUZZ_COUNT=750, PRIMO_FUZZ_SEED_BASE=2026081100, and PRIMO_FUZZ_OUT_DIR=slurm-results/qf_uflra-promoted-default-9481bfb scripts/slurm_qf_uflra_fuzz_gate.sbatch",
      "generator": "scripts/qf_uflra_smoke_fuzz.py",
      "reference": "Z3 5.0.0",
      "inputs": {
        "cases": 3000,
        "shards": 4,
        "cases_per_shard": 750,
        "random_seeds": [
          2026081100,
          2026081101,
          2026081102,
          2026081103
        ]
      },
      "results": {
        "pass": 3000,
        "sat": 1907,
        "unsat": 1093,
        "wrong_answers": 0,
        "crashes": 0,
        "timeouts": 0,
        "slurm_state": "all four tasks COMPLETED with exit code 0 in 17-18 seconds"
      },
      "artifact": "remote:slurm-results/qf_uflra-promoted-default-9481bfb/; local ignored copy fuzz-results/promoted-default-9481bfb/",
      "evidence_status": "slurm-complete",
      "outcome": "The exact promoted default agreed with Z3 on all 3,000 generated cases before the promotion benchmark was submitted."
    },
    {
      "id": "2026-08-08-convex-no-promotion-benchmark-121509",
      "date": "2026-08-08",
      "kind": "benchmark",
      "scope": "Exact promoted-commit 45-file QF_UFLRA fixed-elimination ablation",
      "commit": "9481bfb",
      "host": "SLURM",
      "job_id": "121509",
      "command": "sbatch --array=0-3 --time=01:10:00 with PRIMO_COMPARE_TIMEOUT=60 and default/ablation/candidate/candidate-ablation solver specs scripts/slurm_qf_uflra_sample_compare.sbatch",
      "inputs": {
        "manifest": "benchmarks/qf_uflra-preprocessing-opportunity-sample.txt",
        "files": 45,
        "timeout_seconds": 60,
        "profiles": [
          "default",
          "ablation --no-qf-uflra-fixed-elimination",
          "candidate",
          "candidate-ablation"
        ],
        "reference_reuse": "Z3 was not rerun; unchanged artifact results/qf-uflra-opportunity-45-3451af9-rerun/z3.csv"
      },
      "results": {
        "default": "42 solved, 3 timeout, 0 wrong, PAR2 596.809750",
        "ablation": "42 solved, 3 timeout, 0 wrong, PAR2 687.106589",
        "candidate": "42 solved, 3 timeout, 0 wrong, PAR2 403.662678",
        "candidate_ablation": "42 solved, 3 timeout, 0 wrong, PAR2 423.283779",
        "z3_reused": "45 solved, 0 timeout, 0 wrong, PAR2 10.936763",
        "family_solved": "Primo: MathSAT 25/25, CPA induction 17/19, CPA BMC 0/1 in every profile; Z3: 45/45",
        "default_fixed_effect": "EqRow 233 to 2163; exact fallback pairs 464994 to 295539; extra-atom probes 445466 to 274252; SAT decisions 33230 to 29187; SAT propagations 250721 to 208421",
        "candidate_fixed_effect": "exact fallback pairs 94763 to 54147; PAR2 423.283779 to 403.662678",
        "slurm_state": "all four tasks COMPLETED with exit code 0"
      },
      "artifact": "remote:results/qf-uflra-convex-no-promoted-9481bfb/; local ignored copy results/qf-uflra-convex-no-promoted-9481bfb/",
      "evidence_status": "slurm-complete-current",
      "outcome": "The exact promotion run reproduced the ablation improvement with unchanged solved/family counts and zero wrong answers. The remaining gap to Z3 is large and is not claimed solved by this milestone."
    },
    {
      "id": "2026-08-08-convex-no-promoted-mutation-121496",
      "date": "2026-08-08",
      "kind": "fuzz",
      "scope": "Exact promoted-commit QF_UFLRA seed mutation gate",
      "commit": "9481bfb",
      "host": "SLURM",
      "job_id": "121496",
      "command": "sbatch --array=0-2 --time=00:30:00 with PRIMO_FUZZ_YINYANG_ITERATIONS=2000, PRIMO_FUZZ_YINYANG_TIMEOUT=8, PRIMO_FUZZ_MUTATION_SEED_BASE=2026081200, and PRIMO_FUZZ_OUT_ROOT=fuzz-results/qf-uflra-promoted-mutation-9481bfb scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch",
      "generator": "typefuzz from YinYang fork commit 04c8618",
      "reference": "Z3 5.0.0 with model_validate=true",
      "inputs": {
        "profiles": [
          "default",
          "candidate-final",
          "online-euf"
        ],
        "compact_seeds": 10,
        "mutations_per_seed_target": 2000,
        "target_mutants_per_profile": 20000,
        "random_seeds": [
          2026081200,
          2026081201,
          2026081202
        ],
        "solver_timeout_seconds": 8,
        "slurm_time_limit_seconds": 1800
      },
      "results": {
        "deterministic_seed_gate": "10 PASS in each profile",
        "default": "completed all seeds and the 20,000-mutation target; 39,822 reported solver calls; 0 bug files",
        "candidate_final": "partial at the SLURM wall; 28,914 reported solver calls; timeout-heavy while mutating online_nonpaired_congruence_forced_unsat.smt2; 0 bug files",
        "online_euf": "partial at the SLURM wall; 32,239 reported solver calls; timeout-heavy while mutating seed_bool_argument_mixed_sort.smt2; 0 bug files",
        "wrong_answers": 0,
        "crashes": 0,
        "bug_files": 0,
        "slurm_state": "default COMPLETED in 00:11:43; candidate-final and online-euf TIMEOUT at 00:30:19"
      },
      "artifact": "remote:fuzz-results/qf-uflra-promoted-mutation-9481bfb/; local ignored copy fuzz-results/collected-121496/",
      "evidence_status": "slurm-default-complete-optional-profiles-timeboxed",
      "outcome": "The promoted default completed the full mutation campaign without disagreement or crash. The two optional profiles found no bug but do not establish full seed-mutation coverage because timeout-heavy mutants exhausted the SLURM allocation; their complete pre-promotion counterparts are recorded in job 121393."
    },
    {
      "id": "2026-08-08-convex-no-promoted-optional-generated-121545-121549",
      "date": "2026-08-08",
      "kind": "fuzz",
      "scope": "Exact promoted-commit generated gates for optional candidate-final and online-euf profiles",
      "commit": "9481bfb",
      "host": "SLURM",
      "job_ids": [
        "121545",
        "121549"
      ],
      "commands": [
        "sbatch --array=0-3 with PRIMO_FUZZ_COUNT=250, PRIMO_FUZZ_SEED_BASE=2026081300, and PRIMO_FUZZ_SOLVER_ARGS=--qf-uflra-candidate-final-scan scripts/slurm_qf_uflra_fuzz_gate.sbatch",
        "sbatch --array=0-3 with PRIMO_FUZZ_COUNT=250, PRIMO_FUZZ_SEED_BASE=2026081400, and PRIMO_FUZZ_SOLVER_ARGS='--nelson-oppen-prop=online --qf-uflra-online-euf' scripts/slurm_qf_uflra_fuzz_gate.sbatch"
      ],
      "generator": "scripts/qf_uflra_smoke_fuzz.py",
      "reference": "Z3 5.0.0",
      "inputs": {
        "cases_per_profile": 1000,
        "shards": 4,
        "cases_per_shard": 250
      },
      "results": {
        "candidate_final": "1000 PASS, 0 wrong answer, 0 crash, 0 timeout",
        "online_euf": "1000 PASS, 0 wrong answer, 0 crash, 0 timeout",
        "slurm_state": "all eight tasks COMPLETED with exit code 0 in 6-7 seconds"
      },
      "artifacts": "remote:slurm-results/qf_uflra-promoted-candidate-9481bfb/ and qf_uflra-promoted-online-euf-9481bfb/; local ignored summary copies fuzz-results/collected-121545/ and collected-121549/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Both optional profiles have a fresh exact-commit 1,000-case generated merge gate. This complements, but does not turn into complete coverage, the time-boxed mutation profiles from job 121496."
    },
    {
      "id": "2026-08-07-qf-lra-equality-sharing-branch-preserves-behaviour",
      "started_at": "2026-08-07",
      "recorded_at": "2026-08-07",
      "kind": "analysis",
      "scope": "Confirm the qflra-no-equality-sharing branch leaves pure QF_LRA behaviour untouched. The branch adds Nelson-Oppen equality machinery, and the last time NO work touched the LRA path it cost 59 division files.",
      "commit": "7aee79e vs main 19fa3a0",
      "branch": "qflra-no-equality-sharing",
      "evidence_status": "current",
      "environment": {
        "type": "local",
        "notes": "Both binaries Release, built from the same toolchain; main built into a scratch worktree. Provenance note: 19fa3a0 was main's tip when this ran (reflog main@{1}); it and the branch commits were later fast-forwarded into main, so `git branch --contains 19fa3a0` now lists the branch too. That is an artifact of the fast-forward, not evidence the baseline was a branch commit. Neither was on origin/main (5cdde03) at the time -- both were unpushed local main."
      },
      "result": {
        "by_inspection": "Of three src/ commits, two add const methods with NO caller (model_equal_classes, entailed_equalities). The third threads MixedDispatchMode through summarize_formula_features; under the default Narrow the expression reduces to `Application && bool_sort`, character-for-character what main computes.",
        "first_sweep": {
          "files": 100,
          "answer_diffs": 0,
          "counter_diffs": 17
        },
        "first_sweep_explained": "16 of the 17 were files that TIME OUT, whose counters record progress-at-cutoff and vary run to run regardless of code. The 17th solves in 9.90s against the sweep's 10s cap -- straddling the cutoff. Run three times per binary at a 60s budget it is identical and deterministic on both: 29,081 pivots, 840,202 decisions, 1,451 conflicts.",
        "clean_rerun": {
          "solved_by_both": 89,
          "bit_identical": 89,
          "differing": 0,
          "counters_compared": ":lra.pivots, :lra.pivot-term-ops, :lra.theory-propagations, :sat.decisions, :sat.conflicts, :solver.*"
        }
      },
      "conclusion": "Pure QF_LRA behaviour is preserved exactly: 89 of 89 commonly-solved files bit-identical on search counters, 0 answer differences anywhere. Consistent with the code, which has no path doing anything main does not.",
      "method_note": "Counter comparisons across runs are only meaningful on instances that COMPLETE. A timeout is not a measurement, it is a snapshot of wherever the search had reached. This is the second time in one session that artifact produced a false alarm -- the first was the supposed node-contention regression on the full division. Restricting to completed runs is the fix; explaining the difference away is not."
    },
    {
      "id": "2026-08-08-convex-no-main-integration-gate-121874",
      "started_at": "2026-08-08",
      "recorded_at": "2026-08-08",
      "kind": "fuzz",
      "scope": "Exact-commit correctness gate after merging the QF_LRA equality-sharing mainline into the convex QF_UFLRA Nelson-Oppen branch",
      "commit": "3dee8ca",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "job_id": "121874",
        "binary": "Release, git 3dee8ca, CaDiCaL cadical-3.0.0-7b99c07",
        "workspace": "Prepared with scripts/slurm_prepare_benchmark_workspace.py in archive/reuse-dependencies mode; --check-only verified the exact revision, linkage, CaDiCaL, and Z3 immediately before submission"
      },
      "commands": {
        "seed_preflight": "python3 scripts/check_solver_seed_corpus.py --seeds benchmarks/seeds/qf_uflra --solver ./build-slurm-rel/primo --ref z3 --timeout 10 --out <artifact>/summary.csv",
        "generated_gate": "sbatch --array=0-3 with PRIMO_FUZZ_COUNT=750, PRIMO_FUZZ_SEED_BASE=2026081500, and PRIMO_FUZZ_OUT_DIR=slurm-results/qf_uflra-integration-default-3dee8ca scripts/slurm_qf_uflra_fuzz_gate.sbatch"
      },
      "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
      "reference": "Z3 5.0.0",
      "inputs": {
        "tracked_seeds": 10,
        "generated_cases": 3000,
        "shards": 4,
        "cases_per_shard": 750,
        "solver_timeout_seconds": 5
      },
      "results": {
        "tracked_seeds": "10 PASS, 0 disagreement, 0 timeout, 0 crash, 0 unsupported",
        "generated": "3000 PASS, 0 wrong answer, 0 timeout, 0 crash, 0 unsupported",
        "slurm_state": "all four array tasks COMPLETED with exit code 0 in 18 seconds"
      },
      "artifacts": "remote:slurm-results/qf_uflra-integration-seeds-3dee8ca/ and remote:slurm-results/qf_uflra-integration-default-3dee8ca/",
      "evidence_status": "slurm-complete-current",
      "outcome": "The integrated default convex profile passed its exact-commit deterministic seed and generated merge gates. The known-unsound --nelson-oppen-prop=off ablation was intentionally excluded and remained a merge blocker at this historical commit; it was repaired later by c28531b."
    },
    {
      "id": "2026-08-08-convex-no-exact-closure-repair-121878",
      "started_at": "2026-08-08",
      "recorded_at": "2026-08-08",
      "kind": "fuzz",
      "scope": "Exact-mode correctness gate after making mandatory convex QF_UFLRA equality closure independent of optional propagation producers",
      "commit": "c28531b",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "job_id": "121878",
        "binary": "Release, git c28531b, CaDiCaL cadical-3.0.0-7b99c07",
        "workspace": "Prepared with scripts/slurm_prepare_benchmark_workspace.py in archive/reuse-dependencies mode; --check-only verified the exact revision, linkage, CaDiCaL, and Z3 immediately before submission"
      },
      "commands": {
        "seed_preflight": "python3 scripts/check_solver_seed_corpus.py --seeds benchmarks/seeds/qf_uflra --solver ./build-slurm-rel/primo --solver-arg=--nelson-oppen-prop=exact --ref z3 --timeout 10 --out <artifact>/seeds.csv",
        "generated_gate": "sbatch --array=0-3 with PRIMO_FUZZ_COUNT=750, PRIMO_FUZZ_SEED_BASE=2026080800, PRIMO_FUZZ_SOLVER_ARGS=--nelson-oppen-prop=exact, and PRIMO_FUZZ_OUT_DIR=slurm-results/qf_uflra-exact-closure-c28531b scripts/slurm_qf_uflra_fuzz_gate.sbatch"
      },
      "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
      "reference": "Z3 5.0.0",
      "inputs": {
        "tracked_seeds": 10,
        "generated_cases": 3000,
        "shards": 4,
        "cases_per_shard": 750,
        "random_seeds": [
          2026080800,
          2026080801,
          2026080802,
          2026080803
        ],
        "solver_timeout_seconds": 5
      },
      "results": {
        "tracked_seeds": "10 PASS, 0 disagreement, 0 timeout, 0 crash, 0 unsupported",
        "generated": "3000 PASS: 1885 sat and 1115 unsat; 0 wrong answer, 0 timeout, 0 crash, 0 unsupported",
        "bug_files": 0,
        "slurm_state": "all four array tasks COMPLETED with exit code 0 in 18 seconds"
      },
      "local_verification": {
        "make_check": "13/13 tests passed",
        "make_asan_test": "13/13 tests passed",
        "make_lint": "passed",
        "make_docs": "passed",
        "clang_tidy": "whole-tree non-generated C++ pass completed without actionable diagnostics",
        "include_cleaner": "whole-tree advisory pass reported existing baseline debt and no warning in the changed implementation or test files"
      },
      "artifacts": "remote:slurm-results/qf_uflra-exact-closure-c28531b/ and remote:slurm_logs/primo-qf-uflra-fuzz-121878_*.out",
      "evidence_status": "slurm-complete-current",
      "outcome": "The repaired exact mode and legacy off alias retain mandatory EUF-to-LRA spanning equalities and exact LRA-to-EUF fallback while omitting only opportunistic FixedEq/EqRow polling. Exact-commit regressions cover both sharing directions and the invalid-model witness, and the exact profile passed deterministic and generated differential gates."
    },
    {
      "id": "2026-08-08-qf-uflra-exact-probe-reuse-local-profile",
      "started_at": "2026-08-08",
      "recorded_at": "2026-08-08",
      "kind": "profile",
      "scope": "Local before/after profile of per-pair prepared-tableau reuse in the complete convex QF_UFLRA equality fallback",
      "commit": "6ffc19b",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "local",
        "host": "workspace",
        "build": "RelWithDebInfo, -O2 -g -DNDEBUG -pg"
      },
      "commands": {
        "baseline": "/usr/bin/time -f 'wall=%e user=%U rss=%M' /tmp/primo-gprof-before-probe-reuse --quiet --stats --max-theory-conflicts=1000000 tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_14.smt2",
        "candidate": "/usr/bin/time -f 'wall=%e user=%U rss=%M' build-gprof/primo --quiet --stats --max-theory-conflicts=1000000 tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_14.smt2",
        "profile": "gprof build-gprof/primo /tmp/primo-gprof-after-probe-reuse/gmon.out"
      },
      "inputs": {
        "benchmark": "tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_14.smt2",
        "logic": "QF_UFLRA"
      },
      "results": {
        "answer": "sat before and after",
        "baseline": "0.28 s wall, 0.27 s user, 275967 total-us, 274189 solve-us",
        "candidate": "0.14 s wall, 0.13 s user, 135776 total-us, 133432 solve-us",
        "stable_search": "171 SAT decisions, 515 SAT propagations, 596 exact fallback pairs, 753 strict probes, and 4 exact fallback equalities before and after",
        "reuse": "596 reusable pair contexts, 753 reusable orientations, 42904 assignment bounds replayed, 0 mapping fallbacks, 0 context conflicts",
        "candidate_gprof": "LraTableau::pivot 16.67% self over 15104 calls; LraTableau::check 1479 calls; the previous per-orientation PreparedLraTheory reconstruction no longer appears as the exact-pair probe path"
      },
      "artifacts": "/tmp/primo-gprof-exact-dc5c99a/gmon.out and /tmp/primo-gprof-after-probe-reuse/gmon.out (local, ephemeral)",
      "local_verification": {
        "make_check": "13/13 tests passed",
        "make_asan_test": "13/13 tests passed; focused ASan QF_LRA/QF_UFLRA test rerun after final fail-loud policy change",
        "make_lint": "passed",
        "make_docs": "passed",
        "clang_tidy": "whole-tree non-generated C++ pass completed without actionable diagnostics",
        "include_cleaner": "whole-tree advisory pass reported existing baseline debt and no diagnostic in either changed C++ file",
        "code_review": "no blocking issue after changing an impossible accepted-assignment replay conflict from reconstruction fallback to fail-loud behavior"
      },
      "evidence_status": "accepted-slurm-validated-by-121882-and-121886",
      "outcome": "The narrow reuse prototype halves this representative profiled runtime without changing the answer, SAT search, pair count, probe count, or equality count. It addresses repeated normalization and orientation setup only; quadratic pair enumeration and per-pair tableau work remain."
    },
    {
      "id": "2026-08-08-qf-uflra-exact-probe-reuse-fuzz-121882",
      "started_at": "2026-08-08",
      "recorded_at": "2026-08-08",
      "kind": "fuzz",
      "scope": "Merge-grade exact-mode differential gate for reusable complete-convex LRA equality probe contexts",
      "commit": "0b6aa62",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "job_id": "121882",
        "binary": "Release, git 0b6aa62, CaDiCaL cadical-3.0.0-7b99c07",
        "workspace": "Prepared with scripts/slurm_prepare_benchmark_workspace.py in archive/reuse-dependencies mode; --check-only verified the revision, linkage, CaDiCaL, Z3, and typefuzz immediately before submission"
      },
      "commands": {
        "seed_preflight": "python3 scripts/check_solver_seed_corpus.py --seeds benchmarks/seeds/qf_uflra --solver ./build-slurm-rel/primo --solver-arg=--nelson-oppen-prop=exact --ref ./contrib/local/bin/z3 --timeout 10 --out <artifact>/summary.csv",
        "generated_gate": "sbatch --array=0-3 with PRIMO_FUZZ_COUNT=750, PRIMO_FUZZ_SEED_BASE=2026080804, PRIMO_FUZZ_SOLVER_ARGS=--nelson-oppen-prop=exact, and PRIMO_FUZZ_OUT_DIR=slurm-results/qf_uflra-probe-reuse-0b6aa62 scripts/slurm_qf_uflra_fuzz_gate.sbatch"
      },
      "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
      "reference": "Z3 5.0.0",
      "inputs": {
        "tracked_seeds": 10,
        "generated_cases": 3000,
        "shards": 4,
        "cases_per_shard": 750,
        "random_seeds": [
          2026080804,
          2026080805,
          2026080806,
          2026080807
        ],
        "solver_timeout_seconds": 5
      },
      "results": {
        "tracked_seeds": "10 PASS, 0 disagreement, 0 timeout, 0 crash, 0 unsupported",
        "generated": "3000 PASS: 1869 sat and 1131 unsat; 0 wrong answer, 0 timeout, 0 crash, 0 unsupported",
        "bug_files": 0,
        "slurm_state": "all four array tasks COMPLETED with exit code 0 in 18 seconds"
      },
      "artifacts": "remote:slurm-results/qf_uflra-probe-reuse-0b6aa62/, remote:slurm-results/qf_uflra-probe-reuse-0b6aa62-seeds/, and remote:slurm_logs/primo-qf-uflra-fuzz-121882_*.out",
      "evidence_status": "slurm-complete-current",
      "outcome": "The exact revision passed deterministic regressions and 3,000 fresh generated mixed cases after replacing per-orientation LRA reconstruction with per-pair reversible probe contexts."
    },
    {
      "id": "2026-08-08-qf-uflra-exact-probe-reuse-benchmark-121886",
      "started_at": "2026-08-08",
      "recorded_at": "2026-08-08",
      "kind": "benchmark",
      "scope": "45-file QF_UFLRA before/after comparison for reusable complete-convex LRA equality probe contexts",
      "commit": "0b6aa62",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "job_id": "121886",
        "binary": "Release, git 0b6aa62, CaDiCaL cadical-3.0.0-7b99c07",
        "workspace": "Prepared and checked with scripts/slurm_prepare_benchmark_workspace.py; the manifest corpus was staged with scripts/slurm_stage_manifest_files.py"
      },
      "command": "sbatch --array=0-1 --time=00:20:00 with PRIMO_COMPARE_TIMEOUT=60, PRIMO_COMPARE_MANIFEST=benchmarks/qf_uflra-preprocessing-opportunity-sample.txt, and default/candidate-final solver specs scripts/slurm_qf_uflra_sample_compare.sbatch",
      "inputs": {
        "manifest": "benchmarks/qf_uflra-preprocessing-opportunity-sample.txt",
        "files": 45,
        "timeout_seconds": 60,
        "families": {
          "mathsat": 25,
          "cpachecker_induction": 19,
          "cpachecker_bmc": 1
        },
        "profiles": [
          "default",
          "candidate-final --qf-uflra-candidate-final-scan"
        ],
        "baseline": "SLURM job 121509, commit 9481bfb, results/qf-uflra-convex-no-promoted-9481bfb/",
        "reference_reuse": "Z3 was not rerun; unchanged artifact results/qf-uflra-opportunity-45-3451af9-rerun/z3.csv"
      },
      "results": {
        "default": "42 solved, 3 timeout, 0 wrong, PAR2 503.986808 versus 596.809750 baseline",
        "candidate_final": "42 solved, 3 timeout, 0 wrong, PAR2 386.682985 versus 403.662678 baseline",
        "family_solved": "MathSAT 25/25, CPA induction 17/19, CPA BMC 0/1 in both profiles, unchanged from baseline",
        "row_parity": "all 45 status/answer pairs unchanged in each profile",
        "solved_row_time": "default 236.809750 to 143.986808 seconds; candidate-final 43.662678 to 26.682985 seconds; 41/42 solved rows faster in each profile",
        "stable_default_search": "29187 SAT decisions, 208421 SAT propagations, and 295539 exact fallback pairs before and after",
        "default_reuse": "264934 reusable pair contexts, 274929 reusable orientations, 82998708 assignment bounds replayed, 0 mapping fallbacks, 0 context conflicts",
        "candidate_reuse": "53468 reusable pair contexts, 54628 reusable orientations, 22413290 assignment bounds replayed, 0 mapping fallbacks, 0 context conflicts",
        "slurm_state": "both array tasks COMPLETED with exit code 0; default elapsed 00:05:25, candidate-final elapsed 00:03:28"
      },
      "artifacts": "remote:results/qf-uflra-probe-reuse-0b6aa62/; local ignored copy results/qf-uflra-probe-reuse-0b6aa62/",
      "evidence_status": "slurm-complete-current",
      "outcome": "The optimization is accepted: it preserves the 45-file result matrix and search counts while reducing solved-row runtime by about 39% in both tested profiles. The unchanged timeouts and exact pair counts confirm that quadratic pair enumeration remains the next bottleneck."
    },
    {
      "id": "2026-08-08-qf-uflra-lra-model-value-exact-filter-local",
      "started_at": "2026-08-08",
      "recorded_at": "2026-08-08",
      "kind": "profile",
      "scope": "Local focused profile and correctness validation for filtering exact convex LRA equality probes by the checked tableau model partition",
      "commit": "9c7e11f",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "local workstation",
        "binary": "build/primo with CaDiCaL from contrib/local",
        "benchmark": "tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_14.smt2"
      },
      "commands": {
        "profile": "/usr/bin/time -f 'wall=%e user=%U rss=%M' ./build/primo --quiet --stats --max-theory-conflicts=1000000 tmp/QF_UFLRA/mathsat/RandomCoupled/pb_real_10_0100_10_14.smt2",
        "validation": "./build/primo_qf_lra_solver_tests; make check; make asan-test; make lint; make docs; make tidy; make include-cleaner; git diff --check"
      },
      "baseline": {
        "revision": "e61291e",
        "answer": "sat",
        "wall_seconds": 0.72,
        "sat_decisions": 171,
        "sat_propagations": 515,
        "exact_fallback_pairs": 596,
        "probe_contexts": 596,
        "probe_orientations": 753,
        "assignment_bounds_replayed": 42904
      },
      "results": {
        "answer": "sat",
        "wall_seconds": 0.04,
        "sat_decisions": 171,
        "sat_propagations": 515,
        "model_filter_builds": 2,
        "model_filter_full_pairs": 600,
        "model_filter_candidate_pairs": 23,
        "model_filter_pruned_pairs": 577,
        "exact_fallback_pairs": 19,
        "probe_contexts": 19,
        "probe_orientations": 23,
        "assignment_bounds_replayed": 1386,
        "unmapped_terms": 0,
        "conservative_pairs": 0
      },
      "validation": {
        "focused_qf_uflra": "passed",
        "make_check": "13/13 passed",
        "asan": "13/13 passed",
        "lint": "passed",
        "docs": "passed",
        "clang_tidy": "whole-tree run completed; changed-file rerun reported only suppressed non-user-header warnings",
        "include_cleaner": "whole-tree advisory baseline debt; the one new changed-file diagnostic identified the missing standard iterator include, which was added",
        "code_review": "no blocking correctness, explanation, backtracking, model, layering, or efficiency issue"
      },
      "evidence_status": "accepted-slurm-validated-by-121888-and-121892",
      "outcome": "The model partition removes 577 of 600 round-local cross-value pairs on the representative case while preserving the SAT answer and search counts. Exact proof remains mandatory for all 23 model-equal candidates, and the worst case remains quadratic until model diversification is implemented."
    },
    {
      "id": "2026-08-08-qf-uflra-lra-model-value-exact-filter-fuzz-121888",
      "started_at": "2026-08-08",
      "recorded_at": "2026-08-08",
      "kind": "fuzz",
      "scope": "Merge-grade exact-mode differential gate for the LRA model-value filter on complete convex equality probes",
      "commit": "84d5e8a",
      "implementation_commit": "9c7e11f",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "job_id": "121888",
        "binary": "Release, git 84d5e8a, CaDiCaL cadical-3.0.0-7b99c07",
        "workspace": "Prepared in archive/reuse-dependencies mode and verified with scripts/slurm_prepare_benchmark_workspace.py --check-only immediately before submission"
      },
      "commands": {
        "seed_preflight": "python3 scripts/check_solver_seed_corpus.py --seeds benchmarks/seeds/qf_uflra --solver ./build-slurm-rel/primo --solver-arg=--nelson-oppen-prop=exact --ref ./contrib/local/bin/z3 --timeout 10 --out <artifact>/summary.csv",
        "generated_gate": "sbatch --array=0-3 with PRIMO_FUZZ_COUNT=750, PRIMO_FUZZ_SEED_BASE=2026080812, PRIMO_FUZZ_SOLVER_ARGS=--nelson-oppen-prop=exact, and PRIMO_FUZZ_OUT_DIR=slurm-results/qf-uflra-model-filter-84d5e8a scripts/slurm_qf_uflra_fuzz_gate.sbatch"
      },
      "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
      "reference": "Z3 5.0.0",
      "inputs": {
        "tracked_seeds": 10,
        "generated_cases": 3000,
        "shards": 4,
        "cases_per_shard": 750,
        "random_seeds": [
          2026080812,
          2026080813,
          2026080814,
          2026080815
        ],
        "solver_timeout_seconds": 5
      },
      "results": {
        "tracked_seeds": "10 PASS, 0 disagreement, 0 timeout, 0 crash, 0 unsupported",
        "generated": "3000 PASS: 1869 sat and 1131 unsat; 0 wrong answer, 0 timeout, 0 crash, 0 unsupported",
        "bug_files": 0,
        "slurm_state": "all four array tasks COMPLETED with exit code 0 in 18 seconds"
      },
      "artifacts": "remote:slurm-results/qf-uflra-model-filter-84d5e8a/, remote:slurm-results/qf-uflra-model-filter-84d5e8a-seeds/, and remote:slurm_logs/primo-qf-uflra-fuzz-121888_*.out",
      "evidence_status": "slurm-complete-current",
      "outcome": "The exact model-value filter passed the deterministic mixed regression corpus and 3,000 fresh generated cases before performance evaluation."
    },
    {
      "id": "2026-08-08-qf-uflra-lra-model-value-exact-filter-benchmark-121892",
      "started_at": "2026-08-08",
      "recorded_at": "2026-08-08",
      "kind": "benchmark",
      "scope": "45-file QF_UFLRA before/after comparison for filtering exact LRA equality probes by the checked model partition",
      "commit": "84d5e8a",
      "implementation_commit": "9c7e11f",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "job_id": "121892",
        "binary": "Release, git 84d5e8a, CaDiCaL cadical-3.0.0-7b99c07",
        "workspace": "Prepared and checked with scripts/slurm_prepare_benchmark_workspace.py; manifest inputs staged with scripts/slurm_stage_manifest_files.py"
      },
      "command": "sbatch --array=0-1 --time=00:20:00 with PRIMO_COMPARE_TIMEOUT=60, PRIMO_COMPARE_MANIFEST=benchmarks/qf_uflra-preprocessing-opportunity-sample.txt, and default/candidate-final solver specs scripts/slurm_qf_uflra_sample_compare.sbatch",
      "inputs": {
        "manifest": "benchmarks/qf_uflra-preprocessing-opportunity-sample.txt",
        "files": 45,
        "timeout_seconds": 60,
        "families": {
          "mathsat": 25,
          "cpachecker_induction": 19,
          "cpachecker_bmc": 1
        },
        "profiles": [
          "default",
          "candidate-final --qf-uflra-candidate-final-scan"
        ],
        "baseline": "SLURM job 121886, commit 0b6aa62, results/qf-uflra-probe-reuse-0b6aa62/",
        "reference_reuse": "Z3 was not rerun; unchanged artifact results/qf-uflra-opportunity-45-3451af9-rerun/z3.csv"
      },
      "results": {
        "default": "42 solved, 3 timeout, 0 wrong, PAR2 416.435444 versus 503.986808 baseline",
        "candidate_final": "42 solved, 3 timeout, 0 wrong, PAR2 374.066642 versus 386.682985 baseline",
        "family_solved": "MathSAT 25/25, CPA induction 17/19, CPA BMC 0/1 in both profiles, unchanged from baseline",
        "row_parity": "all 45 status/answer/wrong triples unchanged in each profile",
        "solved_row_time": "default 143.986808 to 56.435444 seconds; candidate-final 26.682985 to 14.066642 seconds; 37/42 solved rows faster in each profile",
        "default_search": "SAT decisions and propagations unchanged at 29187 and 208421",
        "default_filter": "296981 full round-local pairs, 175243 model-equal candidates, 121738 pruned; exact fallback pairs 295539 to 173801; reusable contexts 264934 to 167432; assignment bounds replayed 82998708 to 65583791",
        "candidate_filter": "331172 full round-local pairs, 185094 model-equal candidates, 146078 pruned; exact fallback pairs 54147 to 42596; reusable contexts 53468 to 42251; assignment bounds replayed 22413290 to 20669459",
        "failure_counters": "0 unmapped terms, conservative pairs, probe mapping fallbacks, or probe context conflicts in both profiles",
        "family_time": "default MathSAT solved-row time 91.850499 to 8.549319 seconds and CPA induction 52.136309 to 47.886125; candidate-final MathSAT 13.895247 to 1.504914 and CPA induction 12.787738 to 12.561728",
        "slurm_state": "both array tasks COMPLETED with exit code 0; default elapsed 00:03:58, candidate-final elapsed 00:03:15"
      },
      "artifacts": "remote:results/qf-uflra-model-filter-84d5e8a/; local ignored copy results/qf-uflra-model-filter-84d5e8a/",
      "evidence_status": "slurm-complete-current",
      "outcome": "The optimization is accepted: it preserves every sampled answer and solved count, materially reduces exact pair contexts, improves default PAR2 by 17 percent, and cuts solved-row time by 61 percent. The remaining 167432 default contexts show that equal-value classes and per-pair tableau copies remain significant work."
    },
    {
      "id": "2026-08-08-qf-uflra-lra-model-value-exact-filter-full-121894-121902",
      "started_at": "2026-08-08",
      "recorded_at": "2026-08-08",
      "kind": "benchmark",
      "scope": "Full 1284-file sandbox/non-incremental/QF_UFLRA correctness and sanity run for the model-value exact-candidate filter",
      "commit": "84d5e8a",
      "implementation_commit": "9c7e11f",
      "source_equivalent_current_commit": "2123551 (documentation-only difference under docs/)",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "job_ids": {
          "default_array": "121894-121901",
          "candidate_final_array": "121902-121909"
        },
        "binary": "Release, git 84d5e8a, CaDiCaL cadical-3.0.0-7b99c07",
        "workspace": "primo-cadical-profile; checked with scripts/slurm_prepare_benchmark_workspace.py --check-only from a detached 84d5e8a worktree; corpus staged with scripts/slurm_stage_manifest_files.py"
      },
      "command": "scripts/slurm_qf_uflra_model_mine.sbatch with an 8-shard deterministic manifest over sandbox/non-incremental/QF_UFLRA, PRIMO_MINE_TIMEOUT=5, default solver arguments for jobs 121894-121901, and --qf-uflra-candidate-final-scan for jobs 121902-121909",
      "inputs": {
        "corpus": "sandbox/non-incremental/QF_UFLRA",
        "files": 1284,
        "bytes": "approximately 1.6 GB",
        "timeout_seconds": 5,
        "shards_per_profile": 8,
        "families": {
          "FFT": 10,
          "cpachecker_bmc_svcomp14": 15,
          "cpachecker_induction_svcomp14": 359,
          "mathsat": 900
        },
        "reference_reuse": "results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv; Z3 5.0.0, identical corpus and timeout"
      },
      "results": {
        "default": "1123 solved, 160 timeout, 1 unsupported, 0 error/crash, 0 wrong declared-status answer, PAR2 2043.045990",
        "candidate_final": "1153 solved, 130 timeout, 1 unsupported, 0 error/crash, 0 wrong declared-status answer, PAR2 1486.812553",
        "z3_reused": "1234 solved, 50 timeout, 0 wrong declared-status answer, PAR2 758.708455",
        "cross_solver": "default and Z3 agreed on all 1123 jointly solved rows; candidate-final and Z3 agreed on all 1153 jointly solved rows; default and candidate-final agreed on all 1123 jointly solved rows",
        "default_families": "FFT 10/10; CPA BMC 4/15 with 11 timeout; CPA induction 216/359 with 142 timeout and 1 unsupported; MathSAT 893/900 with 7 timeout",
        "candidate_final_families": "FFT 10/10; CPA BMC 4/15 with 11 timeout; CPA induction 241/359 with 117 timeout and 1 unsupported; MathSAT 898/900 with 2 timeout",
        "unsupported": "cpachecker-induction.rekh_ctm_true-unreach-call.1.c.smt2 is valid QF_UFLRA. Raw finite-domain AMO clauses were generated before Real-equality lowering but appended afterward, reintroducing a native negated Real equality at LRA dispatch; Z3 timed out on this row at five seconds",
        "default_filter_stats": "1211 builds; 28572490 full pairs; 7687127 model-equal candidates; 20885363 pruned; 2 unmapped terms; 188 conservative pairs; 7656771 exact fallback pairs; 896602 reusable pair contexts; 310738852 assignment bounds replayed; 188 mapping fallbacks; 0 context conflicts",
        "candidate_filter_stats": "1179 builds; 28499837 full pairs; 7680820 model-equal candidates; 20819017 pruned; 2 unmapped terms; 188 conservative pairs; 1122296 exact fallback pairs; 226621 reusable pair contexts; 128841457 assignment bounds replayed; 74 mapping fallbacks; 0 context conflicts",
        "sat_stats": "default 2668619 decisions and 41739446 propagations; candidate-final 2455493 decisions and 40783258 propagations",
        "slurm_state": "all 16 shard jobs completed with exit code 0; default shards took 2:27-3:00 and candidate-final shards 1:33-2:07"
      },
      "artifacts": "remote:primo-cadical-profile/results/qf-uflra-full-model-filter-{default,candidate}-84d5e8a-5s/; local ignored copies under results/ with the same names; reused reference results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv",
      "evidence_status": "needs_revalidation-valid-input-preprocessing-bug",
      "outcome": "Rejected as full-corpus correctness evidence after investigation of the unsupported row. The solved-row comparisons remain historical performance data, but the valid-input preprocessing-order bug must be fixed and the complete corpus rerun before this profile is accepted."
    },
    {
      "id": "2026-08-08-qf-uflra-lra-model-value-candidate-final-fuzz-121910",
      "started_at": "2026-08-08",
      "recorded_at": "2026-08-08",
      "kind": "fuzz",
      "scope": "Option-specific merge-grade QF_UFLRA differential gate for the model-value filter with candidate-final scan enabled",
      "commit": "84d5e8a",
      "implementation_commit": "9c7e11f",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "job_id": "121910",
        "array_tasks": "121910-121913",
        "binary": "Release, git 84d5e8a, CaDiCaL cadical-3.0.0-7b99c07",
        "workspace": "primo-cadical-profile; scripts/slurm_qf_uflra_fuzz_gate.sbatch validated locally; binary and Z3 checked with scripts/slurm_prepare_benchmark_workspace.py --check-only immediately before submission"
      },
      "commands": {
        "seed_preflight": "python3 scripts/check_solver_seed_corpus.py --seeds benchmarks/seeds/qf_uflra --solver ./build-slurm-rel/primo --solver-arg=--quiet --solver-arg=--qf-uflra-candidate-final-scan --ref ./contrib/local/bin/z3 --timeout 10 --out slurm-results/qf_uflra-model-filter-candidate-84d5e8a-seeds/summary.csv",
        "generated_gate": "sbatch --array=0-3 --time=00:20:00 with PRIMO_FUZZ_COUNT=750, PRIMO_FUZZ_SEED_BASE=2026080816, PRIMO_FUZZ_SOLVER_ARGS=--qf-uflra-candidate-final-scan, and PRIMO_FUZZ_OUT_DIR=slurm-results/qf_uflra-model-filter-candidate-84d5e8a scripts/slurm_qf_uflra_fuzz_gate.sbatch"
      },
      "generator": "scripts/qf_uflra_smoke_fuzz.py --shape mixed",
      "reference": "Z3 5.0.0",
      "inputs": {
        "tracked_seeds": 10,
        "generated_cases": 3000,
        "shards": 4,
        "cases_per_shard": 750,
        "random_seeds": [
          2026080816,
          2026080817,
          2026080818,
          2026080819
        ],
        "solver_timeout_seconds": 5,
        "solver_option": "--qf-uflra-candidate-final-scan"
      },
      "results": {
        "tracked_seeds": "10 PASS, 0 disagreement, 0 timeout, 0 crash, 0 unsupported",
        "generated": "3000 PASS: 1852 sat and 1148 unsat; 0 wrong answer, 0 timeout, 0 crash, 0 unsupported",
        "shards": "four tasks of 750 PASS each",
        "bug_files": 0,
        "slurm_state": "all four array tasks COMPLETED with exit code 0 in 17 seconds"
      },
      "artifacts": "remote:primo-cadical-profile/slurm-results/qf_uflra-model-filter-candidate-84d5e8a/; remote:primo-cadical-profile/slurm-results/qf_uflra-model-filter-candidate-84d5e8a-seeds/; remote:primo-cadical-profile/slurm_logs/primo-qf-uflra-fuzz-121910_*.out",
      "evidence_status": "historical-insufficient-finite-domain-coverage",
      "outcome": "The 3,000 generated cases passed the paths they exercised, but this is not sufficient merge-grade evidence for the full preprocessing pipeline. The generator produced no finite-Real-domain choice cases and recorded no mechanism-activation counters, so it could not expose the valid-input AMO/lowering-order bug found by the subsequent full-corpus run."
    },
    {
      "id": "2026-08-08-finite-domain-fuzzer-local-smoke",
      "started_at": "2026-08-08",
      "recorded_at": "2026-08-08",
      "kind": "fuzz",
      "scope": "Local smoke for the finite-domain preprocessing-order fix and dedicated QF_UF/QF_UFLRA generator",
      "commit": "c1ffd82 plus the uncommitted finite-domain fix and fuzzer",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "local",
        "binary": "build/primo",
        "references": "Z3 5.0.0"
      },
      "command": "make fuzz-finite-domain; python3 scripts/summarize_fuzz_results.py fuzz-results/finite-domain-qf-uf fuzz-results/finite-domain-qf-uflra",
      "inputs": {
        "qf_uf_cases": 56,
        "qf_uflra_cases": 56,
        "seed": 2026080801,
        "scenarios": "flat-choice, nested-choice, residual-choice, observed-equalities, define-fun-aliases, shared-domain, transitive-domain",
        "solver_timeout_seconds": 5
      },
      "results": {
        "answers": "112 PASS, 0 timeout, 0 wrong answer, 0 crash, 0 unsupported, 0 activation failure",
        "qf_uf_activation": "518 raw AMO clauses, 138 post AMO clauses, 518 emitted AMO clauses",
        "qf_uflra_activation": "518 raw AMO clauses, 138 post AMO clauses, 518 emitted AMO clauses, 772 lowered Real equalities"
      },
      "artifacts": "local ignored: fuzz-results/finite-domain-qf-uf and fuzz-results/finite-domain-qf-uflra",
      "evidence_status": "local-smoke-preliminary",
      "outcome": "Accepted as local development evidence only. Merge-grade SLURM generated, mutation, and full-corpus validation remain required."
    },
    {
      "id": "2026-08-09-finite-domain-first-slurm-harness-failures-121914-121923",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "fuzz",
      "scope": "First SLURM attempt at the focused and standard finite-domain gates plus QF_UFLRA seed mutation",
      "commit": "1a5b0c0",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "job_ids": {
          "focused_finite_domain": "121914_[0-4]",
          "standard_qf_uflra": "121915_[0-3]",
          "mutation": "121923_[0-2]"
        },
        "binary": "Release, git 1a5b0c0, CaDiCaL 3.0.0",
        "python": "3.9.18 on login and compute environments"
      },
      "commands": {
        "focused": "scripts/slurm_finite_domain_fuzz_gate.sbatch",
        "standard": "scripts/slurm_qf_uflra_fuzz_gate.sbatch with 750 general plus 125 QF_UF and 125 QF_UFLRA finite-domain cases per task",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch over benchmarks/seeds/qf_uflra"
      },
      "results": {
        "focused": "All five tasks failed before generating a case because Python 3.9 rejected a PEP 701 f-string in scripts/finite_domain_fuzz.py.",
        "standard": "All four tasks completed their existing 750-case general portions, for 3000 PASS with no reported disagreement, then failed before their finite-domain portions on the same Python syntax error.",
        "mutation": "All three profiles passed all 11 tracked-seed preflights. Mutation did not start because the stale remote typefuzz parsed the required -hd option as -h=d and exited 2.",
        "wrong_answers": 0,
        "usable_complete_gates": 0,
        "slurm_state": "Every array task reached FAILED; the queue was empty when inspected."
      },
      "artifacts": "remote:primo-cadical-profile/slurm_logs/*121914*, *121915*, and *121923*; corresponding partial result directories under remote fuzz-results/",
      "evidence_status": "rejected-harness-failure",
      "outcome": "These jobs are not finite-domain or mutation correctness evidence. The generator was rewritten to Python 3.9-compatible syntax and given a grammar regression test; the mutation batch now verifies the installed YinYang API before seed checking. Both gates require a fresh run after workspace preparation reinstalls the pinned YinYang fork."
    },
    {
      "id": "2026-08-09-finite-domain-second-slurm-runtime-api-failure-121926-121928",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "fuzz",
      "scope": "Second SLURM finite-domain attempt after syntax and YinYang environment repair",
      "commit": "eaeda4f",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "job_ids": {
          "focused_finite_domain": "121926_[0-4]",
          "standard_qf_uflra": "121927_[0-3]",
          "mutation": "121928_[0-2]"
        },
        "binary": "Release, git eaeda4f, CaDiCaL 3.0.0",
        "python": "3.9.18",
        "yinyang": "Fresh fork installation; keep_logic and hoist_declarations API preflight passed"
      },
      "results": {
        "focused_prefix": "Five profiles each produced 8 PASS rows, 40 total, before reaching define-fun-aliases; 0 wrong answer, crash, timeout, unsupported, or reference disagreement in the prefixes.",
        "standard_general": "Four 750-case general mixed shards completed before the finite stage; 3000 PASS in the durable artifacts.",
        "standard_finite_prefix": "Four QF_UF finite stages each produced 8 PASS rows, 32 total, before reaching define-fun-aliases.",
        "failure": "Python 3.9 raised TypeError at zip(values, base_values, strict=True), because the strict keyword was introduced in Python 3.10.",
        "mutation": "All 11 tracked seeds passed in each of default, candidate-final, and online-EUF profiles. YinYang started correctly, then all three tasks were canceled after 58 seconds once the generated gates failed.",
        "usable_complete_gates": 0
      },
      "artifacts": "remote:primo-cadical-profile/slurm-results/{finite-domain-fuzz-eaeda4f,qf-uflra-fuzz-eaeda4f}; remote:primo-cadical-profile/fuzz-results/qf-uflra-mutation-eaeda4f; remote SLURM logs for jobs 121926-121928",
      "evidence_status": "rejected-harness-failure",
      "outcome": "No solver defect was observed, but the jobs are incomplete and cannot serve as gate evidence. The Python 3.10-only call was replaced by an explicit equal-length invariant and indexed construction. The generator now pre-generates a complete scenario cycle before invoking any solver. Fresh gates are required."
    },
    {
      "id": "2026-08-09-finite-domain-merge-fuzz-gates-121938-121947",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "fuzz",
      "scope": "Merge-grade focused, standard, and seed-mutation QF_UF/QF_UFLRA gates for the finite-domain Real-equality preprocessing-order repair",
      "commit": "e6930d0",
      "implementation_commit": "1a5b0c0",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "job_ids": {
          "focused_finite_domain": "121938_[0-4]",
          "standard_qf_uflra": "121939_[0-3]",
          "mutation": "121947_[0-2]"
        },
        "binary": "Release, git e6930d0, CaDiCaL 3.0.0",
        "python": "3.9.18; all seven finite-domain fuzzer tests passed remotely before submission",
        "references": "Z3 5.0.0 and cvc5 1.3.4 for finite-domain generation; Z3 5.0.0 with model_validate=true for mutation",
        "yinyang": "MikolasJanota/yinyang fork installed by contrib/install_yinyang.py; keep_logic and hoist_declarations API preflight passed"
      },
      "commands": {
        "focused": "scripts/slurm_finite_domain_fuzz_gate.sbatch with 200 cases per profile and seed base 2026080800",
        "standard": "scripts/slurm_qf_uflra_fuzz_gate.sbatch with 750 general, 125 QF_UF finite-domain, and 125 QF_UFLRA finite-domain cases per task",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch with 2,000 configured typefuzz iterations per seed, seeds 2026080700 through 2026080702, and an 8-second solver timeout"
      },
      "results": {
        "focused": "1000/1000 PASS, complete metadata 5/5, zero bug files; all seven scenarios present. Aggregate activation: 7768 raw AMO, 1318 post AMO, 7768 emitted AMO, and 7443 lowered Real equalities.",
        "standard_general": "3000/3000 PASS across four 750-case mixed QF_UFLRA shards.",
        "standard_finite": "1000/1000 PASS, complete metadata 8/8, zero bug files; all seven scenarios present. Aggregate activation: 7846 raw AMO, 2379 post AMO, 7846 emitted AMO, and 6211 lowered Real equalities.",
        "mutation_default": "11 seeds processed, 11 valid, 0 invalid, 0 bug triggers; completed in 00:14:01.",
        "mutation_candidate_final": "11 seeds processed, 11 valid, 0 invalid, 0 bug triggers; completed in 00:12:02.",
        "mutation_online_euf": "11 seeds processed, 11 valid, 0 invalid, 0 bug triggers; completed in 00:31:29.",
        "wrong_answers": 0,
        "crashes": 0,
        "unsupported": 0,
        "reference_disagreements": 0
      },
      "artifacts": "remote:primo-cadical-profile/slurm-results/{finite-domain-fuzz-e6930d0,qf-uflra-fuzz-e6930d0}; remote:primo-cadical-profile/fuzz-results/qf-uflra-mutation-e6930d0; remote SLURM logs for jobs 121938, 121939, and 121947",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as merge-grade correctness evidence. The dedicated generator activated the repaired finite-domain and Real-equality-lowering mechanisms, and all three real-seed mutation profiles completed without a bug trigger."
    },
    {
      "id": "2026-08-09-qf-uflra-full-finite-domain-fix-121950-121951",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "benchmark",
      "scope": "Full 1,284-file QF_UFLRA correctness and sanity rerun after repairing finite-domain clauses that escaped Real-equality lowering",
      "commit": "e6930d0",
      "implementation_commit": "1a5b0c0",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "job_ids": {
          "default": "121950_[0-7]",
          "candidate_final": "121951_[0-7]"
        },
        "binary": "Release, git e6930d0, CaDiCaL 3.0.0",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified the exact revision, CaDiCaL linkage, Z3, cvc5, and typefuzz immediately before submission",
        "corpus": "tmp/QF_UFLRA; 1284 files; 1645365818 bytes; C-locale path/size manifest SHA-256 24264774139d25d59f71a4675768e05109d62cee33742fbfeb88619600949bbf"
      },
      "command": "scripts/slurm_qf_uflra_model_mine.sbatch with 8 shards, a 5-second per-file timeout, build-slurm-rel/primo --quiet --stats for default, and the additional --qf-uflra-candidate-final-scan option for candidate-final",
      "results": {
        "default": "1284 files: 1123 solved (642 sat, 481 unsat), 161 timeout, 0 unsupported/error, 0 wrong declared-status answer; PAR2 2041.418179; 222598 Real equalities lowered.",
        "candidate_final": "1284 files: 1153 solved (672 sat, 481 unsat), 131 timeout, 0 unsupported/error, 0 wrong declared-status answer; PAR2 1487.056137; 222816 Real equalities lowered.",
        "default_families": "FFT 10/10; CPAchecker BMC 4/15 with 11 timeout; CPAchecker induction 216/359 with 143 timeout; MathSAT 893/900 with 7 timeout.",
        "candidate_final_families": "FFT 10/10; CPAchecker BMC 4/15 with 11 timeout; CPAchecker induction 241/359 with 118 timeout; MathSAT 898/900 with 2 timeout.",
        "cross_profile": "1284 common files, 1123 jointly solved, 0 decisive-answer disagreements.",
        "z3_reused": "Existing Z3 5.0.0 artifact from results/qf-uflra-full-mine-z3stats-77599f4-5s: 1234 solved, 50 timeout, 0 wrong answer; all 1284 paths common and zero disagreements with either Primo profile on jointly solved rows.",
        "regression_row": "cpachecker-induction.rekh_ctm_true-unreach-call.1.c.smt2 now reaches the solver in both profiles, reports 5 raw finite-domain AMO clauses and 28771 lowered Real equalities, and honestly times out at five seconds instead of returning unsupported.",
        "comparison_to_84d5e8a": "Solved counts are unchanged. The prior 1 unsupported row became a timeout; default moved from 160 timeout plus 1 unsupported to 161 timeout, and candidate-final from 130 timeout plus 1 unsupported to 131 timeout. PAR2 changed from 2043.045990 to 2041.418179 default and from 1486.812553 to 1487.056137 candidate-final."
      },
      "artifacts": "remote:primo-cadical-profile/results/qf-uflra-full-finite-fix-{default,candidate}-e6930d0-5s/; local ignored copies of shard CSVs and summaries under results/ with matching names; reused local Z3 artifact results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as full-corpus correctness and sanity evidence. The valid-input unsupported defect is removed with no wrong answers, no non-timeout failures, and no material solved-count or PAR2 regression. This repair improves supported behavior, not five-second solved count."
    },
    {
      "id": "2026-08-09-qf-uflra-shared-model-local-fuzz-75a87c4",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "fuzz",
      "scope": "Local differential smoke and merge gate for opt-in convex QF_UFLRA shared-model reconciliation",
      "commit": "75a87c4",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "local",
        "workspace": "/workspace",
        "binary": "build/primo with CaDiCaL 3.0.0",
        "reference": "contrib/local/bin/z3"
      },
      "commands": {
        "rejected_reference_attempt": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 1000 --seed 20260809 --timeout 5 --shape mixed --solver-arg=--qf-uflra-model-reconciliation --out fuzz-results/qf-uflra-shared-model-local-20260809",
        "first_valid_gate": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref ./contrib/local/bin/z3 --count 1000 --seed 20260809 --timeout 5 --shape mixed --solver-arg=--qf-uflra-model-reconciliation --out fuzz-results/qf-uflra-shared-model-local-20260809-z3",
        "final_valid_gate": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref ./contrib/local/bin/z3 --count 1000 --seed 202608091 --timeout 5 --shape mixed --solver-arg=--qf-uflra-model-reconciliation --out fuzz-results/qf-uflra-shared-model-local-20260809-z3-final"
      },
      "results": {
        "rejected_reference_attempt": "1000 REFERENCE_UNUSABLE because z3 was absent from PATH; not correctness evidence.",
        "first_valid_gate": "1000/1000 PASS against the repository-managed Z3, zero disagreement, timeout, crash, or unsupported result.",
        "final_valid_gate": "1000/1000 PASS with a fresh seed against the repository-managed Z3, zero disagreement, timeout, crash, or unsupported result.",
        "accepted_cases": 2000
      },
      "artifacts": "local ignored: fuzz-results/qf-uflra-shared-model-local-20260809{,-z3,-z3-final}",
      "evidence_status": "local-complete-awaiting-slurm",
      "outcome": "Accepted as local differential evidence only. The first attempt correctly failed as evidence because its reference command was unresolved. SLURM generated and real-seed mutation gates remain required before benchmark or default-promotion claims."
    },
    {
      "id": "2026-08-09-qf-uflra-shared-model-prefixed-fuzz-rejected-121966-121970",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "fuzz",
      "scope": "First option-specific SLURM gate for shared-model reconciliation before the congruence-consequence repair",
      "commit": "ed82847",
      "implementation_commit": "75a87c4",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "job_ids": {
          "generated": "121966_[0-3]",
          "mutation_preflight": "121970_0"
        },
        "binary": "Release, git ed82847, CaDiCaL 3.0.0",
        "reference": "Z3 5.0.0"
      },
      "commands": {
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch with --qf-uflra-model-reconciliation, 750 mixed plus 125 QF_UF and 125 QF_UFLRA finite-domain cases per shard",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0 with PRIMO_FUZZ_EXTRA_SOLVER_ARGS=--qf-uflra-model-reconciliation"
      },
      "inputs": {
        "generated_cases": 4000,
        "tracked_seeds": 11,
        "solver_timeout_seconds": 5,
        "seed_record": "The generated submission seed was not retained in its log and its temporary slurm-results directory was removed by the later workspace refresh. This run is rejected evidence and is superseded by job 121994 with an explicit seed."
      },
      "results": {
        "generated": "3000 mixed plus 1000 finite-domain cases completed without a reported discrepancy.",
        "seed_preflight": "10 PASS and 1 decisive disagreement: real_congruence_forced_unsat.smt2 returned sat in Primo and unsat in Z3, matching its declared unsat status.",
        "mutation": "Not started because the mandatory seed preflight failed.",
        "slurm_state": "All four generated tasks completed in 27 seconds; mutation task failed with exit code 1 after 2 seconds."
      },
      "artifacts": "remote:<fresh-workspace>/slurm_logs/primo-qf-uflra-fuzz-121966_*.out and primo-qfuflra-mut-121970-0.out; remote:<fresh-workspace>/fuzz-results/qf-uflra-shared-model-mutation-ed82847/default/seed-summary.csv",
      "evidence_status": "rejected-soundness-failure",
      "outcome": "Rejected. An internal x = y merge can induce f(x) = f(y) by EUF congruence; without another EUF-to-LRA reconciliation pass, accepting that merge could miss incompatible arithmetic values. Commit 579ee70 added a shared-partition snapshot and guarded SAT fallback for every congruence-producing merge."
    },
    {
      "id": "2026-08-09-qf-uflra-shared-model-slurm-fuzz-121971-121994",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "fuzz",
      "scope": "Merge-grade generated, finite-domain, tracked-seed, and mutation validation for repaired opt-in shared-model reconciliation",
      "commit": "2d1ecf8",
      "implementation_commit": "579ee70",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "job_ids": {
          "first_repaired_generated": "121971_[0-3]",
          "mutation": "121975_0",
          "preserved_generated": "121994_[0-3]"
        },
        "binary": "Release, git 2d1ecf8 for job 121994 and git 579ee70 for jobs 121971/121975; CaDiCaL 3.0.0",
        "references": "Z3 5.0.0 for mixed generation and mutation; Z3 5.0.0 plus cvc5 1.3.4 for finite-domain generation",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified the exact 2d1ecf8 binary, CaDiCaL linkage, Z3, and cvc5 immediately before job 121994"
      },
      "commands": {
        "preserved_generated": "sbatch --array=0-3 --export=ALL,PRIMO_FUZZ_COUNT=750,PRIMO_FINITE_DOMAIN_FUZZ_COUNT=125,PRIMO_FUZZ_SEED_BASE=2026080960,PRIMO_FUZZ_SOLVER_ARGS=--qf-uflra-model-reconciliation,PRIMO_FUZZ_OUT_DIR=fuzz-results/qf-uflra-shared-model-generated-2d1ecf8 scripts/slurm_qf_uflra_fuzz_gate.sbatch",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0 with 2000 configured iterations per seed, PRIMO_FUZZ_MUTATION_SEED_BASE=2026080950, an 8-second solver timeout, and PRIMO_FUZZ_EXTRA_SOLVER_ARGS=--qf-uflra-model-reconciliation"
      },
      "inputs": {
        "generated_mixed": 3000,
        "generated_finite_domain": 1000,
        "generated_seed_range": "2026080960-2026080963; finite QF_UF adds 100000 and finite QF_UFLRA adds 200000",
        "tracked_seeds": 11,
        "mutation_iterations_per_seed": 2000,
        "solver_timeout_seconds": 5,
        "mutation_solver_timeout_seconds": 8
      },
      "results": {
        "generated": "3000/3000 PASS against Z3, with 0 wrong answer, timeout, crash, unsupported result, or reference disagreement.",
        "finite_domain": "1000/1000 PASS against Z3 and cvc5, complete metadata 8/8, all seven scenarios represented, and zero bug files. Aggregate activation: 7872 raw/emitted AMO clauses, 2302 post-processed AMO clauses, and 6216 lowered Real equalities.",
        "tracked_seeds": "11/11 PASS, including real_congruence_forced_unsat.smt2.",
        "mutation": "11 seeds processed, 11 valid, 0 invalid, 0 bug triggers; 2000 iterations configured per seed.",
        "slurm_state": "All four preserved generated tasks completed in 25-26 seconds; mutation completed in 00:10:15 with exit code 0."
      },
      "artifacts": "remote:<fresh-workspace>/fuzz-results/qf-uflra-shared-model-generated-2d1ecf8/; remote:<fresh-workspace>/fuzz-results/qf-uflra-shared-model-mutation-579ee70/; remote:<fresh-workspace>/slurm_logs for jobs 121971, 121975, and 121994",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as merge-grade correctness evidence for the opt-in QF_UFLRA profile. The preserved rerun supplies explicit seeds and durable case metadata after the initial repaired result directory was removed during a later workspace refresh."
    },
    {
      "id": "2026-08-09-qf-uflra-shared-model-sample-121976",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "benchmark",
      "scope": "45-file QF_UFLRA promotion sample comparing same-commit default and shared-model reconciliation",
      "commit": "2d1ecf8",
      "implementation_commit": "579ee70",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "job_id": "121976_[0-1]",
        "binary": "Release, git 2d1ecf8, CaDiCaL 3.0.0",
        "corpus": "benchmarks/qf-uflra-preprocessing-opportunity-sample.txt over the staged full QF_UFLRA tree",
        "reference_reuse": "results/qf-uflra-opportunity-45-3451af9-rerun/z3.csv; identical 45-file manifest and 60-second timeout"
      },
      "command": "scripts/slurm_qf_uflra_sample_compare.sbatch with a 60-second timeout, build-slurm-rel/primo --quiet --stats for default, and --qf-uflra-model-reconciliation for reconciliation",
      "inputs": {
        "files": 45,
        "families": "25 MathSAT, 19 CPAchecker induction, 1 CPAchecker BMC",
        "timeout_seconds": 60
      },
      "results": {
        "default": "42 solved, 3 timeout, 0 error/wrong, PAR2 416.246354.",
        "reconciliation": "43 solved, 2 timeout, 0 error/wrong, PAR2 277.404402.",
        "z3_reused": "45 solved, 0 timeout, PAR2 10.936763.",
        "cross_solver": "Zero decisive-answer disagreements and zero non-timeout failures.",
        "mechanism": "Reconciliation avoided 1155 SAT materializations, used 18 congruence fallbacks and 0 exact fallbacks, reduced SAT equality atoms from 1147 to 34, decisions from 29187 to 16488, propagations from 208421 to 136205, and solve calls from 258 to 77."
      },
      "artifacts": "remote:<fresh-workspace>/results/qf-uflra-shared-model-sample-2d1ecf8/; local ignored CSV copies under results/qf-uflra-shared-model-sample-2d1ecf8/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as the promotion sample. The profile preserved answers, solved one additional BMC row, and materially reduced search and equality traffic."
    },
    {
      "id": "2026-08-09-qf-uflra-shared-model-full-121978-121979",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "benchmark",
      "scope": "Full 1,284-file QF_UFLRA correctness and performance comparison for opt-in shared-model reconciliation",
      "commit": "2d1ecf8",
      "implementation_commit": "579ee70",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "job_ids": {
          "default": "121978_[0-7]",
          "reconciliation": "121979_[0-7]"
        },
        "binary": "Release, git 2d1ecf8, CaDiCaL 3.0.0",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision 2d1ecf8, CaDiCaL linkage, Z3, cvc5, and typefuzz immediately before submission",
        "corpus": "tmp/QF_UFLRA; 1284 files; 1645365818 bytes; C-locale path/size manifest SHA-256 24264774139d25d59f71a4675768e05109d62cee33742fbfeb88619600949bbf"
      },
      "command": "scripts/slurm_qf_uflra_model_mine.sbatch with 8 shards and a 5-second per-file timeout; build-slurm-rel/primo --quiet --stats for default and the additional --qf-uflra-model-reconciliation option for reconciliation",
      "inputs": {
        "files": 1284,
        "timeout_seconds": 5,
        "families": "FFT 10, CPAchecker BMC 15, CPAchecker induction 359, MathSAT 900",
        "reference_reuse": "results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv; Z3 5.0.0, identical corpus and timeout"
      },
      "results": {
        "default": "1123 solved (642 sat, 481 unsat), 161 timeout, 0 unsupported/error/wrong, PAR2 2040.942239.",
        "reconciliation": "1156 solved (675 sat, 481 unsat), 128 timeout, 0 unsupported/error/wrong, PAR2 1424.154414.",
        "z3_reused": "1234 solved (736 sat, 498 unsat), 50 timeout, 0 error/wrong, PAR2 758.708455.",
        "default_families": "FFT 10/10; CPAchecker BMC 4/15; CPAchecker induction 216/359; MathSAT 893/900.",
        "reconciliation_families": "FFT 10/10; CPAchecker BMC 4/15; CPAchecker induction 242/359; MathSAT 900/900.",
        "cross_solver": "Zero decisive-answer disagreements among default, reconciliation, and reused Z3 on jointly solved files; zero non-timeout failures.",
        "mechanism": "Reconciliation absorbed 19600 explained equalities without SAT materialization, used 584 congruence fallbacks, 304 LRA separations, 0 exact fallbacks, and 0 validation failures. SAT equality atoms fell from 17730 to 1161, decisions from 2646397 to 1322558, propagations from 42195478 to 24815243, and solve calls from 8348 to 2177.",
        "timing": "Aggregate measured total time fell from 421.656698 seconds to 131.879076 seconds. Default shard tasks completed in 02:26-02:59; reconciliation tasks completed in 01:27-02:00."
      },
      "artifacts": "remote:<fresh-workspace>/results/qf-uflra-shared-model-full-{default,reconciliation}-2d1ecf8-5s/; local ignored CSV copies and comparison directory under results/qf-uflra-shared-model-full-*-2d1ecf8-5s/; reused local Z3 artifact results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as full-corpus evidence for the opt-in convex QF_UFLRA profile. It adds 33 solved files, removes all seven MathSAT timeouts, cuts PAR2 by 30 percent, and halves SAT decisions without a detected correctness regression. It remains opt-in because component-model ownership, a second EUF-to-LRA reconciliation iteration, and paper-style model mutation are not implemented."
    },
    {
      "id": "2026-08-09-qf-uflra-linear-class-summary-slurm-fuzz-2f9113b",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "fuzz",
      "scope": "Merge-grade generated, finite-domain, tracked-seed, and YinYang validation for the exact linear shared-class summary",
      "commit": "2f9113b",
      "implementation_commit": "0fa62ff",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 2f9113b, GCC 11.4.1, CaDiCaL 3.0.0",
        "references": "Z3 5.0.0 for mixed generation and mutation; Z3 5.0.0 plus cvc5 1.3.4 for finite-domain generation",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified the exact binary revision, CaDiCaL linkage, Z3, cvc5, and typefuzz immediately before submission",
        "scheduler_state": "All five array tasks completed with exit code 0; generated tasks took less than one minute and mutation took 00:08:14. Scheduler identifiers are intentionally not stored in the repository."
      },
      "commands": {
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch --array=0-3 with PRIMO_FUZZ_COUNT=750, PRIMO_FINITE_DOMAIN_FUZZ_COUNT=125, PRIMO_FUZZ_SEED_BASE=2026080970, and PRIMO_FUZZ_SOLVER_ARGS=--qf-uflra-model-reconciliation",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0 with 2000 configured iterations per seed, PRIMO_FUZZ_MUTATION_SEED_BASE=2026080980, an 8-second solver timeout, and PRIMO_FUZZ_EXTRA_SOLVER_ARGS=--qf-uflra-model-reconciliation"
      },
      "inputs": {
        "generated_mixed": 3000,
        "generated_finite_domain": 1000,
        "generated_seed_range": "2026080970-2026080973; finite QF_UF adds 100000 and finite QF_UFLRA adds 200000",
        "tracked_seeds": 11,
        "mutation_iterations_per_seed": 2000,
        "generated_solver_timeout_seconds": 5,
        "mutation_solver_timeout_seconds": 8
      },
      "results": {
        "generated": "3000/3000 PASS against Z3, with 0 wrong answer, timeout, crash, unsupported result, parser/type error, or reference disagreement.",
        "finite_domain": "1000/1000 PASS against Z3 and cvc5, complete metadata 8/8, all seven scenarios represented, and zero bug files. Aggregate activation: 8036 raw/emitted AMO clauses, 2382 post-processed AMO clauses, and 6267 lowered Real equalities.",
        "tracked_seeds": "11/11 PASS, including real_congruence_forced_unsat.smt2.",
        "mutation": "11 seeds processed, 11 valid, 0 invalid, 0 bug triggers; 2000 iterations configured per seed and 43970 differential solver calls reported."
      },
      "artifacts": "remote:<prepared-workspace>/fuzz-results/qf-uflra-class-summary-2f9113b/ and qf-uflra-class-summary-mutation-2f9113b/; remote scheduler logs retained with the prepared workspace",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as merge-grade correctness evidence for the linear shared-class summary and its exact class-delta fallback criterion. No LRA implementation or freedom-interval code was changed."
    },
    {
      "id": "2026-08-09-qf-uflra-linear-class-summary-slurm-sample-2f9113b",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "benchmark",
      "scope": "45-file QF_UFLRA sample comparing the linear class summary with the preserved quadratic-classifier reconciliation baseline",
      "commit": "2f9113b",
      "implementation_commit": "0fa62ff",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 2f9113b, GCC 11.4.1, CaDiCaL 3.0.0",
        "corpus": "benchmarks/qf_uflra-preprocessing-opportunity-sample.txt over the staged full QF_UFLRA tree",
        "baseline_reuse": "results/qf-uflra-shared-model-sample-2d1ecf8/reconciliation.csv; identical manifest, profile, and 60-second timeout",
        "scheduler_state": "The single current-profile task completed with exit code 0 in 00:02:36; the unchanged baseline and Z3 profiles were not rerun. Scheduler identifiers are intentionally not stored in the repository."
      },
      "command": "scripts/slurm_qf_uflra_sample_compare.sbatch --array=0 with a 60-second timeout and build-slurm-rel/primo --quiet --stats --qf-uflra-model-reconciliation",
      "inputs": {
        "files": 45,
        "families": "25 MathSAT, 19 CPAchecker induction, 1 CPAchecker BMC",
        "timeout_seconds": 60
      },
      "results": {
        "quadratic_baseline": "43 solved, 2 timeout, 0 error/wrong, PAR2 277.404402.",
        "linear_summary": "43 solved, 2 timeout, 0 error/wrong, PAR2 274.483229.",
        "cross_version": "All 45 paths common, zero answer disagreement, and zero status change.",
        "search": "Both versions used 16488 SAT decisions, 136205 propagations, 1155 internal EUF merges, and 18 congruence fallbacks.",
        "linear_summary_activity": "1173 class-summary checks and 372104 representative visits.",
        "timing": "Aggregate solved-row time changed from 37.404402 to 34.483229 seconds."
      },
      "artifacts": "remote:<prepared-workspace>/results/qf-uflra-class-summary-sample-2f9113b/; local ignored CSV copies under results/qf-uflra-class-summary-sample-2f9113b/; preserved baseline under results/qf-uflra-shared-model-sample-2d1ecf8/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as a clean sample result. It preserves search behavior and removes the quadratic partition scan with a small wall-time improvement."
    },
    {
      "id": "2026-08-09-qf-uflra-linear-class-summary-slurm-full-2f9113b",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "benchmark",
      "scope": "Full 1,284-file QF_UFLRA correctness and performance comparison for the linear shared-class summary",
      "commit": "2f9113b",
      "implementation_commit": "0fa62ff",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 2f9113b, GCC 11.4.1, CaDiCaL 3.0.0",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision 2f9113b, CaDiCaL linkage, Z3, cvc5, and typefuzz immediately before submission",
        "corpus": "tmp/QF_UFLRA; 1284 files; 1645365818 bytes; C-locale path/size manifest SHA-256 24264774139d25d59f71a4675768e05109d62cee33742fbfeb88619600949bbf",
        "baseline_reuse": "results/qf-uflra-shared-model-full-reconciliation-2d1ecf8-5s; identical corpus, profile, and timeout",
        "reference_reuse": "results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv; Z3 5.0.0, identical corpus and timeout",
        "scheduler_state": "All eight current-profile shards completed with exit code 0 in 00:01:26-00:02:01. Unchanged baseline and Z3 profiles were not rerun. Scheduler identifiers are intentionally not stored in the repository."
      },
      "command": "scripts/slurm_qf_uflra_model_mine.sbatch --array=0-7 with 8 shards, a 5-second per-file timeout, and build-slurm-rel/primo --quiet --stats --qf-uflra-model-reconciliation",
      "inputs": {
        "files": 1284,
        "timeout_seconds": 5,
        "families": "FFT 10, CPAchecker BMC 15, CPAchecker induction 359, MathSAT 900"
      },
      "results": {
        "quadratic_baseline": "1156 solved (675 sat, 481 unsat), 128 timeout, 0 unsupported/error/wrong, PAR2 1424.154414.",
        "linear_summary": "1156 solved (675 sat, 481 unsat), 128 timeout, 0 unsupported/error/wrong, PAR2 1421.231621.",
        "families": "Both versions: FFT 10/10; CPAchecker BMC 4/15; CPAchecker induction 242/359; MathSAT 900/900.",
        "cross_version": "All 1284 paths common, zero answer disagreement, and zero status change.",
        "search": "SAT conflicts remained 564086. Decisions changed from 1322558 to 1390745, propagations from 24815243 to 25004096, and solve calls from 2177 to 2200. Internal merges changed from 19600 to 20447 and guarded congruence fallbacks from 584 to 588.",
        "linear_summary_activity": "21036 class-summary checks and 13653597 representative visits.",
        "timing": "Aggregate solved-row time changed from 144.154414 to 141.231621 seconds.",
        "z3_reused": "1234 solved (736 sat, 498 unsat), 50 timeout, 0 error/wrong, PAR2 758.708455."
      },
      "artifacts": "remote:<prepared-workspace>/results/qf-uflra-class-summary-full-reconciliation-2f9113b-5s/; local ignored CSV copies under results/qf-uflra-class-summary-full-reconciliation-2f9113b-5s/; preserved baseline and Z3 CSVs under results/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as an implementation-level efficiency improvement with no observed correctness or solved-count regression. The exact class-delta test is slightly more conservative than the old pair classifier, but the expected-linear scan still reduces measured solved-row time. The reconciliation profile remains opt-in because its second EUF-to-LRA iteration and paper-style model mutation are still missing."
    },
    {
      "id": "2026-08-09-qflra-model-mutation-preserves-pure-lra",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "analysis",
      "scope": "Confirm the qflra-model-mutation branch leaves pure QF_LRA behaviour untouched. It adds the Section 5.2 freedom-interval and greedy-diversifier primitives to LraTableau and refactors model_equal_classes' grouping, so the refactor is the part that needed checking rather than the additions.",
      "commit": "8571a6f vs main 996a100",
      "branch": "qflra-model-mutation",
      "evidence_status": "current",
      "environment": {
        "type": "local",
        "notes": "Both Release, same toolchain; main built in a scratch worktree sharing /workspace/contrib/local for the prebuilt dependencies."
      },
      "result": {
        "by_inspection": "grep over src/ shows freedom_interval, diversify_shared_model, model_equal_classes and entailed_equalities all have NO caller outside lra_tableau.{hpp,cpp}. The only reachable change is the added Tuning field, which is default-constructed and read only by the unwired sweep.",
        "sample": {
          "files": 60,
          "families": 14,
          "timeout_s": 25
        },
        "completed": 56,
        "unknown_or_timeout": 4,
        "answer_diffs": 0,
        "counter_diffs_on_completed": 0,
        "false_alarm_avoided": "A first pass at a 10s timeout reported 12 counter diffs. All 12 were instances that time out and print 'unknown' -- the solver emits an answer on timeout, so a naive script counts them as completed. Re-running one of them at 20s gave byte-identical counters from both binaries (:lra.pivots 8695, :lra.online-check-calls 44980). This is the second time this session that cut-off counters produced a false alarm; the rule is that counter comparisons mean nothing on instances that do not finish."
      }
    },
    {
      "id": "2026-08-09-qf-uflra-model-mutation-slurm-fuzz-4937d3c",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "fuzz",
      "scope": "Merge-grade generated, finite-domain, tracked-seed, and YinYang validation of the Section 5.2 scratch LRA model-mutation integration",
      "commit": "4937d3c",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 4937d3c, CaDiCaL 3.0.0",
        "references": "Z3 5.0.0 for mixed generation and mutation; Z3 5.0.0 plus cvc5 1.3.4 for finite-domain generation",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified the exact binary revision, CaDiCaL linkage, Z3, cvc5, and typefuzz immediately before submission",
        "scheduler_state": "Eight generated tasks and two mutation tasks completed with exit code 0. Generated tasks took 28-29 seconds; reconciliation mutation took 00:10:48 and branching mutation took 00:12:32. Scheduler identifiers are intentionally not stored in the repository."
      },
      "commands": {
        "generated_reconciliation": "scripts/slurm_qf_uflra_fuzz_gate.sbatch --array=0-3 with 750 mixed, 125 finite QF_UF, and 125 finite QF_UFLRA cases per shard; seed base 2026080990; solver option --qf-uflra-model-reconciliation",
        "generated_branching": "scripts/slurm_qf_uflra_fuzz_gate.sbatch --array=0-3 with 750 mixed, 125 finite QF_UF, and 125 finite QF_UFLRA cases per shard; seed base 2026081000; solver option --model-equality-branching",
        "mutation_reconciliation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0 with 2000 configured mutations per seed, seed 2026081010, and solver option --qf-uflra-model-reconciliation",
        "mutation_branching": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0 with 2000 configured mutations per seed, seed 2026081020, and solver option --model-equality-branching"
      },
      "inputs": {
        "generated_per_option": "3000 mixed QF_UFLRA, 500 finite-domain QF_UF, and 500 finite-domain QF_UFLRA cases",
        "tracked_seeds": 11,
        "mutation_iterations_per_seed": 2000,
        "generated_solver_timeout_seconds": 5,
        "mutation_solver_timeout_seconds": 8
      },
      "results": {
        "generated_reconciliation": "4000/4000 PASS with zero wrong answer, timeout, crash, unsupported result, parser/type error, or reference disagreement.",
        "generated_branching": "4000/4000 PASS with zero wrong answer, timeout, crash, unsupported result, parser/type error, or reference disagreement.",
        "tracked_seeds": "Both profiles passed 11/11 deterministic preflight cases, including real_congruence_forced_unsat.smt2.",
        "mutation_reconciliation": "11 seeds processed, 11 valid, 0 invalid, 0 bug triggers, 43982 differential solver calls.",
        "mutation_branching": "11 seeds processed, 11 valid, 0 invalid, 0 bug triggers, 43872 differential solver calls."
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/qf-uflra-model-mutation-{reconciliation,branching}-4937d3c/ and fuzz-results/qf-uflra-model-mutation-{reconciliation,branching}-yinyang-4937d3c/; local ignored summary copies under /tmp/primo-model-mutation-fuzz-summaries/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as merge-grade correctness evidence for using one scratch diversification sweep to filter reconciliation and model-equality-branch candidates. No wrong answer, crash, invalid seed, or reference disagreement was observed."
    },
    {
      "id": "2026-08-09-qf-uflra-model-mutation-slurm-sample-4937d3c",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "benchmark",
      "scope": "45-file same-commit QF_UFLRA ablation of scratch model mutation in reconciliation and model-equality branching",
      "commit": "4937d3c",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 4937d3c, CaDiCaL 3.0.0",
        "corpus": "benchmarks/qf_uflra-preprocessing-opportunity-sample.txt over the staged full QF_UFLRA tree",
        "reference_reuse": "results/qf-uflra-opportunity-45-3451af9-rerun/z3.csv; unchanged 45-file manifest and 60-second timeout",
        "scheduler_state": "All five array tasks completed with exit code 0 in 00:02:33-00:09:16. Z3 was not rerun because the solver and corpus result are unchanged. Scheduler identifiers are intentionally not stored in the repository."
      },
      "command": "scripts/slurm_qf_uflra_sample_compare.sbatch --array=0-4 with a 60-second timeout and variants default, reconciliation with mutation, reconciliation with --no-model-equality-mutation, branching with mutation, and branching with --no-model-equality-mutation",
      "inputs": {
        "files": 45,
        "families": "25 MathSAT, 19 CPAchecker induction, 1 CPAchecker BMC",
        "timeout_seconds": 60
      },
      "results": {
        "default": "42 solved, 3 timeout, 0 error/wrong, PAR2 416.622519.",
        "reconciliation_mutation": "43 solved, 2 timeout, 0 error/wrong, PAR2 271.117621.",
        "reconciliation_no_mutation": "43 solved, 2 timeout, 0 error/wrong, PAR2 275.807627.",
        "branching_mutation": "37 solved, 8 timeout, 0 error/wrong, PAR2 991.359031.",
        "branching_no_mutation": "37 solved, 8 timeout, 0 error/wrong, PAR2 1034.190677.",
        "cross_profile": "Mutation caused zero status or decisive-answer change within either opt-in profile. Reconciliation solved one CPAchecker BMC row that default timed out; branching timed out on five CPAchecker induction rows solved by default.",
        "reconciliation_activity": "63 mutation calls and 647 updates removed 20291 of 168270 candidate pairs. SAT search was unchanged at 16488 decisions, 136205 propagations, 2445 conflicts, and 77 solve calls; solved-row time fell from 35.807627 to 31.117621 seconds.",
        "branching_activity": "623 mutation calls and 4633 updates removed 311507 of 2574227 candidate pairs. Decisions fell from 313849 to 295996, propagations from 997702 to 909804, conflicts from 5466 to 4462, and solve calls from 6686 to 6020.",
        "z3_reused": "45 solved, 0 timeout/error/wrong, PAR2 10.936763."
      },
      "artifacts": "remote:<prepared-workspace>/results/qf-uflra-model-mutation-sample-4937d3c/; local ignored CSV copies under /tmp/primo-model-mutation-sample-4937d3c/; reused Z3 CSV under results/qf-uflra-opportunity-45-3451af9-rerun/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Keep mutation enabled within both opt-in profiles and retain --no-model-equality-mutation as an ablation. The branching profile remains a diagnostic experiment because it solves substantially fewer sample rows than reconciliation or default."
    },
    {
      "id": "2026-08-09-qf-uflra-model-mutation-slurm-full-4937d3c",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "benchmark",
      "scope": "Full 1,284-file same-commit QF_UFLRA reconciliation ablation of the Section 5.2 scratch model-mutation sweep",
      "commit": "4937d3c",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 4937d3c, CaDiCaL 3.0.0",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision 4937d3c, CaDiCaL linkage, Z3, cvc5, and typefuzz immediately before submission",
        "corpus": "tmp/QF_UFLRA; 1284 files; 1645365818 bytes; C-locale path/size manifest SHA-256 24264774139d25d59f71a4675768e05109d62cee33742fbfeb88619600949bbf",
        "reference_reuse": "results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv; Z3 5.0.0, identical corpus and timeout",
        "scheduler_state": "All 16 shards completed with exit code 0 in 00:01:26-00:02:00. Z3 was not rerun. Scheduler identifiers are intentionally not stored in the repository."
      },
      "command": "Two scripts/slurm_qf_uflra_model_mine.sbatch --array=0-7 runs with 8 shards and a 5-second timeout: build-slurm-rel/primo --quiet --stats --qf-uflra-model-reconciliation, with and without --no-model-equality-mutation",
      "inputs": {
        "files": 1284,
        "timeout_seconds": 5,
        "families": "FFT 10, CPAchecker BMC 15, CPAchecker induction 359, MathSAT 900"
      },
      "results": {
        "mutation": "1156 solved (675 sat, 481 unsat), 128 timeout, 0 unsupported/error/wrong, PAR2 1412.285038.",
        "no_mutation": "1156 solved (675 sat, 481 unsat), 128 timeout, 0 unsupported/error/wrong, PAR2 1419.782409.",
        "families": "Both profiles: FFT 10/10; CPAchecker BMC 4/15; CPAchecker induction 242/359; MathSAT 900/900.",
        "cross_profile": "All 1284 paths common, zero answer disagreement, and zero status change.",
        "mutation_activity": "1298 sweeps and 23031 accepted value updates removed 2280171 of 11450940 candidate model-equality pairs; post-mutation candidates were 9170769.",
        "search": "Mutation reduced decisions from 1388580 to 1281729, propagations from 24996441 to 24718750, solve calls from 2199 to 2169, internal EUF merges from 20421 to 19598, and guarded congruence fallbacks from 587 to 574. Conflicts changed from 564086 to 564081.",
        "timing": "Aggregate solved-row time fell from 139.782409 to 132.285038 seconds.",
        "z3_reused": "1234 solved (736 sat, 498 unsat), 50 timeout, 0 error/wrong, PAR2 758.708455."
      },
      "artifacts": "remote:<prepared-workspace>/results/qf-uflra-model-mutation-full-recon-{mut,nomut}-4937d3c-5s/; local ignored CSV copies under /tmp/primo-model-mutation-full/; reused Z3 CSV under results/qf-uflra-full-mine-z3stats-77599f4-5s/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as a modest implementation-level search improvement inside the opt-in reconciliation profile. It does not change solved count and remains far behind reused Z3, so it does not justify promoting reconciliation or model-equality branching to the ordinary default."
    },
    {
      "id": "2026-08-09-qf-uflra-class-reconciliation-local-profile-4a93256",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "profile",
      "scope": "Bounded gprof diagnosis of the class-based convex reconciliation path before full evaluation",
      "commit": "4a93256",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "local",
        "binary": "gprof RelWithDebInfo build at git 4a93256",
        "boundary": "The successful representative completed naturally in 3.06 seconds with --max-theory-conflicts=1000. Two earlier probes of the highest-pair timeout were stopped after 226.01 and 65.30 seconds because neither reached the theory-conflict cap; no process survived."
      },
      "command": "build-gprof/primo --quiet --stats --qf-uflra-model-reconciliation --max-theory-conflicts 1000 <representative-cpachecker-induction-instance>; gprof build-gprof/primo gmon.out",
      "results": {
        "successful_profile": "sat in 3.06 seconds, 12.6 MB maximum RSS, normal exit",
        "top_samples": "Rational addition 19.70%; reduced int128 construction 9.09%; Rational negation 9.09%; LraTableau::check 7.58%; Rational multiplication 6.06%.",
        "mechanism": "The run made 4,130 LRA checks and 1,982 exact equality probes. The new class projection and reconciliation routines were not sampled as dominant functions.",
        "aborted_probe_lesson": "--max-theory-conflicts does not bound SAT work before the theory-conflict counter advances. The two interrupted attempts are recorded as aborted diagnostics, not timing evidence."
      },
      "artifacts": "local-only:/tmp/primo-class-reconcile-profile-4a93256-solved/; aborted local-only probes under /tmp/primo-class-reconcile-profile-4a93256*/",
      "evidence_status": "local-complete-current",
      "outcome": "Proceed with the structural reconciliation evaluation without changing LRA internals. Future profiling of pre-conflict SAT paths needs a targeted internal work budget rather than relying only on --max-theory-conflicts."
    },
    {
      "id": "2026-08-09-qf-uflra-class-reconciliation-slurm-fuzz-4a93256",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "fuzz",
      "scope": "Merge-grade generated, finite-domain, tracked-seed, and YinYang validation for class-based convex model reconciliation",
      "commit": "4a93256",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 4a93256, CaDiCaL 3.0.0",
        "references": "Z3 5.0.0 for mixed generation and mutation; Z3 5.0.0 plus cvc5 1.3.4 for finite-domain generation",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision 4a93256, CaDiCaL linkage, Z3, cvc5, and typefuzz immediately before submission",
        "scheduler_state": "All four generated shards completed with exit code 0 in 27 seconds; the mutation task completed with exit code 0 in 9 minutes 37 seconds. Scheduler identifiers are intentionally not stored in the repository."
      },
      "commands": {
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch --array=0-3 with PRIMO_FUZZ_COUNT=750, PRIMO_FINITE_DOMAIN_FUZZ_COUNT=125, seed base 2026080910, and --qf-uflra-model-reconciliation",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0 with 2000 configured iterations per seed, seed base 2026080920, an 8-second solver timeout, and --qf-uflra-model-reconciliation"
      },
      "inputs": {
        "generated_mixed": 3000,
        "generated_finite_qf_uf": 500,
        "generated_finite_qf_uflra": 500,
        "tracked_seeds": 11,
        "mutation_iterations_per_seed": 2000
      },
      "results": {
        "generated_mixed": "3000/3000 PASS against Z3",
        "finite_domain": "1000/1000 PASS against Z3 and cvc5",
        "tracked_seeds": "11/11 PASS, including the congruence-forced mixed regression",
        "mutation": "11 seeds processed, 11 valid, 0 invalid, and 0 bug triggers",
        "failures": "The generated gates had 0 wrong answer, crash, parser/type error, timeout, unsupported result, or reference disagreement; the mutation campaign had 0 invalid seed or bug trigger."
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/qf-uflra-class-reconcile-4a93256/ and fuzz-results/qf-uflra-class-reconcile-4a93256/; local ignored summaries under /tmp/primo-class-reconcile-fuzz-4a93256/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as merge-grade correctness evidence for the exact opt-in profile and commit used by the full benchmark."
    },
    {
      "id": "2026-08-09-qf-uflra-class-reconciliation-slurm-full-4a93256",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "benchmark",
      "scope": "Full 1,284-file QF_UFLRA comparison of class/worklist reconciliation against the model-mutation reconciliation baseline",
      "commit": "4a93256",
      "baseline_commit": "4937d3c",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 4a93256, CaDiCaL 3.0.0",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision 4a93256, CaDiCaL linkage, Z3, cvc5, and typefuzz immediately before submission",
        "corpus": "tmp/QF_UFLRA; 1284 files; 1645365818 bytes; C-locale relative-path/size manifest SHA-256 24264774139d25d59f71a4675768e05109d62cee33742fbfeb88619600949bbf",
        "baseline_reuse": "The 4937d3c reconciliation-with-mutation CSVs used the identical corpus, option, and five-second timeout.",
        "reference_reuse": "results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv; Z3 5.0.0, identical corpus and timeout",
        "scheduler_state": "All eight candidate shards completed with exit code 0 in 1 minute 25 seconds to 2 minutes. Baseline and Z3 were not rerun. Scheduler identifiers are intentionally not stored in the repository."
      },
      "command": "scripts/slurm_qf_uflra_model_mine.sbatch --array=0-7 with 8 shards, a five-second timeout, and build-slurm-rel/primo --quiet --stats --qf-uflra-model-reconciliation",
      "inputs": {
        "files": 1284,
        "timeout_seconds": 5,
        "families": "FFT 10, CPAchecker BMC 15, CPAchecker induction 359, MathSAT 900"
      },
      "results": {
        "baseline": "1156 solved (675 sat, 481 unsat), 128 timeout, 0 unsupported/error/wrong, PAR2 1412.285038.",
        "candidate": "1156 solved (675 sat, 481 unsat), 128 timeout, 0 unsupported/error/wrong, PAR2 1407.513830.",
        "families": "Both versions: FFT 10/10; CPAchecker BMC 4/15; CPAchecker induction 242/359; MathSAT 900/900.",
        "cross_version": "All 1284 paths common, zero status changes, and zero decisive-answer disagreements.",
        "overall_search": "SAT equality atoms fell from 1139 to 731, solve calls from 2169 to 1795, decisions from 1281729 to 1210460, propagations from 24718750 to 23684780, and conflicts from 564081 to 543846.",
        "prior_fallback_rows": "On the 241 baseline rows with congruence fallback, SAT equality atoms fell from 1139 to 728, solve calls from 1220 to 845, decisions from 582833 to 506065, and propagations from 7827815 to 6775357.",
        "reconciliation_activity": "The manager enqueued and drained 20022 explained equalities with zero missing reasons, projected 1605 shared EUF class snapshots over 172621 terms, retained 20400 model-agree consequences, exposed 663 model disagreements to SAT, and returned 15 direct combined conflicts with 101 reason literals.",
        "pair_representation": "Across the corpus, sparse filters inspected 1365471 pairs and retained 778460; complete-cursor physical enumeration was zero. On the prior top case, the old implementation retained 746510 candidate pairs while the new physical-pair counter was zero, a 100 percent reduction.",
        "timing": "Aggregate solved-row time fell from 132.285038 to 127.513830 seconds; PAR2 improved by 0.34 percent.",
        "z3_reused": "1234 solved (736 sat, 498 unsat), 50 timeout, 0 error/wrong, PAR2 758.708455."
      },
      "artifacts": "remote:<prepared-workspace>/results/qf-uflra-class-reconcile-4a93256-5s/; local ignored CSV and JSONL copies under /tmp/primo-class-reconcile-full-4a93256/; baseline under /tmp/primo-model-mutation-full/recon-mut/; reused Z3 CSV under results/qf-uflra-full-mine-z3stats-77599f4-5s/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as the opt-in convex reconciliation implementation. It meets the correctness, structural pair-reduction, solved-count, PAR2, and prior-fallback search gates. It does not improve solved count or close the Z3 gap, so it does not justify promotion to the ordinary default."
    },
    {
      "id": "2026-08-09-qf-uflra-30s-baseline-541af76",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "benchmark",
      "scope": "Thirty-second full-corpus QF_UFLRA baseline and fast-Z3/slow-Primo gap ranking before profiling",
      "commit": "541af76",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 541af76, CaDiCaL 3.0.0",
        "corpus": "tmp/QF_UFLRA; 1284 files; 1645365818 bytes; C-locale relative-path/size manifest SHA-256 24264774139d25d59f71a4675768e05109d62cee33742fbfeb88619600949bbf",
        "reference_reuse": "results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv; Z3 5.0.0 on the identical corpus, with a five-second timeout",
        "scheduler_state": "SLURM array job 122259; all eight baseline shards completed with exit code 0."
      },
      "command": "scripts/slurm_qf_uflra_model_mine.sbatch --array=0-7 with 8 shards, PRIMO_MINE_TIMEOUT=30, and build-slurm-rel/primo --quiet --stats --qf-uflra-model-reconciliation",
      "inputs": {
        "files": 1284,
        "timeout_seconds": 30,
        "families": "FFT 10, CPAchecker BMC 15, CPAchecker induction 359, MathSAT 900"
      },
      "results": {
        "primo": "1174 solved (693 sat, 481 unsat), 110 timeout, 0 error/unsupported/wrong, solved-row time 455.421176 seconds, PAR2 7055.421176.",
        "families": "FFT 10/10, PAR2 0.127552; CPAchecker BMC 5/15, PAR2 619.231233; CPAchecker induction 259/359, PAR2 6372.932631; MathSAT 900/900, PAR2 63.129760.",
        "z3_reused": "1234 solved (736 sat, 498 unsat), 50 timeout, 0 error/wrong, PAR2 758.708455.",
        "gap_set": "Primo timed out on 60 files that Z3 solved. The most extreme was cpachecker-induction.Problem01_00_true-unreach-call.c.smt2: Primo exceeded 30 seconds before theory checking while Z3 took 0.046994 seconds. Other top gaps made thousands of exact interface-equality probes and millions of assignment-bound replays."
      },
      "artifacts": "remote:<prepared-workspace>/results/qf-uflra-class-reconcile-541af76-30s/; local ignored copy /tmp/primo-qfuflra-30s-baseline-541af76-full/; reused Z3 artifact results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv",
      "evidence_status": "slurm-complete-baseline",
      "outcome": "Use the exact-probe replay family, statistics accounting, and the separate pre-theory Problem01 path as the first profile targets."
    },
    {
      "id": "2026-08-09-qf-uflra-profile-and-clear-costs-6927d87",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-09",
      "kind": "profile",
      "scope": "Local gprof diagnosis and post-change confirmation on representative fast-Z3/slow-Primo QF_UFLRA instances",
      "commit": "6927d87",
      "baseline_commit": "541af76",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "local",
        "binary": "RelWithDebInfo with -O2 -g -pg, embedded git revision 6927d87, CaDiCaL 3.0.0",
        "boundary": "Profiles completed naturally except Problem01_00, which was interrupted by a 60-second local wall guard after --max-theory-conflicts=1000 failed to advance during pre-theory work. No process survived."
      },
      "command": "build-gprof/primo --quiet --stats --qf-uflra-model-reconciliation <instance>; gprof build-gprof/primo gmon.out; Problem01_00 additionally used --max-theory-conflicts=1000 and a 60-second outer guard",
      "results": {
        "initial_hot_paths": "On turbografx at 541af76, Statistics::lookup_key alone was 18.72 percent self time and repeated exact probes rebuilt assignment bounds roughly 20 million times. On cpu5wdt, 5611 pairs caused 5966355 assignment-bound replays. The pre-theory Problem01 callgrind probe accumulated 5.65 billion instructions in 30 seconds under Frontend::process_command and preprocessing.",
        "statistics_lookup": "A fixed-name index and heterogeneous dynamic-name lookup removed Statistics::lookup_key from the profile; a statistics-only turbografx build fell from 21.62 to 19.43 seconds.",
        "checked_probe_reuse": "At 6927d87, turbografx completed sat in 3.12 seconds with 20324 checked-tableau copies and no assignment replay; cpu5wdt completed sat in 0.98 seconds with 5611 checked-tableau copies and no assignment replay. Their 541af76 profile times were 21.62 and 23.63 seconds respectively.",
        "adaptive_fallback": "The CPAchecker BMC diskperf case retained the sparse-base path because the checked basis had 107732 cumulative pivot term operations. It completed sat in 24.60 seconds with 1158 basis-cost fallbacks and 2238414 assignment-bound replays, versus 24.80 seconds before the change.",
        "preprocessing_memo": "The CPAchecker induction diskperf case, previously observed above 30 seconds while recursively revisiting a shared term DAG, completed unsat in 0.05 seconds with 6322 forced-atom memo hits and 3859 misses.",
        "remaining_gap": "Problem01_00 still produced no answer or statistics within 60 seconds at 6927d87. Its work remains before theory-conflict accounting and is a separate preprocessing/control-flow lead; it was not treated as fixed."
      },
      "artifacts": "local-only:/tmp/primo-profile-541af76-cpu5wdt/, /tmp/primo-profile-541af76-turbografx/, /tmp/primo-profile-541af76-diskperf/, /tmp/primo-profile-541af76-problem01-callgrind/, /tmp/primo-profile-6927d87-turbografx-v2/, /tmp/primo-profile-6927d87-cpu5wdt-v2/, /tmp/primo-profile-6927d87-diskperf-bmc-v2/, /tmp/primo-profile-6927d87-diskperf-induction-v2/, and /tmp/primo-profile-6927d87-problem01-v2/",
      "evidence_status": "local-complete-current",
      "outcome": "Accepted the statistics lookup, checked-tableau reuse with adaptive fallback, and shared-DAG preprocessing memoization as clear non-LRA-algorithm inefficiency removals. Keep Problem01_00 and the expensive sparse-base fallback family in the remaining performance queue."
    },
    {
      "id": "2026-08-09-qf-uflra-profile-fuzz-6927d87",
      "started_at": "2026-08-09",
      "recorded_at": "2026-08-10",
      "kind": "fuzz",
      "scope": "Fresh merge-grade generated, finite-domain, tracked-seed, and YinYang validation before the 30-second candidate benchmark",
      "commit": "6927d87",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 6927d87, CaDiCaL 3.0.0",
        "references": "Z3 5.0.0 for mixed generation and mutation; Z3 5.0.0 plus cvc5 1.3.4 for finite-domain generation",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision 6927d87, CaDiCaL linkage, Z3, cvc5, and typefuzz immediately before submission",
        "scheduler_state": "SLURM array job 122267 completed all four generated shards with exit code 0 in 26 to 27 seconds; mutation job 122268 completed with exit code 0 in 14 minutes 12 seconds."
      },
      "commands": {
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch --array=0-3 with PRIMO_FUZZ_COUNT=750, PRIMO_FINITE_DOMAIN_FUZZ_COUNT=125, seed base 2026080930, and --qf-uflra-model-reconciliation",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0 with 2000 configured iterations per seed, seed base 2026080940, an 8-second solver timeout, and --qf-uflra-model-reconciliation"
      },
      "inputs": {
        "generated_mixed": 3000,
        "generated_finite_qf_uf": 500,
        "generated_finite_qf_uflra": 500,
        "tracked_seeds": 11,
        "mutation_iterations_per_seed": 2000
      },
      "results": {
        "generated_mixed": "3000/3000 PASS against Z3",
        "finite_domain": "1000/1000 PASS against Z3 and cvc5",
        "tracked_seeds": "11/11 PASS against Z3",
        "mutation": "11 seeds processed, 11 valid, 0 invalid, and 0 bug triggers",
        "failures": "0 wrong answer, crash, parser/type error, timeout, unsupported result, reference disagreement, invalid seed, or mutation bug trigger."
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/qf-uflra-profile-6927d87/ and fuzz-results/qf-uflra-profile-6927d87/; local ignored generated summaries under /tmp/primo-fuzz-6927d87-generated/",
      "evidence_status": "slurm-complete-current",
      "outcome": "The exact candidate passed the correctness gate required before the full 30-second corpus comparison."
    },
    {
      "id": "2026-08-10-qf-uflra-30s-probe-reuse-6927d87",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "benchmark",
      "scope": "First full 30-second QF_UFLRA candidate after statistics lookup, exact-probe reuse, and forced-atom DAG memoization",
      "commit": "6927d87",
      "baseline_commit": "541af76",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 6927d87, CaDiCaL 3.0.0",
        "corpus": "tmp/QF_UFLRA; 1284 files; 1645365818 bytes; C-locale relative-path/size manifest SHA-256 24264774139d25d59f71a4675768e05109d62cee33742fbfeb88619600949bbf",
        "reference_reuse": "results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv; Z3 5.0.0 on the identical corpus",
        "scheduler_state": "SLURM array job 122272; all eight shards completed with exit code 0 in 5 minutes 3 seconds to 8 minutes 24 seconds."
      },
      "command": "scripts/slurm_qf_uflra_model_mine.sbatch --array=0-7 with 8 shards, PRIMO_MINE_TIMEOUT=30, and build-slurm-rel/primo --quiet --stats --qf-uflra-model-reconciliation",
      "results": {
        "candidate": "1199 solved (716 sat, 483 unsat), 85 timeout, 0 error/unsupported/wrong, solved-row time 454.676094 seconds, PAR2 5554.676094.",
        "families": "FFT 10/10; CPAchecker BMC 5/15; CPAchecker induction 284/359; MathSAT 900/900.",
        "comparison": "25 baseline timeout recoveries, 0 losses, and 0 decisive-answer disagreements. Across the 1174 common solves, time fell from 455.421176 to 138.376874 seconds.",
        "mechanism": "Assignment-bound replay fell from 364252532 to 51977616; 1028993 probes copied a checked tableau and 24708 selected the basis-cost fallback."
      },
      "artifacts": "remote:<prepared-workspace>/results/qf-uflra-profile-6927d87-30s/; local ignored copy /tmp/primo-qfuflra-30s-candidate-6927d87/",
      "evidence_status": "slurm-complete-intermediate",
      "outcome": "Accepted the first implementation-cost reduction and continued profiling the remaining pre-theory timeout family."
    },
    {
      "id": "2026-08-10-qf-uflra-equality-query-profile-9b9a035",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "profile",
      "scope": "Callgrind diagnosis of repeated preprocessing equality-query registration and gprof triage of the next frontend-heavy case",
      "commit": "9b9a035",
      "baseline_commit": "6927d87",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "local",
        "binary": "RelWithDebInfo, embedded git revision 9b9a035, CaDiCaL 3.0.0",
        "tools": "Valgrind Callgrind for Problem01_00 diagnosis; gprof for committed Problem05_60 follow-up"
      },
      "commands": {
        "callgrind": "valgrind --tool=callgrind build-profile/primo --quiet --stats --qf-uflra-model-reconciliation <Problem01_00>",
        "committed_confirmation": "/usr/bin/time build-profile/primo --quiet --stats --qf-uflra-model-reconciliation <Problem01_00>",
        "next_profile": "build-gprof/primo --quiet --stats --max-theory-conflicts=100 --qf-uflra-model-reconciliation <Problem05_60>; gprof build-gprof/primo gmon.out"
      },
      "results": {
        "diagnosis": "The bounded pre-fix callgrind sample accumulated 5034466083 instructions. IncrementalCongruenceClosure::ensure_capacity used 18.91 percent self instructions; 4362 distinct terms triggered 35267698 add_term requests because the query scanner walked a shared Boolean DAG by occurrence.",
        "fix": "A pass-local TermId visitation vector now spans assertions sharing a temporary closure, and add_term checks its seen vector before term lookup and capacity work.",
        "confirmation": "Problem01_00 now solves unsat in 0.04 seconds with 7335 query nodes, 25328 memo hits, 1914 add requests, and 1684 already-seen hits.",
        "next_lead": "Problem05_60 solves in 5.37 uninstrumented seconds. Its 6.28-second gprof run spent 37.85 percent self time in TermBuilder::dispatch, 16.95 percent in dispatch_instantiate_definition, and about 30 percent in CaDiCaL factoring over a source chain of 109849 nullary definitions."
      },
      "artifacts": "local-only:/tmp/primo-profile-6927d87-problem01-callgrind-nopg/, /tmp/primo-problem01-equality-query-memo/, /tmp/primo-profile-9b9a035-problem05/, and /tmp/primo-profile-9b9a035-problem05-gprof/",
      "evidence_status": "local-complete-current",
      "outcome": "Accepted the shared-DAG registration fix. Retain nullary-definition compilation as a separate frontend throughput target; it is not a current 30-second timeout cause."
    },
    {
      "id": "2026-08-10-qf-uflra-profile-fuzz-9b9a035",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "fuzz",
      "scope": "Fresh merge-grade generated, finite-domain, tracked-seed, and YinYang validation after equality-query DAG memoization",
      "commit": "9b9a035",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 9b9a035, CaDiCaL 3.0.0",
        "references": "Z3 5.0.0 for mixed generation and mutation; Z3 5.0.0 plus cvc5 1.3.4 for finite-domain generation",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision 9b9a035, CaDiCaL linkage, Z3, cvc5, and typefuzz immediately before submission",
        "scheduler_state": "Generated array job 122280 completed four shards in 27 seconds; mutation job 122281 completed in 8 minutes 12 seconds; all exit codes were zero."
      },
      "commands": {
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch --array=0-3 with 750 mixed and 125+125 finite cases per shard, seed base 2026080970, and --qf-uflra-model-reconciliation",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0 with 2000 configured iterations per seed, seed base 2026080980, an 8-second solver timeout, and --qf-uflra-model-reconciliation"
      },
      "results": {
        "generated_mixed": "3000/3000 PASS against Z3",
        "finite_domain": "1000/1000 PASS against Z3 and cvc5",
        "tracked_seeds": "11/11 PASS against Z3",
        "mutation": "43914 solver calls; 11 seeds processed, 11 valid, 0 invalid, and 0 bug triggers",
        "failures": "0 wrong answer, crash, parser/type error, timeout, unsupported result, reference disagreement, invalid seed, or mutation bug trigger."
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/qf-uflra-profile-9b9a035/ and fuzz-results/qf-uflra-profile-9b9a035/; local ignored generated summaries under /tmp/primo-fuzz-9b9a035-generated-v2/",
      "evidence_status": "slurm-complete-current",
      "outcome": "The exact final candidate passed the required correctness gate before full-corpus evaluation."
    },
    {
      "id": "2026-08-10-qf-uflra-30s-final-9b9a035",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "benchmark",
      "scope": "Final 30-second full-corpus QF_UFLRA profile after eliminating the diagnosed implementation costs",
      "commit": "9b9a035",
      "baseline_commit": "541af76",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 9b9a035, CaDiCaL 3.0.0",
        "corpus": "tmp/QF_UFLRA; 1284 files; 1645365818 bytes; C-locale relative-path/size manifest SHA-256 24264774139d25d59f71a4675768e05109d62cee33742fbfeb88619600949bbf",
        "reference_reuse": "results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv; Z3 5.0.0 on the identical corpus, not rerun",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision 9b9a035 and dependencies immediately before submission",
        "scheduler_state": "SLURM array job 122285; all eight shards completed with exit code 0 in 3 minutes 6 seconds to 6 minutes 26 seconds."
      },
      "command": "scripts/slurm_qf_uflra_model_mine.sbatch --array=0-7 with 8 shards, PRIMO_MINE_TIMEOUT=30, and build-slurm-rel/primo --quiet --stats --qf-uflra-model-reconciliation",
      "results": {
        "candidate": "1234 solved (727 sat, 507 unsat), 50 timeout, 0 error/unsupported/wrong, solved-row time 588.435922 seconds, PAR2 3588.435922.",
        "families": "FFT 10/10, PAR2 0.085063; CPAchecker BMC 5/15, PAR2 618.188666; CPAchecker induction 319/359, PAR2 2907.207869; MathSAT 900/900, PAR2 62.954324.",
        "baseline_comparison": "60 timeout recoveries, 0 losses, and 0 decisive-answer disagreements. Across 1174 common solves, time fell from 455.421176 to 135.895532 seconds; 58 common cases improved by at least 2x with no corresponding 2x regression.",
        "intermediate_comparison": "35 recoveries over 6927d87, 0 losses, and 0 disagreements. Common-solved time was stable at 454.676094 versus 453.032081 seconds because the additional newly solved cases account for the larger total solved-row time.",
        "mechanism": "The corpus recorded 1998980 first equality-query visits, 4134635 DAG memo hits, 4987952 closure add requests, and 4063125 already-seen hits. Probe assignment replay remained about 7x below baseline at 52448472 versus 364252532, with 1085789 checked-tableau copies and 24911 basis-cost fallbacks.",
        "z3_reused": "Z3 solved 1234 (736 sat, 498 unsat) with 50 timeouts and PAR2 758.708455 at five seconds. The solved counts match, but each solver has 16 decisive results absent from the other run; there were no decisive-answer disagreements. Z3 common-solved time remains lower, 230.079480 versus Primo 447.092861 seconds."
      },
      "artifacts": "remote:<prepared-workspace>/results/qf-uflra-profile-9b9a035-30s/; local ignored CSV/JSONL copy /tmp/primo-qfuflra-30s-candidate-9b9a035-v2/; baseline /tmp/primo-qfuflra-30s-baseline-541af76-full/; reused Z3 results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted both implementation-cost fixes. The 30-second solved-count gap to the reused Z3 run is closed on this corpus, but frontend definition compilation, SAT factoring/arrangement search, and the 16 remaining fast-Z3/timeout-Primo cases remain performance work."
    },
    {
      "id": "2026-08-10-qf-uflra-yices-reference-01a8a95",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "reference-benchmark",
      "scope": "Add Yices 2.7.0 at exact five-second and 30-second budgets to the full 1,284-file QF_UFLRA evaluation",
      "commit": "01a8a95",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "solver": "Yices 2.7.0 revision 4f19700f0e272f4a68250080d12a873523bc7ac3, release/static, run as the separate yices-smt2 reference binary",
        "corpus": "tmp/QF_UFLRA; 1284 files; 1645365818 bytes; C-locale relative-path/size manifest SHA-256 24264774139d25d59f71a4675768e05109d62cee33742fbfeb88619600949bbf",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py installed contrib-yices and --check-only verified source revision 01a8a95, CaDiCaL linkage, and contrib/local/bin/yices-smt2 immediately before each submission",
        "scheduler_state": "Thirty-second array job 122384 completed all eight shards in 41 to 54 seconds; five-second array job 122393 completed all eight shards in 13 to 21 seconds; every task exited zero."
      },
      "commands": {
        "thirty_seconds": "scripts/slurm_qf_uflra_model_mine.sbatch --array=0-7 with 8 shards, PRIMO_MINE_TIMEOUT=30, and PRIMO_MINE_SOLVER=contrib/local/bin/yices-smt2",
        "five_seconds": "scripts/slurm_qf_uflra_model_mine.sbatch --array=0-7 with 8 shards, PRIMO_MINE_TIMEOUT=5, and PRIMO_MINE_SOLVER=contrib/local/bin/yices-smt2"
      },
      "results": {
        "five_seconds": "1275 solved (764 sat, 511 unsat), 9 timeout, 0 error/unsupported/wrong, solved-row time 66.687539 seconds, PAR2 156.687539.",
        "five_second_families": "FFT 10/10, PAR2 0.032193; CPAchecker BMC 7/15, PAR2 80.382583; CPAchecker induction 358/359, PAR2 56.123251; MathSAT 900/900, PAR2 20.149512.",
        "thirty_seconds": "1276 solved (765 sat, 511 unsat), 8 timeout, 0 error/unsupported/wrong, solved-row time 110.699880 seconds, PAR2 590.699880.",
        "thirty_second_families": "FFT 10/10, PAR2 0.203294; CPAchecker BMC 7/15, PAR2 480.525139; CPAchecker induction 359/359, PAR2 80.500455; MathSAT 900/900, PAR2 29.470992.",
        "z3_comparison": "At the exact five-second budget, reused Z3 solves 1234 with 50 timeouts and PAR2 758.708455. Yices adds 41 solves, loses none, and has zero decisive-answer disagreements.",
        "primo_comparison": "Against Primo 9b9a035 at 30 seconds, Yices at 30 seconds adds 42 solves, loses none, and has zero decisive-answer disagreements. Yices solves all 359 CPAchecker induction rows; both solvers still time out on eight of the same CPAchecker BMC rows."
      },
      "artifacts": "remote:<prepared-workspace>/results/qf-uflra-yices-2.7.0-5s/ and results/qf-uflra-yices-2.7.0-30s/; local ignored CSV/JSONL copies /tmp/primo-qfuflra-yices-2.7.0-5s/ and /tmp/primo-qfuflra-yices-2.7.0-30s/; reused Primo /tmp/primo-qfuflra-30s-candidate-9b9a035-v2/; reused Z3 results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv",
      "evidence_status": "slurm-complete-current",
      "outcome": "Use Yices as the strongest measured QF_UFLRA reference for the next performance triage. The previous equal solved count with Z3 understated the remaining gap."
    },
    {
      "id": "2026-08-10-cadical-factor-problem05-local-7556339",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "parameter-probe",
      "scope": "Single-instance check of CaDiCaL bounded-variable-addition cost after the Problem05_60 gprof profile",
      "commit": "7556339",
      "implementation_commit": "9b9a035",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "local",
        "binary": "RelWithDebInfo, embedded implementation revision 9b9a035, CaDiCaL 3.0.0",
        "instance": "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.Problem05_60_false-unreach-call.c.smt2"
      },
      "command": "build-profile/primo --quiet --max-theory-conflicts=100 --qf-uflra-model-reconciliation --cadical-option factor=0 <instance>",
      "results": {
        "factor_default": "The previously recorded committed confirmation solved sat in 5.37 seconds; gprof attributed about 30 percent of its instrumented time to CaDiCaL factoring.",
        "factor_disabled": "Solved sat in 3.86 seconds with maximum resident set size 262060 KiB.",
        "change": "1.51 seconds faster, approximately 28 percent, on this one definition-heavy instance."
      },
      "artifacts": "local-only:/tmp/primo-factor-off.out and /tmp/primo-factor-off.err; default/profile artifacts under /tmp/primo-profile-9b9a035-problem05*/",
      "evidence_status": "local-preliminary",
      "outcome": "Factoring is a plausible conditional cost on very large definitional CNFs. Do not change the default from one row; evaluate a targeted recognizer or a corpus-wide factor on/off profile first."
    },
    {
      "id": "2026-08-10-nullary-define-fun-eager-compile-local-cef5165",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "profile",
      "scope": "Local confirmation of declaration-time nullary define-fun compilation on the definition-heavy CPAchecker Problem05_60 profile target",
      "commit": "cef5165",
      "baseline_commit": "9b9a035",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "local",
        "binary": "RelWithDebInfo, embedded git revision cef5165, CaDiCaL 3.0.0",
        "instance": "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.Problem05_60_false-unreach-call.c.smt2",
        "boundary": "Both revisions completed naturally with --max-theory-conflicts=100; no signal-based timeout was used."
      },
      "commands": {
        "timing": "Three repetitions of /usr/bin/time build-profile/primo --quiet --max-theory-conflicts=100 --qf-uflra-model-reconciliation <instance>",
        "statistics": "/usr/bin/time build-profile/primo --quiet --stats --max-theory-conflicts=100 --qf-uflra-model-reconciliation <instance>"
      },
      "results": {
        "baseline": "The committed 9b9a035 confirmation took 5.37 seconds; its stats run reported 2.783262 seconds in frontend processing and the gprof run attributed 37.85 percent self time to TermBuilder::dispatch plus 16.95 percent to definition instantiation.",
        "candidate_timing": "The three exact-commit non-stat runs took 2.71, 2.74, and 2.74 seconds. The stats run took 2.83 seconds with 237728 KiB maximum RSS.",
        "candidate_frontend": "Frontend processing took 0.125403 seconds after 109849 eager compiles and 219379 direct nullary-definition uses; no compiled side assertions occurred in this instance.",
        "search_invariance": "Both revisions generated 29144 SAT variables and 211658 clauses and recorded 4 conflicts, 74303 decisions, and 202391 propagations. The accepted TermId allocation change did not alter this instance's measured SAT search.",
        "local_verification": "make check, make lint, make docs, make asan-test, whole-tree make tidy, advisory whole-tree make include-cleaner, and git diff --check passed before the implementation commit."
      },
      "artifacts": "local-only:/tmp/primo-nullary-eager-cef5165-{time,stdout,stats}.txt; baseline local-only:/tmp/primo-profile-9b9a035-problem05/ and /tmp/primo-profile-9b9a035-problem05-gprof/",
      "evidence_status": "local-complete-superseded-by-slurm",
      "outcome": "The targeted frontend throughput issue was fixed locally without changing the target's SAT structure or search counters. At this milestone fresh fuzzing and full-corpus SLURM evaluation were still required; the later 1f3d81c entries supply that evidence."
    },
    {
      "id": "2026-08-10-nullary-define-fun-fuzz-140be1a",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "fuzz",
      "scope": "Generated, finite-domain, tracked-seed, and YinYang validation of eager nullary define-fun compilation before full-corpus evaluation",
      "commit": "140be1a",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 140be1a, CaDiCaL 3.0.0",
        "references": "Z3 5.0.0 for mixed generation and mutation; Z3 5.0.0 plus cvc5 for finite-domain generation",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision 140be1a, CaDiCaL linkage, Z3, cvc5, and typefuzz immediately before submission",
        "scheduler_state": "The generated array completed all shards with exit code 0 in 28 to 30 seconds; the mutation job completed with exit code 0 in 10 minutes 29 seconds. Scheduler identifiers are kept outside the repository."
      },
      "commands": {
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch with 3000 mixed QF_UFLRA cases and 1000 finite-domain cases, seed base 2026081050, and --qf-uflra-model-reconciliation",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0 with 2000 configured iterations per tracked seed, seed base 2026081060, and --qf-uflra-model-reconciliation"
      },
      "results": {
        "generated_mixed": "3000/3000 PASS against Z3",
        "finite_domain": "1000/1000 PASS: 500 QF_UF and 500 QF_UFLRA cases against Z3 and cvc5",
        "tracked_seeds": "11/11 deterministic seeds PASS against Z3",
        "mutation": "2000 successful generations, 0 unsuccessful generations, 43950 differential solver calls, 11 valid seeds, 0 invalid seeds, and 0 bug triggers",
        "failures": "0 wrong answer, crash, parser/type error, unsupported result, reference disagreement, or saved bug file."
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/qf-uflra-nullary-eager-140be1a/ and fuzz-results/qf-uflra-nullary-eager-yinyang-140be1a/",
      "evidence_status": "slurm-complete-superseded",
      "outcome": "The ordinary fuzz gates passed, but the following full-corpus run found five depth-dependent stack overflows. This gate is valid evidence for its generated inputs, not sufficient evidence for the eager compiler's merge readiness."
    },
    {
      "id": "2026-08-10-nullary-define-fun-full-rejected-140be1a",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "benchmark",
      "scope": "Rejected 30-second full-corpus QF_UFLRA evaluation of eager nullary define-fun compilation",
      "commit": "140be1a",
      "baseline_commit": "9b9a035",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 140be1a, CaDiCaL 3.0.0",
        "corpus": "tmp/QF_UFLRA; 1284 files; 1645365818 bytes",
        "reference_reuse": "The unchanged 9b9a035 Primo baseline and existing Z3/Yices result artifacts were reused rather than rerun.",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision 140be1a and dependencies immediately before submission",
        "scheduler_state": "All eight SLURM array shards completed with exit code 0 in 2 minutes 43 seconds to 6 minutes 15 seconds. The scheduler identifier is kept outside the repository."
      },
      "command": "scripts/slurm_qf_uflra_model_mine.sbatch --array=0-7 with 8 shards, PRIMO_MINE_TIMEOUT=30, and build-slurm-rel/primo --quiet --stats --qf-uflra-model-reconciliation",
      "results": {
        "baseline": "1234 solved (727 sat, 507 unsat), 50 timeout, 0 error/unsupported/wrong, solved-row time 588.435922 seconds, PAR2 3588.435922.",
        "candidate_rejected": "1235 solved (727 sat, 508 unsat), 44 timeout, 5 errors, 0 unsupported/wrong, solved-row time 490.403633 seconds, nominal PAR2 3430.403633.",
        "families": "FFT 10/10; CPAchecker BMC 5/15; CPAchecker induction 320/359 with 34 timeouts and 5 errors; MathSAT 900/900.",
        "comparison": "3 timeout recoveries, 2 timeout losses, 0 decisive-answer disagreements, and 1232 common solves; common-solved time fell from 556.137053 to 453.044788 seconds.",
        "blocking_failures": "Five CPAchecker induction rows exited with SIGSEGV (-11): Problem07_60_false, Problem08_60_false, Problem07_00_true, Problem07_10_true, and Problem07_50_true."
      },
      "artifacts": "remote:<prepared-workspace>/results/qf-uflra-nullary-eager-140be1a-30s/; baseline remote:<prepared-workspace>/results/qf-uflra-profile-9b9a035-30s/; local ignored shard CSV copies /tmp/primo-nullary-eager-eval/",
      "evidence_status": "rejected",
      "outcome": "Rejected regardless of the nominal speed and solved-count changes. ASAN and gdb traced the failures to recursive whole-formula walks exposed by deep compiled TermId DAGs; performance conclusions require a stack-safe exact-commit rerun."
    },
    {
      "id": "2026-08-10-nullary-definition-stack-safety-local-1f3d81c",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "correctness-debugging",
      "scope": "Diagnosis and local verification of the five stack overflows exposed by eager nullary define-fun compilation",
      "commit": "1f3d81c",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "local",
        "binaries": "ASAN/UBSan test build plus optimized Release witness runs, CaDiCaL 3.0.0",
        "witnesses": "The five CPAchecker induction files that exited with SIGSEGV in the rejected 140be1a corpus run"
      },
      "commands": {
        "diagnosis": "Reproduced under ASAN and inspected representative failures under gdb; traces ended in recursive whole-formula preprocessing, dispatch, purification, Boolean bridge, and clausification walks over the compiled TermId DAG.",
        "focused_regression": "Ran the 20,000-definition end-to-end QF_UFLRA regression through the ASAN build.",
        "witness_smoke": "Ran all five former crash rows with the optimized stats binary, --max-theory-conflicts=100, and --qf-uflra-model-reconciliation.",
        "verification": "make check; make lint; make docs; make asan-test; make tidy; make include-cleaner; git diff --check"
      },
      "results": {
        "root_cause": "Eager compilation represented shallow declaration bodies as one deep shared core DAG. Production walkers used the native call stack as traversal storage and overflowed; this was not an LRA conflict or CaDiCaL failure.",
        "fix": "Converted every implicated path to explicit worklists while preserving each pass's memoization and rewrite semantics. Rewriters copy child TermIds before interning replacement terms so TermManager growth cannot invalidate borrowed Term references.",
        "deep_regression": "The 20,000-definition mixed QF_UFLRA regression passes under ASAN/UBSan.",
        "former_crashes": "All five terminate without a signal: Problem07_60 false sat in 12.27 seconds; Problem08_60 false sat in 30.12 seconds; Problem07_00, Problem07_10, and Problem07_50 true unsat in 13.74, 12.94, and 12.77 seconds."
      },
      "artifacts": "local-only:/tmp/primo-nullary-stack-safe* and /tmp/primo-nullary-stack-safe-five-release.tsv",
      "evidence_status": "local-complete-current",
      "outcome": "The known crash class is fixed locally and covered by a depth regression. A separate repository-wide audit of input-sized recursion remains open in docs/open-leads.md."
    },
    {
      "id": "2026-08-10-nullary-definition-stack-safe-fuzz-1f3d81c",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "fuzz",
      "scope": "Exact-commit generated, finite-domain, tracked-seed, and YinYang validation after replacing deep TermId DAG recursion with explicit worklists",
      "commit": "1f3d81c",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 1f3d81c, CaDiCaL 3.0.0",
        "references": "Z3 5.0.0 for mixed generation and mutation; Z3 5.0.0 plus cvc5 for finite-domain generation",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision 1f3d81c, CaDiCaL linkage, Z3, cvc5, and typefuzz immediately before submission",
        "scheduler_state": "All four generated shards completed with exit code 0 in 28 to 29 seconds. The mutation task completed with exit code 0 in 28 minutes 18 seconds. Scheduler identifiers are kept outside the repository."
      },
      "commands": {
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch --array=0-3 with 750 mixed, 125 finite QF_UF, and 125 finite QF_UFLRA cases per shard; seed base 2026081070; --qf-uflra-model-reconciliation",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0 with 2000 configured mutations per tracked seed, seed base 2026081080, an 8-second solver timeout, and --qf-uflra-model-reconciliation"
      },
      "results": {
        "generated_mixed": "3000/3000 PASS against Z3",
        "finite_domain": "1000/1000 PASS: 500 QF_UF and 500 QF_UFLRA cases against Z3 and cvc5",
        "tracked_seeds": "11/11 deterministic seeds PASS against Z3",
        "mutation": "All 11 seeds processed and valid; 43978 differential solver calls; 0 invalid seeds and 0 bug triggers.",
        "failures": "0 wrong answer, crash, parser/type error, unsupported result, reference disagreement, or saved bug file."
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/qf-uflra-nullary-stack-safe-1f3d81c/ and fuzz-results/qf-uflra-nullary-stack-safe-1f3d81c/",
      "evidence_status": "slurm-complete-current",
      "outcome": "The exact stack-safe implementation clears the QF_UFLRA merge fuzz gate."
    },
    {
      "id": "2026-08-10-nullary-definition-stack-safe-full-1f3d81c",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "benchmark",
      "scope": "Accepted 30-second full-corpus QF_UFLRA evaluation of stack-safe eager nullary define-fun compilation",
      "commit": "1f3d81c",
      "baseline_commit": "9b9a035",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 1f3d81c, CaDiCaL 3.0.0",
        "corpus": "tmp/QF_UFLRA; 1284 files; 1645365818 bytes",
        "reference_reuse": "The unchanged 9b9a035 Primo baseline and existing Z3/Yices result artifacts were reused rather than rerun.",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision 1f3d81c and all fuzz/reference dependencies immediately before submission.",
        "scheduler_state": "All eight array shards completed with exit code 0 in 2 minutes 56 seconds to 6 minutes 14 seconds. Scheduler identifiers are kept outside the repository."
      },
      "command": "scripts/slurm_qf_uflra_model_mine.sbatch --array=0-7 with 8 shards, PRIMO_MINE_TIMEOUT=30, and build-slurm-rel/primo --quiet --stats --qf-uflra-model-reconciliation; summarized by scripts/summarize_benchmark_shards.py",
      "results": {
        "baseline": "1234 solved (727 sat, 507 unsat), 50 timeout, 0 error/unsupported/wrong, solved-row time 588.435922 seconds, PAR2 3588.435922.",
        "candidate": "1238 solved (727 sat, 511 unsat), 46 timeout, 0 error/unsupported/wrong, solved-row time 546.995737 seconds, PAR2 3306.995737.",
        "families": "FFT 10/10; CPAchecker BMC 5/15; CPAchecker induction 323/359 with 36 timeouts; MathSAT 900/900. Candidate family PAR2 values were 0.093087, 618.733848, 2613.871002, and 74.297800 respectively.",
        "comparison": "7 timeout recoveries, 3 timeout losses, 0 decisive-answer disagreements, and 1231 common solves. Common-solved aggregate time fell from 526.983649 to 423.162823 seconds, a 19.7 percent reduction.",
        "former_crashes": "All five former SIGSEGV rows now terminate normally. Problem07_60, Problem07_00, Problem07_10, and Problem07_50 solve in 20.91 to 22.05 seconds; Problem08_60 reaches the 30-second limit as a normal timeout.",
        "timing_caveat": "MathSAT stayed 900/900 solved but aggregate family time increased from 62.954324 to 74.297800 seconds; the aggregate gain is concentrated in CPAchecker induction."
      },
      "artifacts": "remote:<prepared-workspace>/results/qf-uflra-nullary-stack-safe-1f3d81c-30s/; reused baseline remote:<prepared-workspace>/results/qf-uflra-profile-9b9a035-30s/; local ignored CSV copies /tmp/primo-nullary-stack-safe-eval/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted. The stack-safe eager compiler improves solved count by four and PAR2 by 281.440185 while eliminating all five corpus crashes and introducing no wrong answer, unsupported row, error, or decisive-answer disagreement."
    },
    {
      "id": "2026-08-10-qfuflra-exact-probe-profile-5702fc0",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "profile",
      "scope": "Representative QF_UFLRA exact convex-fallback investigation after the 30-second corpus comparison identified a fast-reference/slow-Primo CPAchecker induction case",
      "commit": "5702fc0",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "local",
        "binary": "RelWithDebInfo with -pg; PRIMO_WARNINGS_AS_ERRORS=OFF only for the GCC 13 optimized vector-copy diagnostic; source unchanged",
        "host": "workspace",
        "benchmark": "tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.32_1_cilled_true-unreach-call_ok_nondet_linux-3.4-32_1-drivers--media--dvb--dvb-usb--dvb-usb-az6027.ko-ldv_main0_sequence_infinite_withcheck_stateful.cil.out.c.smt2"
      },
      "command": "/usr/bin/time build-gprof-current/primo --quiet --stats --max-theory-conflicts=4 --qf-uflra-model-reconciliation < BENCHMARK; gprof build-gprof-current/primo gmon.out",
      "results": {
        "baseline": "22.59 seconds; 57568 feasible-tableau copies for checked-tableau equality probes; 57597 strict-orientation probes; six SAT solve calls.",
        "tableau_shape": "2437 variables, 1091 rows, and 2201 row nonzeros before exact probing.",
        "interface_shape": "759 shared Real terms, 287661 possible pairs, and 32817 candidate-final pairs; the largest observed difference row had five terms.",
        "profile": "LraTableau copy construction/destruction and Rational copying dominate the sampled work, consistent with one structural tableau copy per exact pair.",
        "rejected_one_equality_stop": "Stopping a round after the first actionable exact equality increased runtime to 60.74 seconds, checked-tableau copies to 133417, and mixed SAT rounds to nine. The experiment was removed.",
        "rejected_full_projection_skip": "Skipping the exact pass only when full EUF/LRA class projections agreed took 25.08 seconds, skipped no exact scan on this witness, and observed two projection disagreements. The experiment was removed."
      },
      "artifacts": "local-only:/tmp/primo-qfuflra-profile-current-5702fc0/ and related rejected-experiment scratch directories",
      "evidence_status": "local-current",
      "outcome": "The per-pair structural copy is a clear bottleneck, but neither attempted non-LRA shortcut improved it. Literature review rejects an unbounded all-pairs difference-row cache: bounds-only push/pop presupposes a fixed matrix, while dynamic row insertion/removal is the older costly scheme. The next implementation must reduce requested equalities through model-based scheduling or use a strictly bounded, measured scratch experiment."
    },
    {
      "id": "2026-08-10-convex-reconciliation-local-bbd43b9",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "validation",
      "scope": "Local correctness, model-validation, pure-theory isolation, and memory-safety checks for complete convex QF_UFLRA shared-model reconciliation",
      "commit": "bbd43b9",
      "baseline_commit": "9bed48e",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "local",
        "binary": "Release, git bbd43b9, CaDiCaL 3.0.0; ASAN build for memory-sensitive unit coverage",
        "model_validator": "Dolmen 0.10",
        "artifacts_are_local_only": true
      },
      "commands": {
        "generated": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build-release-current/primo --solver-arg=--qf-uflra-model-reconciliation --ref z3 --count 1000 --seed 2026081390 --timeout 5 --shape mixed --out /tmp/primo-reconcile-model-fuzz-bbd43b9",
        "model_validation": "python3 scripts/validate_model.py --solver ./build-release-current/primo --solver-arg=--quiet --solver-arg=--qf-uflra-model-reconciliation --timeout 5 --dolmen dolmen --dolmen-timeout 10 --out /tmp/primo-reconcile-model-validation-1000-bbd43b9 /tmp/primo-reconcile-model-fuzz-bbd43b9/cases/*.smt2",
        "repository_checks": "make check; make lint; make docs; make asan-test; clang-tidy -p build src/smt/check_sat.cpp; focused rebuild and ASAN ctest of primo_qf_lra_solver_tests",
        "pure_isolation": "Compare answer, exit status, and every non-time statistic for 27 QF_UF/QF_LRA seed and smoke files against parent revision 9bed48e; repeat seconds-scale QF_UF and QF_LRA timing loops with the reconciliation option enabled and disabled."
      },
      "results": {
        "generated": "1000/1000 PASS against Z3: 611 SAT and 389 UNSAT.",
        "model_validation": "611/611 SAT models accepted by Dolmen; all 389 UNSAT rows correctly required no model.",
        "bug_found_and_fixed": "The first 300-case validation at 7d907f7 found five invalid SAT models caused by assigning the same default Real value to distinct EUF-only Real classes. Commit bbd43b9 gives every unanchored EUF Real class a deterministic fresh rational; the repaired 300-case rerun passed all 194 SAT models.",
        "pure_isolation": "27 files compared with zero answer, return-code, or non-time-statistic mismatch. QF_UF and QF_LRA aggregate timing differences remained within ordinary run-to-run noise.",
        "verification": "All 13 C++ and 19 Python checks pass; lint and docs pass; full ASAN passed before the final narrow map robustness edit and the rebuilt affected ASAN test passed afterward; clang-tidy reported only a suppressed external-code warning."
      },
      "artifacts": "local-only:/tmp/primo-reconcile-model-fuzz-bbd43b9/ and /tmp/primo-reconcile-model-validation-1000-bbd43b9/",
      "evidence_status": "local-current",
      "outcome": "The implementation is locally correct for the exercised convex QF_UFLRA paths, prints validator-accepted models, and leaves pure QF_UF/QF_LRA non-time statistics unchanged."
    },
    {
      "id": "2026-08-10-convex-reconciliation-fuzz-bbd43b9",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "fuzz",
      "scope": "Exact-commit SLURM generated, finite-domain, deterministic-seed, and YinYang gate for complete convex QF_UFLRA reconciliation",
      "commit": "bbd43b9",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git bbd43b9, CaDiCaL 3.0.0",
        "references": "Z3 5.0.0 for mixed generation, deterministic seeds, and mutation; Z3 5.0.0 plus cvc5 1.3.4 for finite-domain generation",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision bbd43b9, CaDiCaL linkage, Z3, cvc5, and typefuzz immediately before each accepted submission.",
        "scheduler_state": "All four generated shards completed with exit code 0 in 27 seconds. The complete all-seed mutation task completed with exit code 0 in 29 seconds. Scheduler identifiers are kept outside the repository."
      },
      "commands": {
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch --array=0-3 with 750 mixed, 125 finite QF_UF, and 125 finite QF_UFLRA cases per shard; seed base 2026081490; --qf-uflra-model-reconciliation",
        "complete_mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0 with 100 mutations per each of 11 tracked seeds, seed base 2026081890, a 2-second solver timeout, and --qf-uflra-model-reconciliation",
        "deeper_partial_mutation": "The same mutation gate was configured for 2000 mutations per seed with seed base 2026081590 and stopped after cumulative mutation growth made both solvers time out on a late seed."
      },
      "results": {
        "generated_mixed": "3000/3000 PASS against Z3",
        "finite_domain": "1000/1000 PASS: 500 QF_UF and 500 QF_UFLRA cases against Z3 and cvc5",
        "tracked_seeds": "11/11 deterministic seeds PASS against Z3",
        "complete_mutation": "All 11 seeds processed and valid; 2132 differential solver calls; 0 invalid seeds and 0 bug triggers.",
        "deeper_partial_mutation": "39320 differential solver calls and 0 bug files before controlled cancellation. Nine seeds completed 2000 mutations, the tenth reached mutation 1660, and the last seed was covered by the separate complete campaign. This is partial additional coverage, not a completed 2000-per-seed gate.",
        "failures": "0 wrong answer, crash, parser/type error, unsupported result, reference disagreement, or saved bug file in the accepted generated and complete mutation gates."
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/qf-uflra-convex-reconcile-bbd43b9/, fuzz-results/qf-uflra-convex-reconcile-yinyang-allseeds-bbd43b9/, and fuzz-results/qf-uflra-convex-reconcile-yinyang-bbd43b9/",
      "evidence_status": "slurm-complete-current",
      "outcome": "The exact complete convex reconciliation implementation clears the merge-grade QF_UFLRA fuzz gate. The long mutation configuration remains unsuitable for these cumulative seeds and is not represented as complete coverage."
    },
    {
      "id": "2026-08-10-convex-reconciliation-full-bbd43b9",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "benchmark",
      "scope": "Accepted 30-second full-corpus QF_UFLRA comparison of complete convex shared-model reconciliation",
      "commit": "bbd43b9",
      "baseline_commit": "1f3d81c",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git bbd43b9, CaDiCaL 3.0.0",
        "corpus": "tmp/QF_UFLRA; 1284 files; 1645365818 bytes",
        "reference_reuse": "The unchanged 1f3d81c Primo baseline, Z3 5.0.0 five-second result, and Yices 2.7.0 30-second result were reused rather than rerun.",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision bbd43b9 and all fuzz/reference dependencies immediately before submission.",
        "scheduler_state": "All eight array shards completed with exit code 0 in 2 minutes 15 seconds to 3 minutes 55 seconds. Scheduler identifiers are kept outside the repository."
      },
      "command": "scripts/slurm_qf_uflra_model_mine.sbatch --array=0-7 with 8 shards, PRIMO_MINE_TIMEOUT=30, and build-slurm-rel/primo --quiet --stats --qf-uflra-model-reconciliation; summarized by scripts/summarize_benchmark_shards.py",
      "results": {
        "baseline": "1238 solved (727 sat, 511 unsat), 46 timeout, 0 error/unsupported/wrong, solved-row time 546.995737 seconds, PAR2 3306.995737.",
        "candidate": "1257 solved (746 sat, 511 unsat), 27 timeout, 0 error/unsupported/wrong, solved-row time 472.497309 seconds, PAR2 2092.497309.",
        "families": "FFT 10/10; CPAchecker BMC 7/15; CPAchecker induction 340/359 with 19 timeouts; MathSAT 900/900. Candidate family PAR2 values were 0.129267, 495.631552, 1534.869025, and 61.867465 respectively.",
        "comparison": "19 timeout recoveries, 0 losses, 0 decisive-answer disagreements, and 1238 common solves. Common-solved aggregate time fell from 546.995737 to 316.577621 seconds, a 42.1 percent reduction.",
        "mechanism": "739 rows converged without broad exact scanning; 386 rejected congruence-producing edges became lazy splits; one row used exact fallback because two interface terms were unmapped. LRA extra-atom probes fell from 1133771 to 210.",
        "search_tradeoff": "SAT decisions increased from 3958867 to 7316844, propagations from 60226688 to 68470250, solve calls from 2165 to 3562, and SAT-visible equality atoms from 1175 to 2727. Eliminating exact tableau probes still produced the net time and PAR2 gain.",
        "references": "The reused Z3 five-second result solves 1234 with 50 timeouts and PAR2 758.708455; its shorter timeout makes direct PAR2 comparison inappropriate. The comparable Yices 30-second result solves 1276 with eight timeouts and PAR2 590.699880."
      },
      "artifacts": "remote:<prepared-workspace>/results/qf-uflra-convex-reconcile-bbd43b9-30s/; reused baseline remote:<prepared-workspace>/results/qf-uflra-nullary-stack-safe-1f3d81c-30s/; local ignored CSV copies /tmp/primo-convex-no-eval/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as a substantial opt-in convex QF_UFLRA performance improvement. The profile remains default-off because SAT search grows and Yices remains materially faster."
    },
    {
      "id": "2026-08-10-qf-uflra-normalized-interface-local",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "profile-and-fuzz",
      "scope": "Remove the final convex-reconciliation mapping fallback by deriving the shared LRA interface from normalized polynomial variables",
      "commit": "6b68628",
      "baseline_commit": "a57ce36",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "local",
        "binary": "Release candidate and RelWithDebInfo -pg build from a57ce36 plus the mapping repair, CaDiCaL 3.0.0",
        "references": "Z3 from contrib/local",
        "artifacts_are_local_only": true
      },
      "commands": {
        "profile": "build-gprof-plan/primo --quiet --stats --max-theory-conflicts=100 --qf-uflra-model-reconciliation < tmp/QF_UFLRA/mathsat/RandomDecoupled/pb_real_50_100_30_09.smt2; gprof build-gprof-plan/primo gmon.out",
        "focused_test": "ctest --test-dir build-release-current -R ^primo_qf_lra_solver_tests$ --output-on-failure --timeout 120",
        "fuzz": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build-release-current/primo --solver-arg=--qf-uflra-model-reconciliation --ref ./contrib/local/bin/z3 --count 1000 --seed 2026082001 --timeout 5 --shape mixed --out /tmp/primo-qfuflra-mapping-fuzz-a57"
      },
      "results": {
        "root_cause": "One syntactically shared Real constant cancelled from every normalized LRA polynomial and therefore had no PreparedLraTheory variable. Two partition builds reported it as two cumulative unmapped observations.",
        "witness_before_after": "shared terms 95 to 94; unmapped observations 2 to 0; exact fallback count 1 to 0; strict extra-atom probes 156 to 0; answer remains sat.",
        "profile": "The pre-repair 0.20-second profile was dominated by CaDiCaL propagation and LRA pivots; the witness is too short for stable fine-grained attribution, but counters isolate the eliminated strict-probe path.",
        "focused_test": "PASS",
        "fuzz": "1000/1000 PASS against Z3; zero disagreement, crash, timeout, unsupported result, or saved bug."
      },
      "artifacts": "local-only:/tmp/primo-profile-a57-unmapped-LHxhXZ and /tmp/primo-qfuflra-mapping-fuzz-a57/",
      "evidence_status": "local-current",
      "outcome": "The normalized-interface invariant removes the only observed exact fallback. SLURM campaign and full-corpus validation remain pending with the broader SAT-churn milestone."
    },
    {
      "id": "2026-08-10-qf-uflra-batched-split-frontier-local",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "profile-and-fuzz",
      "scope": "Batch rejected convex shared-model edges into one positive-first IPASIR-UP assumption re-entry and deduplicate explained equality reasons",
      "commit": "b49d724",
      "baseline_commit": "6b68628",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "local",
        "candidate_binary": "fresh Release build from the dirty candidate tree, CaDiCaL 3.0.0",
        "baseline_binary": "fresh detached-worktree Release build at exact revision 6b68628, CaDiCaL 3.0.0",
        "reference": "Z3 from contrib/local",
        "artifacts_are_local_only": true
      },
      "commands": {
        "focused_tests": "ctest --test-dir build --output-on-failure -R 'theory_combination|qf_lra_solver'",
        "sample_baseline": "python3 scripts/bench_qf_uf_full.py --repo . --root tmp/QF_UFLRA --manifest benchmarks/qf_uflra-smtlib-sample-5-per-family.txt --solver /tmp/primo-prebatch-6b68628/build-release/primo --solver-arg=--quiet --solver-arg=--stats --solver-arg=--qf-uflra-model-reconciliation --timeout 10",
        "sample_candidate": "the same 20-row command with ./build-release-plan/primo",
        "fuzz": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build-release-plan/primo --solver-arg=--qf-uflra-model-reconciliation --ref ./contrib/local/bin/z3 --count 1000 --seed 2026082002 --timeout 5 --shape mixed --out /tmp/primo-qfuflra-frontier-fuzz-6b68628"
      },
      "results": {
        "focused_tests": "PASS",
        "sample": "20/20 solved by both binaries with no wrong answer; aggregate wall time 1.109476 to 0.880448 seconds",
        "search": "SAT solve calls 30 to 27, decisions 18468 to 17016, propagations 86842 to 82123",
        "mechanism": "Three candidate frontier batches contained five rejected edges; the focused four-term regression requires a frontier of at least two edges and one assumption batch",
        "fuzz": "1000/1000 PASS against Z3; zero disagreement, crash, timeout, unsupported result, or saved bug"
      },
      "artifacts": "local-only:/tmp/qfuflra-prebatch-6b68628.csv, /tmp/qfuflra-batch-candidate.csv, and /tmp/primo-qfuflra-frontier-fuzz-6b68628/",
      "evidence_status": "local-current",
      "outcome": "The batching prototype reduces mixed SAT re-entry and search on the focused sample without changing answers. Exact-commit SLURM fuzz and full-corpus evaluation remain required before default promotion."
    },
    {
      "id": "2026-08-10-qf-uflra-retained-lra-epoch-local",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "profile-benchmark-and-fuzz",
      "scope": "Retain the augmented QF_UFLRA LRA preparation and feasible tableau while the exact true-interface equality key is unchanged, then evaluate existing row propagation as a mixed-path candidate",
      "commit": "c7443e0",
      "baseline_commit": "3640ce6",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "local",
        "candidate_binary": "build-release-epoch/primo, Release, CaDiCaL 3.0.0",
        "baseline_binary": "build-release-plan/primo from the pre-epoch tree",
        "reference": "Z3 from contrib/local",
        "artifacts_are_local_only": true,
        "candidate_relation": "The measured binary was built from the c7443e0 working tree before a final allocation-only cleanup that compares the retained interface key without constructing a temporary vector. Exact-commit SLURM fuzz is still required."
      },
      "commands": {
        "profile": "build-gprof-epoch/primo --quiet --stats --qf-uflra-model-reconciliation --max-theory-conflicts=500 tmp/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.ddv_machzwd_inw_false-unreach-call.i.smt2; gprof build-gprof-epoch/primo gmon.out",
        "sample": "python3 scripts/bench_qf_uf_full.py --repo /workspace --root tmp/QF_UFLRA --manifest benchmarks/qf_uflra-smtlib-sample-5-per-family.txt --solver build-release-epoch/primo --solver-arg=--quiet --solver-arg=--stats --solver-arg=--qf-uflra-model-reconciliation --timeout 5, repeated with --lra-row-propagation and then with both row-propagation flags",
        "fuzz": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build-release-epoch/primo --solver-arg=--qf-uflra-model-reconciliation --ref ./contrib/local/bin/z3 --count 1000 --seed 2026082003 --timeout 5 --shape mixed --out /tmp/primo-qfuflra-model-epoch-fuzz-3640ce6",
        "local_gates": "make check; make lint; make docs; make asan-test; make tidy; touched-file clang-tidy and misc-include-cleaner; git diff --check; python3 -m json.tool docs/run-log.json"
      },
      "results": {
        "profile": "The pre-epoch profile made 87 SAT calls and 86 augmented preparations. Preparation construction accounted for about 55 milliseconds; repeated LRA checking and live tableau work dominated.",
        "representative_before_after": "Three exact Release runs improved from 0.86-0.90 seconds to 0.53-0.55 seconds. SAT solve calls, decisions, and propagations remained exactly 87, 258029, and 558081. Augmented preparations fell from 86 to 13; 73 assignments reused the retained tableau.",
        "sample_epoch": "20/20 solved with no wrong answer. Aggregate wall time changed from the batched-frontier baseline's 0.880448 seconds to 0.855104 seconds; search stayed exactly 27 solve calls, 17016 decisions, and 82123 propagations.",
        "sample_forward_row": "20/20 solved with no wrong answer and 27 solve calls. Forward row propagation reduced decisions to 8070 and propagations to 65816; 1149 row propagations fired across nine files. Aggregate wall time was 0.818145 seconds.",
        "sample_bidirectional_row": "20/20 solved with no wrong answer. The reverse direction fired 38 times across three files, with 8052 decisions, 65822 propagations, and 0.829787 seconds; it did not improve on forward-only elapsed time.",
        "fuzz": "1000/1000 PASS against Z3; zero disagreement, crash, timeout, unsupported result, or saved bug.",
        "local_gates": "All functional, lint, documentation, ASAN, whole-tree clang-tidy, and touched-file include-cleaner checks passed."
      },
      "artifacts": "local-only:/tmp/primo-epoch-profile-hHGDPB, /tmp/qfuflra-epoch-candidate.csv, /tmp/qfuflra-epoch-row.csv, /tmp/qfuflra-epoch-row-bidi.csv, and /tmp/primo-qfuflra-model-epoch-fuzz-3640ce6/",
      "evidence_status": "local-current-needs-exact-commit-slurm",
      "outcome": "The retained epoch removes repeated structural setup and preserves search. Forward row propagation is promising enough for a full-corpus mixed A/B, but neither row direction is promoted and exact-commit SLURM fuzz remains required."
    },
    {
      "id": "2026-08-10-qf-uflra-retained-epoch-fuzz-ccdd71a",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "fuzz",
      "scope": "Exact-commit SLURM generated, finite-domain, deterministic-seed, and YinYang gate for batched convex reconciliation with a retained augmented LRA epoch",
      "commit": "ccdd71a",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git ccdd71a, CaDiCaL 3.0.0",
        "references": "Z3 5.0.0 for mixed generation, deterministic seeds, and mutation; Z3 5.0.0 plus cvc5 1.3.4 for finite-domain generation",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision ccdd71a, CaDiCaL linkage, and fuzz/reference dependencies immediately before each submission.",
        "scheduler_state": "All four generated shards and the complete mutation task finished with exit code 0. Scheduler identifiers are kept outside the repository."
      },
      "commands": {
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch --array=0-3 with 750 mixed, 125 finite QF_UF, and 125 finite QF_UFLRA cases per shard; seed base 2026082003; --qf-uflra-model-reconciliation --lra-row-propagation",
        "complete_mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0 with 100 mutations per each of 11 tracked seeds, seed base 2026082200, a 2-second solver timeout, and --qf-uflra-model-reconciliation --lra-row-propagation"
      },
      "results": {
        "generated_mixed": "3000/3000 PASS against Z3",
        "finite_domain": "1000/1000 PASS: 500 QF_UF and 500 QF_UFLRA cases against Z3 and cvc5",
        "tracked_seeds": "11/11 deterministic seeds PASS against Z3",
        "complete_mutation": "All 11 seeds processed and valid; 0 invalid seeds, 0 bug triggers, and 0 saved bug files.",
        "failures": "0 wrong answer, crash, parser/type error, unsupported result, reference disagreement, or saved bug file."
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/qf-uflra-epoch-row-fuzz-ccdd71a/ and fuzz-results/qf-uflra-epoch-row-mutation-ccdd71a/",
      "evidence_status": "slurm-complete-current",
      "outcome": "The exact retained-epoch implementation and the forward-row A/B configuration clear the campaign-grade QF_UFLRA correctness gate. Row propagation still requires performance acceptance independently of correctness."
    },
    {
      "id": "2026-08-10-qf-uflra-retained-epoch-full-ccdd71a",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "benchmark",
      "scope": "Exact-commit 30-second full-corpus QF_UFLRA comparison of retained-epoch reconciliation, with a separate forward-row-propagation A/B",
      "commit": "ccdd71a",
      "baseline_commit": "1f3d81c",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git ccdd71a, CaDiCaL 3.0.0",
        "corpus": "tmp/QF_UFLRA; 1284 files; 1645365818 bytes",
        "reference_reuse": "The unchanged 1f3d81c Primo baseline, bbd43b9 reconciliation result, Z3 result, and Yices 2.7.0 result were reused rather than rerun.",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision ccdd71a and the intended binary immediately before each submission.",
        "scheduler_state": "Both eight-shard arrays completed with exit code 0. Scheduler identifiers are kept outside the repository."
      },
      "commands": {
        "epoch": "scripts/slurm_qf_uflra_model_mine.sbatch --array=0-7 with 8 shards, PRIMO_MINE_TIMEOUT=30, and build-slurm-rel/primo --quiet --stats --qf-uflra-model-reconciliation; summarized by scripts/summarize_benchmark_shards.py",
        "epoch_forward_row": "The same command with --lra-row-propagation"
      },
      "results": {
        "old_default": "1238 solved (727 sat, 511 unsat), 46 timeout, 0 error/unsupported/wrong, solved-row time 546.995737 seconds, PAR2 3306.995737.",
        "prior_reconciliation": "1257 solved, 27 timeout, 0 error/unsupported/wrong, solved-row time 472.497309 seconds, PAR2 2092.497309.",
        "retained_epoch": "1264 solved (753 sat, 511 unsat), 20 timeout, 0 error/unsupported/wrong, solved-row time 492.677561 seconds, PAR2 1692.677561.",
        "families": "FFT 10/10; CPAchecker BMC 7/15; CPAchecker induction 347/359 with 12 timeouts; MathSAT 900/900.",
        "comparison": "Against bbd43b9: 7 timeout recoveries, 0 losses, and 0 decisive-answer disagreements; common-solved time 472.497309 to 376.858650 seconds. Against 1f3d81c: 26 recoveries, 0 losses, and 0 disagreements; common-solved time 546.995737 to 276.354906 seconds, a 49.5 percent reduction.",
        "search": "Relative to bbd43b9, SAT solve calls fell from 3562 to 3092, decisions from 7316844 to 6705117, and propagations from 68470250 to 66110064. LRA checks fell from 3012 to 2542 and pivots from 269940 to 267124.",
        "epoch_mechanism": "793 augmented preparation misses and 976 retained-tableau reuses across 130 files; 142 split-frontier batches covered 1510 pairs and used 580 assumption solve calls.",
        "forward_row": "1264 solved, 20 timeout, 0 error/unsupported/wrong, solved-row time 447.364553 seconds, and PAR2 1647.364553. It exchanged one solve for one timeout and one timeout for one solve relative to retained epoch alone. It produced 712262 row propagations across 650 files and reduced decisions to 4341799, propagations to 49049632, and pivots to 182458."
      },
      "artifacts": "remote:<prepared-workspace>/results/qf-uflra-epoch-ccdd71a-30s/ and results/qf-uflra-epoch-row-ccdd71a-30s/; reused baseline results/qf-uflra-nullary-stack-safe-1f3d81c-30s/ and results/qf-uflra-convex-reconcile-bbd43b9-30s/; local ignored copies /tmp/primo-convex-no-eval/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted retained-epoch reconciliation for QF_UFLRA default promotion: it adds 26 solves with no loss against the old default and materially reduces common-solved time. Forward row propagation remains opt-in because its equal solved count masks solved-set churn."
    },
    {
      "id": "2026-08-10-qf-uflra-default-fuzz-4e19d1b",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "fuzz",
      "scope": "Exact-commit SLURM campaign gate for the promoted convex QF_UFLRA default, with no reconciliation or row-propagation option",
      "commit": "4e19d1b",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM",
        "binary": "Release, git 4e19d1b, CaDiCaL 3.0.0",
        "references": "Z3 5.0.0 for mixed generation, deterministic seeds, and mutation; Z3 5.0.0 plus cvc5 1.3.4 for finite-domain generation",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision 4e19d1b, CaDiCaL linkage, and all fuzz/reference dependencies immediately before each submission.",
        "scheduler_state": "All four generated shards and the all-seed mutation task completed with exit code 0 in 28-29 seconds. Scheduler identifiers are kept outside the repository."
      },
      "commands": {
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch --array=0-3 with 750 mixed, 125 finite QF_UF, and 125 finite QF_UFLRA cases per shard; seed base 2026082300; no PRIMO_FUZZ_SOLVER_ARGS",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0 with 100 mutations per each of 11 tracked seeds, seed base 2026082400, a 2-second solver timeout, and no extra solver arguments"
      },
      "results": {
        "generated_mixed": "3000/3000 PASS against Z3",
        "finite_domain": "1000/1000 PASS: 500 QF_UF and 500 QF_UFLRA against Z3 and cvc5",
        "tracked_seeds": "11/11 deterministic seeds PASS against Z3",
        "mutation": "All 11 seeds completed 100 successful generations and 0 unsuccessful generations; 0 saved bug files.",
        "failures": "0 wrong answer, crash, parser/type error, unsupported result, reference disagreement, or saved bug file."
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/qf-uflra-default-fuzz-4e19d1b/ and fuzz-results/qf-uflra-default-mutation-4e19d1b/; compressed summary-only copy /tmp/primo-default-fuzz-4e19d1b-v2/",
      "evidence_status": "slurm-complete-current",
      "outcome": "The actual option-free promoted default clears the campaign-grade QF_UFLRA fuzz gate."
    },
    {
      "id": "2026-08-10-qf-uflra-default-full-and-timeout-triage-4e19d1b",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "benchmark-and-triage",
      "scope": "Exact-commit 30-second full-corpus confirmation of the promoted QF_UFLRA default, plus controlled triage of one timeout-handler abort",
      "commit": "4e19d1b",
      "baseline_commit": "ccdd71a",
      "branch": "convex-no-qflra-integration",
      "environment": {
        "type": "SLURM plus one stopped workstation probe",
        "binary": "Release, git 4e19d1b, CaDiCaL 3.0.0",
        "corpus": "tmp/QF_UFLRA; 1284 files; 1645365818 bytes",
        "reference_reuse": "The identical-corpus ccdd71a explicit-profile, 1f3d81c old-default, bbd43b9 prior-profile, Z3, and Yices results were reused rather than rerun.",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision 4e19d1b and the intended binary immediately before the benchmark and each controlled probe.",
        "scheduler_state": "All eight benchmark shards completed with scheduler exit code 0 in 1 minute 47 seconds to 2 minutes 53 seconds. Scheduler identifiers are kept outside the repository."
      },
      "commands": {
        "benchmark": "scripts/slurm_qf_uflra_model_mine.sbatch --array=0-7 with 8 shards, PRIMO_MINE_TIMEOUT=30, and build-slurm-rel/primo --quiet --stats; summarized by scripts/summarize_benchmark_shards.py",
        "workstation_probe": "build/primo --quiet --stats --max-theory-conflicts=100 on cpachecker-induction.cs_fib_true-unreach-call.i.smt2; manually hard-killed after 111.73 seconds because the controlled limit had not fired",
        "slurm_probe": "A locally written and validated one-file sbatch ran build-slurm-rel/primo --quiet --stats --max-theory-conflicts=1 under an outer timeout -s KILL 180 with 32 GB requested memory; an initial attempt exited 127 before running because /usr/bin/time was unavailable, then the corrected probe ran to the hard guard"
      },
      "results": {
        "default": "1264 solved (753 sat, 511 unsat), 20 harness-classified timeouts, 0 unsupported/wrong, solved-row time 470.517558 seconds, PAR2 1670.517558.",
        "families": "FFT 10/10; CPAchecker BMC 7/15; CPAchecker induction 347/359 with 12 timeouts; MathSAT 900/900.",
        "exact_profile_comparison": "0 recoveries, 0 losses, and 0 decisive-answer disagreements against explicit ccdd71a. All 1264 solved rows have identical answers and every non-time statistic. Solved-row time changed from 492.677561 to 470.517558 seconds.",
        "timeout_handler_failure": "The 94029941-byte cpachecker-induction.cs_fib_true-unreach-call.i.smt2 row was a timeout in both runs. At 31.211819 seconds the default run exited -6 with a glibc malloc assertion while the SIGTERM handler attempted its allocator-using statistics flush; the shard reached MaxRSS 18939772 KB. The harness classifies timeout before child exit status, so this raw failure is not visible in aggregate error counts.",
        "controlled_probe": "The workstation max-conflicts=100 probe had not reached its cap after 111.73 seconds and 26365824 KB RSS and was stopped. The corrected SLURM max-conflicts=1 probe likewise did not reach its cap; the outer hard kill fired after 180 seconds and SLURM reported 154539380 KB MaxRSS. No SIGTERM handler ran in that probe, and no malloc assertion was printed before the hard kill.",
        "triage": "Source inspection confirms the SIGTERM handler calls non-async-signal-safe statistics and std::exit code. The observed abort is therefore recorded as a timeout-infrastructure defect under extreme memory pressure, while the unbounded pre-first-theory-conflict memory growth remains a separate unresolved performance issue. This evidence does not establish that the underlying oversized run is memory-safe to completion."
      },
      "artifacts": "remote:<prepared-workspace>/results/qf-uflra-default-4e19d1b-30s/ and results/csfib-controlled-4e19d1b-r2/; local compressed CSV copy /tmp/primo-convex-no-eval/default-4e19d1b/ and summary /tmp/primo-default-4e19d1b-summary.json",
      "evidence_status": "slurm-complete-current-with-timeout-infrastructure-caveat",
      "outcome": "Accepted the convex reconciliation default: it reproduces the explicit profile's solved set and exact solved-row search behavior while passing fresh option-free fuzzing. Do not describe the full benchmark as crash-free; fix the async-unsafe timeout flush and investigate the oversized row's memory growth separately."
    },
    {
      "id": "2026-08-11-boolean-dag-fuzz-e9b8c39",
      "started_at": "2026-08-11",
      "recorded_at": "2026-08-11",
      "kind": "fuzz",
      "scope": "Exact-commit differential correctness gate for preserving nested Boolean DAGs and the optional bounded associative-flattening pass",
      "commit": "e9b8c39",
      "branch": "boolean-dag-bounded-flattening",
      "environment": {
        "type": "local smoke plus SLURM merge gate",
        "host": "llm2smt-slurm",
        "binary": "Release, git e9b8c39, CaDiCaL 3.0.0 on SLURM",
        "references": "Z3 5.0.0 for mixed generation, tracked seeds, and mutation; Z3 5.0.0 plus cvc5 1.3.4 for finite-domain generation",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py used tracked-archive synchronization from a clean detached worktree and --check-only verified e9b8c39, CaDiCaL, Z3, cvc5, and typefuzz immediately before submission.",
        "scheduler_state": "Generated arrays 123472 and 123473 and mutation jobs 123474 and 123475 completed with exit code 0."
      },
      "commands": {
        "generated_default": "scripts/slurm_qf_uflra_fuzz_gate.sbatch --array=0-3 with 750 mixed, 125 finite QF_UF, and 125 finite QF_UFLRA cases per shard; seed base 2026081150; 5-second solver timeout",
        "generated_threshold": "The same gate with seed base 2026081160, 5-second solver timeout, and --boolean-flatten-threshold=8",
        "mutation_default": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0 with 100 configured iterations, seed base 2026081170, 8-second solver timeout, and no extra solver option",
        "mutation_threshold": "The same gate with seed base 2026081180, 8-second solver timeout, and --boolean-flatten-threshold=8"
      },
      "results": {
        "reconvergent_regression": "A 60-definition Fibonacci-shaped shared And DAG reached its two shared top-level Or leaves once and emitted exactly two binary clauses.",
        "generated_default": "4000/4000 PASS: 3000 mixed plus 500 finite QF_UF and 500 finite QF_UFLRA",
        "generated_threshold": "4000/4000 PASS: 3000 mixed plus 500 finite QF_UF and 500 finite QF_UFLRA",
        "tracked_seeds": "11/11 PASS in each mode",
        "mutation": "100 successful and 0 unsuccessful generations in each mode; no reported bug or saved bug file",
        "failures": "0 wrong answer, crash, parser/type error, unsupported result, or reference disagreement"
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/boolean-dag-default-e9b8c39/, slurm-results/boolean-dag-threshold8-e9b8c39/, fuzz-results/boolean-dag-mutation-default-e9b8c39/, and fuzz-results/boolean-dag-mutation-threshold8-e9b8c39/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Both the default nested-DAG path and the optional threshold-8 flattening path clear the merge-grade differential gate."
    },
    {
      "id": "2026-08-11-boolean-dag-witness-and-sample-e9b8c39",
      "started_at": "2026-08-11",
      "recorded_at": "2026-08-11",
      "kind": "benchmark-and-regression",
      "scope": "Exact oversized-witness memory regression and 45-file QF_UFLRA sanity benchmark for nested Boolean DAG preservation",
      "commit": "e9b8c39",
      "baseline_commit": "4e19d1b",
      "branch": "boolean-dag-bounded-flattening",
      "environment": {
        "type": "local debug plus SLURM release",
        "host": "local workspace and llm2smt-slurm",
        "binary": "Source-exact e9b8c39 debug build locally; clean Release, git e9b8c39, CaDiCaL 3.0.0 on SLURM",
        "witness": "cpachecker-induction.cs_fib_true-unreach-call.i.smt2, 94,029,941 bytes",
        "sample": "benchmarks/qf_uflra-preprocessing-opportunity-sample.txt; 45 files; 1,853,536 bytes; 60-second timeout",
        "reference_reuse": "No unchanged reference solver was rerun. Historical 4e19d1b witness evidence is reused only for the same-input memory comparison; the 45-file result is reported as same-commit sanity, not an attributed A/B improvement.",
        "workspace_preflight": "The witness wrapper and sample sbatch passed scripts/slurm_validate_sbatch.py and bash -n; scripts/slurm_prepare_benchmark_workspace.py --check-only verified e9b8c39 immediately before submission.",
        "scheduler_state": "Corrected witness job 123482 and 45-file sample job 123483 completed with exit code 0."
      },
      "commands": {
        "local_witness": "timeout -s KILL 90 build/primo --quiet --stats --preprocess-only <witness>, measured with /usr/bin/time -v",
        "slurm_witness": "A locally written and validated one-file sbatch ran build-slurm-rel/primo --quiet --stats --preprocess-only under timeout -s KILL 180; SLURM accounting supplied MaxRSS.",
        "sample_stage": "scripts/slurm_stage_manifest_files.py copied the 45 verified manifest files from the unchanged remote corpus into the prepared workspace.",
        "sample": "scripts/slurm_qf_uflra_sample_compare.sbatch --array=0 with a 60-second timeout and build-slurm-rel/primo --quiet --stats"
      },
      "results": {
        "historical_witness": "At 4e19d1b, the release probe reached the 180-second hard guard and 154,539,380 KB MaxRSS without reaching one theory conflict.",
        "local_witness": "Completed preprocessing in 52.37 seconds at 3,071,672 KB MaxRSS; term sizes 1,805,077 to 1,816,291; all Boolean-flatten counters zero. The revision banner had a -dirty suffix only because run-log documentation was pending; the compiled C++ source matched e9b8c39.",
        "slurm_witness": "Completed in 19 seconds at 92,168 KB MaxRSS; parse 4.725902 seconds, frontend 5.092665 seconds, preprocessing 5.520208 seconds; all Boolean-flatten counters zero.",
        "sample": "45/45 solved (44 sat, 1 unsat), 0 timeout/error/unsupported/wrong, PAR2 2.174189 seconds; all Boolean-flatten counters zero.",
        "failed_full_attempt": "An attempted full-corpus submission ran zero solver rows and failed immediately because bench_qf_uf_full.py requires corpus paths beneath --repo while the unchanged corpus was supplied as a sibling path. It was superseded by the verified 45-file staging workflow and is not benchmark evidence.",
        "release_build_gate": "The first remote release build of 0856d8f exposed -Wmaybe-uninitialized in the flattening reconstruction. ba3aecc made the invalid sentinel and post-switch check explicit; the exact release build then passed."
      },
      "artifacts": "remote:<prepared-workspace>/results/boolean-dag-witness-e9b8c39/ and results/qf-uflra-boolean-dag-opportunity-45-e9b8c39/; local ignored witness files under results/boolean-dag-0856d8f/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted the representation repair on the feature branch. The direct witness shows that clausification and preprocessing consume the nested DAG without invoking flattening, eliminating the pre-solve memory explosion. The optional pass remains default-off."
    },
    {
      "id": "2026-08-11-boolean-dag-default-stat-ab-cd10201",
      "started_at": "2026-08-11",
      "recorded_at": "2026-08-11",
      "kind": "benchmark-and-stat-regression",
      "scope": "Local exact-stat default A/B for nested Boolean DAG preservation across tracked QF_UF, QF_LRA, and QF_UFLRA cases",
      "commit": "cd10201",
      "baseline_commit": "c1a8288",
      "branch": "boolean-dag-bounded-flattening",
      "environment": {
        "type": "local release A/B",
        "host": "local workspace",
        "binary": "Separate clean Release builds with GCC 13.3.0 and the same CaDiCaL 3.0.0 library; revision banners cd10201 and c1a8288",
        "manifest": "benchmarks/boolean-dag-default-ab-12.txt; 3 QF_UF, 3 QF_LRA, and 6 QF_UFLRA files",
        "timeout": "30 seconds per invocation; no timeout occurred"
      },
      "commands": {
        "default_ab": "For every manifest file, invoke each release binary three times as primo --quiet --stats FILE, preserve stdout and stderr separately, parse every integer statistic, and compare the union of keys while treating the five :time.* counters separately.",
        "flatten_probe": "On the two MathSAT-derived files, compare c1a8288 default against cd10201 --boolean-flatten-threshold=100000."
      },
      "results": {
        "correctness": "12/12 answers and return codes agreed in all three repetitions (4 sat, 8 unsat): 0 timeout, error, unsupported result, or disagreement.",
        "determinism": "Every non-time statistic was stable across the three repetitions of each binary.",
        "unchanged_cases": "Nine files had identical shared non-time counters; cd10201 additionally reported six zero-valued :preprocessing.boolean-flatten.* counters.",
        "finite_domain_case": "finite_real_domain_amo_unsat changed preprocessing.term-size.initial 18 to 19, forced-atoms.rewrites 24 to 25, and equality-query.nodes 52 to 53.",
        "decoupled_case": "mathsat_randomdecoupled changed term-size.initial 988 to 1943, sat.vars 268 to 744, sat.clauses 695 to 2105, sat.decisions 2748 to 3046, and median total time 46.909 to 35.134 ms. There were 120 differing shared non-time counters; three direct-conflict counters present in the parent were absent because the current search did not take that path.",
        "coupled_case": "mathsat_randomcoupled changed term-size.initial 1247 to 2444, sat.vars 302 to 901, sat.clauses 758 to 2556, sat.decisions 1104 to 3840, and median total time 34.637 to 40.927 ms. There were 45 differing shared non-time counters.",
        "flatten_probe": "Threshold 100000 reproduced all parent shared non-time counters on the decoupled file. The coupled file retained only three one-count differences: purification formula rewrites 1621 to 1620, binary clauses 66 to 67, and clause literals 2106 to 2105."
      },
      "artifacts": "local-only ignored directory results/boolean-dag-default-ab-cd10201/; summary.json contains every differing statistic and timing repetition, stat-differences.tsv lists all 168 shared-key differences, and per-run stdout/stderr preserve complete statistics",
      "evidence_status": "local-complete-current",
      "outcome": "Default semantic behavior is preserved on the 12-file sample, but exact encoding and search behavior are not preserved on large nested disjunction chains. The additional Tseitin variables and clauses are a documented efficiency limitation, not a correctness disagreement."
    },
    {
      "id": "2026-08-10-soi-minimization-arms-measured",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "benchmark",
      "scope": "Decide whether the new SOI conflict-minimization arms (--lra-soi-minimize / --lra-soi-minimize-order) are worth keeping, and whether the row-support ordering's rationale survives contact with data.",
      "commit": "8ddd62d",
      "branch": "qflra-soi-minimize-order",
      "evidence_status": "current",
      "environment": {
        "type": "local",
        "notes": "Single Release binary, 5 arms per instance, --lra-pivoting-rule soi forced (SOI is not the default). Candidates pre-screened to those that COMPLETE and where minimization actually engages; counters off a timed-out run are not comparable."
      },
      "command": {
        "sample": "every 7th file of benchmarks/qf-lra-full-division.txt, first 220, screened at 8s; arms then run at 25s",
        "metric": ":lra.soi-conflict-lits (clause length), not error-set size"
      },
      "result": {
        "instances_all_five_completed": 18,
        "answer_disagreements": 0,
        "note_on_sums": "The largest instance is 71% of the quickxplain total, so summed literals are not a fair summary; medians and per-instance ratios below.",
        "ratio_vs_quickxplain": {
          "deletion/id": {
            "median": 1.0,
            "geomean": 0.957,
            "better": 6,
            "worse": 7,
            "same": 5
          },
          "deletion/row-support": {
            "median": 1.0,
            "geomean": 0.917,
            "better": 8,
            "worse": 5,
            "same": 5
          },
          "deletion/violation": {
            "median": 1.001,
            "geomean": 0.917,
            "better": 5,
            "worse": 9,
            "same": 4
          },
          "none": {
            "median": 1.218,
            "geomean": 1.186,
            "better": 3,
            "worse": 15,
            "same": 0
          }
        },
        "conclusions": [
          "Minimization clearly pays: `none` is ~19% worse on clause length, 3 better / 15 worse. That settles the ablation.",
          "No deletion arm dominates quickxplain. All three sit at a median ratio of ~1.000; row-support and violation have a geomean of 0.917 but that is driven by a few instances with large swings, and their win/loss records (8-5 and 5-9) point opposite ways.",
          "The row-support rationale -- that clause length is dominated by the surviving row's support -- is NOT confirmed as a general effect. It is not worse either.",
          "Read as portfolio dimensions rather than candidate defaults, this is the wanted outcome: the arms are complementary, cheap, and cannot reach a default run. The default stays quickxplain/id on this evidence."
        ],
        "caveats": "Clause length is a proxy. A shorter clause is usually stronger but not always -- a longer clause over lower-level literals can backjump further, and the tableau cannot see decision levels. PAR2 was not measured and would be authoritative."
      }
    },
    {
      "id": "2026-08-10-row-propagation-limits-wired",
      "started_at": "2026-08-10",
      "recorded_at": "2026-08-10",
      "kind": "analysis",
      "scope": "Wire CheckSatOptions::lra_row_propagation_limits, which four CLI options wrote and nothing read, and confirm the fix changes nothing at default settings.",
      "commit": "pending vs 8d93eb5",
      "branch": "qflra-soi-minimize-order",
      "evidence_status": "current",
      "environment": {
        "type": "local",
        "notes": "Both Release, same toolchain; the pre-change binary built from HEAD in a scratch worktree sharing /workspace/contrib/local."
      },
      "result": {
        "default_settings": {
          "completed": 24,
          "answer_diffs": 0,
          "lra_counter_diffs": 0
        },
        "row_propagation_enabled": {
          "completed": 10,
          "answer_diffs": 0,
          "lra_counter_diffs": 0
        },
        "knobs_now_bind": "On sc/sc-9.base.cvc.smt2 with row propagation on: max-row-size 1 -> 0 propagations, 4 -> 667, 64 -> 2694; max-fanout 1 -> 0, 64 -> 2694, 100000 -> 3177. Before the fix every value gave 2694.",
        "finding": "The forward fanout cap was binding at its default the whole time -- 2694 against 3177 uncapped, so ~15% of available row propagations were being discarded by a constant no option could reach.",
        "verdicts_unchanged": "Every probe answered unsat regardless of cap, as required: these are cost caps and must not move a verdict."
      }
    },
    {
      "id": "2026-08-11-boolean-dag-main-merge-validation-15c425e",
      "started_at": "2026-08-11",
      "recorded_at": "2026-08-11",
      "kind": "merge-validation-and-fuzz",
      "scope": "Validate the Boolean DAG bounded-flattening branch after merging cached origin/main 0d73973, including conflict resolution with the LRA SOI and row-propagation work",
      "commit": "15c425e",
      "baseline_commit": "3b9435c",
      "branch": "boolean-dag-bounded-flattening",
      "environment": {
        "local": "GCC 13.3.0 builds against CaDiCaL 3.0.0",
        "slurm": "Prepared by scripts/slurm_prepare_benchmark_workspace.py in ~/primo-boolean-dag-0856d8f; exact revision 15c425e and CaDiCaL 3.0.0 verified immediately before submission",
        "origin_freshness": "A post-validation git fetch using an isolated /tmp SSH known-host file confirmed that origin/main remains 0d73973; no global SSH state was changed."
      },
      "commands": {
        "local": "focused CTest suites; make lint; make check; make asan-test; make docs; Release build; make tidy; make include-cleaner; git diff --check",
        "stat_regression": "Run exact merged Release primo --quiet --stats on the 11 cases whose complete pre-merge raw outputs survived under results/boolean-dag-default-ab-cd10201/current-cd10201, then compare every shared non-time statistic",
        "generated_fuzz": "scripts/slurm_boolean_formula_fuzz.sbatch, four shards per mode, each shard generating 750 general formulas plus 125 finite QF_UF and 125 finite QF_UFLRA formulas; Z3 is the general reference and Z3 plus cvc5 are finite-domain references",
        "mutation_fuzz": "scripts/slurm_yinyang_fuzz.sbatch, 100 successful typefuzz generations from the tracked QF_UFLRA seeds per mode with Z3 as reference"
      },
      "results": {
        "merge_resolution": "Preserved the branch's stack-safe Boolean DAG traversal, fixed-equality elimination, and model mutation while retaining main's SOI minimization, row-propagation limits, tests, tuning documentation, and run-log entries.",
        "local_validation": "All 13 C++ and 19 Python check tests passed; all 13 ASan tests passed; docs and Release builds passed; whole-tree clang-tidy passed with only four suppressed non-user-code warnings; include-cleaner completed with the existing 138 advisory baseline.",
        "stat_regression": "11/11 answers and all shared non-time statistics were identical. Only zero-valued SOI statistic key availability changed after the main merge; single-run timings remained in the same millisecond range.",
        "generated_default": "SLURM job 123581 completed: 4000/4000 PASS (3000 general, 500 finite QF_UF, 500 finite QF_UFLRA), zero bug artifacts.",
        "generated_threshold8": "SLURM job 123585 completed: 4000/4000 PASS with --boolean-flatten-threshold=8 (3000 general, 500 finite QF_UF, 500 finite QF_UFLRA), zero bug artifacts.",
        "mutation_default": "SLURM job 123589 completed: 100 successful and 0 unsuccessful generations; all 11 deterministic seed checks PASS; zero bug artifacts.",
        "mutation_threshold8": "SLURM job 123590 completed: 100 successful and 0 unsuccessful generations with --boolean-flatten-threshold=8; all 11 deterministic seed checks PASS; zero bug artifacts."
      },
      "artifacts": "local:results/boolean-dag-merge-stat-ab-15c425e/summary.json; remote:~/primo-boolean-dag-0856d8f/slurm-results/boolean-dag-merged-default-15c425e/, slurm-results/boolean-dag-merged-threshold8-15c425e/, fuzz-results/boolean-dag-merged-default-15c425e/, and fuzz-results/boolean-dag-merged-threshold8-15c425e/",
      "evidence_status": "slurm-complete-current",
      "outcome": "The conflict-resolved exact commit preserves default search statistics on the retained comparison cases and passes fresh default and optional-pass fuzz gates. It is ready for the local merge to main."
    },
    {
      "id": "2026-08-11-qf-uflra-live-euf-local-profile-540b847",
      "started_at": "2026-08-11",
      "recorded_at": "2026-08-11",
      "kind": "profile-and-ablation",
      "scope": "Profile repeated final EUF closure rebuilding and measure scoped reuse of the IPASIR-UP callback-owned closure",
      "commit": "540b847",
      "baseline_commit": "5284c64",
      "branch": "qf-uflra-live-euf-model-state",
      "environment": {
        "type": "local",
        "profile_binary": "gprof RelWithDebInfo builds against CaDiCaL 3.0.0",
        "release_binary": "Release git 540b847, GCC 13.3.0, CaDiCaL 3.0.0",
        "candidate_provenance": "The candidate gprof artifacts were produced from the final source before its 540b847 commit; the exact committed Release binary repeated the mechanism and answer checks."
      },
      "commands": {
        "profile": "Run each selected input under the gprof binary with --quiet --stats [--qf-uflra-online-euf], then run gprof on the resulting gmon.out",
        "release_ab": "/tmp/run_primo_live_euf_ab.sh; five repetitions per input and profile using /usr/bin/time"
      },
      "inputs": {
        "files": 3,
        "family": "CPAchecker induction QF_UFLRA",
        "shape": "14, 19, and 43 SAT solve calls, selected to expose repeated final EUF checks"
      },
      "results": {
        "gprof_total_time_us": "949714 to 717693, 382818 to 285981, and 762238 to 625764",
        "gprof_flat_definitions": "14233 to 331, 2912 to 208, and 4845 to 255",
        "live_mechanism": "All 76 candidate final checks reused the callback closure with zero fallback or rebuild; 18336 observed assignments were completed through model callbacks and 72 re-entrant callbacks were deferred and replayed.",
        "release_medians": "Default/live wall medians were 0.42/0.40, 0.17/0.17, and 0.35/0.36 seconds. SAT decisions, propagations, solve calls, and answers were identical on each pair.",
        "release_rss": "Live medians were about 1-2 MiB higher: 30656 vs 28696, 18640 vs 17684, and 42732 vs 41068 KiB."
      },
      "artifacts": "local-only:/tmp/primo-live-euf-profile-baseline-5284c64/, /tmp/primo-live-euf-profile-candidate-model-callback/, and /tmp/primo-live-euf-release-ab-540b847/",
      "evidence_status": "local-complete-current",
      "outcome": "The rebuilt closure was a real repeated cost and the scoped callback state removes it. Release timing is neutral on these already-fast cases, so broader evaluation remains authoritative."
    },
    {
      "id": "2026-08-11-qf-uflra-live-euf-fuzz-540b847",
      "started_at": "2026-08-11",
      "recorded_at": "2026-08-11",
      "kind": "fuzz",
      "scope": "Merge-grade generated, finite-domain, deterministic-seed, and YinYang validation of live EUF model-state reuse",
      "commit": "540b847",
      "branch": "qf-uflra-live-euf-model-state",
      "environment": {
        "type": "SLURM",
        "binary": "Release git 540b847, CaDiCaL 3.0.0",
        "references": "Z3 5.0.0 for mixed generation, deterministic seeds, and mutation; Z3 5.0.0 plus cvc5 1.3.4 for finite-domain generation",
        "workspace_preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified revision 540b847, CaDiCaL linkage, Z3, cvc5, and typefuzz immediately before submission",
        "scheduler": "Generated array job 123698 completed four tasks in 26-27 seconds; mutation job 123699 completed in 4 minutes 48 seconds."
      },
      "commands": {
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch --array=0-3 with PRIMO_FUZZ_SOLVER_ARGS=--qf-uflra-online-euf, count 750 plus two finite counts of 125 per task, seeds 202607390 through 202607393, timeout 5 seconds",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch --array=0 with --qf-uflra-online-euf, 1000 iterations per seed, seed 2026080700, and solver timeout 8 seconds"
      },
      "results": {
        "generated_mixed": "3000/3000 PASS",
        "finite_qf_uf": "500/500 PASS",
        "finite_qf_uflra": "500/500 PASS",
        "generated_failures": "Zero wrong answer, timeout, crash, unsupported result, parser/type error, or reference disagreement.",
        "tracked_seeds": "11/11 PASS before mutation",
        "mutation": "11 seeds processed, 11 valid, 0 invalid, 0 bug triggers, and 21868 differential solver calls."
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/qf-uflra-live-euf-fuzz-540b847/ and fuzz-results/qf-uflra-live-euf-mutation-540b847/; local-only:/tmp/primo-live-euf-fuzz-540b847/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as merge-grade correctness evidence for the default-off live EUF model-state path."
    },
    {
      "id": "2026-08-11-qf-uflra-live-euf-slurm-ab-540b847",
      "started_at": "2026-08-11",
      "recorded_at": "2026-08-11",
      "kind": "benchmark",
      "scope": "Same-commit 45-file and full 1,284-file QF_UFLRA A/B of callback-owned final EUF closure reuse",
      "commit": "540b847",
      "branch": "qf-uflra-live-euf-model-state",
      "environment": {
        "type": "SLURM",
        "binary": "Release git 540b847, CaDiCaL 3.0.0",
        "corpus": "tmp/QF_UFLRA; 1284 files; historical C-locale relative-path/size manifest SHA-256 24264774139d25d59f71a4675768e05109d62cee33742fbfeb88619600949bbf",
        "reference_reuse": "Z3 5.0.0 results/qf-uflra-full-mine-z3stats-77599f4-5s/z3stats.csv and Yices 2.7.0 /tmp/primo-qfuflra-yices-2.7.0-5s/ were not rerun; solver binaries, corpus, and five-second budget are unchanged.",
        "scheduler": "45-file job 123704 completed both tasks in 3-4 seconds. Correct full arrays 123723 and 123724 completed all 16 tasks in 39-65 seconds."
      },
      "commands": {
        "sample": "scripts/slurm_qf_uflra_sample_compare.sbatch --array=0-1 over benchmarks/qf_uflra-preprocessing-opportunity-sample.txt, timeout 60, profiles default and --qf-uflra-online-euf",
        "full": "Two scripts/slurm_qf_uflra_model_mine.sbatch --array=0-7 runs, eight shards, timeout 5, profiles default and --qf-uflra-online-euf",
        "summary": "scripts/summarize_benchmark_shards.py --timeout 5 with default as baseline and live as candidate",
        "discarded_submission": "Jobs 123706 and 123707 accidentally ran the script default --model-equality-branching profile because shell variables were not exported to sbatch. Their logs exposed the mismatch immediately; they are rejected and are not used in any comparison."
      },
      "results": {
        "sample_default": "45 solved, 0 timeout/error/wrong, PAR2 3.001235.",
        "sample_live": "45 solved, 0 timeout/error/wrong, PAR2 2.998063.",
        "full_default": "1243 solved (737 sat, 506 unsat), 41 timeout, 0 error/unsupported/wrong, PAR2 562.400041.",
        "full_live": "1244 solved (737 sat, 507 unsat), 40 timeout, 0 error/unsupported/wrong, PAR2 557.286967.",
        "cross_profile": "Two recoveries, one loss, zero decisive-answer disagreements; among 1242 common solves, time changed from 147.485141 to 148.449934 seconds.",
        "mechanism": "Final closure rebuilds fell from 3261 to 0 and flat-definition work from 1145153 to 134523; all 3284 attempts reused live state with zero incomplete, registration-invalid, or other fallback.",
        "search": "Decisions increased from 33572448 to 34211143, propagations from 68269051 to 68714307, and solve calls from 3756 to 3782; conflicts decreased from 539762 to 537675.",
        "references": "Reused Z3 solved 1234 with PAR2 758.708455. Reused Yices solved 1275 with PAR2 156.687539, adding 31 solves over live Primo with no loss or decisive disagreement."
      },
      "artifacts": "remote:<prepared-workspace>/results/qf-uflra-live-euf-ab-540b847/, results/qf-uflra-live-euf-full-default-540b847-5s/, and results/qf-uflra-live-euf-full-live-540b847-5s/; local-only:/tmp/primo-live-euf-slurm-ab-540b847/ and /tmp/primo-live-euf-full-540b847-5s-correct/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Keep the mechanism and counters behind --qf-uflra-online-euf. It removes the intended rebuild cost and gains one net five-second solve, but the small search and common-time regressions do not justify default promotion."
    },
    {
      "id": "2026-08-11-qf-uflra-reference-stats-triage-540b847",
      "started_at": "2026-08-11",
      "recorded_at": "2026-08-11",
      "kind": "reference-statistics-profile-and-option-ablation",
      "scope": "Triage the 31 five-second QF_UFLRA cases solved by Yices 2.7.0 but not the live-EUF Primo profile, using reference statistics and existing non-LRA options",
      "commit": "540b847",
      "branch": "qf-uflra-live-euf-model-state",
      "environment": {
        "type": "local",
        "binary": "Release git 540b847, GCC 13.3.0, CaDiCaL 3.0.0",
        "references": "Yices 2.7.0 local --stats probes plus existing five-second Yices and Z3 corpus artifacts",
        "corpus": "The 31 CPAchecker-induction recoveries in the existing live-Primo versus Yices comparison; no reference implementation source was inspected"
      },
      "commands": {
        "phase_matrix": "Six representative inputs under default and --theory-phase=positive|polarity|none|auto, eight-second local cap, four workers",
        "flatten_matrix": "Five representative mixed inputs under --boolean-flatten-threshold=0|8|32|128, ten-second local cap, four workers",
        "gap_sample": "python3 scripts/bench_qf_uf_full.py over the exact 31-file recovery manifest with --boolean-flatten-threshold=128 and a five-second cap; append-only JSONL enabled",
        "reference_stats": "contrib/local/bin/yices-smt2 --stats on representative recovered inputs and the residual mt20xx input",
        "controlled_residual": "build-live-euf-release/primo --quiet --stats --boolean-flatten-threshold=128 --max-theory-conflicts=20 on mt20xx; repeated with --qf-uflra-online-euf and with --theory-phase=positive"
      },
      "results": {
        "reference_shape": "Representative Primo rows used roughly 3.5-6x the SAT variables reported by Yices; Z3 statistics on the six common fast-reference rows showed the same direction.",
        "phase": "Positive/polarity reduced main3_true from 702043 to 102954-111692 decisions and helped m0_opl3, but positive/polarity/none timed out on wm831x and positive timed out on iw_main6 and uinput. Auto matched the negative default on these mixed inputs.",
        "flatten_representatives": "Threshold 128 reduced SAT variables by 19-65% and decisions by about 5-17x across main3_true, wm831x, iw_main6, uinput, and m0_opl3. All five solved within the ten-second diagnostic cap.",
        "flatten_gap_set": "9/31 solved, 22 timeout, 0 wrong/error/unsupported, PAR2 244.416102 at a five-second cap; the existing live profile timed out on all 31 at the same corpus budget.",
        "direct_interface_ab": "On main3_true, default versus threshold 128 used 12017/6874 SAT variables and 702043/117837 decisions, but both had exactly 557 EUF atoms, 3559 LRA atoms, 1007 shared Real terms, and a 506521-pair diagnostic cross product. The speedup does not come from shrinking the semantic Nelson-Oppen interface.",
        "yices_mt20xx": "sat in 1.297s with --stats: 7128 Boolean variables, 23391 decisions, 76 SAT conflicts, 71 theory conflicts, 3606 theory propagations, 802 e-graph final checks, 849 interface lemmas, and 941 simplex pivots.",
        "primo_mt20xx": "Threshold 128 reached the configured outer theory-conflict stop after 21.19s, but only after 432 combined conflicts despite --max-theory-conflicts=20: 12927 SAT variables, 1730478 decisions, 303300 LRA propagations, 452 SAT/EUF checks, and 29811 reported interface equalities. Because the mixed path does not enforce this budget promptly, the live-EUF and positive-phase diagnostics also required 30s and 20s outer wall caps. Live EUF removed all 452 closure rebuilds but reached 1884557 decisions and 464 LRA conflicts; positive phase reached 3745313 decisions.",
        "counter_limitation": ":no.interface.equalities-propagated accumulates complete producer vectors across rounds, including repeated and already-absorbed equalities; the 29811 mt20xx reports produced 408 equality clauses. It is not a unique-lemma or useful-delivery count."
      },
      "artifacts": "local-only:/tmp/qfuflra-phase-matrix-540b847.jsonl, /tmp/qfuflra-flatten-matrix-540b847.jsonl, /tmp/qfuflra-yices-only-31-flatten128.csv, /tmp/qfuflra-yices-only-31-flatten128.jsonl, /tmp/qfuflra-yices-only-31-flatten128-summary.json, and /tmp/qfuflra-yices-only-31-flatten128-logs/",
      "evidence_status": "local-diagnostic-current",
      "outcome": "The threshold-128 diagnostic identified Boolean shape as the strongest immediate non-LRA signal. A subsequent exact-option fuzz gate passed, but no full A/B was submitted because the separately owned main branch added and validated a post-preprocessing bounded-flattening default. The current branch must rebase its performance baseline on that main behavior before attributing further gains. The residual mt20xx statistics prioritize assertion-context simplification and better interface-delivery counters over generic model machinery or a blanket theory-phase change."
    },
    {
      "id": "2026-08-11-qf-uflra-flatten128-fuzz-47ddba6",
      "started_at": "2026-08-11",
      "recorded_at": "2026-08-11",
      "kind": "fuzz",
      "scope": "Exact-option correctness gate for the pre-preprocessing bounded Boolean flattening diagnostic; retained as historical evidence after main adopted a separately validated post-preprocessing policy",
      "commit": "47ddba6",
      "branch": "qf-uflra-live-euf-model-state",
      "environment": {
        "type": "SLURM",
        "binary": "Release git 47ddba6, CaDiCaL 3.0.0",
        "scheduler": "Generated/finite job 123847 and mutation job 123848 completed."
      },
      "commands": {
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch with PRIMO_FUZZ_SOLVER_ARGS=--boolean-flatten-threshold=128",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch with --boolean-flatten-threshold=128 and 1000 mutation iterations per tracked seed"
      },
      "results": {
        "generated_mixed": "3000/3000 PASS",
        "finite_qf_uf": "500/500 PASS",
        "finite_qf_uflra": "500/500 PASS",
        "generated_failures": "Zero wrong answer, crash, unsupported result, parser/type error, or reference disagreement.",
        "tracked_seeds": "11/11 PASS before mutation",
        "mutation": "11 seeds processed, 11 valid, 0 invalid, and 0 bug triggers."
      },
      "artifacts": "remote:<prepared-workspace>/SLURM job outputs for 123847 and 123848",
      "evidence_status": "historical-option-gate",
      "outcome": "The exact threshold-128 option passed the required correctness gate. Further benchmark work on that pre-pass was stopped to avoid overlapping the Boolean-DAG branch; origin/main subsequently introduced the distinct post-preprocessing default that now defines the baseline."
    },
    {
      "id": "2026-08-11-boolean-flatten-post-preprocessing",
      "started_at": "2026-08-11",
      "recorded_at": "2026-08-11",
      "kind": "analysis",
      "scope": "Diagnose and repair a QF_LRA slowdown introduced by the Boolean DAG representation change, without reintroducing the memory blowup that change fixed.",
      "commit": "2b09fc0",
      "branch": "main",
      "evidence_status": "current",
      "environment": {
        "type": "local",
        "notes": "Release; git bisect across the 168-commit Boolean DAG branch (first-parent to the merge, then within it), plus direct A/B of the culprit against its parent."
      },
      "result": {
        "culprit": "0856d8f 'Preserve shared Boolean term DAGs'; its parent c1a8288 is good.",
        "mechanism": "TermManager::mk_and/mk_or stopped flattening same-kind children at construction. flatten_associative_booleans replaced it but ran only BEFORE the rewriting preprocessing passes, which build fresh nodes through those same constructors and so reintroduce nesting. Localised by :preprocessing.term-size.initial being identical (28011) while term-size.final diverged (151804 -> 162106), placing the cause in preprocessing rather than parsing.",
        "cost": {
          "yPositive-SIscaled50": "9.0s/485MB -> 22.7s/605MB",
          "Gcd_havoc": "4.0s -> 9.7s",
          "sas2.t2.c": "13.4s -> 21.5s",
          "sat_vars": "98886 -> 109188",
          "sat_clauses": "110514 -> 125304",
          "sat_decisions": "13788 -> 1566573"
        },
        "repair": "--boolean-flatten-post-threshold, default 256 (widest node needed is 206). Restores the pre-repair clausification exactly: 110514 clauses, 98886 vars, 13788 decisions, 8.9s, 485MB.",
        "memory_guard": "Synthetic 20000-link `d_n = (and d_(n-1) atom)` chain reproduces the original failure: 1.88 GB peak RSS pre-repair vs 57 MB after. With the post-pass enabled it stays at 57 MB -- the pass does not fire on that shape (attempts=0).",
        "broader": {
          "instances": 34,
          "answer_disagreements": 0,
          "median_time_ratio": 0.76,
          "faster_gt_30pct": 6,
          "slower_gt_30pct": 0
        },
        "memory_guard_verified": {
          "instance": "sandbox/non-incremental/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.cs_fib_true-unreach-call.i.smt2 (94 MB)",
          "peak_rss_post_0": "4.85 GB",
          "peak_rss_post_256": "3.19 GB",
          "flattenings_accepted": 3512924,
          "threshold_stops": 17,
          "max_arity": 243,
          "note": "Both still time out at 180s; this is a memory result. The post-pass REDUCES memory on the very instance that motivated the DAG repair, because it removes intermediate Tseitin nodes and rewrites each reachable node once rather than materialising every prefix at construction.",
          "qf_uflra_sample": {
            "instances": 28,
            "answer_disagreements": 0,
            "solved_by_both": 28,
            "max_rss_change": "under 5% either way"
          }
        },
        "default": "2048, not 256: 256 leaves simple-scaled200 short (20200 threshold stops), and 2048 costs nothing on the memory guard (3,346,944 KB vs 3,347,208 KB, stops 17 -> 1).",
        "qf_lra_vs_pre_regression": {
          "instances": 55,
          "solved_by_both": 45,
          "answer_disagreements": 0,
          "lost": 0,
          "gained": 0,
          "median_time_ratio": 1.02,
          "faster_gt_30pct": 0,
          "slower_gt_30pct": 0,
          "clauses": "34 identical, 10 fewer now, 1 more (closed at 2048)",
          "why_fewer": "assert_positive gained a per-assertion visited set in the same commit, so a subterm reached via several paths of the top-level And spine is clausified once rather than repeatedly. Terms and vars unchanged; only redundant duplicate clauses disappear."
        }
      }
    },
    {
      "id": "2026-08-11-qf-uflra-main-rebaseline-root-polarity-rejected-91f94b9",
      "started_at": "2026-08-11",
      "recorded_at": "2026-08-11",
      "kind": "profile-and-rejected-prototype",
      "scope": "Rebaseline established QF_UFLRA gaps after merging main's post-preprocessing flattening default, then test assertion-boundary-independent required-root clausification without changing LRA",
      "commit": "91f94b9 baseline; temporary dirty prototype based on 91f94b9, fully reverted after measurement",
      "branch": "qf-uflra-live-euf-model-state",
      "environment": {
        "type": "local",
        "binary": "Release, CaDiCaL 3.0.0",
        "limits": "--max-theory-conflicts=1000 for fast representatives and 20 for mt20xx"
      },
      "commands": {
        "baseline": "build-live-euf-release/primo --quiet --stats --max-theory-conflicts=N on main3_true, wm831x, iw_main6, uinput, m0_opl3, and mt20xx",
        "candidate": "same binary and limits with the temporary --root-polarity-clausification option",
        "focused_tests": "primo_boolean_solver_tests and primo_qf_lra_solver_tests under ctest --timeout 120"
      },
      "results": {
        "main_rebaseline": "All six representatives solved. main3_true used 5615 SAT variables, 22381 clauses, 56304 decisions, and 32 solve calls in 3.82s. mt20xx used 9510 variables, 51027 clauses, 75021 decisions, 20 solve calls, and 12 LRA conflicts in 15.18s. The earlier pre-main controlled mt20xx run had reached 1.73 million decisions without solving, so main's post-pass materially changes the mixed baseline.",
        "residual_model_cost": "mt20xx performed 2800 shared-model compatibility projections totaling 5972400 projected-term visits; Yices historical time remains about 1.3s. The 18190224 :no.interface.lra-model-filter-full-pairs value is a constant-time combinatorial diagnostic, not a physical-visit counter.",
        "prototype_invariant": "The corrected prototype used shared (TermId, required-value) visited state across the implicit assertion conjunction while interleaving polarity collection and clause emission in existing assertion order. Unit tests showed equivalent treatment of separate assertions, one conjunction, and a root De Morgan equivalent, plus unchanged LRA tableau shape.",
        "main3_corrected": "2 decompositions; 5615 variables, 22381 clauses, 56304 decisions, 32 solve calls, 21 LRA conflicts, 3.45s. All non-time search counts matched baseline exactly.",
        "mt20xx_corrected": "33 decompositions; 9481 variables, 50943 clauses, 75021 decisions, 20 solve calls, 12 LRA conflicts, 14.24s. The prototype removed 29 variables and 84 clauses but did not change search counts.",
        "other_activity": "wm831x, iw_main6, uinput, and m0_opl3 exposed only one or two decompositions in the diagnostic prototype.",
        "discarded_first_variant": "A first implementation collected all theory-atom polarities before clause emission and changed SAT variable order. It was corrected before the authoritative main3/mt20xx comparison; its search measurements are rejected."
      },
      "artifacts": "local-only:/tmp/qfuflra-main-post-baseline-91f94b9-v3/, /tmp/qfuflra-main-post-residual-91f94b9/, /tmp/qfuflra-root-polarity-diagnostic-91f94b9-dirty-v2/, and /tmp/qfuflra-root-polarity-order-preserving-91f94b9-dirty/",
      "evidence_status": "rejected-local-diagnostic",
      "outcome": "The root-polarity clausification source and tests were reverted before fuzzing because the corrected mechanism changed too little structure and no search work on the residual target. Retain the assertion-semantics invariant and redirect performance work to shared-model pair filtering/projection."
    },
    {
      "id": "2026-08-12-structural-implies-fuzz-f88bc87",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "fuzz",
      "scope": "Exact-option correctness gates for structural automatic preprocessing selection and optional implication rewriting",
      "commit": "f88bc87",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "type": "SLURM",
        "binary": "Release git f88bc87, CaDiCaL 3.0.0",
        "references": "Z3 5.0.0 for all cases and cvc5 1.3.4 for finite-domain cases",
        "scheduler": "Jobs 125107 and 125108 completed all four array tasks with exit status zero."
      },
      "commands": {
        "structural_clause": "scripts/slurm_qf_uflra_fuzz_gate.sbatch, four tasks, each with 750 generated mixed cases, 125 finite QF_UF cases, and 125 finite QF_UFLRA cases; --qf-uf-auto-selector=structural --boolean-implies-rewrite=clause",
        "implies_all": "scripts/slurm_qf_uflra_fuzz_gate.sbatch, four tasks, each with 250 generated mixed cases, 50 finite QF_UF cases, and 50 finite QF_UFLRA cases; --qf-uf-auto-selector=structural --boolean-implies-rewrite=all",
        "seed_gate": "scripts/check_solver_seed_corpus.py over 7 QF_UF and 11 QF_UFLRA tracked seeds with each exact option set"
      },
      "results": {
        "structural_clause": "4000/4000 PASS: 3000 generated mixed, 500 finite QF_UF, and 500 finite QF_UFLRA; zero wrong answer, crash, parser/type error, unsupported result, timeout, or reference disagreement.",
        "implies_all": "1400/1400 PASS: 1000 generated mixed, 200 finite QF_UF, and 200 finite QF_UFLRA; zero failures of any class.",
        "seed_gate": "Both option sets passed all 7 QF_UF and all 11 QF_UFLRA seeds.",
        "activation": "All 500 structural finite QF_UFLRA cases selected the structural policy: 288 compact and 212 strong; Real-equality lowering fired 5574 times."
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/structural-implies-f88bc87/seed-gate/, structural-clause/, and implies-all/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Both experimental transformations passed their correctness gates. This is not evidence for default promotion; performance was evaluated separately."
    },
    {
      "id": "2026-08-12-structural-implies-benchmark-f88bc87",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "benchmark",
      "scope": "Same-commit A/B of structural auto selection and implication rewriting on the 45-file mixed opportunity sample and 118-file interesting QF_UF set",
      "commit": "f88bc87",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "type": "SLURM",
        "binary": "Release git f88bc87, CaDiCaL 3.0.0",
        "limits": "30 seconds per file",
        "scheduler": "QF_UFLRA job 125117 and QF_UF jobs 125115/125116 completed. Existing reference results were reused rather than rerun."
      },
      "commands": {
        "qf_uflra": "scripts/slurm_qf_uflra_sample_compare.sbatch over benchmarks/qf_uflra-preprocessing-opportunity-sample.txt with default, structural+clause, and structural+all profiles",
        "qf_uf": "scripts/bench_qf_uf_full.py over benchmarks/interesting-qf-uf.txt in four shards for default and structural+clause"
      },
      "results": {
        "qf_uflra_default": "45 solved, 0 timeout/error/wrong, PAR2 2.961706; 18882 SAT variables, 59162 clauses, 16822 decisions, 136517 propagations, 58 solve calls.",
        "qf_uflra_structural_clause": "45 solved, PAR2 2.961565, identical SAT/search counts; structural selected strong on all 45 and disagreed with legacy on all 45, but rewrote no implications.",
        "qf_uflra_implies_all": "45 solved, PAR2 2.957442, identical SAT/search counts, and no implication rewrites.",
        "qf_uf_default": "4 solved, 114 timeout, 0 error/wrong, PAR2 6882.516904.",
        "qf_uf_structural_clause": "3 solved, 115 timeout, 0 error/wrong, PAR2 6943.879180; lost SEQ/SEQ009_size10.smt2 with no recoveries or answer disagreement."
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/structural-implies-f88bc87/qf-uflra-preprocess-sample/, qf-uf-default/, and qf-uf-structural-clause/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Keep --qf-uf-auto-selector=legacy and --boolean-implies-rewrite=off as defaults. The mixed sample was neutral and the QF_UF sample had one net loss."
    },
    {
      "id": "2026-08-12-model-mutation-profile-f88bc87",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "profile",
      "scope": "Profile the residual mt20xx QF_UFLRA model-mutation and compatibility path after Boolean flattening fixed the earlier search explosion",
      "commit": "f88bc87",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "type": "local",
        "binary": "GCC -pg -O2, git f88bc87, CaDiCaL 3.0.0",
        "limit": "--max-theory-conflicts=20"
      },
      "commands": {
        "profile": "build-gprof-structural/primo --quiet --stats --max-theory-conflicts=20 on the CPAchecker mt20xx residual, followed by gprof"
      },
      "results": {
        "solve": "Solved in 21.74 seconds under gprof with 20 SAT calls, 75021 decisions, and 211823 propagations.",
        "profile": "Hash-set insertion used 14.88%, model-value grouping sort 13.32%, rehash 13.32%, rational hash 5.22%, and group_by_model_value 3.39% of sampled time.",
        "mutation": "8 mutation calls accepted 1013 updates; the complete diagnostic cross product was 18190224 pairs, while candidates fell from 6431192 to 5839418.",
        "compatibility": "2800 compatibility projections visited 5972400 terms."
      },
      "artifacts": "local-only:/tmp/primo-structural-mt20xx-profile.6jRuc0",
      "evidence_status": "local-diagnostic-current",
      "outcome": "The profile supports reducing the variables repeatedly grouped by model mutation. It motivated the opt-in care-scoped prototype; it does not justify changing LRA or the default scope."
    },
    {
      "id": "2026-08-12-care-scoped-mutation-fuzz-fcbea41",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "fuzz",
      "scope": "Exact-commit generated, finite-domain, deterministic-seed, and seed-mutation correctness gate for care-scoped QF_UFLRA model mutation",
      "commit": "fcbea41",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "type": "SLURM",
        "binary": "Release git fcbea41, CaDiCaL 3.0.0",
        "references": "Z3 5.0.0 for all cases and cvc5 1.3.4 for finite-domain cases",
        "scheduler": "Generated/finite job 125139 completed four tasks in 29 seconds each; mutation job 125140 task 0 completed in 101 seconds."
      },
      "commands": {
        "seed_gate": "scripts/check_solver_seed_corpus.py over benchmarks/seeds/qf_uflra with --model-equality-mutation-scope=care and a 60-second seed timeout",
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch, four tasks, each with 750 generated mixed cases, 125 finite QF_UF cases, and 125 finite QF_UFLRA cases; seed base 202607390; five-second solver timeout",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch task 0 with --model-equality-mutation-scope=care, 100 iterations per tracked seed, mutation seed 2026080700, and eight-second solver timeout"
      },
      "results": {
        "deterministic_seeds": "11/11 PASS against Z3 and declared statuses.",
        "generated_mixed": "3000/3000 PASS.",
        "finite_qf_uf": "500/500 PASS with no missing activation.",
        "finite_qf_uflra": "500/500 PASS with no missing activation; Real-equality lowering fired 6211 times.",
        "generated_failures": "Zero wrong answer, crash, parser/type error, unsupported result, timeout, or reference disagreement.",
        "mutation": "11 seeds processed, 11 valid, 0 invalid, 2090 solver calls reported, and 0 bug triggers."
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/care-scope-fcbea41/seed-gate/, generated/, and mutation/",
      "evidence_status": "slurm-complete-current",
      "outcome": "The exact care-scoped prototype passed the merge-grade correctness gate. Performance evaluation may proceed, but the option remains non-default."
    },
    {
      "id": "2026-08-12-care-scoped-mutation-benchmark-30d9a26",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "benchmark",
      "scope": "Same-commit sample, five-second full-corpus, and 30-second full-corpus A/B of all-shared versus EUF-care-scoped model mutation",
      "commit": "30d9a26",
      "implementation_commit": "fcbea41",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "type": "SLURM",
        "binary": "Release git 30d9a26, CaDiCaL 3.0.0; source is identical to fcbea41 except for documentation and run-log additions",
        "corpus": "tmp/QF_UFLRA; 1284 files; historical C-locale relative-path/size manifest SHA-256 24264774139d25d59f71a4675768e05109d62cee33742fbfeb88619600949bbf",
        "reference_reuse": "Unchanged identical-corpus Z3 5.0.0 and Yices 2.7.0 results were not rerun. Yices previously solved 1275 at five seconds and 1276 at 30 seconds with zero wrong answers.",
        "scheduler": "Sample job 125144 completed both tasks in 3-4 seconds. Five-second jobs 125146/125147 and 30-second jobs 125162/125163 completed all eight shards per profile with exit status zero."
      },
      "commands": {
        "sample": "scripts/slurm_qf_uflra_sample_compare.sbatch --array=0-1 over benchmarks/qf_uflra-preprocessing-opportunity-sample.txt, timeout 30, profiles default all and --model-equality-mutation-scope=care",
        "five_seconds": "Two scripts/slurm_qf_uflra_model_mine.sbatch --array=0-7 runs, eight shards, timeout 5, profiles default all and care",
        "thirty_seconds": "Two scripts/slurm_qf_uflra_model_mine.sbatch --array=0-7 runs, eight shards, timeout 30, profiles default all and care",
        "summary": "scripts/summarize_benchmark_shards.py at each timeout plus selected-counter aggregation from durable shard CSVs"
      },
      "results": {
        "sample": "Both profiles solved 45/45 with zero wrong/error/unsupported rows. Care reduced scoped visits 4472 to 1850, decisions 16822 to 16367, propagations 136517 to 126995, solve calls 58 to 54, and aggregate wall time 1.861670 to 1.776263 seconds.",
        "five_second_all": "1242 solved (735 sat, 507 unsat), 42 timeout, 0 error/unsupported/wrong, PAR2 592.164651.",
        "five_second_care": "1247 solved (740 sat, 507 unsat), 37 timeout, 0 error/unsupported/wrong, PAR2 539.428890; six recoveries, one loss, and zero decisive-answer disagreements.",
        "five_second_families": "All/care solved FFT 10/10 and MathSAT 900/900. CPAchecker BMC improved 6/15 to 7/15; CPAchecker induction improved 326/359 to 330/359. Family PAR2 changed respectively: FFT 0.281811 to 0.281743, BMC 91.028576 to 82.286272, induction 429.938384 to 380.484551, and MathSAT 70.915880 to 76.376324.",
        "five_second_common": "Across 1241 common solves, time fell from 170.608342 to 153.315494 seconds.",
        "thirty_second_all": "1267 solved (756 sat, 511 unsat), 17 timeout, 0 error/unsupported/wrong, PAR2 1593.277162.",
        "thirty_second_care": "1267 solved (756 sat, 511 unsat), 17 timeout, 0 error/unsupported/wrong, PAR2 1502.067240; two recoveries, two losses, and zero decisive-answer disagreements.",
        "thirty_second_families": "Both scopes solved FFT 10/10, CPAchecker BMC 7/15, CPAchecker induction 350/359, and MathSAT 900/900. Family PAR2 all/care was FFT 0.085760/0.085424, BMC 486.760281/482.171362, induction 1035.527703/951.748497, and MathSAT 70.903418/68.061957.",
        "thirty_second_common": "Across 1265 common solves, time fell from 564.657864 to 451.026811 seconds.",
        "mechanism": "At 30 seconds, care reduced scoped mutation visits from 524902 to 182213, attempted updates from 44624 to 19482, and internal total time from 543495069 to 453352406 microseconds. The global pair guard rejected two attempted mutations.",
        "search_tradeoff": "Care increased decisions from 8377635 to 8928243, propagations from 68585054 to 70284462, solve calls from 3350 to 3365, and compatibility projection terms from 71369784 to 87447114."
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/care-scope-30d9a26/sample/, full-all/, full-care/, full30-all/, and full30-care/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Retain --model-equality-mutation-scope=care as a validated opt-in performance mode. It reduces mutation cost and improves aggregate time, but the cutoff-dependent solved-set exchanges and increased SAT work do not justify changing the default from all."
    },
    {
      "id": "2026-08-12-euf-combination-scan-profile-20c8db1",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "profile",
      "scope": "Profile and remove repeated quadratic coordinator scans in EUF care discovery and LRA-to-EUF equality filtering without changing LRA internals",
      "commit": "20c8db1",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "type": "local",
        "binary": "GCC Release and -pg builds, CaDiCaL 3.0.0",
        "target": "sandbox/non-incremental/QF_UFLRA/cpachecker-induction-svcomp14/cpachecker-induction.rekh_ctm_false-unreach-call.2.c.smt2",
        "limit": "--max-theory-conflicts=100"
      },
      "commands": {
        "solver": "primo --quiet --stats --model-equality-branching --model-equality-mutation-scope=care --max-theory-conflicts=100 TARGET",
        "profile": "gprof BUILD/primo gmon.out"
      },
      "results": {
        "initial_profile": "Before pair-set replacement, equality_list_contains_pair used 15.64% self time across 55,559 calls and approximately 1.55 billion TermManager lookups.",
        "after_pair_sets": "The remaining small-list equality helper used 0.89% self time; arithmetic pivoting and Rational multiplication became the leading sampled costs.",
        "release": "The accepted implementation solved the target locally in 26.89 seconds. One care miss plus 191 exact-assignment cache hits replaced repeated care construction; one EUF implied-equality class projection visited 29,546 terms.",
        "care_work": "One diagnostic represented 423,070,416 full definition pairs but enumerated 1,376,935 within-class argument pairs.",
        "dedup": "55,559 LRA-to-EUF pair-set lookups found zero duplicates on this target, confirming that the removed linear membership scans were pure overhead here."
      },
      "artifacts": "local-only:/tmp/primo-rekh-care-profile.4hbptp and /tmp/primo-rekh-care-profile-after.mU3qCM",
      "evidence_status": "local-profile-current",
      "outcome": "Class projection, exact care-epoch reuse, and hash-set pair membership removed the observed coordinator bottlenecks. Full-corpus and fuzz evaluation remained required before acceptance."
    },
    {
      "id": "2026-08-12-euf-combination-scan-fuzz-20c8db1",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "fuzz",
      "scope": "Exact-binary isolated-workspace merge gate for EUF combination scan changes",
      "commit": "20c8db1",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "type": "SLURM",
        "binary": "Release git 20c8db1, CaDiCaL 3.0.0",
        "references": "Z3 5.0.0 for generated and mutation cases; cvc5 1.3.4 additionally for finite-domain cases",
        "scheduler": "Isolated-workspace generated/finite job 125222 completed four tasks in 27-28 seconds; mutation job 125223 task 0 completed in 90 seconds."
      },
      "commands": {
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch tasks 0-3 with --model-equality-mutation-scope=care, 750 generated mixed cases, 125 finite QF_UF cases, and 125 finite QF_UFLRA cases per task; seed base 202607390; five-second timeout",
        "finite_seeds": "QF_UF seeds 202707390 through 202707393 and QF_UFLRA seeds 202807390 through 202807393",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch task 0 with --model-equality-mutation-scope=care, 100 iterations per tracked seed, seed 2026080700, and eight-second solver timeout"
      },
      "results": {
        "generated_mixed": "3000/3000 PASS.",
        "finite_qf_uf": "500/500 PASS.",
        "finite_qf_uflra": "500/500 PASS.",
        "deterministic_seeds": "11/11 PASS.",
        "mutation": "11 seeds processed, 11 valid, 0 invalid, 0 bug triggers, and 2074 solver calls.",
        "failures": "Zero wrong answer, crash, parser/type error, unsupported result, timeout, or reference disagreement.",
        "superseded_attempt": "Jobs 125185 and 125189 also passed, but another experiment changed their shared source checkout while they ran. Their exact 20c8db1 solver binary evidence is retained only as historical corroboration, not as the merge gate."
      },
      "artifacts": "remote:<isolated-workspace>/slurm-results/qf_uflra-fuzz-gate/ and remote:<isolated-workspace>/slurm-results/euf-combination-20c8db1-isolated/mutation/; local-only:/tmp/primo-euf-combination-20c8db1-isolated/generated/",
      "evidence_status": "slurm-complete-current",
      "outcome": "The isolated exact-binary merge gate passed. The finite-fuzzer metadata says commit unknown because the prepared archive intentionally has no .git directory; the SLURM logs and binary --version report git 20c8db1."
    },
    {
      "id": "2026-08-12-euf-combination-scan-benchmark-20c8db1",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "benchmark",
      "scope": "Isolated-workspace five-second and 30-second full QF_UFLRA comparison of the accepted EUF combination scan implementation against the prior care-scoped result",
      "commit": "20c8db1",
      "baseline_commit": "30d9a26",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "type": "SLURM",
        "binary": "Release git 20c8db1, CaDiCaL 3.0.0",
        "corpus": "tmp/QF_UFLRA; 1284 files; historical C-locale relative-path/size manifest SHA-256 24264774139d25d59f71a4675768e05109d62cee33742fbfeb88619600949bbf",
        "reference_reuse": "Unchanged identical-corpus Z3 5.0.0 and Yices 2.7.0 results were not rerun. Z3 previously solved 1234 at five seconds; Yices solved 1275 at five seconds and 1276 at 30 seconds with zero wrong answers.",
        "scheduler": "Isolated-workspace jobs 125243 and 125244 completed all eight shards."
      },
      "commands": {
        "solver": "build-slurm-rel/primo --quiet --stats --model-equality-mutation-scope=care",
        "five_seconds": "scripts/slurm_qf_uflra_model_mine.sbatch tasks 0-7, timeout 5",
        "thirty_seconds": "scripts/slurm_qf_uflra_model_mine.sbatch tasks 0-7, timeout 30",
        "summary": "scripts/summarize_benchmark_shards.py against the 30d9a26 care-scoped shard CSVs"
      },
      "results": {
        "five_seconds": "Both revisions solved 1247/1284 (740 sat, 507 unsat), with 37 timeouts and zero error/unsupported/wrong rows. Common-solved time changed from 169.428890 to 159.986714 seconds and PAR2 from 539.428890 to 529.986714, with no recoveries or losses.",
        "thirty_seconds": "The candidate solved 1268/1284 (757 sat, 511 unsat) versus 1267/1284 (756 sat, 511 unsat), with 16 versus 17 timeouts and zero error/unsupported/wrong rows. Common-solved time changed from 482.067240 to 437.144987 seconds and PAR2 from 1502.067240 to 1405.176392.",
        "families_30_seconds": "Candidate solved FFT 10/10, CPAchecker BMC 7/15, CPAchecker induction 351/359, and MathSAT 900/900. The sole recovery was in CPAchecker induction; there were no losses or decisive-answer disagreements.",
        "recovered_target": "cpachecker-induction.rekh_ctm_false-unreach-call.2.c.smt2 changed from timeout at 30.068995 seconds to sat in 8.031405 seconds while retaining 2 SAT solve calls, 1122 decisions, 353565 propagations, and 2 EUF care checks.",
        "target_mechanism": "Across the two care checks, 846140832 diagnostic full definition pairs reduced to 2753870 within-class argument-pair iterations; final EUF class projections visited 59092 flat terms and pair-set filtering performed 110663 constant-time lookups.",
        "remaining_reference_gap": "At 30 seconds the candidate is eight solves behind reused Yices and ahead of the reused five-second Z3 solved count at its five-second cutoff.",
        "rejected_runs": "Jobs 125190/125191 accidentally added --model-equality-branching and were rejected as option-incomparable. Jobs 125206/125207 reproduced the accepted result but used a shared harness checkout and were superseded. Isolated jobs 125227/125228 failed before solver execution because a symlinked corpus resolved outside the harness repository; the corpus was hard-linked into the workspace before jobs 125243/125244."
      },
      "artifacts": "remote:<isolated-workspace>/slurm-results/euf-combination-20c8db1-isolated/full5-care-rerun/ and full30-care-rerun/; local-only:/tmp/primo-euf-combination-20c8db1-isolated/full5-summary.json and full30-summary.json",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accept the implementation on the opt-in care-scoped profile: it preserves the five-second solved set, gains one 30-second solve without losses, and removes the profiled care-scan bottleneck without changing the recovered target's SAT search."
    },
    {
      "id": "2026-08-12-qf-uflra-full-120s-six-solver-9061611",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "reference-benchmark",
      "scope": "Full 120-second QF_UFLRA comparison of Primo all, Primo care, Z3, cvc5, OpenSMT, and Yices",
      "commit": "9061611",
      "implementation_commit": "20c8db1",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "type": "SLURM",
        "binaries": "Primo Release git 9061611 with CaDiCaL 3.0.0; Z3 5.0.0; cvc5 1.3.4; OpenSMT 2.9.2; Yices 2.7.0",
        "corpus": "tmp/QF_UFLRA; 1284 files; 1645365818 bytes; C-locale relative-path/size manifest SHA-256 24264774139d25d59f71a4675768e05109d62cee33742fbfeb88619600949bbf",
        "workspace": "Isolated prepared workspace; scripts/slurm_prepare_benchmark_workspace.py --check-only verified the exact Primo revision and all reference executables immediately before submission.",
        "scheduler": "Eight shards per solver. Jobs 125259 through 125264 completed all 48 tasks with exit status zero; task elapsed times were 3:35-6:17 Primo all, 3:13-6:00 Primo care, 7:01-10:54 Z3, 3:13-6:34 cvc5, 4:13-13:01 OpenSMT, and 2:08-2:16 Yices."
      },
      "commands": {
        "harness": "scripts/slurm_qf_uflra_model_mine.sbatch tasks 0-7, PRIMO_MINE_TIMEOUT=120, PRIMO_MINE_SHARDS=8, six-hour task allocation",
        "primo_all": "build-slurm-rel/primo --quiet --stats --model-equality-mutation-scope=all",
        "primo_care": "build-slurm-rel/primo --quiet --stats --model-equality-mutation-scope=care",
        "z3": "contrib/local/bin/z3 -st",
        "cvc5": "contrib/local/bin/cvc5 --lang smt2 --stats",
        "opensmt": "contrib/local/bin/opensmt",
        "yices": "contrib/local/bin/yices-smt2 --stats",
        "summary": "scripts/summarize_benchmark_shards.py --timeout 120 plus structured pairwise analysis of the durable shard CSVs",
        "plot": "python3 scripts/plot_cactus.py --series 'Primo all=<artifact-root>/primo-all' --series 'Z3=<artifact-root>/z3' --series 'cvc5=<artifact-root>/cvc5' --series 'OpenSMT=<artifact-root>/opensmt' --series 'Yices=<artifact-root>/yices' --timeout 120 --drop-solved-by-all-under 1 --sort-by-solved --highlight-series 'Primo all' --title 'QF_UFLRA, 2026-08-12' --note 'SLURM jobs 125259-125264; benchmark commit 9061611.' --out docs/_static/qf-uflra-cactus.svg"
      },
      "results": {
        "primo_all": "1272 solved (761 sat, 511 unsat), 12 timeout, 0 error/unsupported/wrong, solved-row time 805.384529 seconds, PAR2 3685.384529.",
        "primo_care": "1271 solved (760 sat, 511 unsat), 13 timeout, 0 error/unsupported/wrong, solved-row time 660.975990 seconds, PAR2 3780.975990.",
        "z3": "1254 solved (752 sat, 502 unsat), 30 timeout, 0 error/unsupported/wrong, solved-row time 617.388440 seconds, PAR2 7817.388440.",
        "cvc5": "1273 solved (762 sat, 511 unsat), 11 timeout, 0 error/unsupported/wrong, solved-row time 966.152165 seconds, PAR2 3606.152165.",
        "opensmt": "1265 solved (754 sat, 511 unsat), 19 timeout, 0 error/unsupported/wrong, solved-row time 1374.827663 seconds, PAR2 5934.827663.",
        "yices": "1276 solved (765 sat, 511 unsat), 8 timeout, 0 error/unsupported/wrong, solved-row time 75.767448 seconds, PAR2 1995.767448.",
        "families": "Solved FFT/BMC/induction/MathSAT: Primo all 10/7/355/900; Primo care 10/7/354/900; Z3 10/7/337/900; cvc5 10/7/356/900; OpenSMT 10/7/351/897; Yices 10/7/359/900.",
        "all_vs_care": "Care had no recovery and lost cpachecker-induction.ddv_machzwd_outb_false-unreach-call.i.smt2 at the cutoff. Across 1271 common solves, all used 803.828272 seconds and care 660.975990 seconds; there was no answer disagreement.",
        "primo_all_vs_references": "Against all, Z3 had 0 unique solves and missed 18; cvc5 had 3 unique solves and missed 2; OpenSMT had 3 unique solves and missed 10; Yices had 4 unique solves and missed 0. Common-solved times were all/reference: 456.737924/617.388440 Z3, 725.516596/792.641899 cvc5, 626.743651/1299.858345 OpenSMT, and 805.384529/60.167781 Yices.",
        "yices_only_vs_primo_all": "Four CPAchecker induction SAT rows: 32_7_cilled_false-unreach-call_const_ok_linux-32_1-drivers--vhost--vhost_net.ko-ldv_main1_sequence_infinite_withcheck_stateful.cil.out.c.smt2, cs_fib_longer_false-unreach-call.i.smt2, cs_fib_longer_true-unreach-call.i.smt2, and cs_fib_true-unreach-call.i.smt2.",
        "universal_timeouts": "All six profiles timed out on the same eight CPAchecker BMC rows: rekcba_ctm_false-unreach-call.2.c, rekcba_ctm_false-unreach-call.3.c, rekcba_ctm_true-unreach-call.1.c through .4.c, and rekh_ctm_true-unreach-call.3.c through .4.c.",
        "portfolio": "The union solved 1276 files, exactly the Yices solved set. Yices was a solved-set superset of every other profile.",
        "answer_validation": "All 1282 files with declared SMT-LIB status matched it. The two files without declared status were universal timeouts. There were zero pairwise decisive-answer disagreements on jointly solved files. The saved OpenSMT Boolean disagreement lies outside this corpus and is not contradicted by this result."
      },
      "artifacts": "remote:<isolated-workspace>/slurm-results/qfuflra-full-120s-9061611/{primo-all,primo-care,z3,cvc5,opensmt,yices}/; local-only:/tmp/primo-qfuflra-120s-9061611/summary.json and solver shard CSV copies",
      "evidence_status": "slurm-complete-current",
      "outcome": "At 120 seconds, default all is the strongest Primo scope by solved count, while care is about 18 percent faster on common solves but loses one cutoff-sensitive row. Yices remains the performance target: four additional solves and roughly 13.4x lower aggregate time on the 1272 rows shared with Primo all."
    },
    {
      "id": "2026-08-14-qf-uflra-current-main-fuzz-413179b",
      "started_at": "2026-08-14",
      "recorded_at": "2026-08-14",
      "kind": "fuzz-and-model-validation",
      "scope": "Exact-binary QF_UFLRA correctness gate before refreshing the full-corpus cactus plot",
      "commit": "413179b",
      "branch": "main",
      "environment": {
        "type": "SLURM",
        "binary": "Primo Release git 413179b with CaDiCaL 3.0.0",
        "scheduler": "Job 125758, array tasks 0-3; all tasks completed with exit status zero in 1:03.",
        "workspace": "Existing isolated NO workspace synchronized with scripts/slurm_prepare_benchmark_workspace.py in archive mode; reusable Z3 5.0.0, cvc5 1.3.4, and Dolmen installations were checked immediately before submission."
      },
      "commands": {
        "validation": "scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_fuzz_gate.sbatch; bash -n scripts/slurm_qf_uflra_fuzz_gate.sbatch",
        "preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync --target primo --require-tool contrib/local/bin/z3 --require-tool contrib/local/bin/cvc5 --require-tool contrib/local/bin/dolmen",
        "submission": "sbatch --export=ALL,PRIMO_FUZZ_COUNT=750,PRIMO_FINITE_DOMAIN_FUZZ_COUNT=125,PRIMO_FUZZ_SEED_BASE=202608140,PRIMO_FUZZ_OUT_DIR=slurm-results/qf-uflra-fuzz-413179b-20260814 scripts/slurm_qf_uflra_fuzz_gate.sbatch",
        "summary": "python3 scripts/summarize_fuzz_results.py slurm-results/qf-uflra-fuzz-413179b-20260814"
      },
      "results": {
        "general": "Four complete summaries, 3000/3000 PASS against Z3, with zero timeout, disagreement, crash, parser/type error, or bug file.",
        "finite_domain": "Eight complete summaries, 1000/1000 PASS across QF_UF and QF_UFLRA against Z3 and cvc5, with zero timeout, disagreement, crash, parser/type error, activation failure, or bug file.",
        "model_validation": "Eight complete summaries covering 3500 generated QF_UFLRA checks: 2147 SAT models passed Dolmen and 1353 UNSAT cases required no model; zero validation failure or bug file.",
        "seeds": "General seeds 202608140 through 202608143; finite-domain seeds use the gate's documented +100000 and +200000 offsets."
      },
      "artifacts": "remote:<isolated-workspace>/slurm-results/qf-uflra-fuzz-413179b-20260814/ and remote:<isolated-workspace>/slurm_logs/primo-qf-uflra-fuzz-125758_*.{out,err}",
      "evidence_status": "slurm-complete-current",
      "outcome": "The exact current-main binary passed the QF_UFLRA differential and Dolmen model-validation gate, so the full benchmark refresh was allowed to proceed."
    },
    {
      "id": "2026-08-14-qf-uflra-cactus-refresh-413179b",
      "started_at": "2026-08-14",
      "recorded_at": "2026-08-14",
      "kind": "benchmark-refresh",
      "scope": "Current-main Primo rerun for the full 120-second QF_UFLRA cactus comparison, reusing unchanged reference-solver artifacts",
      "commit": "413179b",
      "baseline_commit": "9061611",
      "branch": "main",
      "environment": {
        "type": "SLURM",
        "binary": "Primo Release git 413179b with CaDiCaL 3.0.0",
        "corpus": "tmp/QF_UFLRA; 1284 files; 1645365818 bytes; same staged corpus whose C-locale relative-path/size manifest SHA-256 is 24264774139d25d59f71a4675768e05109d62cee33742fbfeb88619600949bbf",
        "workspace": "Existing isolated NO workspace synchronized through scripts/slurm_prepare_benchmark_workspace.py; exact revision and linkage checked immediately before submission.",
        "scheduler": "Job 125763, eight shards; all tasks completed with exit status zero in 3:35-6:40. References reuse jobs 125261-125264 from the 2026-08-12 campaign."
      },
      "commands": {
        "validation": "scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_model_mine.sbatch; bash -n scripts/slurm_qf_uflra_model_mine.sbatch",
        "preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync --target primo; verify 1284 staged SMT2 files",
        "primo": "scripts/slurm_qf_uflra_model_mine.sbatch tasks 0-7 with PRIMO_MINE_TIMEOUT=120, PRIMO_MINE_SHARDS=8, and build-slurm-rel/primo --quiet --stats --model-equality-mutation-scope=all",
        "summary": "python3 scripts/summarize_benchmark_shards.py --timeout 120 --run old=<9061611-primo-all> --run current=<413179b-primo-all> --baseline old --candidate current",
        "plot": "python3 scripts/plot_cactus.py --series 'Primo all=<413179b-artifact>/primo-all' --series 'Z3=<9061611-artifact>/z3' --series 'cvc5=<9061611-artifact>/cvc5' --series 'OpenSMT=<9061611-artifact>/opensmt' --series 'Yices=<9061611-artifact>/yices' --timeout 120 --drop-solved-by-all-under 1 --sort-by-solved --highlight-series 'Primo all' --title 'QF_UFLRA, 2026-08-14' --note 'Primo job 125763 at 413179b; reference jobs 125261-125264 at 9061611.' --out docs/_static/qf-uflra-cactus.svg"
      },
      "results": {
        "current_primo": "1272 solved (761 sat, 511 unsat), 12 timeout, 0 error/unsupported/wrong, solved-row time 832.627366 seconds, PAR2 3712.627366.",
        "families": "Solved FFT/BMC/induction/MathSAT 10/7/355/900; family PAR2 0.309430/1926.781648/1685.409697/100.126591.",
        "old_primo_comparison": "All 1284 paths common; the solved set is identical with 1272 common solves, zero recovery, zero loss, and zero decisive-answer disagreement. Solved-row time changed from 805.384529 to 832.627366 seconds and PAR2 from 3685.384529 to 3712.627366. MathSAT solved-row time changed from 70.673076 to 100.126591 seconds.",
        "local_followup": "A pinned-CPU local A/B did not reproduce the slowdown: summed medians over 40 MathSAT rows changed from 1.623787 to 1.632122 seconds (1.005x), and a seven-repeat subset of ten longer rows changed from 1.863590 to 1.879201 seconds (1.008x). Answers and search statistics matched; only two model-term diagnostic counters differed.",
        "reused_references": "Z3 1254 solved and PAR2 7817.388440; cvc5 1273 and 3606.152165; OpenSMT 1265 and 5934.827663; Yices 1276 and 1995.767448. Current Primo has 18/2/10/0 unique solves and the references have 0/3/3/4 unique solves respectively; zero decisive-answer disagreement.",
        "answer_validation": "All 1282 rows with declared SMT-LIB status matched it. The two rows without declared status timed out. The preceding exact-binary fuzz gate validated 2147 generated SAT models with Dolmen.",
        "plot_filter": "The plot omits the same 1124 instances every displayed solver completed in under one second and retains 160; retained solved counts are Primo 148, Z3 130, cvc5 149, OpenSMT 141, and Yices 152."
      },
      "artifacts": "remote:<isolated-workspace>/slurm-results/qfuflra-full-120s-413179b/primo-all/; local-only:/tmp/primo-qfuflra-120s-413179b/{primo-all,summary.json,all-summary.json}; reused references local-only:/tmp/primo-qfuflra-120s-9061611/{z3,cvc5,opensmt,yices}/",
      "evidence_status": "slurm-complete-current-with-reused-references",
      "outcome": "Refresh the cactus plot with current Primo. Coverage is exactly unchanged from 9061611. The 3.4 percent SLURM wall-time increase was not reproduced by the paired local A/B and correlates with lower task CPU utilization, so treat it as cluster contention rather than evidence of a solver regression."
    },
    {
      "id": "2026-08-14-qf-uflra-cactus-slowdown-local-ab",
      "started_at": "2026-08-14",
      "recorded_at": "2026-08-14",
      "kind": "local-performance-ablation",
      "scope": "Determine whether the apparent MathSAT slowdown between QF_UFLRA cactus campaigns reproduces outside SLURM",
      "commit": "413179b versus 9061611",
      "branch": "main",
      "environment": {
        "type": "local",
        "builds": "Separate clean Release builds with GCC 13.3.0 and the same repository-local CaDiCaL 3.0.0, ANTLR, CLI11, and GMP installation; binaries report git 9061611 and 413179b.",
        "execution": "One inherited CPU selected with sched_setaffinity; subprocess order alternated old/current and current/old; each run used a ten-second process timeout and --max-theory-conflicts 1000000.",
        "cluster_context": "SLURM sacct for old job 125259 reports 2244.057 CPU seconds over 2271 elapsed task-seconds (98.8 percent); refresh job 125763 reports 2174.331 over 2323 (93.6 percent)."
      },
      "commands": {
        "build_old": "git worktree add --detach <temp-worktree> 9061611; cmake -S <temp-worktree> -B <old-build> -DCMAKE_BUILD_TYPE=Release with repository-local dependencies; cmake --build <old-build> --target primo -j4",
        "build_current": "cmake -S /workspace -B <current-build> -DCMAKE_BUILD_TYPE=Release with the same repository-local dependencies and PRIMO_GIT_REVISION_OVERRIDE=413179b; cmake --build <current-build> --target primo -j4",
        "solver": "primo --quiet --stats --model-equality-mutation-scope=all --max-theory-conflicts 1000000 FILE",
        "sample": "Python subprocess runner over the 20 largest absolute MathSAT regressions in the SLURM CSV comparison plus 20 deterministic controls selected with seed 20260814; five alternating repetitions per binary and row. A second probe used the ten largest regressions among rows whose old SLURM time was at least 0.2 seconds, with seven repetitions."
      },
      "results": {
        "forty_rows": "Summed per-row medians 1.623787 seconds old versus 1.632122 current, ratio 1.005x; median per-row ratio 1.007x and geometric-mean ratio 1.007x. Two of 40 rows exceeded 1.05x, none was below 0.95x.",
        "top_twenty": "The 20 rows with the largest apparent SLURM regressions summed to 0.850851 seconds old versus 0.854677 current, ratio 1.004x.",
        "controls": "The 20 deterministic controls summed to 0.772935 seconds old versus 0.777444 current, ratio 1.006x.",
        "longer_ten": "Summed seven-run medians 1.863590 seconds old versus 1.879201 current, ratio 1.008x; individual ratios ranged from 0.992x to 1.017x.",
        "behavior": "All answers matched. All non-time search statistics matched. The only changed statistics were :no.interface.model-real-terms-before-interface-filter and :no.interface.model-real-terms-filtered, which are bookkeeping diagnostics added after the baseline."
      },
      "artifacts": "local-only:/tmp/primo-local-ab-413179b-vs-9061611.json and /tmp/primo-local-ab-mathsat40-413179b-vs-9061611.json; exact temporary build directories /tmp/primo-local-ab-build-{9061611,current}/",
      "evidence_status": "local-complete-current",
      "outcome": "The apparent 3.4 percent full-corpus and 41.7 percent MathSAT SLURM wall-time increases do not reproduce locally. Combined with the lower refresh-job CPU-to-elapsed ratio, the evidence favors cluster contention; there is no measured local solver regression beyond approximately one percent."
    },
    {
      "id": "2026-08-12-qf-uflra-joint-z3-yices-gap-profile-0b40649",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "profiling",
      "scope": "Rank QF_UFLRA rows where Primo is slower than both Z3 and Yices, then profile representative model-mutation paths",
      "commit": "0b40649",
      "benchmark_commit": "9061611",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "ranking": "Local analysis of the complete SLURM shard CSV copies from jobs 125259, 125260, 125261, and 125264; identical 1284-file corpus and 120-second cutoff.",
        "profiling": "Local RelWithDebInfo build with CMAKE_CXX_FLAGS=-pg, git 0b40649, CaDiCaL 3.0.0; gprof flat and call-graph reports.",
        "selection": "Require Primo, Z3, and Yices status ok; require Primo >= 2 seconds and >= 2x each reference. A second ranking uses the faster successful Primo all/care time per row under the same thresholds."
      },
      "commands": {
        "ranking": "python3 csv.DictReader over /tmp/primo-qfuflra-120s-9061611/{primo-all,primo-care,z3,yices}/shard-[0-9].csv with the recorded selection predicate",
        "build": "cmake -S . -B build-gprof-current -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS=-pg; cmake --build build-gprof-current -j2",
        "profile": "build-gprof-current/primo --quiet --stats --model-equality-mutation-scope={all,care} TARGET; gprof -b -p build-gprof-current/primo gmon.out; gprof -b build-gprof-current/primo gmon.out",
        "targets": "cpachecker-bmc.parport_false-unreach-call.i.cil.c.smt2 under all and care; cpachecker-induction.32_1_cilled_true-unreach-call_ok_nondet_linux-3.4-32_1-drivers--media--dvb--frontends--tda18271c2dd.ko-ldv_main0_sequence_infinite_withcheck_stateful.cil.out.c.smt2 under all; cpachecker-induction.m0_false-unreach-call_sound-oss-opl3-ko--111_1a--42f9f8d-1.c.smt2 under all"
      },
      "results": {
        "default_scope_candidates": "22 solved SAT rows met the joint-reference threshold: 21 CPAchecker induction and one CPAchecker BMC. Care was faster on 21 and slower on one.",
        "best_profile_candidates": "Four rows still met the threshold after taking the faster Primo scope per row: tda18271c2dd 9.069368 care versus Z3 2.139755 and Yices 1.955185; m0 opl3 9.568418 all versus 2.292364 and 0.255088; mt20xx 19.104990 care versus 5.499450 and 2.730922; mem2mem_testdev 15.650901 care versus 5.726376 and 0.202270.",
        "timeouts": "No Primo timeout was solved by both Z3 and Yices. The four Yices-only solves against Primo all were also Z3 timeouts.",
        "profiles": "gprof attributed 70.3 percent of sampled cumulative time on parport all, 71.3 percent on tda18271c2dd all, and 78.3 percent on m0 opl3 all to LraTableau::diversify_shared_model below lra_model_equal_partition. Leading flat work was SOI breakpoint introsort plus hash-set insertion/rehash in model-value grouping, with about 16.7M, 63.4M, and 27.7M introsort calls.",
        "scope_effect": "Care reduced parport from 5.735583 to 1.429197 seconds and tda18271c2dd from 20.298982 to 9.069368 in the SLURM artifacts. On m0 opl3 it regressed 9.568418 to 14.548173 seconds while SAT solve calls rose 6 to 13 and compatibility-projection terms rose 3182207 to 8398453."
      },
      "artifacts": "local-only:/tmp/primo-qfuflra-120s-9061611 solver shard CSV copies and /tmp/primo-profile-{parport-all,parport-care,tda-all,m0-all}/gmon.out",
      "evidence_status": "local-profile-current-over-slurm-current",
      "outcome": "Prioritize adaptive mixed-coordinator model-mutation scheduling over a blanket care-default promotion. The profiles identify the coordinator's repeated full/shared mutation work as the dominant cost without requiring an LRA implementation change."
    },
    {
      "id": "2026-08-11-qf-lra-full-division-after-flattening-repair",
      "started_at": "2026-08-11",
      "recorded_at": "2026-08-11",
      "kind": "benchmark",
      "scope": "Full SMT-LIB QF_LRA division after the Boolean-flattening repair, against the commit predating the whole Boolean DAG episode. Answers the question the repair was supposed to settle: are we back to the old behaviour on our LRA problems?",
      "commit": "ac07b56 (new) vs 0d73973 (pre)",
      "branch": "main",
      "evidence_status": "current",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm (direct, no ProxyJump needed)",
        "remote_dir": "/home/janotmik/primo-flatten-ac07b56",
        "notes": "Job 123932, array 0-79 = 2 arms x 40 shards, --cpus-per-task=3 --mem=12G, TIMEOUT=300. Both arms in one job on the same nodes, which is what makes the comparison free of cross-job contention. 160/160 tasks COMPLETED, 40/40 shard CSVs per arm verified (a shard killed by the wall clock vanishes silently). Corpus hard-linked from primo-eval-23bd391; an earlier submission (123852) failed every task because a SYMLINKED corpus resolves outside the repo and bench_qf_uf_full.py calls path.relative_to(repo)."
      },
      "command": {
        "job": "123932",
        "manifest": "benchmarks/qf-lra-full-division.txt (1753 files, carries :status)",
        "references": "NOT re-run -- unchanged since job 120784"
      },
      "result": {
        "pre_0d73973": {
          "solved": 1657,
          "wrong": 0,
          "par2": 79375
        },
        "new_ac07b56": {
          "solved": 1657,
          "wrong": 0,
          "par2": 79215
        },
        "net": "+0 (gained 2, lost 2)",
        "answer_disagreements": 0,
        "gained": [
          "disj_nightmare.t2.c_Iteration2_Loop_4-pieceTemplate (250.0s)",
          "constraint-330061 (211.0s)"
        ],
        "lost": [
          "fun4.t2.c_Iteration1_Lasso_4-pieceTemplate (pre 244.1s, at the 300s wall -- churn)",
          "eric.t2.c_Iteration1_Lasso_4-pieceTemplate (pre 112.9s -- NOT churn, see below)"
        ],
        "paired_timing": {
          "instances": 587,
          "criterion": "both solve, pre > 1s",
          "median_new_over_pre": 1.002,
          "faster_gt_30pct": 4,
          "slower_gt_30pct": 1,
          "total_seconds": "21,315 -> 21,035 (-1.3%)"
        },
        "conclusion": "Parity restored at division scale: identical solved count (1657), zero wrong answers, PAR2 marginally better (79,375 -> 79,215), paired median 1.002. Three of the four churn instances sit at the 300s wall. The fourth, eric.t2.c, does not and is a genuine unexplained loss unrelated to flattening -- calling it churn would have been wrong.",
        "eric_t2c_followup": {
          "bisect": "Bisected on the cluster to the same pair as the flattening regression: 0856d8f (skipped, does not build) / ba3aecc, with parent c1a8288 good at 96s. Predicate: sat within 240s.",
          "mechanism_is_not_flattening": "The formula is IDENTICAL across the commit -- 42,784 terms and 24,505 SAT variables on both sides -- differing only by 96 removed clauses (0.3%), which are duplicates eliminated by the per-assertion visited set added to assert_positive. The post-flattening pass fires normally (11,316 accepted, 0 threshold stops) and changing its threshold (0 / 2048 / 16384) makes no difference.",
          "knife_edge": "pre solves it ONLY in its default configuration (102s). Under --lra-pivoting-rule dantzig, --lra-pivoting-rule bland and --lra-least-violated-leaving it also fails at 200s, exactly as the new binary does under all four. So the old binary's success is not robust: three unrelated perturbations lose the instance too. A 0.3% clause change is simply another perturbation landing on the wrong side.",
          "conclusion": "Not a capability regression and not worth acting on. Re-adding duplicate clauses to recover one knife-edge file would trade a correct clausification improvement for noise, and the division is already neutral-to-positive (1657 = 1657, PAR2 79,215 < 79,375).",
          "false_start": "A first perturbation attempt used --cadical-option seed/restartint and looked like strong evidence of a systematic loss. It was invalid: --cadical-option seed is INERT under the external propagator (seeds 1/7/99 give identical decisions 8420 and conflicts 726), so three of five 'perturbations' perturbed nothing."
        }
      }
    },
    {
      "id": "2026-08-12-qf-uflra-dolmen-local-smoke-20c8db1-dirty",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "model-validation-smoke",
      "scope": "Initial local smoke of the durable QF_UFLRA model validator before committing the harness",
      "commit": "20c8db1 plus uncommitted validation-harness changes",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "type": "local",
        "generator": "the repository QF_UFLRA generator",
        "validator": "Dolmen 0.10 direct model checking",
        "count": 60,
        "timeouts": "10 seconds per Primo invocation and 10 seconds per Dolmen invocation"
      },
      "commands": {
        "gate": "scripts/validate_qfuf_models_with_dolmen.py over 60 generated mixed cases"
      },
      "results": {
        "models": "37 SAT models passed direct Dolmen validation; 23 cases were UNSAT.",
        "failures": "0 wrong answer, model error, crash, parser/type error, timeout, unsupported result, or fallback."
      },
      "artifacts": "local-only:/tmp/primo-qfuflra-model-gate-smoke.l5IaiZ",
      "evidence_status": "historical-preliminary",
      "outcome": "Useful smoke evidence for the harness only; the dirty source state is not merge evidence."
    },
    {
      "id": "2026-08-12-qf-uflra-dolmen-discovery-ecba89f",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "fuzz-and-model-validation",
      "scope": "First exact-commit direct-Dolmen generated and real-sample gates; this run discovered symbolic-delta concretization model errors",
      "commit": "ecba89f",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "type": "SLURM",
        "binary": "Release git ecba89f with CaDiCaL 3.0.0",
        "jobs": "125311 generated array and 125312 real-sample array; four shards each",
        "seed_base": 2026081210,
        "corpus": "3000 generated general QF_UFLRA cases, 1000 generated finite-domain comparisons, and the deterministic 20-file five-per-family QF_UFLRA sample",
        "timeouts": "5 seconds per differential solver invocation; 10 seconds each for generated-model Primo and Dolmen; 60 seconds for real-sample Primo and 30 seconds for real-sample Dolmen",
        "setup_note": "Dependency setup job 125309 was canceled after attempting a network download from a compute node. Dolmen was instead built on the login node with the committed installer before these jobs were submitted."
      },
      "commands": {
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch array 0-3 with PRIMO_FUZZ_COUNT=750 and PRIMO_FINITE_DOMAIN_FUZZ_COUNT=125",
        "real_sample": "scripts/slurm_qf_uflra_model_validation.sbatch array 0-3 with benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "validator": "Dolmen 0.10 --check-model=true -r with --require-dolmen-pass"
      },
      "results": {
        "answer_differential": "3000/3000 general and 1000/1000 finite-domain comparisons passed with zero bug files.",
        "generated_models": "3500 rows: 2117 SAT models passed direct Dolmen, 1380 were UNSAT, and 3 SAT models failed Dolmen because concrete delta=1 collapsed distinct symbolic shared Real values.",
        "real_sample": "20 rows: 8 SAT models passed direct Dolmen and 3 were UNSAT; four SAT models evaluated false in Dolmen and five MathSAT rows hit Dolmen strict-linear-syntax reports. The limited Z3 constant fallback did not establish full model validity.",
        "failures": "The three generated model errors and four real-sample false models are correctness blockers; answer differential remained clean."
      },
      "artifacts": "expired-remote:slurm-results/qf-uflra-dolmen-ecba89f and qf-uflra-real-models-ecba89f after later exact-workspace sync; saved generated witnesses local-only:/tmp/primo-model-bugs",
      "evidence_status": "rejected-correctness-discovery",
      "outcome": "Rejected as merge evidence. It led to commit 2b26aa6, which preserves the order of symbolic shared values when choosing concrete delta."
    },
    {
      "id": "2026-08-12-qf-uflra-dolmen-followup-2b26aa6",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "fuzz-and-model-validation",
      "scope": "Exact-commit rerun after the concrete-delta order repair; generated models passed and the real sample exposed stale Real application table-row shadowing",
      "commit": "2b26aa6",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "type": "SLURM",
        "binary": "Release git 2b26aa6 with CaDiCaL 3.0.0",
        "jobs": "125320 generated array and 125319 real-sample array; four shards each",
        "seed_base": 2026081310,
        "corpus": "Fresh 3000-case general generation, 1000 finite-domain comparisons, 3500 generated model rows, and the deterministic 20-file real sample",
        "timeouts": "5 seconds per differential solver invocation; 10 seconds each for generated-model Primo and Dolmen; 60 seconds for real-sample Primo and 30 seconds for real-sample Dolmen"
      },
      "commands": {
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch array 0-3",
        "real_sample": "scripts/slurm_qf_uflra_model_validation.sbatch array 0-3",
        "summary": "scripts/summarize_fuzz_results.py over each result root"
      },
      "results": {
        "answer_differential": "3000/3000 general and 1000/1000 finite-domain comparisons passed with zero bug files.",
        "generated_models": "3500 rows: 2081 SAT models passed direct Dolmen and 1419 were UNSAT; zero generated model errors or fallbacks.",
        "real_sample": "20 rows: 9 SAT models passed direct Dolmen and 3 were UNSAT. Three SAT models still evaluated false because a stale pre-rewrite Real application row shadowed the active purified row; five MathSAT rows needed Dolmen lenient parsing.",
        "repair_delta": "The previously failing generated witnesses all passed, and one of the four prior real false models was repaired."
      },
      "artifacts": "expired-remote:slurm-results/qf-uflra-dolmen-2b26aa6 and qf-uflra-real-models-2b26aa6 after later exact-workspace sync; saved real witnesses local-only:/tmp/primo-real-model-bugs-2b26aa6",
      "evidence_status": "rejected-correctness-discovery",
      "outcome": "Generated gate accepted the delta repair, but real model correctness remained blocked. The failures led to commit 4dca518."
    },
    {
      "id": "2026-08-12-qf-uflra-dolmen-merge-gate-4dca518",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "fuzz-and-model-validation",
      "scope": "Fresh exact-commit QF_UFLRA differential, finite-domain, generated-model, and real-corpus Dolmen gate after both model-composition repairs",
      "commit": "4dca518",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "type": "SLURM",
        "binary": "Release git 4dca518 with CaDiCaL 3.0.0",
        "jobs": "125327 generated array and 125328 real-sample array; all eight tasks completed with exit status zero",
        "seed_base": 2026081410,
        "corpus": "Fresh 3000-case general generation, 1000 finite-domain comparisons, 3500 generated model rows, and benchmarks/qf_uflra-smtlib-sample-5-per-family.txt",
        "timeouts": "5 seconds per differential solver invocation; 10 seconds each for generated-model Primo and Dolmen; 60 seconds for real-sample Primo and 30 seconds for real-sample Dolmen",
        "preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync verified git 4dca518, CaDiCaL, Z3, cvc5, and Dolmen immediately before submission."
      },
      "commands": {
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch array 0-3 with PRIMO_FUZZ_COUNT=750, PRIMO_FINITE_DOMAIN_FUZZ_COUNT=125, and PRIMO_FUZZ_SEED_BASE=2026081410",
        "real_sample": "scripts/slurm_qf_uflra_model_validation.sbatch array 0-3; Dolmen receives --strict=false for accepted compound-linear MathSAT syntax",
        "summary": "scripts/summarize_fuzz_results.py slurm-results/qf-uflra-dolmen-4dca518 and qf-uflra-real-models-4dca518"
      },
      "results": {
        "answer_differential": "3000/3000 general cases and 1000/1000 finite-domain cases passed; zero bug files.",
        "generated_models": "3500/3500 rows completed: 2137 SAT models passed direct Dolmen and 1363 cases were UNSAT. No fallback, model error, crash, timeout, parser/type error, unsupported result, or reference disagreement.",
        "real_sample": "20/20 rows completed: all 17 SAT models passed direct Dolmen and 3 cases were UNSAT. No fallback or model error.",
        "metadata": "Generated model metadata 8/8 complete, finite-domain metadata 8/8 complete, real-sample metadata 4/4 complete; observed counts equal expected counts."
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/qf-uflra-dolmen-4dca518 and qf-uflra-real-models-4dca518; summary-only local copy:/tmp/qf-uflra-real-models-4dca518",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as the current QF_UFLRA answer and model-correctness merge gate for commit 4dca518. It does not claim full generic DPLL(T^M) or replace separate performance/QF_LRA regression evaluation."
    },
    {
      "id": "2026-08-12-qf-lra-main-merge-stratified-ab-35ac160",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "benchmark",
      "scope": "Representative pure-QF_LRA default-profile regression A/B before merging the QF_UFLRA branch into main",
      "commit": "35ac160 candidate vs 626c7e5 main",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "type": "SLURM",
        "binary": "Isolated exact Release binaries with CaDiCaL 3.0.0",
        "job": "125335, array 0-15; eight shards per arm, all tasks completed with exit status zero",
        "corpus": "benchmarks/qf-lra-stratified-sample.txt; 237 files",
        "timeout": "60 seconds per file",
        "preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync verified each remote binary against its matching local worktree immediately before submission."
      },
      "commands": {
        "benchmark": "scripts/slurm_qf_lra_scrambled_compare.sbatch with main and candidate solver arms",
        "summary": "scripts/compare_solver_answers.py <result-root> --timeout 60 plus a shared non-time-statistic comparison"
      },
      "results": {
        "main": "202 solved (103 sat, 99 unsat), 35 timeouts, 0 errors, PAR2 4949.1",
        "candidate": "202 solved (103 sat, 99 unsat), 35 timeouts, 0 errors, PAR2 4930.6",
        "correctness": "Zero wrong answers, decisive-answer disagreements, nonstandard rows, or arm-only solves.",
        "statistics": "All 202 commonly solved rows had identical shared non-time statistics. The 219 observed counter differences were confined to 28 already-timeout rows and reflect where the 60-second wall cutoff interrupted deterministic search.",
        "timing": "Common-solved aggregate time changed from 749.135260 to 730.647705 seconds. For the 64 main rows taking at least one second, aggregate candidate/main was 0.9721, median ratio was 0.9960, and no candidate row was more than 4.9 percent slower."
      },
      "artifacts": "remote:<candidate-workspace>/results/qflra-main-vs-no-35ac160-sample; summary-only local copy:/tmp/qflra-main-vs-no-35ac160-sample",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as representative evidence that the merged branch preserves pure-QF_LRA search behavior and timing. The full-division comparison supplies the merge decision."
    },
    {
      "id": "2026-08-12-qf-uflra-dolmen-merge-gate-35ac160",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "fuzz-and-model-validation",
      "scope": "Fresh exact-commit QF_UFLRA differential, finite-domain, and generated-model gate after merging current main into the branch",
      "commit": "35ac160",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "type": "SLURM",
        "binary": "Release git 35ac160 with CaDiCaL 3.0.0",
        "job": "125351, array 0-3; all tasks completed with exit status zero",
        "seed_base": 2026081510,
        "corpus": "3000 generated general QF_UFLRA cases, 500 finite-domain QF_UF cases, 500 finite-domain QF_UFLRA cases, and 3500 generated model rows",
        "timeouts": "5 seconds per differential solver invocation; 10 seconds each for Primo model generation and Dolmen validation",
        "preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync verified git 35ac160, CaDiCaL, Z3, cvc5, and Dolmen immediately before submission."
      },
      "commands": {
        "gate": "scripts/slurm_qf_uflra_fuzz_gate.sbatch array 0-3 with PRIMO_FUZZ_COUNT=750, PRIMO_FINITE_DOMAIN_FUZZ_COUNT=125, and PRIMO_FUZZ_SEED_BASE=2026081510",
        "summary": "scripts/summarize_fuzz_results.py slurm-results/qf-uflra-dolmen-35ac160"
      },
      "results": {
        "answer_differential": "3000/3000 general and 1000/1000 finite-domain comparisons passed with zero bug files.",
        "models": "3500/3500 model rows completed: 2098 SAT models passed direct Dolmen validation and 1402 rows were UNSAT.",
        "metadata": "All 20 summaries and all 16 metadata records were complete; observed counts equaled expected counts.",
        "failures": "Zero wrong answer, model error, crash, timeout, unsupported result, parser/type error, reference disagreement, fallback, or saved bug."
      },
      "artifacts": "remote:<candidate-workspace>/slurm-results/qf-uflra-dolmen-35ac160",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as the exact merged-commit QF_UFLRA answer and generated-model correctness gate. The exact 4dca518 real-corpus Dolmen gate remains applicable because the intervening merge changed only comments and documentation in solver-owned files."
    },
    {
      "id": "2026-08-12-qf-lra-full-main-merge-ab-35ac160",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "benchmark",
      "scope": "Full pure-QF_LRA default-profile regression A/B before merging the QF_UFLRA branch into main",
      "commit": "35ac160 candidate vs 626c7e5 main",
      "branch": "qf-uf-structural-preprocessing",
      "environment": {
        "type": "SLURM",
        "binary": "Isolated exact Release binaries with CaDiCaL 3.0.0",
        "job": "125355, array 0-79; 40 shards per arm, all 80 tasks completed with exit status zero",
        "corpus": "benchmarks/qf-lra-full-division.txt; 1753 files across 17 families with declared statuses",
        "timeout": "300 seconds per file",
        "durability": "Each shard wrote one flushed JSONL row per completed instance before producing its final CSV.",
        "preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync verified both exact binaries immediately before submission."
      },
      "commands": {
        "benchmark": "scripts/slurm_qf_lra_scrambled_compare.sbatch with PRIMO_COMPARE_SHARDS=40 and paired main/candidate solver arms",
        "summary": "scripts/compare_solver_answers.py <result-root> --timeout 300 and scripts/summarize_benchmark_shards.py --timeout 300"
      },
      "results": {
        "main": "1658 solved (996 sat, 662 unsat), 95 timeouts, 0 errors, 0 wrong answers, PAR2 78982.973210",
        "candidate": "1657 solved (995 sat, 662 unsat), 96 timeouts, 0 errors, 0 wrong answers, PAR2 79084.779394",
        "correctness": "Zero decisive-answer disagreements, nonstandard rows, errors, unsupported results, or wrong answers.",
        "coverage_delta": "One main-only solve: LassoRanker/Ultimate/GcdNew.bpl_Iteration1_Lasso_7-phaseTemplate.smt2 completed on main in 297.210567 seconds and reached the candidate's 300.122395-second timeout. There were no candidate-only solves.",
        "statistics": "All 1657 commonly solved rows had identical shared non-time statistics.",
        "timing": "Common-solved aggregate time improved from 21685.762643 to 21484.779394 seconds (candidate/main 0.9907). Across the 590 rows where main took at least one second, the median ratio was 0.9965 and no row was 30 percent faster or slower."
      },
      "artifacts": "remote:<candidate-workspace>/results/qflra-main-vs-no-35ac160-full-300s; summary-only local copy:/tmp/qflra-main-vs-no-35ac160-full-300s",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted for merge. The sole solved-count loss is a 297-second result crossing a 300-second wall cutoff; exact search statistics on every commonly solved row and the aggregate timing comparison show no pure-QF_LRA behavior or material performance regression."
    },
    {
      "id": "2026-08-12-preprocessing-option-rename-68313a8",
      "started_at": "2026-08-12",
      "recorded_at": "2026-08-12",
      "kind": "fuzz-and-regression",
      "scope": "Exact-commit differential fuzzing and default-behavior parity after replacing QF_UF-specific preprocessing option names with theory-neutral canonical names and retaining deprecated aliases",
      "commit": "68313a8",
      "branch": "preprocessing-option-names",
      "environment": {
        "type": "local",
        "binary": "Debug git 68313a8 with CaDiCaL 3.0.0; parent comparison used Release git ca77b49 with the same CaDiCaL revision",
        "generator": "scripts/qf_uflra_smoke_fuzz.py, mixed shape",
        "reference": "repository-local pinned z3 on PATH via contrib/local/bin",
        "seed": 20260812,
        "corpus": "1000 fresh generated QF_UFLRA cases plus 14 tracked QF_LRA real seeds and 6 tracked QF_UF smoke instances",
        "timeout": "5 seconds per generated solver invocation"
      },
      "commands": {
        "fuzz": "PATH=$PWD/contrib/local/bin:$PATH python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--auto-preprocess-selector=structural --ref z3 --count 1000 --seed 20260812 --timeout 5 --shape mixed --out fuzz-results/preprocessing-option-names-68313a8",
        "parity": "Run /tmp/primo-preprocessing-name-parent/build/primo and ./build/primo with --quiet --stats over benchmarks/seeds/qf_lra_real/*.smt2 and benchmarks/smoke/qf_uf/*.smt2, remove :time.* rows, and compare exit status, answer, and remaining statistics",
        "verification": "make lint; make check; make docs; make asan-test; make tidy; make include-cleaner; git diff --check"
      },
      "results": {
        "fuzz": "1000/1000 PASS: 618 SAT and 382 UNSAT in exact agreement with Z3",
        "failures": "Zero wrong answer, crash, timeout, unsupported result, parser/type error, or reference disagreement",
        "default_parity": "20/20 QF_LRA and QF_UF files had identical exit status, answer, and all non-time statistics before and after the rename",
        "verification": "All unit, Python, CMake CLI, documentation, ASan, lint, and whole-tree clang-tidy checks passed. The advisory include-cleaner scan retained the known 138-warning baseline and added no warnings in changed translation units."
      },
      "artifacts": "local-only:fuzz-results/preprocessing-option-names-68313a8/summary.csv",
      "evidence_status": "local-complete-current",
      "outcome": "Accepted. The rename preserves default solver behavior while exposing --preprocessing-mode and --auto-preprocess-selector as canonical names; the former QF_UF-prefixed spellings remain warning-producing deprecated aliases."
    },
    {
      "id": "2026-08-17-lra-atom-canonicalization-local-smoke",
      "started_at": "2026-08-17",
      "recorded_at": "2026-08-17",
      "kind": "fuzz-smoke",
      "scope": "Focused differential smoke test for primitive-integer LRA atom canonicalization, sign reversal, rational scales, equality cancellation, and shared-Real EUF use",
      "commit": "816482e plus uncommitted lra-atom-canonicalization working tree",
      "branch": "lra-atom-canonicalization",
      "environment": {
        "type": "local",
        "binary": "Debug Primo with CaDiCaL 3.0.0",
        "generator": "scripts/qf_uflra_smoke_fuzz.py --shape scaled-arithmetic",
        "reference": "contrib/local/bin/z3",
        "seed": 2026081701,
        "count": 100,
        "timeout": "5 seconds per solver invocation"
      },
      "commands": {
        "rejected_generator_check": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref z3 --count 100 --seed 2026081701 --timeout 5 --shape scaled-arithmetic --out fuzz-results/qf_uflra-scaled-arithmetic-local-2026081701",
        "accepted_smoke": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 100 --seed 2026081701 --timeout 5 --shape scaled-arithmetic --out fuzz-results/qf_uflra-scaled-arithmetic-local-2026081701-fixed"
      },
      "results": {
        "accepted_smoke": "100/100 PASS with exact Primo/Z3 agreement",
        "failures": "Zero wrong answers, crashes, timeouts, unsupported inputs, unknown outputs, or reference disagreements in the corrected run",
        "rejected_generator_check": "Rejected before use as evidence: 70 malformed negative-numeral templates were unsupported and the unqualified local z3 command was missing. The templates were corrected to SMT-LIB unary minus and the repository-local reference path was used."
      },
      "artifacts": "local-only:fuzz-results/qf_uflra-scaled-arithmetic-local-2026081701-fixed/summary.csv; rejected local-only:fuzz-results/qf_uflra-scaled-arithmetic-local-2026081701/summary.csv",
      "evidence_status": "local-smoke-current",
      "outcome": "Accepted as a focused smoke gate only. A fresh exact-commit SLURM merge gate remains required before completion."
    },
    {
      "id": "2026-08-17-lra-atom-canonicalization-slurm-fuzz-b08a5a5",
      "started_at": "2026-08-17",
      "recorded_at": "2026-08-17",
      "kind": "fuzz-and-model-validation",
      "scope": "Fresh exact-commit QF_UFLRA differential, finite-domain, and Dolmen model gate for mandatory early primitive-integer arithmetic-atom canonicalization",
      "commit": "b08a5a5 (canonicalization ff1fc3d plus directed Real postsolve repair)",
      "branch": "lra-atom-canonicalization",
      "environment": {
        "type": "SLURM",
        "binary": "Release git b08a5a5 with CaDiCaL 3.0.0",
        "jobs": "126423 accepted array 0-3; 126395 rejected predecessor array 0-3",
        "seed_base": 2026081710,
        "corpus": "3000 generated general QF_UFLRA cases, 500 finite-domain QF_UF cases, 500 finite-domain QF_UFLRA cases, and 3500 model-validation rows",
        "timeouts": "5 seconds per differential solver invocation; 10 seconds each for Primo model generation and Dolmen validation",
        "preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync verified git b08a5a5, CaDiCaL, Z3, and cvc5 immediately before submission; the batch also required Dolmen on PATH."
      },
      "commands": {
        "gate": "scripts/slurm_qf_uflra_fuzz_gate.sbatch array 0-3 with PRIMO_FUZZ_COUNT=750, PRIMO_FINITE_DOMAIN_FUZZ_COUNT=125, and PRIMO_FUZZ_SEED_BASE=2026081710",
        "summary": "scripts/summarize_fuzz_results.py slurm-results/qf-uflra-atom-canonicalization-b08a5a5",
        "regression_diagnosis": "Replayed the saved finite-domain case locally with get-model, compared exact parent/candidate behavior, and sampled the blocked Debug process under gdb; the stack was in apply_real_preprocessing_model_assignments repeatedly overwriting Real values.",
        "verification": "make check; make lint; make docs; make asan-test; git diff --check; whole-tree make tidy and make include-cleaner during the implementation milestone; focused clang-tidy and misc-include-cleaner after the postsolve repair"
      },
      "results": {
        "answer_differential": "3000/3000 general and 1000/1000 finite-domain comparisons passed with zero bug files.",
        "models": "3500/3500 rows completed: all 1989 SAT models passed direct Dolmen validation and 1511 rows were UNSAT.",
        "metadata": "All 20 summaries and all 16 metadata records were complete; observed counts equaled expected counts.",
        "failures": "Zero wrong answer, model error, crash, timeout, unsupported result, parser/type error, reference disagreement, fallback, or saved bug in the accepted run.",
        "rejected_predecessor": "Job 126395 on git 9bbd2aa passed all 4000 differential cases but failed its model gate: 72 finite-domain rows timed out because canonical equality orientation exposed an undirected Real-postsolve oscillation. The minimized regression led to b08a5a5; the same rows passed there.",
        "verification": "All unit, Python, CLI, documentation, ASan, lint, formatting, and changed-file static-analysis checks passed. Whole-tree clang-tidy reported only the established advisory baseline; include-cleaner added no warning in the canonicalizer or model-postsolve translation units."
      },
      "artifacts": "remote:<prepared-workspace>/slurm-results/qf-uflra-atom-canonicalization-b08a5a5; rejected predecessor:slurm-results/qf-uflra-atom-canonicalization-9bbd2aa",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as the exact answer and generated-model correctness gate. The rejected predecessor is retained as discovery evidence rather than counted as a passing gate."
    },
    {
      "id": "2026-08-17-lra-atom-canonicalization-qflra-qfuflra-ab-b08a5a5",
      "started_at": "2026-08-17",
      "recorded_at": "2026-08-17",
      "kind": "benchmark",
      "scope": "Exact parent/candidate regression and mechanism comparison for mandatory early arithmetic-atom canonicalization",
      "commit": "b08a5a5 candidate vs 816482e parent",
      "branch": "lra-atom-canonicalization",
      "environment": {
        "type": "SLURM",
        "binary": "Isolated exact Release binaries with CaDiCaL 3.0.0 and --stats",
        "jobs": "126459 QF_LRA and 126460 QF_UFLRA; eight shards per arm, all 32 tasks completed with exit status zero",
        "superseded_jobs": "126427 and 126428 were cancelled after about one minute because their solver arms omitted --stats; they are not performance evidence.",
        "corpora": "benchmarks/qf-lra-stratified-sample.txt (237 files) and benchmarks/qf_uflra-smtlib-broader-100.txt (100 files)",
        "timeout": "60 seconds per file",
        "preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync verified both exact binaries and CaDiCaL immediately before submission; shard JSONL journals were flushed per row."
      },
      "commands": {
        "benchmark": "scripts/slurm_qf_lra_scrambled_compare.sbatch with candidate and parent solver arms, PRIMO_COMPARE_SHARDS=8, PRIMO_COMPARE_TIMEOUT=60, and the corpus-specific root/manifest",
        "summary": "scripts/compare_solver_answers.py <result-root> --timeout 60 plus per-family, common-solved timing, shared-statistic, and canonicalization-counter aggregation from shard CSVs"
      },
      "results": {
        "qf_lra_parent": "202 solved (103 sat, 99 unsat), 35 timeouts, 0 errors, 0 wrong, PAR2 4922.3.",
        "qf_lra_candidate": "201 solved (102 sat, 99 unsat), 36 timeouts, 0 errors, 0 wrong, PAR2 5031.9.",
        "qf_lra_timing": "199 common solves: aggregate 661.205574 parent vs 648.860576 candidate seconds. On 61 parent runs of at least one second, median candidate/parent was 1.0143 and mean was 1.0340.",
        "qf_lra_coverage": "Two candidate-only and three parent-only solves. Family solved counts matched except latendresse (12 parent vs 11 candidate); LassoRanker stayed 11/15 because each arm had one unique solve.",
        "qf_lra_mechanism": "Candidate totals: 1,385,385 atom visits, 423,970 rewrites, 32,965 aliases merged, 967 constant folds, 2,043 duplicate assertions removed, 31,267 catch-up rewrites, and 904,657 created hash-cons terms.",
        "qf_uflra_parent": "92 solved (84 sat, 8 unsat), 8 timeouts, 0 errors, 0 wrong, PAR2 1064.9.",
        "qf_uflra_candidate": "92 solved (84 sat, 8 unsat), 8 timeouts, 0 errors, 0 wrong, PAR2 1064.5.",
        "qf_uflra_timing": "All 92 solves were common: aggregate 104.934867 parent vs 104.528442 candidate seconds.",
        "qf_uflra_families": "FFT 10/10, cpachecker-bmc-svcomp14 7/15, cpachecker-induction-svcomp14 50/50, and mathsat 25/25 for both arms.",
        "qf_uflra_mechanism": "Candidate totals: 16,815,025 atom visits, 30,541 rewrites, 7 aliases merged, 2 constant folds, 3 catch-up rewrites, 24,052 post-purification rewrites, and 912,148 created hash-cons terms.",
        "correctness": "Zero decisive-answer disagreements, nonstandard rows, unsupported results, errors, or wrong answers in either corpus."
      },
      "artifacts": "remote:<prepared-workspace>/results/lra-atom-canon-qflra-stats-b08a5a5-vs-816482e and results/lra-atom-canon-qfuflra-stats-b08a5a5-vs-816482e",
      "evidence_status": "slurm-complete-current",
      "outcome": "Accepted as regression evidence with an explicit search-trajectory caveat, not as a uniform speedup. Mixed coverage and PAR2 were preserved. QF_LRA common-solved aggregate time improved, but the 60-second solve set lost one net instance and requires the recorded cutoff follow-up."
    },
    {
      "id": "2026-08-17-lra-atom-canonicalization-cutoff-followup-b08a5a5",
      "started_at": "2026-08-17",
      "recorded_at": "2026-08-17",
      "kind": "benchmark",
      "scope": "Three-repetition, longer-timeout follow-up for all five QF_LRA solve-set changes in the 60-second canonicalization A/B",
      "commit": "b08a5a5 candidate vs 816482e parent",
      "branch": "lra-atom-canonicalization",
      "environment": {
        "type": "SLURM",
        "binary": "The same exact Release binaries and CaDiCaL 3.0.0 as the main A/B",
        "job": "126501, array 0-29; five one-file shards for each of three candidate and three parent arms; all tasks completed with exit status zero",
        "corpus": "benchmarks/qf-lra-atom-canonicalization-cutoff-followup.txt; five files",
        "timeout": "180 seconds per file"
      },
      "commands": {
        "benchmark": "scripts/slurm_qf_lra_scrambled_compare.sbatch with six solver arms and PRIMO_COMPARE_SHARDS=5",
        "summary": "scripts/compare_solver_answers.py <result-root> --timeout 180 plus per-file shard CSV comparison"
      },
      "results": {
        "coverage": "Each binary solved 9/15 repeated rows (three of five files in every repetition), with zero errors, wrong answers, or disagreements.",
        "candidate_gains": "brp_withassume...Iteration8 solved in 47.85-48.57 seconds while parent timed out three times; ecoli...-90000 solved in 13.33-13.79 seconds while parent timed out three times.",
        "parent_gains": "ecoli...-70000 solved in 13.18-13.39 seconds and ecoli...-80000 in 17.19-17.54 seconds while candidate timed out three times on both.",
        "common": "sumit...Iteration1 solved in 32.78-35.76 seconds on parent and 66.74-67.67 seconds on candidate.",
        "par2": "Across the 15 repeated rows: parent 2356.3, candidate 2546.8. The trajectories and pivot/conflict counts were stable across repetitions."
      },
      "artifacts": "remote:<prepared-workspace>/results/lra-atom-canon-cutoff-followup-b08a5a5-vs-816482e",
      "evidence_status": "slurm-complete-current",
      "outcome": "The 60-second changes are deterministic search reshaping rather than timing noise. Early canonicalization remains an enabling compilation invariant, but this evidence explicitly rules out a claim of uniform QF_LRA performance improvement."
    },
    {
      "id": "2026-08-17-lra-atom-canonicalization-campaigns-b08a5a5",
      "started_at": "2026-08-17",
      "recorded_at": "2026-08-17",
      "kind": "fuzz-and-mutation-campaign",
      "scope": "Fresh exact-commit pure-QF_LRA generated/model campaign plus QF_LRA and QF_UFLRA seed mutation for mandatory arithmetic-atom canonicalization",
      "commit": "b08a5a5",
      "branch": "lra-atom-canonicalization",
      "environment": {
        "type": "SLURM",
        "binary": "Release git b08a5a5 with CaDiCaL 3.0.0",
        "jobs": "126550 QF_LRA generated/model array 0-5; 126557 QF_LRA real-seed mutation array 0-2; 126534 mixed QF_UFLRA typefuzz array 0",
        "rejected_job": "126533 array 0-8: generated shards were superseded by the longer model-timeout rerun, and mutation tasks 6-8 were cancelled after the generated family-complete seed set selected known-unsolved tropical-matrix inputs",
        "seeds": "Generated base 2026081720; QF_LRA mutation used all 14 tracked benchmarks/seeds/qf_lra_real files; mixed mutation prechecked 11 tracked QF_UFLRA seeds",
        "timeouts": "10 seconds for generated answer comparison and 60 seconds for model-producing runs in job 126550",
        "preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync verified the detached b08a5a5 workspace and CaDiCaL; the batch preflight also verified FuzzSMT, the editable YinYang environment, Z3, Yices, and the intended Primo revision."
      },
      "commands": {
        "generated": "scripts/slurm_qf_lra_model_fuzz_gate.sbatch array 0-5 with 500 cases per shard, PRIMO_FUZZ_SEED_BASE=2026081720, PRIMO_FUZZ_TIMEOUT=10, PRIMO_MODEL_TIMEOUT=60, and mutation tasks disabled",
        "qf_lra_mutation": "scripts/slurm_qf_lra_model_fuzz_gate.sbatch array 0-2 with generated tasks disabled, OpFuzz and two typefuzz shards enabled, and both mutation seed roots set to benchmarks/seeds/qf_lra_real",
        "mixed_mutation": "scripts/yinyang_fuzz.sh typefuzz over the prechecked benchmarks/seeds/qf_uflra corpus with 2000 mutations per selected seed and Z3 model validation",
        "summary": "scripts/summarize_fuzz_results.py fuzz-results/lra-atom-canon-qflra-model60-b08a5a5 plus sacct, flushed YinYang log summaries, and bug-directory classification"
      },
      "results": {
        "qf_lra_generated": "3000 cases: 2990 PASS and 10 solver TIMEOUT, with zero wrong answers, crashes, unsupported inputs, parser/type errors, or reference disagreements. The ten saved files are classified timeout artifacts.",
        "qf_lra_models": "3000 rows: 2609 valid models, 386 not-SAT rows, and five solver timeouts; 2039 models used Z3 fallback validation and 570 used direct Dolmen validation. There were zero invalid models and zero model bug files.",
        "qf_lra_mutation": "All three tasks completed: OpFuzz generated 2800 mutants and the two typefuzz shards generated 1400 each, for 5600 successful mutations and 16,551 solver calls. No bug files or triggers were produced.",
        "mixed_mutation": "The typefuzz task completed 6000 successful mutations and 43,902 solver calls with no bug file or trigger.",
        "rejected_setup": "Job 126533 generated 3000 answer rows with 2986 PASS and 14 timeout and found no wrong answer or invalid model, but its mutation seed construction was rejected because it included known-unsolved benchmark families. It is not counted as the accepted mutation gate."
      },
      "artifacts": "remote:<prepared-workspace>/fuzz-results/lra-atom-canon-qflra-model60-b08a5a5; fuzz-results/lra-atom-canon-qflra-mutation-real-b08a5a5; fuzz-results/lra-atom-canon-qfuflra-mutation-b08a5a5; rejected:fuzz-results/lra-atom-canon-qflra-b08a5a5",
      "evidence_status": "slurm-complete-current-with-classified-timeouts",
      "outcome": "Accepted as the required fresh QF_LRA and mixed mutation campaign. Timeout-only generated rows are recorded separately and do not block correctness; the campaign makes no completeness or uniform-performance claim."
    },
    {
      "id": "2026-08-17-qf-lra-boolean-atom-model-fix",
      "started_at": "2026-08-17",
      "recorded_at": "2026-08-17",
      "kind": "bugfix-and-fuzz",
      "scope": "Fix and verify a QF_LRA model-printing defect (build_qf_lra_model dropping non-arithmetic assigned_atoms) found via delta-debugging while hand-testing shapes for a new --monotone-elimination fuzzer, plus a merge-gate campaign for the new generator that fills the coverage gap that let it through.",
      "commit": "3994604",
      "environment": {
        "type": "local",
        "binary": "build/primo (Release, CaDiCaL 3.0.0), commit 3994604",
        "notes": "Root cause confirmed with temporary runtime instrumentation (fprintf at the assigned_atoms extraction point in solve_qf_lra_impl), reverted before committing -- not a static-analysis guess."
      },
      "commands": {
        "minimize": "contrib/install_ddsmt.py; scripts/minimize_smt2.py --input <repro>.smt2 --predicate <wrong-model-checker>.py --output <minimized>.smt2 --ddsmt ddsmt",
        "merge_gate_off": "PATH=/workspace/contrib/local/bin:/home/user/.elan/bin:/home/user/.local/bin:/home/user/.cargo/bin:/home/user/.npm-global/bin:/home/user/.nvm/versions/node/default/bin:/home/mikolas/gap/gap-4.15.1:/home/mikolas/.elan/bin:/home/mikolas/.local/bin:/home/mikolas/bin/:/home/mikolas/.opam/default/bin:/home/mikolas/.opam/default/bin:/home/mikolas/.elan/bin:/home/mikolas/.cargo/bin:/home/mikolas/.local/bin:/home/mikolas/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin python3 scripts/qf_lra_boolean_arithmetic_fuzz.py --solver ./build/primo --z3 z3 --dolmen dolmen --count 1400 --seed 2026081702 --timeout 5 --out /tmp/qflra-boolarith-merge-off",
        "merge_gate_on": "PATH=/workspace/contrib/local/bin:/home/user/.elan/bin:/home/user/.local/bin:/home/user/.cargo/bin:/home/user/.npm-global/bin:/home/user/.nvm/versions/node/default/bin:/home/mikolas/gap/gap-4.15.1:/home/mikolas/.elan/bin:/home/mikolas/.local/bin:/home/mikolas/bin/:/home/mikolas/.opam/default/bin:/home/mikolas/.opam/default/bin:/home/mikolas/.elan/bin:/home/mikolas/.cargo/bin:/home/mikolas/.local/bin:/home/mikolas/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin python3 scripts/qf_lra_boolean_arithmetic_fuzz.py --solver ./build/primo --solver-arg=--monotone-elimination --z3 z3 --dolmen dolmen --count 1400 --seed 2026081702 --timeout 5 --out /tmp/qflra-boolarith-merge-on"
      },
      "summary": {
        "bug": "build_qf_lra_model (check_sat.cpp) only used assigned_atoms to pick a concrete delta rational; non-arithmetic (plain Boolean) entries never reached the printed model. Minimal repro: (declare-fun v () Real)(declare-const x Bool)(declare-fun q () Bool)(assert (or x q)) printed x=false,q=false, violating the assertion, despite the SAT search correctly deciding x=true,q=true internally (confirmed via instrumentation). Fixed by folding assigned_atoms non-arithmetic entries into build_composed_uf_lra_model, mirroring the mixed QF_UFLRA path which already folds in euf_assignments.",
        "why_fuzzing_missed_it": "fuzz_external.py compares only the sat/unsat verdict, never requesting get-model. The one model-checking gate (slurm_qf_lra_model_fuzz_gate.sbatch, dolmen-based; see docs/fuzz-coverage-qf-lra.md job 119949/119950, 6000 cases 0 invalid models) uses FuzzSMT/opfuzz/typefuzz, whose predicate/UF-arity flags are documented to apply only to QF_UF* logics and are silently ignored for QF_LRA -- so it never generated a free Boolean atom mixed with arithmetic. The committed mutation seed corpus (benchmarks/seeds/qf_lra/) also declares zero Boolean symbols. Even the closest existing unit test (monotone_elimination_rejects_atom_shared_across_polarities) asserted only the sat verdict, never the model.",
        "merge_gate_off_result": "1400/1400 PASS -- 0 wrong answers, 0 reference disagreements vs z3, 0 dolmen model errors, seed 2026081702, --monotone-elimination not passed.",
        "merge_gate_on_result": "1400/1400 PASS -- 0 wrong answers, 0 reference disagreements vs z3, 0 dolmen model errors, 0 activation-missing (candidates/atoms-folded counters nonzero on every eligible shape), seed 2026081702, --monotone-elimination passed as --solver-arg.",
        "regression_tests": "tests/unit/qf_lra_solver_tests.cpp: strengthened monotone_elimination_rejects_atom_shared_across_polarities to request and check the model; added prints_boolean_atoms_decided_by_search_in_qf_lra_model for the baseline (no --monotone-elimination) case. Both confirmed to fail against the pre-fix binary (assertion abort) and pass against the fix."
      },
      "verification": "make lint; ctest --test-dir build (14/14); clang-tidy -p build src/smt/check_sat.cpp (0 warnings); make docs; code-review skill self-review (no findings); python3 -m unittest discover -s tests/python (all pass, including 7 new tests).",
      "artifacts": "local-only:/tmp/qflra-boolarith-merge-off/summary.csv, local-only:/tmp/qflra-boolarith-merge-on/summary.csv",
      "evidence_status": "local-complete-current",
      "docs": "docs/arithmetic.md (Model construction for Boolean atoms in QF_LRA), docs/fuzz-coverage-qf-lra.md (A free-Boolean-mixed-with-arithmetic blind spot)",
      "followups": "Campaign-tier (>=3000 case) promotion and a Slurm run of scripts/qf_lra_boolean_arithmetic_fuzz.py are natural next steps but out of scope for this entry. Repointing slurm_qf_lra_model_fuzz_gate.sbatch seeds at a committed free-Boolean corpus is explicitly deferred (see docs/fuzz-coverage-qf-lra.md) as a separate, larger-blast-radius change.",
      "outcome": "Accepted. Fix lands with regression tests, doc sync, and a new durable generator that both verifies the fix and closes the QF_LRA free-Boolean coverage gap that let the bug through."
    },
    {
      "id": "2026-08-17-main-merge-model-canonicalization-5ce7488",
      "started_at": "2026-08-17",
      "recorded_at": "2026-08-17",
      "kind": "merge-fuzz-gate",
      "scope": "Fresh exact-commit compatibility gate after merging origin/main's QF_LRA Boolean-model reconstruction fix and fuzzing support into the LRA atom canonicalization branch",
      "commit": "5ce7488",
      "branch": "lra-atom-canonicalization",
      "environment": {
        "type": "local",
        "binary": "Debug git 5ce7488 with CaDiCaL 3.0.0",
        "references": "repository-local Z3 for answer comparison; Dolmen with the generator's Z3 fallback for QF_LRA model validation",
        "timeouts": "5 seconds per solver invocation",
        "notes": "The merge also corrected scripts/qf_lra_boolean_arithmetic_fuzz.py from mode 100644 to 100755 after make check exposed EXE001. This gate checks the combined tree; the larger exact-candidate SLURM campaigns remain recorded separately."
      },
      "commands": {
        "mixed": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 1000 --seed 2026081711 --timeout 5 --shape mixed --out /tmp/primo-merge-5ce7488-qfuflra-20260817",
        "qf_lra_models": "python3 scripts/qf_lra_boolean_arithmetic_fuzz.py --solver ./build/primo --z3 contrib/local/bin/z3 --dolmen /home/user/.opam/default/bin/dolmen --count 1000 --seed 2026081712 --timeout 5 --out /tmp/primo-merge-5ce7488-qflra-bool-20260817",
        "verification": "make check; make docs; make asan-test; clang-tidy -p build src/smt/check_sat.cpp --quiet; clang-tidy -p build src/smt/check_sat.cpp --checks=-*,misc-include-cleaner --quiet; git diff --check"
      },
      "results": {
        "mixed": "1000/1000 PASS against Z3: 589 SAT and 411 UNSAT; zero disagreement, crash, timeout, unsupported result, or parser/type error.",
        "qf_lra_models": "1000/1000 PASS: every constructed-SAT case agreed with Z3 and its emitted model validated; all seven generator shapes were covered, with zero model error, crash, timeout, fallback failure, or wrong answer.",
        "verification": "All 14 CTest targets, 46 Python tests, documentation, ASan tests, lint, focused clang-tidy, and include-cleaner passed."
      },
      "artifacts": "local-only:/tmp/primo-merge-5ce7488-qfuflra-20260817/summary.csv; local-only:/tmp/primo-merge-5ce7488-qflra-bool-20260817/summary.csv",
      "evidence_status": "local-complete-current",
      "outcome": "Accepted as the post-merge compatibility gate. No interaction bug was found between arithmetic canonicalization, directed Real postsolve reconstruction, and main's SAT-decided Boolean model assignments."
    },
    {
      "id": "2026-08-17-arithmetic-canonicalization-default-off-979d911",
      "started_at": "2026-08-17",
      "recorded_at": "2026-08-17",
      "kind": "default-policy-fuzz-gate",
      "scope": "Fresh exact-commit off/on differential and model-validation gate after placing arithmetic atom canonicalization behind a default-off option",
      "commit": "979d911",
      "branch": "lra-atom-canonicalization",
      "environment": {
        "type": "local",
        "binary": "Debug git 979d911 with CaDiCaL 3.0.0",
        "references": "repository-local Z3 for answer comparison; Dolmen for QF_LRA model validation",
        "timeouts": "5 seconds per solver invocation",
        "seeds": "2026081713 mixed default-off; 2026081714 mixed option-on; 2026081715 QF_LRA model default-off; 2026081716 QF_LRA model option-on"
      },
      "commands": {
        "mixed_off": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --ref contrib/local/bin/z3 --count 1000 --seed 2026081713 --timeout 5 --shape mixed --out /tmp/primo-canon-default-off-979d911-qfuflra",
        "mixed_on": "python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--arithmetic-atom-canonicalization --ref contrib/local/bin/z3 --count 1000 --seed 2026081714 --timeout 5 --shape mixed --out /tmp/primo-canon-option-on-979d911-qfuflra",
        "models_off": "python3 scripts/qf_lra_boolean_arithmetic_fuzz.py --solver ./build/primo --z3 contrib/local/bin/z3 --dolmen /home/user/.opam/default/bin/dolmen --count 1000 --seed 2026081715 --timeout 5 --out /tmp/primo-canon-default-off-979d911-qflra-model",
        "models_on": "python3 scripts/qf_lra_boolean_arithmetic_fuzz.py --solver ./build/primo --solver-arg=--arithmetic-atom-canonicalization --z3 contrib/local/bin/z3 --dolmen /home/user/.opam/default/bin/dolmen --count 1000 --seed 2026081716 --timeout 5 --out /tmp/primo-canon-option-on-979d911-qflra-model",
        "verification": "make check; make docs; make asan-test; focused clang-tidy and misc-include-cleaner on src/main.cpp and src/smt/check_sat.cpp; git diff --check"
      },
      "results": {
        "mixed_off": "1000/1000 PASS against Z3: 571 SAT and 429 UNSAT.",
        "mixed_on": "1000/1000 PASS against Z3: 589 SAT and 411 UNSAT.",
        "models_off": "1000/1000 constructed-SAT cases agreed with Z3 and emitted models passed validation.",
        "models_on": "1000/1000 constructed-SAT cases agreed with Z3 and emitted models passed validation.",
        "failures": "Zero wrong answer, reference disagreement, invalid model, crash, timeout, unsupported result, parser/type error, or saved bug in all four arms.",
        "verification": "All 14 CTest targets, 46 Python tests, documentation, lint, ASan, focused clang-tidy, and include-cleaner passed. Unit coverage proves zero default canonicalization activity and explicit-on alias merging."
      },
      "artifacts": "local-only:/tmp/primo-canon-default-off-979d911-qfuflra/summary.csv; local-only:/tmp/primo-canon-option-on-979d911-qfuflra/summary.csv; local-only:/tmp/primo-canon-default-off-979d911-qflra-model/summary.csv; local-only:/tmp/primo-canon-option-on-979d911-qflra-model/summary.csv",
      "evidence_status": "local-complete-current",
      "outcome": "Accepted. The experimental pass remains available and correctness-clean when enabled, while the default profile skips all three canonicalization traversals and retains the pre-pass SAT abstraction."
    },
    {
      "id": "2026-08-17-arithmetic-canonicalization-default-off-local-medium-ab",
      "started_at": "2026-08-17",
      "recorded_at": "2026-08-17",
      "kind": "local-performance-ablation",
      "scope": "Check that the default-off arithmetic canonicalization branch preserves pre-feature answers, search statistics, and seconds-range local performance on five medium QF_UFLRA instances",
      "commit": "7a6875f candidate versus 098f239 origin/main baseline",
      "branch": "lra-atom-canonicalization",
      "environment": {
        "type": "local",
        "builds": "Separate exact Release builds with GCC 13.3.0 and the same repository-local CaDiCaL 3.0.0, ANTLR 4.13.2, CLI11, and GMP installation; binaries report git 7a6875f and 098f239.",
        "execution": "Both arms pinned to CPU 0; three repetitions per binary and file; arm order alternated; 45-second process timeout; --quiet --stats; each JSONL row flushed and fsynced before the next run.",
        "corpus": "tmp/QF_UFLRA selected by benchmarks/qf-uflra-local-medium-5.txt; one CPAchecker BMC and four CPAchecker induction instances previously observed in the seconds range."
      },
      "commands": {
        "build_baseline": "git worktree add --detach /tmp/primo-main-098f239-local-compare 098f239; cmake -S /tmp/primo-main-098f239-local-compare -B /tmp/primo-main-098f239-local-compare/build-local-compare -DCMAKE_BUILD_TYPE=Release -DCLI11_INCLUDE_DIR=/workspace/contrib/local/include -DANTLR4_RUNTIME_INCLUDE_DIR=/workspace/contrib/local/include/antlr4-runtime -DANTLR4_RUNTIME_LIBRARY=/workspace/contrib/local/lib/libantlr4-runtime.a -DIPASIR_UP_INCLUDE_DIR=/workspace/contrib/local/include -DCADICAL_LIBRARY=/workspace/contrib/local/lib/libcadical.a; cmake --build /tmp/primo-main-098f239-local-compare/build-local-compare -j2",
        "build_candidate": "cmake -S /workspace -B /workspace/build-local-compare-release -DCMAKE_BUILD_TYPE=Release -DCLI11_INCLUDE_DIR=/workspace/contrib/local/include -DANTLR4_RUNTIME_INCLUDE_DIR=/workspace/contrib/local/include/antlr4-runtime -DANTLR4_RUNTIME_LIBRARY=/workspace/contrib/local/lib/libantlr4-runtime.a -DIPASIR_UP_INCLUDE_DIR=/workspace/contrib/local/include -DCADICAL_LIBRARY=/workspace/contrib/local/lib/libcadical.a; cmake --build /workspace/build-local-compare-release --target primo -j2",
        "comparison": "python3 scripts/compare_local_solver_stats.py --baseline /tmp/primo-main-098f239-local-compare/build-local-compare/primo --candidate /workspace/build-local-compare-release/primo --root /workspace/tmp/QF_UFLRA --manifest benchmarks/qf-uflra-local-medium-5.txt --output /tmp/primo-default-off-7a6875f-vs-098f239-medium-5 --repeats 3 --timeout 45 --cpu 0"
      },
      "results": {
        "correctness": "All 30 invocations completed with sat; zero timeout, error, answer disagreement, or diagnostic output.",
        "statistics": "Every non-:time.* statistic matched exactly between revisions and across repetitions on all five files.",
        "timing": "Sum of per-file medians was 39.228768 seconds at 098f239 and 39.118552 seconds at 7a6875f, candidate/baseline 0.99719x.",
        "per_file": "parport 2.585281/2.556686 seconds (0.98894x); tda18271c2dd 9.085848/9.056791 (0.99680x); m0 opl3 3.813768/3.804643 (0.99761x); mt20xx 11.896815/11.886709 (0.99915x); mem2mem_testdev 11.847057/11.813722 (0.99719x), baseline/candidate medians."
      },
      "artifacts": "local-only:/tmp/primo-default-off-7a6875f-vs-098f239-medium-5/{runs.jsonl,summary.json}; screening local-only:/tmp/primo-default-off-local-screening.tsv",
      "evidence_status": "local-complete-current",
      "outcome": "Accepted as focused local evidence that making arithmetic atom canonicalization opt-in restores pre-feature default behavior and does not cause a measurable slowdown on the selected medium cases. This is not a full-corpus performance claim."
    },
    {
      "id": "2026-08-18-integration-eval-fuzz-gates",
      "started_at": "2026-08-18",
      "recorded_at": "2026-08-18",
      "kind": "fuzz-gate",
      "scope": "Merge-gate fuzzing for the integration of nelson-oppen-cursor-and-guard + nelson-oppen-class-equality-transitivity onto main f628dbb, default settings, both QF_LRA and QF_UFLRA.",
      "commit": "8cd7181 (integration-2026-08-eval: f628dbb + bf0b137 + 5fae33d)",
      "branch": "integration-2026-08-eval",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "workdir": "primo-eval-candidate"
      },
      "commands": {
        "qf_uflra": "sbatch scripts/slurm_qf_uflra_fuzz_gate.sbatch (job 126634)",
        "qf_lra": "sbatch --export=...PRIMO_WORKDIR=$(pwd) scripts/slurm_qf_lra_model_fuzz_gate.sbatch (job 126638)"
      },
      "results": {
        "qf_uflra": "4,000/4,000 differential PASS (750 mixed + 125 finite-qf-uf + 125 finite-qf-uflra per task x 4 tasks); 3,500/3,500 Dolmen model validations clean.",
        "qf_lra": "3,000 FuzzSMT differential cases across 6 shards, zero wrong-answer disagreements (only PASS/TIMEOUT outcomes, 11 benign solver-timeouts out of 3,000); 3,000 Dolmen/z3-fallback model validations, zero invalid models (same 11 timeouts counted as validate_qfuf_models_with_dolmen.py 'failures', which is why Slurm marked those 6 array tasks FAILED -- a known script characteristic: unlike slurm_qf_uflra_fuzz_gate.sbatch, this gate's validate_model.py call has no `|| model_status=$?` guard, so a lone solver-timeout among 500 cases fails the whole task even though nothing is wrong. Verified by inspecting every shard's summary.csv and per-outcome breakdown directly, not just the Slurm exit code. 34-seed opfuzz run: 0 bug triggers. Two 1500s-wall typefuzz shards: 0 bug triggers."
      },
      "evidence_status": "slurm-complete-current",
      "outcome": "Clean. Zero wrong answers, zero invalid models across both logics. The QF_LRA gate's per-task FAILED status is a script exit-code artifact (solver-timeouts counted as failures), not a correctness issue -- confirmed by reading every outcome row directly."
    },
    {
      "id": "2026-08-18-integration-eval-full-corpus",
      "started_at": "2026-08-18",
      "recorded_at": "2026-08-18",
      "kind": "benchmark",
      "scope": "Full QF_LRA (1,753 files) and QF_UFLRA (1,284 files) corpus comparison, baseline (main f628dbb) vs candidate (integration-2026-08-eval 8cd7181), default settings, 120s/file.",
      "commit": "f628dbb baseline vs 8cd7181 candidate",
      "branch": "integration-2026-08-eval",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "workdir": "primo-eval-candidate / primo-eval-baseline",
        "job": "126724 (64 array tasks: 2 corpora x 2 binaries x 16 shards)"
      },
      "commands": {
        "sweep": "sbatch phase2_full_corpus_compare.sbatch; python3 scripts/bench_qf_uf_full.py --root tmp/{QF_LRA,QF_UFLRA} --timeout 120 --shards 16 per (corpus, binary)"
      },
      "results": {
        "qf_lra": "Zero wrong answers either side. Solved: baseline 1596/1753, candidate 1597/1753. PAR2: baseline 50064.64, candidate 49512.15. Apparent complementarity (gained 2 / lost 1) on three LassoRanker files all within ~1s of the 120s cap; re-run directly (no Slurm contention, 200s cap) showed all three solve comfortably on both binaries in 89-98.6s -- confirmed boundary-cap noise, not a real trade.",
        "qf_uflra": "Zero wrong answers either side. Solved: baseline 1272/1284, candidate 1272/1284 (identical). PAR2: baseline 3681.70, candidate 3655.61. Zero gained/lost/disagreements -- identical solved-set."
      },
      "evidence_status": "slurm-complete-current",
      "outcome": "No major performance change from combining the two branches onto the new main, as expected going in. Zero wrong answers on 3,037 files x 2 binaries. Safe to merge on correctness and performance grounds."
    },
    {
      "id": "2026-08-18-arithmetic-canonicalization-fuzz-gates-on-integration",
      "started_at": "2026-08-18",
      "recorded_at": "2026-08-18",
      "kind": "fuzz-gate",
      "scope": "Re-run both merge-gate fuzz scripts with --arithmetic-atom-canonicalization on the integration candidate binary (8cd7181) -- the prior canonicalization fuzz-gate record (2026-08-17, docs/papers/lra-atom-canonicalization.md) was against that pass alone, without these two branches.",
      "commit": "8cd7181 + --arithmetic-atom-canonicalization",
      "branch": "integration-2026-08-eval",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "workdir": "primo-eval-candidate",
        "jobs": "126800 (QF_UFLRA), 126804 (QF_LRA)"
      },
      "results": {
        "qf_uflra": "4,000/4,000 differential PASS, 3,500/3,500 Dolmen model validations clean.",
        "qf_lra": "3,000 FuzzSMT cases, zero disagreements (PASS/TIMEOUT only, 11 benign timeouts, same script exit-code artifact as the default-settings run); 3,000 model validations clean; opfuzz + typefuzz 0 bug triggers."
      },
      "evidence_status": "slurm-complete-current",
      "outcome": "Clean. The specific combination (both branches + canonicalization) has now been fuzzed and is not a new risk surface."
    },
    {
      "id": "2026-08-18-arithmetic-canonicalization-full-corpus",
      "started_at": "2026-08-18",
      "recorded_at": "2026-08-18",
      "kind": "benchmark",
      "scope": "Full QF_LRA (1,753 files) and QF_UFLRA (1,284 files) corpus comparison, candidate binary (8cd7181), default vs --arithmetic-atom-canonicalization, 120s/file. Supersedes the 2026-08-17 237/1,753 and 100/1,284 SAMPLE comparisons in docs/papers/lra-atom-canonicalization.md with full-corpus numbers.",
      "commit": "8cd7181",
      "branch": "integration-2026-08-eval",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "workdir": "primo-eval-candidate",
        "job": "126819 (64 array tasks: 2 corpora x 2 modes x 16 shards)"
      },
      "commands": {
        "sweep": "sbatch phase3_canon_compare.sbatch; python3 scripts/bench_qf_uf_full.py --root tmp/{QF_LRA,QF_UFLRA} --timeout 120 --shards 16, default vs --solver-arg=--arithmetic-atom-canonicalization"
      },
      "results": {
        "qf_lra": "Zero wrong answers either side. Solved: default 1597/1753, canonicalization-on 1617/1753 (+20, 1.1% of corpus). PAR2: default 49891.78, canon 44394.62 (-11.0%). Complementarity: gained 34 (canon solves, default times out), lost 14 (default solves, canon times out), net +20. Spot-verified three of the largest swings directly at 130s cap outside Slurm: firewire.t2.c (default timeout -> canon sat 4.02s), disj_nightmare.t2.c (default unsat 108.44s -> canon unsat 4.08s), ecoliMILPglycerolYices3-70000 (default sat 12.69s -> canon timeout) -- all reproduced exactly, confirming these are genuine, large, bidirectional search-trajectory changes, not boundary noise or measurement artifacts. Gains cluster heavily in the LassoRanker family (419 files), which the original 237-file stratified sample evidently under-weighted relative to its actual size.",
        "qf_uflra": "Zero wrong answers either side. Solved: default 1272/1284, canon 1272/1284 (identical). PAR2: default 3682.91, canon 3685.73 (+0.08%, noise). Zero gained/lost/disagreements."
      },
      "evidence_status": "slurm-complete-current",
      "outcome": "Materially different conclusion from the sample-based evaluation: at full-corpus scale, --arithmetic-atom-canonicalization is a clear net win on QF_LRA (+20 solved, -11% PAR2) and neutral on QF_UFLRA, with zero wrong answers throughout. Still not a uniform win (14 genuine losses alongside 34 genuine gains) -- the underlying mechanism (early canonicalization changes preprocessing and LRA search trajectories) is unchanged, but the net effect at full-corpus scale is substantially more positive than the sample suggested. Recorded as new evidence for docs/papers/lra-atom-canonicalization.md; whether this justifies promoting the flag (at least for pure QF_LRA) is a decision left to the user rather than made here."
    },
    {
      "id": "2026-08-18-model-unit-equality-producer-local-5e9371a",
      "started_at": "2026-08-18",
      "recorded_at": "2026-08-18",
      "kind": "implementation-verification-and-local-ablation",
      "scope": "Verify the CAV 2024 current-model-filtered unit-row equality producer and screen it against the legacy exact-offset producer on the 45-file QF_UFLRA opportunity sample",
      "commit": "5e9371a",
      "branch": "qf-uflra-model-unit-equalities",
      "environment": {
        "type": "local",
        "build": "Release build-model-unit-release plus the repository default, ASan, documentation, and static-analysis builds",
        "corpus": "tmp/QF_UFLRA selected by benchmarks/qf_uflra-preprocessing-opportunity-sample.txt (45 files)",
        "timeout": "30 seconds per benchmark row"
      },
      "commands": {
        "verification": "make lint; make python-test; make check; make docs; make asan-test; make tidy; clang-tidy misc-include-cleaner advisory scan on touched translation units; git diff --check",
        "legacy": "python3 scripts/bench_qf_uf_full.py --repo /workspace --root tmp/QF_UFLRA --manifest benchmarks/qf_uflra-preprocessing-opportunity-sample.txt --solver build-model-unit-release/primo --solver-arg=--quiet --solver-arg=--stats --solver-arg=--qf-uflra-lra-equality-producer=legacy --timeout 30 --out /tmp/primo-model-unit-local45-legacy.csv",
        "model_unit": "python3 scripts/bench_qf_uf_full.py --repo /workspace --root tmp/QF_UFLRA --manifest benchmarks/qf_uflra-preprocessing-opportunity-sample.txt --solver build-model-unit-release/primo --solver-arg=--quiet --solver-arg=--stats --solver-arg=--qf-uflra-lra-equality-producer=model-unit --timeout 30 --out /tmp/primo-model-unit-local45-candidate.csv",
        "pure_qf_lra_guard": "Run the same Release binary with default and --qf-uflra-lra-equality-producer=model-unit over 10 tracked benchmarks/seeds/qf_lra{,_real} files and compare answers plus all non-:time.* statistics"
      },
      "results": {
        "verification": "All 14 C++ tests and 52 Python tests passed in the normal build; all 14 C++ tests passed under ASan; lint, docs, whole-tree clang-tidy, touched-file include-cleaner review, and diff checks passed.",
        "sample_correctness": "Both modes solved 45/45 with zero timeout, error, unsupported, wrong, or answer disagreement.",
        "sample_timing": "Aggregate wall time was 0.911679 seconds legacy and 0.948694 seconds model-unit; these sub-second totals are noise and are not performance evidence.",
        "producer_timing": "Aggregate :time.no-lra-equality-producer-us fell from 2497 to 1368 microseconds.",
        "pure_qf_lra": "All 10 rows had identical answers and every non-time statistic, confirming that the mixed-only producer option does not route pure QF_LRA through the combination path."
      },
      "artifacts": "local-only:/tmp/primo-model-unit-local45-{legacy,candidate}.csv{,.jsonl} and corresponding -summary.csv files",
      "evidence_status": "local-complete-current",
      "outcome": "The implementation and its mixed-only boundary passed focused verification. The local sample showed the intended producer-local reduction but was too short to decide default policy, so SLURM fuzzing and full-corpus A/B remained mandatory."
    },
    {
      "id": "2026-08-18-model-unit-equality-producer-fuzz-5e9371a",
      "started_at": "2026-08-18",
      "recorded_at": "2026-08-18",
      "kind": "fuzz-and-model-validation",
      "scope": "Fresh exact-commit differential, finite-domain, Dolmen-model, tracked-seed, and YinYang mutation gates for --qf-uflra-lra-equality-producer=model-unit",
      "commit": "5e9371a",
      "branch": "qf-uflra-model-unit-equalities",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "workdir": "/home/janotmik/primo-model-unit-5e9371a",
        "jobs": "127110 generated/model array 0-3; 127111 tracked-seed and typefuzz task 0",
        "binary": "Release git 5e9371a, CaDiCaL 3.0.0-7b99c07",
        "references": "Z3 5.1.0 and cvc5 for differential checks; Dolmen 0.10 for SAT-model checking; Z3 model_validate=true for YinYang"
      },
      "commands": {
        "preflight": "scripts/slurm_prepare_benchmark_workspace.py --check-only verified git 5e9371a, CaDiCaL, Z3, cvc5, Dolmen, and typefuzz immediately before submission",
        "validation": "python3 scripts/slurm_validate_sbatch.py and bash -n on scripts/slurm_qf_uflra_fuzz_gate.sbatch and scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch",
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch with 4 tasks, PRIMO_FUZZ_COUNT=750, PRIMO_FINITE_DOMAIN_FUZZ_COUNT=125, seed base 202608180, model validation enabled, and PRIMO_FUZZ_SOLVER_ARGS=--qf-uflra-lra-equality-producer=model-unit",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch task 0 with all benchmarks/seeds/qf_uflra files, 2000 typefuzz iterations per seed, seed 2026081810, and PRIMO_FUZZ_EXTRA_SOLVER_ARGS=--qf-uflra-lra-equality-producer=model-unit"
      },
      "results": {
        "generated": "3000/3000 mixed QF_UFLRA PASS against Z3; zero timeout, disagreement, crash, parser/type error, or bug file.",
        "finite_domain": "1000/1000 PASS: 500 QF_UF and 500 QF_UFLRA cases against Z3/cvc5; zero activation failure or bug file.",
        "models": "3500/3500 checks completed: 1947 SAT models passed Dolmen and 1553 cases were UNSAT; zero validation failure or fallback.",
        "mutation": "11/11 tracked seeds passed the precheck. Typefuzz processed all 11 seeds, reported 11 valid and 0 invalid, completed 43,936 solver calls, and found 0 bug triggers.",
        "scheduler": "All five tasks completed with exit status zero; generated tasks took 54 seconds each and mutation took 10:27."
      },
      "artifacts": "remote:/home/janotmik/primo-model-unit-5e9371a/slurm-results/qf-uflra-model-unit-5e9371a; remote:/home/janotmik/primo-model-unit-5e9371a/fuzz-results/qf-uflra-model-unit-5e9371a; SLURM jobs 127110 and 127111",
      "evidence_status": "slurm-complete-current",
      "outcome": "The option passed the required correctness and model-validation gates. This permits performance evaluation but does not by itself justify default promotion."
    },
    {
      "id": "2026-08-18-model-unit-equality-producer-full-ab-5e9371a",
      "started_at": "2026-08-18",
      "recorded_at": "2026-08-18",
      "kind": "benchmark",
      "scope": "Full 1,284-file QF_UFLRA A/B of the legacy exact-offset producer against the CAV 2024 model-filtered unit-row producer, 120 seconds per file",
      "commit": "5e9371a",
      "branch": "qf-uflra-model-unit-equalities",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "workdir": "/home/janotmik/primo-model-unit-5e9371a",
        "jobs": "127115 legacy array 0-7; 127116 model-unit array 0-7",
        "binary": "The same Release git 5e9371a, CaDiCaL 3.0.0-7b99c07 binary for both arms",
        "corpus": "Complete staged tmp/QF_UFLRA tree: FFT 10, CPAchecker BMC 15, CPAchecker induction 359, MathSAT 900",
        "timeout": "120 seconds per file"
      },
      "commands": {
        "validation": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_model_mine.sbatch; bash -n scripts/slurm_qf_uflra_model_mine.sbatch; exact-workspace check-only preflight immediately before sbatch",
        "legacy": "scripts/slurm_qf_uflra_model_mine.sbatch with build-slurm-rel/primo --quiet --stats --model-equality-mutation-scope=all --qf-uflra-lra-equality-producer=legacy",
        "model_unit": "scripts/slurm_qf_uflra_model_mine.sbatch with build-slurm-rel/primo --quiet --stats --model-equality-mutation-scope=all --qf-uflra-lra-equality-producer=model-unit",
        "summary": "python3 scripts/summarize_benchmark_shards.py --timeout 120 --run legacy=results/model-unit-full120-5e9371a/legacy --run model-unit=results/model-unit-full120-5e9371a/model-unit --baseline legacy --candidate model-unit"
      },
      "results": {
        "correctness": "Both arms covered all 1284 files with zero wrong answer, error, unsupported row, or decisive-answer disagreement.",
        "legacy": "1272 solved (761 sat, 511 unsat), 12 timeouts, solved-row time 837.171267 seconds, PAR2 3717.171267.",
        "model_unit": "1271 solved (760 sat, 511 unsat), 13 timeouts, solved-row time 740.330666 seconds, PAR2 3860.330666.",
        "families": "Legacy/model-unit solved counts were FFT 10/10 in both arms, BMC 7/15 in both arms, induction 355/359 versus 354/359, and MathSAT 900/900 in both arms.",
        "paired_timing": "On 1271 common solves, legacy used 760.052362 seconds and model-unit 740.330666 seconds, a 19.721696-second (2.59 percent) reduction.",
        "producer_work": "Aggregate producer time fell 2,579,190 to 698,229 microseconds (72.9 percent); reason literals fell 26,234,347 to 7,116,559; opportunistic created atoms fell 6420 to 4287. Model-unit inspected 335,052 rows and 5,292,635 nonzeros and used 439 exact fallback pair probes yielding 82 equalities.",
        "loss": "cpachecker-induction.cs_fib_false-unreach-call.i.smt2 was SAT in 77.118905 seconds with legacy and timed out at 120.275457 seconds with model-unit. Legacy reported 2226 general EqRows matches on this row; model-unit intentionally reported none, delivered 1714 versus 2756 LRA-to-EUF equalities, and did not invoke the exact fallback on the omitted pairs."
      },
      "artifacts": "remote:/home/janotmik/primo-model-unit-5e9371a/results/model-unit-full120-5e9371a/{legacy,model-unit}; SLURM jobs 127115 and 127116",
      "evidence_status": "slurm-complete-current",
      "outcome": "Reject default promotion. The paper-inspired producer removes substantial local arithmetic and explanation work and improves common-solved throughput, but replacing the broader general-row producer loses one non-boundary solve and worsens PAR2. Keep legacy as default and retain model-unit as an explicit experimental profile for future adaptive scheduling work."
    },
    {
      "id": "2026-08-18-model-unit-lost-row-controlled-reproduction-fcc8d0e",
      "started_at": "2026-08-18",
      "recorded_at": "2026-08-18",
      "kind": "performance-regression-triage",
      "scope": "Three-repetition controlled reproduction of the model-unit loss on cpachecker-induction.cs_fib_false-unreach-call.i.smt2, including a candidate-final-scan ablation",
      "commit": "fcc8d0e",
      "branch": "qf-uflra-model-unit-equalities",
      "environment": {
        "type": "slurm",
        "jobs": "127215 legacy; 127216 model-unit; 127217 model-unit plus candidate final scan",
        "binary": "Release git fcc8d0e, CaDiCaL 3.0.0-7b99c07",
        "timeout": "300 seconds per repetition"
      },
      "commands": {
        "profiles": "build-slurm-rel/primo --quiet --stats --model-equality-mutation-scope=all with --qf-uflra-lra-equality-producer={legacy,model-unit}; the third arm also enabled --qf-uflra-candidate-final-scan"
      },
      "results": {
        "legacy": "70.669896, 70.674530, and 70.618327 seconds; 3 convex rounds, 2226 general EqRows matches, 2756 LRA-to-EUF equalities, 2070581 SAT decisions, and 4773038 SAT propagations.",
        "model_unit": "182.597241, 181.290869, and 180.528749 seconds; 33 convex rounds, 22 shared-model splits, 86 model-equality assumption solve calls, 842 equality assumptions, 56 model-equality conflicts, 2118612 decisions, and 5008904 propagations.",
        "candidate_final_scan": "182.340485, 181.359383, and 180.820061 seconds with search statistics identical to model-unit.",
        "phase_delta": "Solve-phase time increased by about 111.88 seconds. Producer time was only about 65 milliseconds under model-unit, excluding producer CPU as the cause."
      },
      "artifacts": "remote:results/model-unit-loss-repro-fcc8d0e/{legacy,model-unit,model-unit-final-scan}; SLURM jobs 127215, 127216, and 127217",
      "evidence_status": "slurm-complete-current",
      "outcome": "The lost solve is deterministic and not a timeout-boundary artifact. General EqRows lemmas are needed before shared-model arrangement search; a final exact scan is too late."
    },
    {
      "id": "2026-08-18-model-unit-adaptive-scheduler-iterations",
      "started_at": "2026-08-18",
      "recorded_at": "2026-08-18",
      "kind": "rejected-and-diagnostic-experiments",
      "scope": "Evaluate delayed fallback, one-round bootstrap, and propagation-fixed-point bootstrap policies before the final refined adaptive scheduler",
      "commit": "89a6fef, 2edf32e, and e8a3259",
      "branch": "qf-uflra-model-unit-equalities",
      "environment": {
        "type": "slurm",
        "jobs": "127229 delayed fallback target; 127230 generated gate; 127247 one-round target; 127248 one-round fuzz; 127261 fixed-point target; 127262 fixed-point fuzz; 127268 fixed-point seed gate/canceled mutation; 127269 fixed-point full corpus"
      },
      "results": {
        "delayed_fallback": "The completed target repetition took 183.194064 seconds. Switching only after the first shared-model split is too late to restore the early EqRows search trajectory.",
        "one_round": "Job 127247 accidentally included --model-equality-branching and is invalid as an A/B timing result; it took 236--240 seconds. Job 127248 itself was a valid exact-commit generated/model gate: 3000 mixed, 500 finite QF_UF, 500 finite QF_UFLRA, and 3500 model classifications were clean.",
        "fixed_point_target": "Job 127261 solved the target in 73.071100, 73.119298, and 73.206704 seconds with exactly the legacy 3 rounds, 2226 EqRows matches, 2756 LRA-to-EUF equalities, 2070581 decisions, and 4773038 propagations.",
        "fixed_point_correctness": "Job 127262 passed 3000 mixed, 500 finite QF_UF, 500 finite QF_UFLRA, and 3500 model checks. Job 127268 passed all 11 tracked seeds before its now-obsolete mutation phase was canceled.",
        "fixed_point_full": "Job 127269 solved 1272/1284 with the same 12 timeouts and no wrong answers. However, it selected model-unit zero times: 1178 bootstrap legacy rounds, 1347 total legacy rounds, and 77 immediate fallback activations. Its 47.54-second apparent timing improvement is cluster/run variation, not evidence for the intended mechanism."
      },
      "artifacts": "remote:results/model-unit-loss-adaptive-89a6fef; remote:results/model-unit-bootstrap-target-2edf32e; remote:results/model-unit-fixedpoint-{target,full120}-e8a3259; remote:slurm-results for jobs 127230, 127248, and 127262",
      "evidence_status": "slurm-complete-diagnostic",
      "outcome": "Retain the fixed-point bootstrap, but do not treat a split reached directly from bootstrap as model-unit failure. The cheap producer must be attempted once before a later split activates permanent fallback."
    },
    {
      "id": "2026-08-18-model-unit-refined-adaptive-d8fc162",
      "started_at": "2026-08-18",
      "recorded_at": "2026-08-18",
      "kind": "fuzz-gate-and-full-corpus-evaluation",
      "scope": "Exact-current validation and complete 1284-file QF_UFLRA screening of the refined adaptive policy that attempts model-unit after a bootstrap split and falls back only after a later split",
      "commit": "d8fc162",
      "branch": "qf-uflra-model-unit-equalities",
      "environment": {
        "type": "slurm",
        "jobs": "127292 target array; 127293 generated/model gate; 127299 canceled mutation diagnostic; 127300 full-corpus array; 127311 tracked-seed and YinYang mutation replay",
        "binary": "Release git d8fc162, CaDiCaL 3.0.0-7b99c07",
        "references": "Z3 and cvc5 for differential checks; Dolmen for SAT-model validation; Z3 model_validate=true for YinYang",
        "corpus": "Complete staged QF_UFLRA tree: FFT 10, CPAchecker BMC 15, CPAchecker induction 359, MathSAT 900",
        "timeout": "300 seconds for the target repetitions; 120 seconds per full-corpus file"
      },
      "commands": {
        "local_verification": "focused primo_qf_lra_solver_tests; make lint; make check; make docs; make asan-test; focused clang-tidy and misc-include-cleaner advisory scans; solver-efficiency snapshot; git diff --check",
        "target": "Three sharded repetitions with build-slurm-rel/primo --quiet --stats --model-equality-mutation-scope=all --qf-uflra-lra-equality-producer=adaptive",
        "generated": "scripts/slurm_qf_uflra_fuzz_gate.sbatch with four tasks, seed base 202608188, and PRIMO_FUZZ_SOLVER_ARGS=--qf-uflra-lra-equality-producer=adaptive",
        "mutation": "scripts/slurm_qf_uflra_mutation_fuzz_gate.sbatch task 0, replay seed 2026081810, and PRIMO_FUZZ_EXTRA_SOLVER_ARGS=--qf-uflra-lra-equality-producer=adaptive",
        "full": "The locally validated eight-shard sbatch wrapper invoked scripts/bench_qf_uf_full.py with --root tmp/QF_UFLRA --timeout 120 --shards 8 and the target solver profile. The tracked reproducible equivalent is scripts/slurm_qf_uflra_model_mine.sbatch with PRIMO_MINE_TIMEOUT=120, PRIMO_MINE_SHARDS=8, PRIMO_MINE_SOLVER='build-slurm-rel/primo --quiet --stats --model-equality-mutation-scope=all --qf-uflra-lra-equality-producer=adaptive', and --mem=24G. Compare against unchanged legacy job 127115 using scripts/summarize_benchmark_shards.py."
      },
      "results": {
        "local_verification": "All 14 C++ and 52 Python tests passed; all 14 C++ tests passed under ASan; lint, docs, focused static analysis, efficiency review, and diff checks passed.",
        "target": "73.646839, 73.906177, and 74.020637 seconds. Every repetition retained the legacy 2070581 decisions, 4773038 propagations, 3 legacy/bootstrap rounds, 2226 EqRows matches, and 2756 LRA-to-EUF equalities.",
        "generated": "3000/3000 mixed, 500/500 finite QF_UF, and 500/500 finite QF_UFLRA differential cases passed. Model checking classified all 3500 cases: 1991 SAT models passed Dolmen and 1509 were UNSAT.",
        "tracked_seeds": "11/11 tracked QF_UFLRA seeds passed before mutation.",
        "canceled_mutation_diagnostic": "Job 127299 used seed 202608188. It completed three seeds and entered a fourth sequence where both Primo and Z3 timed out while mutant generation advanced at roughly one case per two minutes. It was canceled after 17:23 with zero bug files because the remaining eight-hour run would provide poor coverage. This is diagnostic only, not correctness evidence.",
        "mutation": "Replay job 127311 processed all 11 seeds, classified all 11 valid, completed 43854 solver calls, and found 0 bug triggers or bug files in 8:51.",
        "full_correctness": "Adaptive and legacy both solved 1272/1284: FFT 10/10, BMC 7/15, induction 355/359, and MathSAT 900/900. Both had 12 timeouts, zero wrong answers, errors, unsupported rows, gains, losses, or decisive-answer disagreements.",
        "full_mechanism": "Adaptive selected 1343 producer rounds: 1178 bootstrap legacy, 93 model-unit, and 1250 total legacy rounds. Model-unit ran on 77 files; 40 files activated permanent fallback. Aggregate producer time fell from 2579190 to 2459320 microseconds. Of the 77 selected files, 67 retained identical SAT solve-call, decision, propagation, and convex-round counts.",
        "full_timing": "Legacy solved-row time was 837.171267 seconds and adaptive was 784.597600 seconds. The runs were not concurrent, and the zero-model-unit e8a3259 run showed a similar timing shift, so the 52.57-second difference is not attributed to adaptive scheduling."
      },
      "artifacts": "remote:results/model-unit-refined-target-d8fc162; remote:slurm-results/qf-uflra-refined-fuzz-d8fc162; remote:fuzz-results/qf-uflra-refined-d8fc162; remote:fuzz-results/qf-uflra-refined-replay-d8fc162; remote:results/model-unit-refined-full120-d8fc162/adaptive; SLURM jobs 127292, 127293, 127299, 127300, and 127311",
      "evidence_status": "slurm-complete-current",
      "outcome": "The refined scheduler removes the deterministic loss and preserves the complete solved set while exercising model-unit. The producer-local saving is too small for default promotion; legacy remains default and adaptive remains experimental."
    },
    {
      "id": "2026-08-19-qf-lia-fuzz-gate-slurm-verification",
      "started_at": "2026-08-19",
      "recorded_at": "2026-08-19",
      "kind": "fuzz",
      "scope": "First Slurm run of the new QF_LIA fuzz gate (scripts/slurm_qf_lia_model_fuzz_gate.sbatch): FuzzSMT-generated QF_LIA answer-differential fuzzing against z3, plus Dolmen model validation of every sat result.",
      "commit": "5808051",
      "branch": "qf-lia-branch-and-bound",
      "environment": {
        "type": "SLURM",
        "host": "llm2smt-slurm",
        "workdir": "primo-qflia-fuzz-gate",
        "job": "127439 (1 shard x 50, found the Dolmen --strict bug), 127440 (1 shard x 50, post-fix smoke re-run), 127441 (8 shards x 500 = 4000, full default-sized gate, post-fix)"
      },
      "commands": {
        "smoke": "sbatch --export=ALL,PRIMO_WORKDIR=...,PRIMO_FUZZ_FUZZSMT_COUNT=50 --array=0-0 scripts/slurm_qf_lia_model_fuzz_gate.sbatch",
        "full": "sbatch --export=ALL,PRIMO_WORKDIR=... scripts/slurm_qf_lia_model_fuzz_gate.sbatch (default 8x500)"
      },
      "results": {
        "job_127439": "Answer-differential clean, but model validation found 39/45 sat cases as model-error, all falling through to validate_model.py's Real-only z3 fallback. Root cause: Dolmen's default --strict=true treats FuzzSMT's QF_LIA output (linear-but-grammar-nonconforming terms like `(* e5 e11)` with e5 a let-bound literal) as a Fatal Warning and aborts check-model before evaluating the model. Fixed with --dolmen-arg=--strict=false, now the gate's default (commit c05f24a).",
        "job_127440": "Same 50-case smoke shape, post-fix. Answer-differential: 48 PASS, 2 benign solver timeouts, 0 wrong answers. Model validation: 40/40 sat cases pass via Dolmen directly, 0 model-error.",
        "job_127441": "Full default-sized run, 4000 FuzzSMT-generated QF_LIA cases across 8 shards (7 shards exited 0; shard 4 exited 1, see below). Answer-differential aggregate: 3926 PASS, 73 benign solver timeouts, 1 UNKNOWN_INVOLVED, 0 wrong answers (zero OUR_SAT_REF_UNSAT/OUR_UNSAT_REF_SAT/REF_DISAGREEMENT/CRASH). Model validation aggregate: 3528 pass (all via Dolmen), 423 not-sat (no model expected), 48 benign solver timeouts, 1 solver-unknown. The single UNKNOWN_INVOLVED/solver-unknown case (fuzzsmt_227445__file_247.smt2) is primo honestly reporting Unknown after exhausting --lia-branch-limit on a z3-sat instance -- confirmed by its solver.stderr, which reads exactly 'QF_LIA branch-and-bound node limit reached', matching docs/qf-lia-branch-and-bound.md's documented stage-1 incompleteness, not a wrong answer or crash. That single benign case is what made shard 4 exit 1 (the gate's non_timeout_failures check did not yet whitelist solver-unknown); the gate script was updated afterward to also treat solver-unknown as benign, with a comment explaining exactly why and when that allowance would need narrowing."
      },
      "artifacts": "remote:primo-qflia-fuzz-gate/fuzz-results/qf-lia-model-gate-{127439,127440,127441}/",
      "evidence_status": "slurm-complete-current",
      "outcome": "The QF_LIA fuzz gate (scripts/slurm_qf_lia_model_fuzz_gate.sbatch) now runs cleanly end-to-end on Slurm at its default 8x500 scale: zero wrong answers, zero crashes, zero invalid Dolmen-validated models across 4000 FuzzSMT-generated QF_LIA cases. Two real bugs were found and fixed in this session before this campaign (see the two prior commits on this branch and docs/qf-lia-branch-and-bound.md's bug write-ups); this run is the first evidence at real scale, not just local smoke testing, that stage 1 QF_LIA is sound. The gate's own benign-outcome classification also needed a fix (solver-unknown from the branch-and-bound node limit was being treated as a hard failure), applied after this run."
    },
    {
      "id": "2026-08-20-qf-lia-gcd-consistency-fuzz-gate-slurm-verification",
      "started_at": "2026-08-20",
      "recorded_at": "2026-08-20",
      "kind": "fuzz",
      "scope": "Full Slurm run of scripts/slurm_qf_lia_model_fuzz_gate.sbatch against the QF_LIA stage-2 GCD-consistency check (theory::arithmetic::gcd_inconsistent_row), a soundness-risk change: a bug here would report Unsat on a satisfiable instance, strictly worse than stage 1's Unknown-on-unsat gap. Preceded by ~1000 cases of local FuzzSMT smoke fuzzing across 5 seeds (555111, 700200, 800300, 900400, plus the first 200-case batch), all clean.",
      "commit": "f738402",
      "branch": "qf-lia-branch-and-bound",
      "environment": {
        "type": "SLURM",
        "host": "llm2smt-slurm",
        "workdir": "primo-qflia-fuzz-gate",
        "job": "127449 (8 shards x 500 = 4000 FuzzSMT-generated QF_LIA cases)"
      },
      "commands": {
        "sync": "python3 scripts/slurm_prepare_benchmark_workspace.py --remote-dir primo-qflia-fuzz-gate --reuse-dependencies --local-dir /workspace",
        "submit": "sbatch --export=ALL,PRIMO_WORKDIR=... scripts/slurm_qf_lia_model_fuzz_gate.sbatch (default 8x500)"
      },
      "results": {
        "all_shards": "All 8 array tasks exited 0 (sacct: COMPLETED, ExitCode 0:0 throughout).",
        "answer_differential": "3925 PASS, 74 benign solver timeouts, 1 UNKNOWN_INVOLVED (primo timed out where z3 answered sat -- a solver-side timeout, not a disagreement), zero wrong answers (zero OUR_SAT_REF_UNSAT/OUR_UNSAT_REF_SAT/REF_DISAGREEMENT/CRASH across all 8 shards, confirmed by direct grep).",
        "model_validation": "3517 pass (all via Dolmen), 425 correctly not-sat, 58 benign solver timeouts, zero model-error (confirmed by direct grep across all 8 shards)."
      },
      "artifacts": "remote:primo-qflia-fuzz-gate/fuzz-results/qf-lia-model-gate-127449/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Stage 2's GCD-consistency check (docs/qf-lia-branch-and-bound.md) is confirmed sound at real fuzz scale: zero wrong answers and zero invalid models across 4000 Slurm-generated cases plus ~1000 local smoke cases beforehand, with no soundness regression from stage 1's own already-verified 4000-case baseline (2026-08-19-qf-lia-fuzz-gate-slurm-verification). The one non-pass/timeout answer-differential case (a solver-side timeout on a z3-sat instance) was individually inspected and confirmed unrelated to the GCD check."
    },
    {
      "id": "2026-08-20-qf-lia-gomory-cuts-fuzz-gate-slurm-verification",
      "started_at": "2026-08-20",
      "recorded_at": "2026-08-20",
      "kind": "fuzz",
      "scope": "Full Slurm run of scripts/slurm_qf_lia_model_fuzz_gate.sbatch against the QF_LIA stage-3 Gomory cut check (theory::arithmetic::apply_gomory_cuts, King's thesis eq. 4.9), a soundness-risk change: a wrong hand-derived cut would report Unsat on a satisfiable instance. Preceded by ~800 cases of local FuzzSMT smoke fuzzing across 4 seeds (313131, 424242, 535353, 646464), all clean, and by two hand-verified numeric worked examples (unit tests, checked before any implementation code was written).",
      "commit": "5d19930",
      "branch": "qf-lia-branch-and-bound",
      "environment": {
        "type": "SLURM",
        "host": "llm2smt-slurm",
        "workdir": "primo-qflia-fuzz-gate",
        "job": "127457 (8 shards x 500 = 4000 FuzzSMT-generated QF_LIA cases)"
      },
      "commands": {
        "sync": "python3 scripts/slurm_prepare_benchmark_workspace.py --remote-dir primo-qflia-fuzz-gate --reuse-dependencies --local-dir /workspace",
        "submit": "sbatch --export=ALL,PRIMO_WORKDIR=... scripts/slurm_qf_lia_model_fuzz_gate.sbatch (default 8x500)"
      },
      "results": {
        "all_shards": "All 8 array tasks exited 0 (sacct: COMPLETED, ExitCode 0:0 throughout) -- cleaner than stage 2's equivalent run, which had one benign solver-unknown case.",
        "answer_differential": "3920 PASS, 80 benign solver timeouts, zero wrong answers (zero OUR_SAT_REF_UNSAT/OUR_UNSAT_REF_SAT/REF_DISAGREEMENT/CRASH across all 8 shards, confirmed by direct grep).",
        "model_validation": "3487 pass (all via Dolmen), 456 correctly not-sat, 57 benign solver timeouts, zero model-error (confirmed by direct grep across all 8 shards)."
      },
      "artifacts": "remote:primo-qflia-fuzz-gate/fuzz-results/qf-lia-model-gate-127457/",
      "evidence_status": "slurm-complete-current",
      "outcome": "Stage 3's Gomory-cut check (King's thesis eq. 4.9, docs/qf-lia-branch-and-bound.md) is confirmed sound at real fuzz scale: zero wrong answers and zero invalid models across 4000 Slurm-generated cases plus ~800 local smoke cases beforehand, with no soundness regression from stages 1-2's own already-verified baselines. Combined with the two hand-verified worked examples locked in as unit tests before this campaign ran, this is the strongest evidence yet of the three QF_LIA stages: the hand-derived cut formula, the trickiest piece of numerics in any of the three stages, produced zero disagreements against z3 across the full campaign."
    },
    {
      "id": "2026-08-20-qf-lia-real-world-benchmark-evaluation",
      "started_at": "2026-08-20",
      "recorded_at": "2026-08-20",
      "kind": "benchmark",
      "scope": "First evaluation of QF_LIA stages 1-3 against real-world SMT-LIB QF_LIA benchmarks (sandbox/non-incremental/QF_LIA, 13,306 files, 32 families) rather than synthetic FuzzSMT fuzzing -- a 428-file size-stratified representative sample (up to 15 files/family, evenly spaced by size percentile) run against both primo and z3.",
      "commit": "0c8314d",
      "branch": "qf-lia-branch-and-bound",
      "environment": {
        "type": "local"
      },
      "commands": {
        "sample": "scratchpad build_sample.py (not committed): evenly-spaced-by-size-percentile sampling per family",
        "run": "scripts/bench_qf_uf_full.py --root sandbox/non-incremental/QF_LIA --manifest <428-file list> --solver ./build/primo --timeout 120 (and again with z3 as the solver)"
      },
      "results": {
        "primo": "gap analysis by family showed most of the solved-rate gap vs z3 was ordinary timeouts/incompleteness (branch-and-bound node limit), EXCEPT the convert family: 11 wrong `unsat` answers on `:status sat` instances, all fast (not timeouts) -- the only family with any wrong answers at all.",
        "root_cause": "Two soundness bugs sharing one cause: PreparedLraTheory's scale-canonicalization (item H1b) can make a compound atom's slack variable represent the original integer polynomial divided by a large non-unit scale (2^32 for convert's bit-position-weighted terms), so the slack is not itself integer-valued -- but bound_assertion()'s is_integer strict-bound tightening and gcd_inconsistent_row's free-variable-ranges-over-Z assumption both applied to it unconditionally anyway. See docs/qf-lia-branch-and-bound.md's bug 3 (under 'Where integer strictness actually gets handled') and bug 4 (under 'GCD-consistency')."
      },
      "artifacts": "results/qflia-sample-eval/, results/qflia-sample-eval-z3/ (gitignored, local only)",
      "evidence_status": "superseded-by-fix",
      "outcome": "Found a genuine, real-world-triggered soundness bug that ~14,000+ cumulative FuzzSMT-generated cases across three separate Slurm campaigns (stages 1, 2, 3, each independently verified 'zero wrong answers') never caught -- see the fix commits and docs/qf-lia-branch-and-bound.md's 'Real-world benchmark evaluation and the fuzzing gap' section for the fix and the root-cause analysis of why fuzzing missed it."
    },
    {
      "id": "2026-08-20-qf-lia-scale-canonicalization-fix-slurm-verification",
      "started_at": "2026-08-20",
      "recorded_at": "2026-08-20",
      "kind": "fuzz",
      "scope": "Verification of the fix for the real-world-benchmark-evaluation bug above: three commits on qf-lia-branch-and-bound -- (1) bound_assertion()'s is_integer scale fix + gcd_inconsistent_row's integer_vars fix (commit 9884328), (2) a latent delta-infinitesimal bug in branch_and_bound/lia_gomory_cuts.cpp exposed by fix (1) and found via local wide-bitwidth FuzzSMT fuzzing during this same verification pass, not the real-world benchmarks (commit 4bed60c). Verification: full local re-check of the convert family, local FuzzSMT smoke fuzzing at default and wide-bitwidth parameters (both fixed and, for comparison, the pre-fix binary via a git worktree at 0c8314d), then the full Slurm gate.",
      "commit": "4bed60c",
      "branch": "qf-lia-branch-and-bound",
      "environment": {
        "type": "SLURM",
        "host": "llm2smt-slurm",
        "workdir": "primo-cadical-profile",
        "job": "127465 (8 shards x 500, commit 9884328, fix 1 only -- FAILED, 23 solver-error crashes from the not-yet-found bug 4/delta-infinitesimal issue); 127473 (8 shards x 500, commit 4bed60c, both fixes -- clean)"
      },
      "commands": {
        "sync": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/llm2smt_slurm_ssh_config --remote llm2smt-slurm --remote-dir /home/janotmik/primo-cadical-profile",
        "submit": "sbatch --export=ALL,PRIMO_WORKDIR=...,PATH=.../contrib/local/bin:$PATH scripts/slurm_qf_lia_model_fuzz_gate.sbatch",
        "local_convert_recheck": "for f in sandbox/non-incremental/QF_LIA/convert/*.smt2 with a declared :status: compare ./build/primo's answer against it",
        "local_fuzz_default": "PATH=contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --logic QF_LIA --solver ./build/primo --refs z3 --count 500 --seed 42",
        "local_fuzz_wide_bitwidth": "same, --fuzzer-args '-mbw 1 -Mbw 32 -mv 2 -Mv 8 -mc 2 -Mc 8' --seed 7, run against both the fixed binary and (via a git worktree at 0c8314d) the pre-fix binary for comparison"
      },
      "results": {
        "job_127465": "All 8 array tasks FAILED (sacct ExitCode 1:0) -- 23 solver-error entries (Rational division by zero) per shard's model-validation summary.csv, root-caused to lia_gomory_cuts.cpp's apply_one_cut computing f0=0 for a basic variable whose value carried a nonzero infinitesimal with an already-integer rational part; fixed (commit 4bed60c) before resubmitting.",
        "job_127473": "All 8 array tasks COMPLETED (ExitCode 0:0). Answer-differential: 3898 PASS, 207 benign timeouts, 3 benign UNKNOWN_INVOLVED, zero OUR_SAT_REF_UNSAT/OUR_UNSAT_REF_SAT/REF_DISAGREEMENT (direct grep across all 8 shard logs). Model validation: zero solver-error across all 8 shards' summary.csv.",
        "convert_family_full_recheck": "303/303 files with a declared :status answered correctly (0 wrong), not just the 2 originally-found repro files or the 428-file sample.",
        "fuzzing_gap_evidence": "500 cases at FuzzSMT's QF_LIA defaults (maxBW=4, maxNumVars=3) against the PRE-FIX binary (0c8314d, rebuilt in a separate git worktree): zero disagreements -- confirms the default fuzz parameters structurally cannot reach this bug class, matching every prior stage's own 'zero wrong' result. 500 cases at widened parameters (-Mbw 32 -Mv 8 -Mc 8) against the same pre-fix binary: also zero disagreements -- an honest negative result showing the bug needs more than a large coefficient in isolation (see docs/qf-lia-branch-and-bound.md's fuzzing-gap section for the full analysis); the same wide-bitwidth batch against the FIXED binary is what surfaced the delta-infinitesimal crash instead."
      },
      "artifacts": "remote:primo-cadical-profile/fuzz-results/qf-lia-model-gate-127465/ (failed run), remote:primo-cadical-profile/fuzz-results/qf-lia-model-gate-127473/ (clean run)",
      "evidence_status": "slurm-complete-current",
      "outcome": "Both the original real-world-benchmark bug and the delta-infinitesimal bug it exposed are fixed and verified sound at full campaign scale (4000 Slurm cases, zero wrong answers, zero crashes, zero model errors) plus a full recheck of the real-world family that originally found the first bug. The fuzzing-gap investigation confirms FuzzSMT's default QF_LIA parameters are structurally unable to reach this bug class (not bad luck across three prior 'zero wrong' campaigns), and that widening parameters alone is not a reliable substitute for a real-benchmark-derived seed corpus -- see docs/qf-lia-branch-and-bound.md's 'Real-world benchmark evaluation and the fuzzing gap' section for the actionable next step (not implemented this session)."
    },
    {
      "id": "2026-08-20-qf-lia-mutation-fuzz-gate-slurm-verification",
      "started_at": "2026-08-20",
      "recorded_at": "2026-08-20",
      "kind": "fuzz",
      "scope": "Closes the actionable gap the prior entry flagged: a real QF_LIA seed corpus (benchmarks/seeds/qf_lia_division, generated from sandbox/non-incremental/QF_LIA, 61 seeds/32 families, gitignored) plus an opfuzz task and two YinYang/typefuzz tasks added to scripts/slurm_qf_lia_model_fuzz_gate.sbatch alongside its existing FuzzSMT-only stage, with restricted mutation configs (benchmarks/fuzz-configs/qf_lia_{operator_mutations,typefuzz}.txt). First real run (job 127488) found two new wrong-answer disagreements the stage was added specifically to catch; fixed (commit b728f62, 'Fix gcd_inconsistent_row's Z-domain assumption for row terms, not just the basic variable' -- see docs/qf-lia-branch-and-bound.md's bug 5 under GCD-consistency / bug 4 under Fuzzing) and reverified clean (job 127511).",
      "commit": "b728f62",
      "branch": "qf-lia-branch-and-bound",
      "environment": {
        "type": "SLURM",
        "host": "llm2smt-slurm",
        "workdir": "primo-cadical-profile",
        "job": "127488 (11 tasks: 8 FuzzSMT shards + 1 opfuzz + 2 typefuzz, commit e8b2bbf, pre-bug-5-fix -- opfuzz found 2 wrong-answer bugs); 127511 (same 11-task layout, commit b728f62, post-fix -- clean)"
      },
      "commands": {
        "seed_corpus": "python3 scripts/build_fuzz_seed_corpus.py --root sandbox/non-incremental/QF_LIA --out benchmarks/seeds/qf_lia_division --per-family 2 --max-bytes 200000 (run locally, staged onto the remote workspace directly via scp -r since sandbox/ is 7.7GB and not synced -- see the 'corpus needs re-staging after every sync' note below)",
        "sync": "python3 scripts/slurm_prepare_benchmark_workspace.py --ssh-config /tmp/llm2smt_slurm_ssh_config --remote llm2smt-slurm --remote-dir /home/janotmik/primo-cadical-profile",
        "submit": "sbatch --export=ALL,PRIMO_WORKDIR=...,PATH=.../contrib/local/bin:.../.venv-yinyang/bin:$PATH scripts/slurm_qf_lia_model_fuzz_gate.sbatch"
      },
      "results": {
        "job_127488_fuzzsmt": "3916 PASS, zero wrong answers, zero model-error -- consistent with every prior FuzzSMT-only campaign.",
        "job_127488_opfuzz": "Found 2 disagreements (primo unsat, z3 sat), both from calypto-family seeds, both minimizing to the same shape: (assert (distinct (* 2 dz) (ite true 1 1))). Independently hand-verified: z3 correct (dz=1 satisfies it), primo wrong.",
        "job_127488_typefuzz": "0 bugs (both tasks); typefuzz is markedly slower per-seed than opfuzz on this corpus (deeply nested-let seeds like the Averest family are CPU-bound-slow to process, not hung -- see docs/qf-lia-branch-and-bound.md), so its effective coverage within the 1500s budget is lower.",
        "job_127511_fuzzsmt": "3907 PASS, 190 benign timeouts, 1 benign UNKNOWN_INVOLVED, zero wrong answers. Model validation: 3482 pass, 454 correctly not-sat, 61 benign timeouts, 3 benign solver-unknown, zero model-error.",
        "job_127511_opfuzz": "16,662 solver calls, zero bugs.",
        "job_127511_typefuzz": "0 bugs (both tasks)."
      },
      "artifacts": "remote:primo-cadical-profile/fuzz-results/qf-lia-model-gate-127488/ (bugs found), remote:primo-cadical-profile/fuzz-results/qf-lia-model-gate-127511/ (clean)",
      "evidence_status": "slurm-complete-current",
      "outcome": "The mutation-fuzzing gap identified in the prior entry is closed and immediately paid for itself: its first real run found a genuine wrong-answer bug (bug 5/4, an incomplete fix of the prior GCD-consistency bug) that three separate FuzzSMT-based Slurm campaigns and the prior entry's own targeted wide-bitwidth fuzzing had all missed. After the fix, a full campaign rerun is clean across all three stage types (FuzzSMT answer-differential + model validation, opfuzz, typefuzz). Operational note for future sessions: scripts/slurm_prepare_benchmark_workspace.py only syncs tracked HEAD files, so a gitignored corpus like benchmarks/seeds/qf_lia_division gets silently wiped by any *subsequent* sync (not just the first) -- re-stage it (scp -r) after every sync that follows staging it, and check a mutation task's log for 'seed corpus ... N files' before trusting a 'clean' result."
    },
    {
      "id": "2026-08-20-qf-lia-solved-constant-substitution",
      "started_at": "2026-08-20",
      "recorded_at": "2026-08-20",
      "kind": "feature",
      "scope": "docs/open-leads.md lead 12a: audited every preprocessing pass QF_LIA's blanket preprocessing_mode=Off disables for Int-safety, following a z3 statistics comparison (lead 12) that found primo doing 210-285x z3's decisions/conflicts on two worst-gap-family instances. Implemented and enabled by default the one pass confirmed safe: bare-form solved-constant substitution (x=t, x not occurring in t, pure syntactic replacement). Attempted arithmetic_atom_canonicalization too; reverted after the project's own test suite caught it producing an unsound rewrite for Int (primitive_integer_scale reduces already-integer coefficients by their gcd, exact for Real but not for Int without ceil/floor rhs tightening).",
      "commit": "12893e3",
      "branch": "qf-lia-branch-and-bound",
      "environment": {
        "type": "local"
      },
      "commands": {
        "test": "ctest --test-dir build (18 suites)",
        "fuzz": "PATH=contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --logic QF_LIA --solver ./build/primo --refs z3 --count 500 --timeout 10 --seed 99",
        "convert_recheck": "full local recheck of sandbox/non-incremental/QF_LIA/convert against its declared :status"
      },
      "results": {
        "bug_found_by_this_change's_own_testing": "build_qf_lia_model defaulted an eliminated variable's model value to 0 instead of resolving it from the substitution that replaced it -- caught immediately by qf_lia_solver_tests.cpp's trivially_sat_needs_no_branching. Fixed by threading (variable, definition) pairs through solve_qf_lia/solve_qf_lia_impl/build_qf_lia_model and adding evaluate_qf_lia_model_term, an Int-sorted analogue of the existing QF_LRA evaluate_real_model_term.",
        "bug_found_and_reverted": "arithmetic_atom_canonicalization made gcd_uncatchable_divergent_system_hits_the_node_limit fail with 'Int literal must be an integer value' (a real, independently-fixed sort bug in canonical_linear_side's mk_rational call) and, once that was fixed, still produced an unsound rewrite for Int via primitive_integer_scale's gcd reduction. Reverted; flag stays off for QF_LIA.",
        "test_suite": "18/18 suites pass, including a new regression test (chained_solved_constant_substitution_reconstructs_the_model) and the existing gcd_uncatchable_divergent_system_hits_the_node_limit (now also the regression test for the atom-canonicalization revert).",
        "fuzzing": "500 local FuzzSMT cases vs z3, seed 99: zero disagreements.",
        "convert_family_recheck": "0 wrong, matching the post-fix baseline from the prior two run-log entries.",
        "performance_effect_on_motivating_instances": "none measurable -- prime-cone/prime_cone_unsat_6.smt2 and calypto/problem-002267.cvc.1.smt2 (this lead's own worst-case evidence) still time out with unchanged pivot/decision counts. Solved-constant substitution is a real but narrow win (fewer tableau variables/rows on formulas with actual x=t definitions), not the lever those two files need -- see lead 12c/12d for what likely is."
      },
      "artifacts": "none beyond the code change and doc updates",
      "evidence_status": "local-complete-current",
      "outcome": "A small, genuinely safe preprocessing capability shipped for QF_LIA, and the process of shipping it caught two real bugs before they reached anyone (one in the new code's own model reconstruction, one in a 6-year-old shared helper function never previously exercised with an Int atom). No measurable performance win on the specific instances that motivated this lead -- consistent with lead 12's own ranking, which named search-time integer inference (12c) and conflict-clause generalization (12d) as the larger levers, not preprocessing."
    },
    {
      "id": "2026-08-21-qf-lia-conflict-generalization",
      "started_at": "2026-08-21",
      "recorded_at": "2026-08-21",
      "kind": "feature",
      "scope": "docs/open-leads.md lead 12d. A fresh-eyes review of the QF_LIA code, backed by an instrumented build over a per-family sample (3 files/family, 94 files, 10s), found that solve_qf_lia_impl was discarding the Farkas-style conflict certificate LraTableau already returns and rebuilding a lemma from every arithmetic atom in the problem instead. Replaced that coarse clause with the integer stages' own derivation, via a new LiaExplanation accumulator threaded through GCD-consistency, Gomory cuts, and branch-and-bound.",
      "commit": "5ff5bfd",
      "branch": "qf-lia-branch-and-bound",
      "environment": {
        "type": "local"
      },
      "commands": {
        "test": "ctest --test-dir build (19 suites, one new: primo_lia_explanation_tests)",
        "lint": "make lint",
        "fuzz": "PATH=contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --logic QF_LIA --solver ./build/primo --refs z3 --count 400 --timeout 10 --seed {4021,5150,6271}",
        "ab": "per-family sample (3 files/family, 94 files, 10s), same binary, --no-lia-conflict-generalization as the control"
      },
      "results": {
        "measurement_that_motivated_it": "Instrumented counters over the 94-file sample: 25,270 outer SAT rounds, 25,015 of them (99%) closed by a Gomory cut proving the assignment integer-infeasible, each blocked by a maximal-size clause. calypto/problem-001542 emitted a 219-literal clause on each of 6,528 rounds while the tableau conflict it discarded was 5 literals and the cut's antecedents were 4 bounds; convert/convert-jpg2gif-query-1141 emitted 1,266 literals on each of 19,630+ rounds against a 5-literal conflict and ~19 antecedent bounds -- 28M literals of clause in 20 seconds, and it timed out.",
        "root_cause": "apply_gomory_cuts collapsed a std::vector<sat::Lit> conflict to bool; gcd_inconsistent_row returned only a row id; try_branch returned only a feasibility flag. QF_LRA's check_lra_theory_in_place has always used the same tableau's conflict directly as its clause. The single obstruction was that every conflict contained exactly one sat::Lit{0}, the synthetic reason a cut threshold or branch split bound is asserted with, so the certificate could not be forwarded verbatim.",
        "instance_effect": "calypto/problem-001542: unsat 1.10s -> 0.02s (6,528 rounds -> 2). calypto/problem-001553: unsat 0.86s -> 0.02s. convert/convert-jpg2gif-query-1141: unknown at 60s -> unsat 0.04s (19,630+ rounds -> 6). Zero generalization fallbacks on any of them.",
        "test_suite": "19/19 suites pass. New primo_lia_explanation_tests (11 cases) covers the synthetic-reason drop, dedup/ordering, per-stage antecedent recording, and the only-names-real-reasons property generalized_lia_lemma depends on. Two new end-to-end cases in qf_lia_solver_tests.cpp pin the narrowing (8-literal coarse clause vs 4-literal derivation) and that the flag changes no answers.",
        "fuzzing": "1,200 local FuzzSMT cases vs z3 across seeds 4021/5150/6271: 1,199 PASS, 1 UNKNOWN_INVOLVED, zero disagreements.",
        "lint": "make lint is clean (exit 0). It had 17 pre-existing violations before this change; the files this change touches were formatted, and the last two (in tests/unit/lia_gcd_consistency_tests.cpp, untouched by this change) were fixed on request.",
        "safety_design": "generalized_lia_lemma() checks that every literal of the derived explanation already appears in the coarse clause and falls back otherwise. That containment test is what makes the change incapable of turning a correct answer into a wrong one: it rules out both a literal that is not blocking for the current assignment (which would fail to exclude it and spin the outer loop) and a leaked synthetic literal. An empty explanation also falls back.",
        "ab_on_the_per_family_sample": "94 files, 10s, same binary with --no-lia-conflict-generalization as the control. Coarse: 53 solved, PAR2 8.92, 0 wrong. Generalized: 54 solved, PAR2 8.69, 0 wrong. One outcome change (convert/convert-jpg2gif-query-1141, unknown -> unsat), no file regressed from solved to unsolved, and 47x/42x speedups on the two calypto instances. Modest at sample level by design: an instrumented count found 24 of 36 timeouts in this sample never reach the integer layer at all (zero LIA rounds in 10s), so this lever cannot touch them.",
        "full_corpus_baseline_for_comparison": "Slurm job 127709 (all 13,306 files, 60s, one array task per solver-shard) ran the PRE-generalization binary and is the baseline to re-measure against: primo 8,704 solved / 0 wrong / PAR2 43.14, cvc5 9,126 solved / 0 wrong / PAR2 38.10 (166 files short at aggregation time), z3 12,147 solved / 0 wrong / PAR2 13.09. primo's zero wrong answers across the full corpus confirms the post-fix soundness baseline at scale."
      },
      "artifacts": "src/theory/arithmetic/lia_explanation.{hpp,cpp} (new), tests/unit/lia_explanation_tests.cpp (new), CheckSatOptions::lia_conflict_generalization + --no-lia-conflict-generalization, four :lia.* statistics.",
      "evidence_status": "local-complete-current",
      "outcome": "The lead was estimated 'large, needs its own design note' and turned out to be small: the explanation did not need building, only forwarding with one synthetic literal resolved away. The estimate was wrong because it assumed the machinery was missing rather than checking what the existing machinery already returned -- worth remembering for lead 12c, where the same question applies. Full-corpus re-measurement against the pre-generalization baseline (Slurm job 127709, which ran the old binary) is the natural next step."
    },
    {
      "id": "2026-08-21-qf-lia-conflict-generalization-full-corpus",
      "started_at": "2026-08-21",
      "recorded_at": "2026-08-21",
      "kind": "evaluation",
      "scope": "Full-corpus re-evaluation of conflict generalization (commit 5ff5bfd) over all 13,306 QF_LIA files at 60s. Ran BOTH arms of the new binary -- generalization on and --no-lia-conflict-generalization -- rather than only the new one, so the coarse arm acts as a same-binary control against the pre-change baseline (Slurm job 127709) and any delta is attributable to the flag rather than to drift. z3 and cvc5 were not rerun: neither changed, so job 127709's CSVs are the reference.",
      "commit": "0e10f30",
      "branch": "qf-lia-branch-and-bound",
      "environment": {
        "type": "slurm",
        "job": "127949",
        "array": "0-159 (2 arms x 80 shards)",
        "elapsed": "01:09:32"
      },
      "commands": {
        "submit": "sbatch --array=0-159 --export=ALL,PRIMO_WORKDIR=...,'PRIMO_COMPARE_SOLVERS=primo-generalized=build-slurm-rel/primo --quiet;primo-coarse=build-slurm-rel/primo --quiet --no-lia-conflict-generalization' scripts/slurm_qf_lia_full_solver_compare.sbatch"
      },
      "results": {
        "table": "primo-base (127709, pre-change) 8,704 solved / PAR2 43.14. primo-coarse (new binary, flag off) 8,706 / 43.12 -- reproduces the baseline within noise, validating the control. primo-generalized 8,725 / 42.94. cvc5 9,239 / 38.13. z3 12,147 / 13.09. All five arms: 0 wrong across all 13,306 files.",
        "net_effect": "+19 solves over the same-binary control (30 gained, 11 lost), PAR2 43.12 -> 42.94. Zero answer disagreements between the two arms.",
        "churn_is_asymmetric": "27 of the 30 gains solve in under 5s in the generalized arm (many at 0.02s), i.e. decisive rather than boundary. 9 of the 11 losses had already taken over 45s in the coarse arm (one at 60.06s, exactly at the wall), i.e. timeout-boundary noise from a changed search trajectory. Gains are concentrated in calypto (25), the family the original instrumentation pointed at.",
        "one_genuine_regression": "rings_preprocessed/ring_2exp4_4vars_3ite_unsat.smt2: 0.18s coarse -> unsolved at 300s generalized, reproduced locally. Diagnosed: coarse does 995 SAT solve calls in 0.18s (~5,500 rounds/s); generalized does 814 calls in 300s (~2.7 rounds/s). The generalized arm needs FEWER rounds (the lemma is doing its logical job) but each round is roughly 2,000x more expensive. Lemma size 91 literals coarse vs 23 generalized -- on this family the coarse clause is nearly inert and propagates almost nothing, while a 23-literal clause drives heavy unit propagation and conflict analysis in CaDiCaL. A stronger lemma is not free, and on a family whose rounds are otherwise extremely cheap the tradeoff inverts.",
        "complementarity": "primo-generalized solves 553 files cvc5 does not, while trailing cvc5 by 514 overall (8,725 vs 9,239) -- the two are strongly complementary, relevant to open-leads.md's Complementarity section.",
        "headroom": "The gap to cvc5 barely moved (-535 -> -514). Consistent with the pre-change instrumentation finding that 24 of 36 sampled timeouts never execute a single LIA round, so this lever cannot reach the bulk of the remaining 4,581 unsolved files."
      },
      "artifacts": "results/qf-lia-full-compare-127949/{primo-generalized,primo-coarse} on the Slurm remote; baseline results/qf-lia-full-compare-127709/{primo,z3,cvc5} preserved.",
      "evidence_status": "slurm-complete-current",
      "outcome": "Conflict generalization is a real but modest corpus-level win (+19 solves, PAR2 -0.18) on top of decisive per-instance wins in the family it targets. It does not close the cvc5 gap, and it is not uniformly positive: the rings regression shows that trading a long inert clause for a short propagating one costs real time when rounds are already cheap. A size-guard refinement (prefer the derived lemma only when it is substantially smaller, or when the coarse round rate is low) is the obvious follow-up, and is not attempted here."
    },
    {
      "id": "2026-08-21-qf-lia-patching",
      "started_at": "2026-08-21",
      "recorded_at": "2026-08-21",
      "kind": "feature",
      "scope": "QF_LIA stage 5: patching, Bjorner & Nachmanson Sect. 4.1, the first layer of that paper's integer waterfall and the first stage here that tries to FIND an integer model rather than refute a candidate. Prompted by re-reading the paper's Section 4 (now summarized in docs/papers/arithmetic-solving-in-z3.md), which showed Primo's waterfall started at the paper's third layer.",
      "commit": "509be6b + e322af5",
      "branch": "qf-lia-branch-and-bound",
      "environment": {
        "type": "local"
      },
      "commands": {
        "test": "ctest --test-dir build (20 suites, one new: primo_lia_patching_tests)",
        "lint": "make lint",
        "fuzz": "PATH=contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --logic QF_LIA --refs z3 --count 400 --timeout 10 --seed {7331,8442,9553}",
        "model_validation": "direct z3 check: pin every declared constant to Primo's reported value, re-check the original constraints",
        "ab": "per-family sample (94 files, 10s), same binary, --lia-patch-limit 0 as the control"
      },
      "results": {
        "why_patching_over_cubes": "Cubes (Sect. 4.2) is cheaper to build and needs no tableau change, but a sampled count found 249 of 300 instances contain equality atoms. An asserted equality fixes a slack, and tightening a fixed slack in both directions makes the cube system contradictory, so cubes would be inconclusive on most rounds without also building z3's difference/octagon twist. Patching is equality-insensitive.",
        "ab": "94-file sample, same binary. Patching off: 54 solved (26 sat, 28 unsat), PAR2 8.72. Patching on: 58 solved (30 sat, 28 unsat), PAR2 7.84. +4 gained, 0 lost, 0 wrong in both arms, 0 answer disagreements between arms.",
        "gains_are_decisive_and_on_target": "All four gains are satisfiable instances and all four are decisive rather than boundary -- 10s timeout to 0.01-0.62s: prime-cone/prime_cone_sat_10, prime_cone_sat_11, and two CAV_2009_benchmarks/coef-size/size-100 instances. That matches the stage's target exactly: the full-corpus split puts Primo ahead of cvc5 by 147 on unsat and 661 behind on sat.",
        "two_traps_found_by_testing_the_paper_example": "Building Bjorner & Nachmanson's own Example 3 as a test caught two things the prose leaves implicit. (1) Scoring a move by |delta| alone oscillates: with rows y = x/2 and z = x/3, the nearest fix for y moves x to 4 and breaks z, and the nearest fix for z moves it straight back. Candidates are scored globally instead -- by how many Int variables end up integral -- and only strictly improving moves are taken, which is the same monotonicity argument diversify_shared_model already makes and which also gives termination and no-worse-than-input for free. (2) Floor and ceil alone are too narrow: Example 3's answer x = 6 corresponds to y = 3, two integers above y's current 3/2, so a bounded window is searched.",
        "activity": "Over the 94-file sample: 310 patch sweeps, 660 variables patched, 26 rounds fully integralized, moves taken on 22 of 94 files.",
        "model_validation": "The failure mode for patching is a wrong MODEL, not a wrong answer, so model validation is the centre of gravity. Validated 142 corpus instances covering every file where patching moved something: 66/66 sat models confirmed, zero wrong models. That check used z3 directly rather than Dolmen, and the reason is NOT a Dolmen limitation: Dolmen does validate QF_LIA Int models, and the 39/45 model-error episode recorded in slurm_qf_lia_model_fuzz_gate.sbatch was its strict-mode grammar check rejecting FuzzSMT's (* <let-bound-literal> <compound>) terms, already fixed there with --dolmen-arg=--strict=false. What happened here is narrower: Dolmen is not installed in this development environment and make contrib-dolmen fails locally (opam exit 20), so validate_model.py fell through to its z3 Real-only fallback and reported validation-unavailable. The authoritative check remains the Slurm model fuzz gate, where Dolmen is present; the z3 check is a local stand-in, not a replacement.",
        "fuzzing": "1,200 local FuzzSMT cases vs z3 across seeds 7331/8442/9553: 1,199 PASS, 1 TIMEOUT, zero disagreements.",
        "test_suite": "20/20 suites pass. New primo_lia_patching_tests (8 cases) including the paper's Example 3 verbatim, with a feasibility assertion after every patch. Three new end-to-end cases, one of which pins the gain to patching by using lia_branch_limit = 0, where branch_and_bound provably cannot take a node.",
        "tableau_change": "First QF_LIA stage to touch LraTableau, deliberately and minimally: set_nonbasic_value, a narrow public wrapper over the existing private update(). Its comment carries the crux -- it is not trailed outside PivotingRule::Soi, so a move cannot be undone by pop(); safe only because solve_qf_lia_impl's lia_tableau is a per-round copy.",
        "incidental_fix": "scripts/validate_qfuf_models_with_dolmen.py crashed on the first timed-out instance: subprocess.TimeoutExpired does not honour text=True, so its stdout/stderr are bytes while write_text() expects str. Never seen before because the small fuzz cases the harness was built against do not time out. Fixed separately (commit a625062).",
        "correction_2026_08_21": "An earlier revision of this entry and of docs/qf-lia-branch-and-bound.md stated that validate_model.py 'cannot do this job for QF_LIA' because 'Dolmen aborts on Int models'. That was wrong and is corrected above: Dolmen handles QF_LIA fine with --strict=false, and the fallback was caused by the binary being absent locally. Commit e322af5's message carries the same wrong claim and cannot be amended after the fact.",
        "documentation_audit_2026_08_21": "Audited on request. Three gaps found and closed. (1) The z3 model check cited as evidence lived only in a scratch directory, so the result was not reproducible; it is now scripts/check_qf_lia_models.py, re-run to confirm it reproduces 66/66 exactly, and its docstring states plainly that Dolmen is the authoritative checker and this is only for environments where Dolmen is absent. (2) docs/open-leads.md still described lead 12c as blocked on a paper note that now exists; it is re-ranked and split, with new sub-leads 12e (extended GCD test) and 12f (patching, done), and the cube test recorded as needing z3's octagon twist as a prerequisite rather than merely being unstarted. (3) The fuzz seed corpus had been wiped from the Slurm workspace by this stage's own sync -- the standing gitignored-content gotcha -- which would have made the model gate fail its require_seed_corpus check; regenerated (61 seeds, 32 families) and the Dolmen-backed gate submitted as job 128295."
      },
      "artifacts": "src/theory/arithmetic/lia_patching.{hpp,cpp} and lia_integer_values.hpp (new), tests/unit/lia_patching_tests.cpp (new), LraTableau::set_nonbasic_value, CheckSatOptions::lia_patch_limit + --lia-patch-limit, three :lia.patch-* statistics.",
      "evidence_status": "local-complete-current",
      "outcome": "A strictly positive result on the sample -- 4 gained, 0 lost, all on satisfiable instances, all decisive -- from the layer the paper puts first and Primo had skipped. Full-corpus A/B against the stage-4 baseline (Slurm 127949) is the next step; z3/cvc5 do not need rerunning."
    },
    {
      "id": "2026-08-21-qf-lia-patching-verification",
      "started_at": "2026-08-21",
      "recorded_at": "2026-08-21",
      "kind": "evaluation",
      "scope": "Cluster verification of QF_LIA stage 5 (patching): the Dolmen-backed model fuzz gate that the local environment could not run, and the full-corpus A/B of both arms of the same binary. Also the first run of that gate for any QF_LIA stage since patching landed.",
      "commit": "a1fe9dd",
      "branch": "qf-lia-branch-and-bound",
      "environment": {
        "type": "slurm",
        "jobs": "128295 (model gate, array 0-10), 128125 (full-corpus A/B, array 0-159)"
      },
      "results": {
        "model_gate_dolmen": "Job 128295, Dolmen 0.10 on the cluster. 4,000 model-validation rows: 3,494 sat models validated by Dolmen and ALL PASS, 449 unsat (nothing to validate), 57 solver timeouts. Zero non-pass, non-benign outcomes. validator=dolmen on every validated row, confirming the --dolmen-arg=--strict=false path works and that the earlier local validation-unavailable result was purely the binary being absent, not a Dolmen limitation.",
        "model_gate_answer_fuzzing": "Same job's FuzzSMT shards: 4,000 cases, 3,919 PASS and 81 TIMEOUT, zero disagreements. The 81 files written to the shards' bugs/ directories are timeouts saved for inspection, not wrong answers -- worth stating because the directory name invites the opposite reading. The opfuzz task and both typefuzz tasks produced 0 bug files (each time-boxed at 1500s, so seed coverage is not established).",
        "full_corpus_ab": "Job 128125, all 13,306 files at 60s, both arms of the same binary. Unpatched control: 8,727 solved (5,867 sat, 2,860 unsat), PAR2 42.91 -- reproduces the stage-4 baseline of 8,725, validating the control. Patched: 9,027 solved (6,151 sat, 2,876 unsat), PAR2 40.20. +300 net (356 gained, 56 lost), 0 wrong in both arms, 0 answer disagreements.",
        "gains_are_on_target": "331 of the 356 gains are satisfiable instances, which is exactly the population the stage targets and the one the entire cvc5 deficit sat in. The gap to cvc5 narrows from -535 to -212; primo's sat count moves 5,867 -> 6,151 while its unsat count stays ahead of cvc5 (2,876 vs 2,712). Gains concentrate in 20180326-Bromberger (112), CAV_2009_benchmarks (64), convert (57), slacks (56), dillig (34), prime-cone (24).",
        "losses_are_a_real_cost": "280 of 356 gains solve in under a second (median 0.20s), but of the 56 losses, 19 were solved in under a second by the unpatched arm and only 12 were already past 45s. So patching occasionally sends a trivially-easy instance somewhere much worse -- the same trajectory-change pathology stage 4's rings regression showed. Bounding that (e.g. declining to patch when the round was already cheap) is the obvious follow-up and was not attempted.",
        "comparison_scope": "z3 and cvc5 were not rerun; neither changed, so job 127709's CSVs remain the reference."
      },
      "artifacts": "results/qf-lia-full-compare-128125/{primo-patched,primo-unpatched} and fuzz-results/qf-lia-model-gate-128295 on the Slurm remote; baselines 127709 and 127949 preserved.",
      "evidence_status": "slurm-complete-current",
      "outcome": "Patching is the largest single QF_LIA gain measured so far: +300 solves against a same-binary control, against +19 for stage 4's conflict generalization, and it closes 60% of the gap to cvc5 in one layer. The paper put this layer first and Primo had skipped it entirely, which is the substantive lesson -- the gap was found by reading Section 4 properly rather than by more tuning of the layers already built. Model validity is now confirmed by Dolmen at scale rather than by a local stand-in."
    },
    {
      "id": "2026-08-21-qf-lia-gprof-medium-hard",
      "started_at": "2026-08-21",
      "recorded_at": "2026-08-21",
      "kind": "measurement",
      "scope": "gprof profile of ten medium-hard QF_LIA instances (solved in 5-40s per the full-corpus run 128125), taken after stage 5 landed, to find where QF_LIA time actually goes. Full write-up in docs/qf-lia-profile.md.",
      "commit": "67ec6e0",
      "branch": "qf-lia-branch-and-bound",
      "environment": {
        "type": "local",
        "build": "cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_CXX_FLAGS='-pg -O2 -g -DNDEBUG'"
      },
      "results": {
        "build_trap": "The first run used -pg -O2 -g, matching the flags already recorded in the pre-existing build-gprof* directories, and reported Rational::check_invariant as the hottest function in the program at 29.8% of self time. That function is entirely #ifndef NDEBUG and is a no-op in Release, so the result was a pure build artifact -- CMAKE_BUILD_TYPE=None defines no preprocessor symbols, so NDEBUG must be passed by hand. It also inflated total runtime by 56% (153.9s vs 98.5s over the same instances). Rebuilt with -DNDEBUG before drawing any conclusion.",
        "component_split": "98.5 self-seconds over ten runs: Rational/GMP arithmetic 41.0%, CaDiCaL 24.1%, LraTableau 15.2%, LRA propagator glue 10.1%, other 9.5%, and ALL QF_LIA integer stages combined 0.1%.",
        "integer_reasoning_is_not_the_bottleneck": "Patching, GCD-consistency, Gomory cuts, branch-and-bound and conflict generalization together account for 0.06 of 98.5 self-seconds. This independently confirms the earlier instrumented finding that 24 of 36 sampled timeouts never execute a single integer round: further work inside the integer layer cannot move these instances.",
        "hot_path_is_pivot_arithmetic": "Call-graph attribution: Rational::operator* has 844,353,807 calls of which 91.8% come from LraTableau::pivot and 8.0% from LraTableau::update; operator+ has 821,727,887 calls, 58.4% from pivot; operator< has 797,003,808 calls, 55.8% from bound_entails and 27.5% from update_violation_status.",
        "quantified_opportunity": "Rational::operator*'s small-form path runs two binary gcds per call, and gcd(x,1) is 1 by definition, so a denominator of 1 makes the corresponding gcd pure waste. Measured over the same 844,353,807 multiplies: 55.4% have BOTH denominators equal to 1, 1.4% have one, 43.2% genuinely need both. That is 56.1% of all gcd calls avoidable (947.6M of 1.69B) behind a `den_ == 1` test. The distribution is sharply bimodal per instance -- seven of ten instances are 100% both-integer, three are almost entirely fractional -- so this is a large win on integer-coefficient families and a no-op elsewhere, not a uniform speedup.",
        "not_implemented": "The fast path was measured, not built. Rational is used by every logic, so it needs its own verification pass (full suite, QF_LRA regression, differential fuzzing) rather than being folded into an unrelated stage.",
        "correction_fast_path_does_not_pay": "Challenged on whether gcd_u64(a,1) is really expensive, and the answer changed the conclusion. Building the den_==1 fast path and timing it end-to-end against unmodified Release on the same ten instances gives a median 1.03x (range 0.98-1.10x), not the ~13% the call counts imply. Three measurements explain it. (1) gcd_u64(a,1) genuinely has no early exit and costs 4.5 iterations / 9.3 ns at 8 bits rising to 32 iterations / 42 ns at 63 bits, so the premise was sound. (2) But histogramming real operand widths shows the fast path fires exactly where they are tiny: on nec-smt/prp-12-47, where 100% of multiplies are both-integer, 98.3% of numerators are 4 bits or fewer, and gcd(a,1) there is two or three iterations. On dillig/25-28, where operands are 17-24 bits and the gcd is genuinely costly, 96% of multiplies are fractional so the fast path never applies. (3) The two conditions are anti-correlated, which is the whole story: eliminating 55% of gcd CALLS removes far less than 55% of gcd WORK. Recorded as a measured and explained dead end so it is not rediscovered from the profile and retried.",
        "gprof_attribution_cross_checked": "Cross-checked with callgrind, which counts instructions deterministically and has no per-call mcount bias. On dillig/20-20: Rational::operator* 36.3% of instructions, operator+ 24.3%, from_int128_reduced 13.7%, LraTableau::pivot 4.6%, __divti3 (128-bit division) 4.1%. gprof's ranking was therefore right and if anything conservative; the error was in the inference from call counts to recoverable cost, not in the profile. Separately worth knowing: the -pg build is 2.3x slower than Release (34.99s vs 15.19s) and that overhead is charged per call, so gprof shares should be treated as approximate for a workload whose hot functions are called a billion times. perf was unavailable here (perf_event_paranoid = 4).",
        "next_thread": "Rational arithmetic is ~74% of instructions on dillig/20-20 and is dominated by the FRACTIONAL case, where the gcds are unavoidable as the code stands. The question worth asking is not how to skip gcds but why so many coefficients are fractional: scale-canonicalization divides each row by a leading coefficient, which is what manufactures them. A primitive-integer row representation would make the both-integer case common rather than exceptional. __divti3 at 4.1% is a second, smaller thread."
      },
      "artifacts": "docs/qf-lia-profile.md; flat and call-graph profiles under the session scratchpad (not committed).",
      "evidence_status": "local-complete-current",
      "outcome": "The QF_LIA bottleneck on medium-hard instances is Simplex pivoting arithmetic, not integer reasoning -- the integer stages are 0.1% of self time, confirmed independently by callgrind. The obvious optimization the profile suggested (a den_==1 fast path in Rational::operator*) was built and measured at ~3%, and the reason it does not pay is itself the useful finding: the gcds it skips are cheap precisely because the operands there are tiny, while the expensive gcds sit in the fractional case where it cannot apply. Also recorded: a gprof build without -DNDEBUG produces a badly misleading profile, which the repository's existing build-gprof* flags would have reproduced."
    },
    {
      "id": "2026-08-22-word-gcd-tuning-and-distribution-warning",
      "started_at": "2026-08-21",
      "recorded_at": "2026-08-22",
      "kind": "feature",
      "scope": "gcd_u64 turned up as a hot spot in the QF_LIA profile. Rewrote it to follow GMP's structure, surveyed the literature that should have been read first, and -- prompted by the question of whether the tuning is benchmark-dependent -- measured the adversarial case, the cost of making it configurable, and the effect on QF_LRA.",
      "commit": "3e35625 + 91e12c9 + 883b6e5",
      "branch": "qf-lia-branch-and-bound",
      "environment": {
        "type": "local + slurm",
        "job": "128402"
      },
      "results": {
        "what_changed": "gcd_u64 now follows GMP 6.3.0's mpn_gcd_1/gcd_11 structure: operand swap, an early b == 1 exit placed before the trailing-zero counts, a Euclidean step gated on a 2^16 magnitude ratio, and a branchless inner loop deriving min/abs from a mask off the sign of u - v. Microbenchmark, ns/call: b==1 4-bit 6.58 -> 0.83 (7.9x), random 16-bit pair 39.55 -> 23.40 (1.7x), random 63-bit 152 -> 72 (2.1x).",
        "literature_was_the_missing_step": "The first pass went to GMP's source without checking the literature, which was the wrong order. The central pathology is documented: Lemire's 2013 GCD benchmark states that when one operand is 1 the naive algorithm returns immediately while the binary algorithm may need many steps, and suggests hybrid strategies for exactly that. We rediscovered it by instrumentation. The current speed record (Bernstein & Yang safegcd) does NOT apply: it buys constant time for multi-limb crypto inversion, and constant time forbids the input-dependent early exits that help us most. std::gcd is not faster than the plain textbook loop. Written up in docs/papers/word-gcd-notes.md.",
        "full_corpus": "Slurm 128402, all 13,306 QF_LIA files at 60s, against job 128125's primo-patched arm (rational.cpp was the only code delta): 9,027 -> 9,034 solved, PAR2 40.20 -> 40.15, 0 wrong, 0 answer disagreements, 7 gained and 0 lost. Total solve time over the 9,027 commonly-solved files 21,472s -> 21,198s (1.013x). Small but strictly positive and free.",
        "distribution_dependence_is_real_and_bounded": "The guards were tuned on one distribution, so the obvious risk is a workload with a different shape. Measured across distributions built to make each guard dead weight: worst case is tiny 4-bit operands with neither equal to 1 and comparable magnitudes, where the shipped form is 0.92x -- an 8% loss. Every other adversarial shape is 1.01x to 1.92x. No cliff exists, because each guard is a single well-predicted compare when it does not fire.",
        "runtime_configurability_rejected_on_measurement": "Making the algorithm selectable behind a function pointer was measured rather than argued about. gcd_u64 is static in an anonymous namespace and inlines into Rational::operator*; dispatching through a pointer prevents that and adds an indirect call, costing +175% on the tuned hot path (0.84 -> 2.32 ns) against +5% on a general 16-bit pair. Paying 175% on the hot path to hedge an 8% loss on a narrow distribution is a bad trade, and it is worst exactly where we are fastest. If it ever must vary, the mechanism should be compile-time (constexpr/template) or a cheaper guard -- runtime dispatch is the one option the measurement rules out.",
        "qf_lra_checked": "Rational is not QF_LIA-only, so QF_LRA was measured rather than assumed: eight instances spanning 0.01s to 58s, minimum of three runs each, original gcd vs shipped. Total 92.36s -> 92.13s (1.002x), individual ratios 0.969x to 1.198x, every answer identical. QF_LRA is neither helped nor harmed -- the win is QF_LIA-specific and the guards cost QF_LRA nothing, which is what the cheap-when-not-fired design predicts.",
        "correctness": "30,251,362 pairs against std::gcd using a harness that extracts the shipped source, plus 5,160,801 more in the committed benchmark. Exhaustive over small pairs, all boundary-value combinations, and randomized across every operand width with b==1, a==b, powers of two, forced trailing zeros and exact multiples injected. Zero mismatches. 20/20 suites pass throughout."
      },
      "artifacts": "tests/bench/word_gcd_bench.cpp (new, not in ctest -- timings are not assertions), docs/papers/word-gcd-notes.md (new), src/util/rational.cpp.",
      "evidence_status": "slurm-complete-current",
      "outcome": "A real but modest win (+7 solves, 1.3% aggregate solve time on QF_LIA, neutral on QF_LRA) from making one function match the settled practical art. The more durable output is the guard rail: the tuning is distribution-dependent, the worst case is bounded at -8%, runtime configurability is measurably the wrong hedge, and tests/bench/word_gcd_bench.cpp re-answers all of it in minutes if the workload ever changes."
    },
    {
      "id": "2026-08-22-qf-lia-paper-technique-audit",
      "started_at": "2026-08-22",
      "recorded_at": "2026-08-22",
      "kind": "measurement",
      "scope": "Full audit of which Bjorner & Nachmanson techniques Primo still lacks, prompted by asking whether more remain. Sections 2 and 3 had never been audited against the implementation -- the existing paper note was written in August 2026 for a QF_LRA/QF_UFLRA-only Primo. Includes the first QF_LIA measurement of row-based bounds propagation, and of the options sandbox/paper.tex's own tuning selected.",
      "commit": "d4f9238",
      "branch": "qf-lia-branch-and-bound",
      "environment": {
        "type": "local"
      },
      "results": {
        "sect_3_2_does_not_apply": "The paper states outright that equality propagation is disabled for pure arithmetic theories, QF_LIA and QF_LRA included. So Sect. 3.2's cheap equal-variable discovery is not a QF_LIA gap at all; it matters only for QF_UFLRA, where Primo has the exact producer rather than the 2024 fast path. Recorded so it is not chased.",
        "sect_3_3_never_measured_on_qf_lia": "Indirect (row-based) bounds propagation is the one paper technique Primo already implements and simply leaves off (lra_row_propagation = false). It has 17 run-log entries of fuzz gates and A/Bs -- every one QF_LRA or QF_UFLRA, none QF_LIA, which is now the fragment where profiling says the bottleneck lives.",
        "row_propagation_does_not_transfer": "Measured on the per-family sample (94 files, 10s), six arms. Default 58 solved / PAR2 7.83. Row propagation at default caps 57 / 8.09. Row + bidirectional 58 / 7.94. Row propagation at the widened caps sandbox/paper.tex's RamParILS tuning selected for primo+ (max-row-size 256, max-fanout 1024 against defaults of 64) 57 / 8.12. --lra-model-phase 55 / 8.42. Both together 56 / 8.37. ZERO gains in any arm, 0 wrong, 0 answer disagreements. Individual losses of 1-3 could be noise; the absence of a single gain across six configurations is not.",
        "tuning_is_fragment_specific": "This is also a result for sandbox/paper.tex: its tuned primo+ configuration is QF_LRA-specific and does not transfer to QF_LIA. Neither lra_row_propagation nor lra_model_phase should be promoted to a global default on this evidence. Worth stating in the paper, since a tuned configuration reads as a better default unless the non-transfer is shown.",
        "still_missing": "Cube test (4.2, deferred behind the difference/octagon twist); extended GCD for bounded-not-fixed rows (4.3, lead 12e); CDCL-integrated branch literals (4.4, which Sect. 2 names as a deliberate design choice and Primo deliberately scoped out); and four Sect. 4.5 cut refinements -- relaxed row-integral rows (the one with measured evidence, the instrumented f_unbounded count), selection by distance to nearest integer, extremum bound deduction, and large-numeral temporary scope -- plus HNF cuts, which are large.",
        "caveat_over_all_of_it": "The gprof/callgrind profile puts every QF_LIA integer stage combined at 0.1% of self time, so none of the remaining Sect. 4 items can move the 4,272 unsolved files. The cost is Rational arithmetic (~41%), CaDiCaL (~24%) and Simplex (~15%). That bounds the expected value of the whole remaining list."
      },
      "artifacts": "docs/papers/arithmetic-solving-in-z3.md gap table and audit.",
      "evidence_status": "local-complete-current",
      "outcome": "Seven or eight paper techniques remain unimplemented, but the profile bounds what any of them can buy. The concrete finding is negative and useful: row-based bounds propagation, the one technique already built and merely disabled, does not help QF_LIA even at the caps the paper's own tuner selected -- so the QF_LRA tuning is fragment-specific and the current defaults are right for QF_LIA."
    },
    {
      "id": "2026-08-25-qf-lra-full-corpus-merge-gate",
      "started_at": "2026-08-25",
      "recorded_at": "2026-08-25",
      "kind": "measurement",
      "scope": "Pre-merge regression gate for qf-lia-branch-and-bound. Everything on the branch except three files is QF_LIA-only, but rational.cpp (gcd_u64), term_manager.cpp and preprocessing.cpp are on every logic's path, and the only QF_LRA evidence for them was eight instances. This is the full QF_LRA division, both arms, before merging to main.",
      "commit": "5700533 vs main a004480",
      "branch": "qf-lia-branch-and-bound",
      "environment": {
        "type": "local",
        "note": "Ran locally on 14 cores rather than on SLURM: /tmp/llm2smt_slurm_ssh_config had been wiped and the cluster host/user are deliberately not recorded in the repository, so the cluster was unreachable. 40 shards, 10 concurrent, 60s timeout, 3GB address-space cap per process to match the --mem=3G the SLURM campaigns use."
      },
      "results": {
        "design": "Arms are the two binaries (main a004480 vs branch 5700533), not two flags -- the merge question is about the whole branch, and diffing only rational.cpp would have missed the term_manager.cpp and preprocessing.cpp deltas. Both arms run inside the same shard back to back, so a shard's two arms see identical machine load, and arm order alternates with shard parity because the first run warms the page cache for the .smt2 file and would otherwise hand the second arm a systematic head start. That control is needed locally and would not be on separate SLURM nodes.",
        "headline": "1,753 files. main: 1,543 solved (936 sat, 607 unsat), PAR2 18.09. branch: 1,545 solved (938 sat, 607 unsat), PAR2 17.97. Zero wrong answers in either arm and ZERO answer disagreements between them. QF_LRA is not harmed by the merge.",
        "churn_is_the_timeout_boundary": "The net +2 is 10 gained and 8 lost, which is churn rather than signal -- and the churn is provably at the cutoff: every one of the 18 files sits between 34.8s and 59.2s against a 60s limit, all in LassoRanker, 2017-Heizmann-UltimateInvariantSynthesis and miplib, families dense with instances that finish just either side of the wire. No file changed answer, and nothing moved from fast to slow or the reverse.",
        "timing": "Over the 1,535 files both arms solve, main 6,125.2s vs branch 6,031.9s (1.0155x). Directionally consistent with the gcd_u64 work but small, and 10-way local parallelism is not a precision timing environment; the answer-agreement result is what this run is for.",
        "four_bad_alloc_rows": "Four LassoRanker/Ultimate files report std::bad_alloc in BOTH arms. That is the 3GB cap this run imposed, not a frontend gap and not a branch regression -- identical files, identical failure, both binaries. They are excluded from neither arm's totals in a way that could bias the comparison.",
        "verdict": "The one unmeasured surface named before the merge is now measured. QF_LRA is neutral-to-slightly-positive, which is what the cheap-when-not-fired design of the gcd guards predicts."
      },
      "artifacts": "results/qf-lra-merge-ab/{main,branch}/shard-*.csv (per-file) and shard-*-summary.csv.",
      "evidence_status": "local-complete-current",
      "outcome": "Clean. Zero wrong answers, zero answer disagreements, +2 solved and PAR2 18.09 -> 17.97 over the full QF_LRA division. The branch does not regress QF_LRA and is safe to merge."
    },
    {
      "id": "2026-08-25-qf-lia-branch-merge-integration-check",
      "started_at": "2026-08-25",
      "recorded_at": "2026-08-25",
      "kind": "measurement",
      "scope": "origin/main had moved 10 commits (the model-filtered QF_UFLRA equality producer) while qf-lia-branch-and-bound was being evaluated, so the merged tree is a combination neither side measured. This checks that the merged binary reproduces the branch's QF_LRA behaviour.",
      "commit": "a459496",
      "branch": "main",
      "environment": {
        "type": "local",
        "note": "8 QF_LRA shards (352 files) at 60s, 8 concurrent, 3GB cap. Note the gate itself ran 10 concurrent -- see the confound below."
      },
      "results": {
        "no_contradictory_answers": "Zero. All 8 answer differences against the branch reference are timeout boundary crossings, where one side reports unknown: 7 files the merged binary solves that timed out before, 1 the reverse. No file changed sat to unsat or unsat to sat, and the merged binary produced no wrong answers.",
        "the_gain_is_a_load_confound_not_a_result": "On the overlap the merged binary solves 303 against the branch's 297 and needs 865s where the branch needed 982s. This run used 8 concurrent processes and the gate used 10, so the merged binary simply had a quieter machine. That difference is not evidence of a speedup and must not be quoted as one.",
        "a_vacuous_pass_was_caught": "The first attempt at this check reported ANSWER MISMATCHES: 0 while having produced zero CSV files -- the xargs wrapper spawned shells that never inherited the output directory, every shard wrote nowhere, and the wrapper still exited 0. An empty comparison looks exactly like a clean one. The rerun reports its own CSV count and failure flag in the completion line so an empty run cannot pass silently again.",
        "merge_conflicts": "Three, all resolved by keeping both sides: lra_tableau.cpp (model_filtered_unit_equalities and set_nonbasic_value added at the same point, independent), run-log.json (both appended; merged to 538+6+15=559), and arithmetic-solving-in-z3.md (both rewrote 'Resulting priority'; kept upstream's newer QF_UFLRA verdict beside the branch's QF_LIA half). The merge also made one of the branch's own audit rows stale -- Sect. 3.2 said Primo has the exact producer 'rather than' the 2024 fast path, and upstream now has both -- so that row was refreshed."
      },
      "artifacts": "results/qf-lra-merge-ab/postmerge/shard-*.csv.",
      "evidence_status": "local-complete-current",
      "outcome": "The merge integrates cleanly: no contradictory answers, no wrong answers, 20/20 suites and lint clean on the merged tree. The apparent solve gain is a parallelism artifact, not a finding."
    },
    {
      "id": "2026-08-26-qf-lia-qf-lra-cluster-merge-verification",
      "started_at": "2026-08-26",
      "recorded_at": "2026-08-26",
      "kind": "measurement",
      "scope": "Cluster re-run of both fragments after the merge, replacing the locally-measured numbers this session had been quoting. Local runs used 8-10 concurrent solvers on one box; SLURM gives one solver per core, which is what the QF_LIA result deserved and what the QF_LRA gate had lacked.",
      "commit": "3c2fbf1 vs b4d3221 (QF_LIA); 3c2fbf1 vs 2480db9 (QF_LRA)",
      "branch": "main",
      "environment": {
        "type": "slurm",
        "job": "128768 (QF_LIA merged), 128968 (QF_LIA pre-merge), 128769 (QF_LRA both arms)",
        "note": "60s, --mem=3G, one file at a time per task. Reference z3/cvc5 come from job 127709 on the same cluster and corpus at the same timeout, not re-run."
      },
      "results": {
        "qf_lia_the_session_result_holds": "Answered (sat+unsat) over all 13,306 files: dc960eb 8,704 -> pre-merge b4d3221 9,043, PAR2 43.14 -> 40.08, zero wrong. That is +339 on the cluster against the +330 measured locally, so the local box was not distorting the result -- the two environments agree to within boundary churn. The gap to cvc5 (9,239) narrows from 535 to 196.",
        "the_merge_is_neutral_on_qf_lia": "9,043 -> 9,032 answered, PAR2 40.08 -> 40.16. The -11 is 16 lost and 5 gained, and every one of those 21 files finishes between 53.2s and 59.9s against a 60s limit -- the cutoff band, where 101 further both-solved files also sit. Per-file time ratio over the 2,150 files both arms solve in more than a second: median 1.001, mean 1.009, p10 0.975, p90 1.050. No systematic slowdown.",
        "qf_lra_is_flat": "1,535 answered in both arms, zero contradictions, 4 gained and 4 lost, PAR2 18.92 -> 18.88, and 1.0132x on the 1,531 files both solve. This supersedes the local gate's +2/1.0155x, which was measured under 10-way parallelism.",
        "reporting_trap_status_solved_over_counts_primo": "bench_qf_uf_full.py's `solved` counts status == ok, and primo exits CLEANLY with `unknown` when branch-and-bound hits its node limit: 750 such files in each QF_LIA arm (569 at dc960eb). cvc5 and z3 have zero -- their non-answers are errors/timeouts. So status-based `solved` reads 9,781 for the merged arm against cvc5's 9,239 and would invert the true standing, and the summary CSV's PAR2 charges those 750 their elapsed time rather than the 2T penalty (34.37 vs the correct 40.16). Every primo-vs-reference number in this project must be computed from sat+unsat, not from status. The numbers this session reported were already answer-based and are unaffected.",
        "an_invalid_arm_was_caught_before_aggregation": "The first QF_LIA submission used upstream main (2480db9) as the baseline. It reported 167 of 167 files `unsupported` per shard: QF_LIA support IS this branch, so upstream main cannot parse the division at all. Cancelled and replaced with the pre-merge branch tip, which is the control that answers the actual question. A frontend gap and a timeout look nothing alike in the data -- unsupported rows, PAR2 pinned at 2T -- but only if the rows are read rather than the totals.",
        "harness_constraint_worth_recording": "bench_qf_uf_full.py resolves root as (repo / args.root).resolve() and then calls path.relative_to(repo) per row, so the corpus MUST live under the repo directory; pointing PRIMO_COMPARE_ROOT at an absolute path outside it fails every task, and symlinking the corpus in does not help because .resolve() follows the link. The campaigns therefore run FROM the corpus workdirs with both arms given as absolute binary paths -- which also means no sync ever touches a corpus directory."
      },
      "artifacts": "primo-cadical-profile/results/qf-lia-full-compare-128768 and qf-lia-premerge-control; primo-qflra/results/qf-lia-full-compare-128769.",
      "evidence_status": "slurm-complete-current",
      "outcome": "The merge is safe on both fragments: zero wrong answers and zero contradictory answers across 15,059 files, with QF_LIA -11 and QF_LRA 0 net, both entirely inside the timeout band. The session's QF_LIA gain is confirmed at cluster scale: +339 answered, PAR2 43.14 -> 40.08."
    },
    {
      "id": "2026-08-26-lra-model-phase-monotone-promotion-test",
      "started_at": "2026-08-26",
      "recorded_at": "2026-08-26",
      "kind": "measurement",
      "scope": "Promotion test for --lra-model-phase and --monotone-elimination, both default-off, across all three arithmetic fragments at their standard timeouts. Monotone elimination was rejected in August on a 237-file 10s sample (lead 9); this is the first full-corpus reading of either flag.",
      "commit": "3c2fbf1",
      "branch": "main",
      "environment": {
        "type": "slurm",
        "job": "129188-129194 (7 arms, 320 tasks); baselines are 129088 (QF_LRA), 129148 (QF_UFLRA), 128768 (QF_LIA), same binary and corpora"
      },
      "results": {
        "which_fragment_each_flag_can_reach": "Measured before spending cluster time rather than assumed. --monotone-elimination eliminates variables on 24 of 48 sampled QF_LRA files (2,157 variables), 4 of 35 QF_UFLRA files, and 0 of 58 QF_LIA files -- it is Real-variable elimination, so a pure-Int problem has no candidates and that arm was not run. See lead 14: the QF_LIA zero is definitional, not evidence that Int has no one-sided variables.",
        "qf_lra_300s_both_flags_win": "1,753 files. default 1,655 (994 sat / 661 unsat) PAR2 46.33; --lra-model-phase 1,678 PAR2 36.53; --monotone-elimination 1,668 PAR2 41.51; both 1,680 PAR2 35.14. Zero wrong answers and zero answer contradictions in every arm. At 1,680 primo would pass OpenSMT's 1,670 and lead this division.",
        "the_model_phase_gain_is_mechanism_not_churn": "34 gained and 11 lost, and only 4 of the 34 finish past 85% of the limit -- these are files that now complete in 3-59s against a 300s timeout, not boundary crossings. The paired time ratio over the 576 files both arms solve in more than a second has median 0.775, with 344 files more than 10% faster against 135 more than 10% slower. That is a broad speedup, not a lucky tail.",
        "the_11_losses_are_real_and_should_not_be_hidden": "None of the 11 lost files were anywhere near the limit under the default: they took 9, 18, 21, 22, 22, 63, 112, 203, 220, 228 and 234 seconds and now time out. A heuristic that reorders search has genuine losers; the net is +23 and the recommendation stands, but the losses are mechanism too, not noise.",
        "monotone_overturns_its_own_rejection_but_weakly": "17 gained, 4 lost, PAR2 46.33 -> 41.51. The paired median ratio is 0.999 -- exactly the neutrality lead 9 measured on the 237-file 10s sample -- so this is not a speedup; it converts a specific set of timeouts into solves without making the median instance faster. The August rejection was not wrong about the mechanism, it was wrong about the population: at 10s on 237 files the instances this helps had not yet begun to time out.",
        "qf_uflra_says_no_to_model_phase": "default 1,272, --lra-model-phase 1,269 (0 gained, 3 lost), --monotone-elimination 1,273 (1 gained, 0 lost), both 1,269. Model phase is 11% faster on the median non-trivial file (ratio 0.889) and still loses three instances outright. Monotone is inert here, firing on 4 of 35 sampled files.",
        "qf_lia_is_a_coin_flip_with_a_bias": "13,306 files: default 9,031, --lra-model-phase 9,072, PAR2 40.17 -> 39.84. But 178 files were gained and 137 lost, and their times are the give-away: the gained files solve in under a second under model phase and time out by default, the lost ones the reverse. This flag either finds the path immediately or never on this fragment. The paired ratio on everything else is median 0.997 with 344 files faster and 344 slower -- perfectly symmetric. Net +41 against a churn of 315 is about 2.3 standard deviations under a sign test: suggestive, not decisive, and high variance either way.",
        "baseline_sanity": "The QF_LRA default arm reads 1,655 against the 1,657 recorded on 2026-08-07 at 300s, so the gains are measured against a normal baseline rather than a depressed one.",
        "promotion_attempt_found_a_soundness_bug": "Promoting --monotone-elimination to default immediately broke boolean_solver_tests.cpp's bool_argument_congruence_preserves_boolean_domain: unsat became sat. The pass is NOT at fault. That test's formula carries (assert (< 0 x)) as its only Real atom; monotone elimination discharges the one-sided x and folds the atom away, leaving a QF_UFLRA instance with no Real atom at all -- and on that path Primo's Boolean-domain bridging never runs (:no.boolean-domain.bridged-terms reads 8 with the atom present and is not emitted without it). Deleting the atom by hand reproduces the wrong answer with the flag OFF, so this is a pre-existing soundness bug on main rather than a promotion regression: primo answers sat where z3 and cvc5 answer unsat. Witness and analysis in bugs/qf-uflra-no-real-atom-boolean-domain/."
      },
      "artifacts": "primo-qflra/results/promo-lra-{phase,mono,both}; primo-no-euf-scan-20c8db1/slurm-results/promo-ufl-{phase,mono,both}; primo-cadical-profile/results/promo-lia-phase.",
      "evidence_status": "slurm-complete-current",
      "outcome": "Corpus evidence supports promoting --monotone-elimination on QF_LRA (+13 solved, PAR2 46.33 -> 41.51, zero wrong) and rejects promoting --lra-model-phase globally (-3 on QF_UFLRA, a 178-gained/137-lost coin flip on QF_LIA). The promotion itself is BLOCKED: flipping the default exposed the pre-existing QF_UFLRA wrong answer above, and a default that makes a latent soundness bug reachable is not shippable. Fix the bridging path, then re-promote."
    },
    {
      "id": "2026-08-26-qf-uf-boolean-cardinality-fix",
      "started_at": "2026-08-26",
      "recorded_at": "2026-08-26",
      "kind": "bugfix",
      "scope": "Fix for the QF_UF wrong answer in bugs/qf-uf-boolean-argument-congruence: congruence closure was not told that Bool has exactly two elements, so it could give a Bool-sorted argument a third value. Both solver paths unified on one encoding.",
      "commit": "fa44295",
      "branch": "main",
      "environment": {
        "type": "local + slurm",
        "job": "129537/129538 (QF_UF A/B), 129539/129540 (QF_UFLRA A/B), 129713 (pre-fix QF_UF baseline), 129705 (Bool fuzz gate)"
      },
      "results": {
        "the_fix_is_registration_not_clauses": "add_explained_theory_equality and flatten_assigned_atom already assert t = true/false into the closure for any Bool-sorted Constant theory atom, with the term's own literal as a one-literal reason. A plain Bool constant was simply never registered as an atom, so neither branch fired. register_boolean_argument_terms() registers Bool-sorted arguments of uninterpreted applications: no new SAT variable and no clause, because theory_atom_for_term reuses the literal the term already has. The older bridge encoding cost 2 atoms and 3 clauses per term and bridged Bool-VALUED applications as well, which are already atoms.",
        "harness_is_the_arbiter_and_it_passed": "scripts/qf_uf_boolean_fuzz.py went from 91 disagreements in 600 cases to 0, plus 0 in two further 500-case seeds. The SLURM gate (129705) ran 1,000 cases per shape across all eight shapes: 8,000 PASS, exit 0 on every shard. It had failed by design before the fix -- and its first post-fix run failed for an unrelated reason worth keeping: z3 is not installed in the new workspace, so all 1,000 comparisons were REFERENCE_UNUSABLE, which the gate correctly refuses to call a pass.",
        "qf_uf_division_no_answer_changed": "7,503 files at 60s, pre-fix 3c2fbf1 against the fix: 7,496 -> 7,497 answered, zero wrong in both, and ZERO answer changes. So no real SMT-LIB QF_UF benchmark was being decided incorrectly -- the hole was reachable but unexercised by the division.",
        "the_two_encodings_agree": "QF_UF, registration vs bridge-atoms on one binary: 7,497 vs 7,498 answered, zero answer disagreements; the -1 is the cutoff, the single gain takes 12.5s while the two losses took 59.8s and 59.2s against a 60s limit. Registration is 3% faster over the 881 files both solve in more than a second (3,000s -> 2,912s). QF_UFLRA at 120s: 1,272 answered in both arms, identical 761/511 split, zero gained, zero lost, zero disagreements, and zero disagreements against the pre-fix run. The unification is safe.",
        "a_claim_of_mine_was_wrong": "I asserted that no SMT-LIB QF_UF file applies a function to a Bool, repeating a comment in the repo's own seed. Sampling 289 division files found 5 that do, registering 40 terms: four 2018-Goel-hwbench hardware benchmarks and one 20190906-CLEARSY file. The cost is still negligible, but 'free by vacuity' was the wrong argument -- which is why the pre-fix baseline above was run rather than assumed.",
        "reference_solvers_on_the_same_shapes": "cvc5 1.3.4 and Yices 2.7.0 are clean: 1,900 QF_UF cases each and 600 QF_UFLRA bool-argument cases each, all agreeing with z3. OpenSMT 2.9.2 is clean on the 1,900 pure QF_UF cases but reports sat where z3 reports unsat on 58 of 600 mixed QF_UFLRA cases, reproducing bugs/opensmt-qf-uflra-boolean-disagreement at scale without being aimed at it."
      },
      "artifacts": "primo-cadical-profile/results/boolfix-qfuf-{new,bridge,prefix}; primo-no-euf-scan-20c8db1/slurm-results/boolfix-uflra-{new,bridge}; primo-boolfix/fuzz-results/qf-uf-boolean-129705.",
      "evidence_status": "slurm-complete-current",
      "outcome": "Fixed and verified. Zero answer changes on the QF_UF division, zero disagreements between the two encodings on either fragment, 8,000 fuzz cases clean across all shapes, and QF_UF 3% faster on non-trivial files. bridge-atoms remains selectable only to keep this A/B reproducible and should be deleted."
    },
    {
      "id": "2026-08-26-merged-main-qf-lia-current-tip-fuzz-gate",
      "started_at": "2026-08-26",
      "recorded_at": "2026-08-26",
      "kind": "fuzz",
      "scope": "Current-tip post-merge QF_LIA correctness campaign after the word-GCD Rational changes and merge-readiness repairs: the full checked-in 11-task FuzzSMT/model-validation plus real-seed opfuzz/typefuzz gate, followed by a strict direct replay of all 61 original mutation seeds against z3.",
      "commit": "8a4048b",
      "branch": "main",
      "environment": {
        "type": "slurm",
        "host": "llm2smt-slurm",
        "workdir": "primo-qflia-fuzz-gate",
        "job": "129508 (11-task campaign, all COMPLETED 0:0); 129527 (strict seed replay, FAILED 1:0 because 10 results were incomplete rather than all-pass)",
        "binary": "primo 0.1.0, git 8a4048b, Release, CaDiCaL cadical-3.0.0-7b99c07"
      },
      "commands": {
        "workspace": "python3 scripts/slurm_prepare_benchmark_workspace.py --remote-dir primo-qflia-fuzz-gate --reuse-dependencies --contrib-target contrib-required --contrib-target contrib-yinyang --require-tool {z3,fuzzsmt,dolmen,typefuzz,opfuzz}; mandatory --check-only repeated immediately before each submission",
        "seed_corpus": "python3 scripts/build_fuzz_seed_corpus.py --root sandbox/non-incremental/QF_LIA --out benchmarks/seeds/qf_lia_division --per-family 2 --max-bytes 200000; 32 families, 61 seeds, content-manifest SHA-256 896f215200ff397b862648bb6113ae01eb08e61a9bb23be53fd0e61f8d604873",
        "campaign": "sbatch --export=ALL,PRIMO_WORKDIR=<prepared-workspace> scripts/slurm_qf_lia_model_fuzz_gate.sbatch",
        "strict_seed_replay": "python3 scripts/check_solver_seed_corpus.py --seeds benchmarks/seeds/qf_lia_division --solver build-slurm-rel/primo --solver-arg=--quiet --ref z3 --timeout 10 --out fuzz-results/qf-lia-seed-check-8a4048b/summary.csv (submitted through a locally validated temporary sbatch file)"
      },
      "results": {
        "fuzzsmt_answer_differential": "4,000 generated QF_LIA formulas, seeds 229508 through 229515: 3,909 PASS; 91 TIMEOUT (79 Primo timeout / z3 sat, 12 timeout in both); zero OUR_SAT_REF_UNSAT, OUR_UNSAT_REF_SAT, REF_DISAGREEMENT, crash, parser/type error, or unknown classification.",
        "model_validation": "4,000 rows: 3,475 pass, 450 not-sat, 75 solver-timeout; zero model-error, solver-error, invalid model, crash, or unexpected outcome.",
        "mutation": "The 61-seed corpus covered all 32 QF_LIA families. One 1,500-second opfuzz task reached 19,456 solver calls; two 1,500-second typefuzz tasks reached 1,306 and 944 calls. All three reported zero bug files. The mutation tools skipped the two seeds larger than their 200,000-byte limit, and all tasks were time-boxed before exhausting the whole corpus; neither limitation is hidden as full-seed coverage.",
        "strict_seed_replay": "51 PASS, 10 INCOMPLETE, zero DISAGREEMENT and zero STATUS_MISMATCH. The incomplete pairs were five Primo timeout / z3 sat, three timeout in both, and two Primo unknown / z3 unsat. Because check_solver_seed_corpus.py is intentionally all-pass-strict, job 129527 exited 1:0; this is incompleteness/performance evidence, not a clean strict seed gate and not a wrong answer."
      },
      "artifacts": "remote:primo-qflia-fuzz-gate/fuzz-results/qf-lia-model-gate-129508/ (2.2GB full campaign); remote:primo-qflia-fuzz-gate/fuzz-results/qf-lia-seed-check-8a4048b/summary.csv; lightweight local ignored copies: fuzz-results/qf-lia-model-gate-129508/, fuzz-results/qf-lia-seed-check-8a4048b/, slurm_logs/qf-lia-model-gate-129508/",
      "evidence_status": "slurm-complete-current; mutation campaign clean, strict seed complement non-passing only for 10 incomplete results",
      "outcome": "The current merged-main candidate passes the required 4,000-case answer/model campaign and the real-seed mutation campaign with zero wrong answers, crashes, invalid models, or mutation bug files. The additional direct seed replay honestly exposes ten timeout/unknown cases and therefore is not called a strict pass; none is a concrete disagreement or status mismatch."
    },
    {
      "id": "2026-08-28-tactic-control-flow-qf-uf-fuzz-gate",
      "started_at": "2026-08-28",
      "recorded_at": "2026-08-28",
      "kind": "fuzz",
      "scope": "Local merge fuzz gate for the tactic-control-flow migration. The campaign exercises pure QF_UF Boolean arguments, results, compound and nested applications, mixed uninterpreted sorts, two-valued reasoning, converse shapes, pure-polarity filtering, and random propositional skeletons through the migrated preprocessing repeat and solver dispatch.",
      "commit": "e3aea5641ebb6cea417a62ee71d5e8a488fa4a88",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "binary": "primo 0.1.0, git e3aea56, Debug, sanitizers none, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "Z3 5.0.0"
      },
      "commands": {
        "fuzz": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/qf_uf_boolean_fuzz.py --count 1000 --shape all --seed 0 --solver ./build/primo --ref ./contrib/local/bin/z3 --timeout 5 --out fuzz-results/tactics-qf-uf-boolean-e3aea56",
        "asan": "make asan-test (ASAN_OPTIONS=detect_leaks=1:strict_init_order=1)"
      },
      "results": {
        "answer_differential": "1,000 PASS: Primo and Z3 both returned 559 sat and 441 unsat. Zero wrong answers, reference disagreements, crashes, parser/type errors, unsupported results, unknown results, or timeouts.",
        "shape_coverage": "argument 117, result 85, compound 87, nested 115, mixed-sort 133, two-valued 115, converse 119, pure-polarity 116, random 113.",
        "asan": "21/21 CTest targets passed with leak detection and strict initialization ordering on 06af8df. The later e3aea56 source change only corrected direct includes after the advisory include-cleaner scan; its ordinary 21/21 CTest run also passed."
      },
      "artifacts": "local ignored artifact fuzz-results/tactics-qf-uf-boolean-e3aea56/summary.csv",
      "evidence_status": "local-complete-current",
      "outcome": "The tactic control-flow migration passes the required 1,000-case merge gate with exact answer agreement and no failures."
    },
    {
      "id": "2026-08-28-tactic-control-flow-local-performance-check",
      "started_at": "2026-08-28",
      "recorded_at": "2026-08-28",
      "kind": "measurement",
      "scope": "Release-build before/after check for overhead or answer changes introduced by routing preprocessing repetition and solver dispatch through tactics. The corpus contains all 34 checked-in QF_UF, QF_LRA, and QF_UFLRA smoke and seed files, run five times per arm in alternating baseline/current order.",
      "commit": "56515aa (tactic integration plus fuzz evidence) vs dacf6db (tactic data structures before production integration)",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "binary": "Release builds, GCC 13.3.0, CaDiCaL cadical-3.0.0-7b99c07",
        "timeout": "5 seconds per file"
      },
      "commands": {
        "build_current": "cmake -S . -B build-release-tactics -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/workspace/contrib/local && cmake --build build-release-tactics --target primo -j2",
        "build_baseline": "git worktree add --detach /tmp/primo-tactics-baseline dacf6db; cmake -S /tmp/primo-tactics-baseline -B /tmp/primo-tactics-baseline/build-release -DCMAKE_BUILD_TYPE=Release; cmake --build /tmp/primo-tactics-baseline/build-release --target primo -j2",
        "measurement": "For runs 1 through 5, scripts/bench.py over benchmarks/smoke plus benchmarks/seeds/{qf_uf,qf_lra,qf_uflra}, first with the dacf6db binary and then the 56515aa binary, --timeout 5."
      },
      "results": {
        "correctness": "All 34 answers were identical in every run; no timeout or nonzero exit occurred.",
        "baseline": "Per-run summed runtimes: 0.093953, 0.086008, 0.086629, 0.085898, 0.088396 seconds; median 0.086629 seconds.",
        "tactics": "Per-run summed runtimes: 0.085386, 0.085458, 0.087603, 0.087643, 0.086627 seconds; median 0.086627 seconds.",
        "paired_reading": "Median per-file runtime ratio is 0.9785x. Every file completes in roughly 2-4 ms, so process startup and scheduler noise dominate; this is evidence of no visible regression on the checked-in corpus, not a performance improvement claim."
      },
      "artifacts": "local ignored artifacts results/tactics-baseline-dacf6db-{1..5}.csv and results/tactics-current-56515aa-{1..5}.csv",
      "evidence_status": "local-complete-current",
      "outcome": "No answer change and no measurable orchestration regression on the checked-in smoke/seed corpus; the measured median totals differ by 0.002 ms."
    },
    {
      "id": "2026-08-29-tactic-modularization-multi-logic-fuzz-gate",
      "started_at": "2026-08-29",
      "recorded_at": "2026-08-29",
      "kind": "fuzz",
      "scope": "Exact-commit local merge gate for immutable goal-local reconstruction, named preprocessing phase tactics, solver-family tactic dispatch, extracted frontend/clausifier/control modules, and context-owned cancellation. It covers QF_UF, QF_LRA, and mixed QF_UFLRA with 1,000 generated formulas per logic.",
      "commit": "a101be416e810bda94abfe5074b1277e99a9c3f2",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "binary": "primo 0.1.0, git a101be4, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "Z3 5.0.0",
        "timeout": "5 seconds per solver invocation"
      },
      "commands": {
        "qf_uf": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build-release-tactics/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026082921 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/tactics-modular-qfuf-1000-a101be4",
        "qf_lra": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build-release-tactics/primo --quiet' --refs z3 --logic QF_LRA --count 1000 --timeout 5 --seed 2026082922 --out fuzz-results/tactics-modular-qflra-1000-a101be4",
        "qf_uflra": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/qf_uflra_smoke_fuzz.py --solver build-release-tactics/primo --solver-arg=--quiet --ref z3 --count 1000 --seed 2026082923 --timeout 5 --shape mixed --out fuzz-results/tactics-modular-qfuflra-1000-a101be4",
        "asan": "make asan-test (ASAN_OPTIONS=detect_leaks=1:strict_init_order=1)",
        "sigterm": "timeout --signal=TERM --kill-after=2s 0.01s ./build-release-tactics/primo --quiet --stats benchmarks/regression/qf_uf/online_reason_cache.smt2"
      },
      "results": {
        "qf_uf": "1,000 PASS: 892 sat and 108 unsat in exact agreement. Zero timeout, wrong answer, reference disagreement, crash, parser/type error, unknown, or unsupported result.",
        "qf_lra": "997 PASS: 861 sat and 136 unsat in exact agreement; three Primo timeouts whose Z3 answer was sat. Zero wrong answer, reference disagreement, crash, parser/type error, unknown, or unsupported result.",
        "qf_uflra": "1,000 PASS: 574 sat and 426 unsat in exact agreement. Zero timeout, wrong answer, reference disagreement, crash, parser/type error, unknown, or unsupported result.",
        "aggregate": "3,000 generated formulas: 2,997 exact agreements, three timeout-only incomplete cases, and zero correctness failures.",
        "asan": "21/21 CTest targets passed with leak detection and strict initialization ordering.",
        "sigterm": "The timeout wrapper returned 124 after sending SIGTERM; Primo printed unknown and the per-file diagnostic 'cancelled', with no crash or unsafe signal-context output."
      },
      "artifacts": "local ignored artifacts fuzz-results/tactics-modular-qfuf-1000-a101be4/, fuzz-results/tactics-modular-qflra-1000-a101be4/, and fuzz-results/tactics-modular-qfuflra-1000-a101be4/",
      "evidence_status": "historical-pre-review-fix",
      "outcome": "Historical evidence for a101be4. The later tactic review found fixed-point, terminal-cancellation, terminal-change-accounting, and payload-copying defects, so this is not current-head evidence; the 2026-08-30 review-fix gate supersedes it."
    },
    {
      "id": "2026-08-29-tactic-modularization-local-performance-check",
      "started_at": "2026-08-29",
      "recorded_at": "2026-08-29",
      "kind": "measurement",
      "scope": "Release-build overhead and answer check for the final modular split and lazy immutable phase-copying against the earlier production tactic integration. The corpus contains all 34 checked-in QF_UF, QF_LRA, and QF_UFLRA smoke and seed files, run five times per arm in alternating order.",
      "commit": "a101be4 (final modular split) vs 56515aa (production tactic integration before the split)",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "binary": "Release builds, GCC 13.3.0, CaDiCaL cadical-3.0.0-7b99c07",
        "timeout": "5 seconds per file"
      },
      "commands": {
        "build_current": "cmake -S . -B build-release-tactics -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/workspace/contrib/local && cmake --build build-release-tactics --target primo -j2",
        "build_baseline": "git worktree add --detach /tmp/primo-tactics-565 56515aa; configure /tmp/primo-tactics-565/build-release as Release with dependency paths under /workspace/contrib/local; cmake --build /tmp/primo-tactics-565/build-release --target primo -j2",
        "measurement": "For runs 1 through 5, alternate arm order and invoke scripts/bench.py over benchmarks/smoke plus benchmarks/seeds/{qf_uf,qf_lra,qf_uflra}, --timeout 5, writing results/tactics-modular-final-ab-{revision}-{run}.csv."
      },
      "results": {
        "correctness": "All 34 answers were identical in every run: 13 sat and 21 unsat; no timeout, unknown, nonzero exit, or answer change occurred.",
        "baseline": "Per-run summed runtimes: 0.089255, 0.083915, 0.086607, 0.091777, 0.089337 seconds; median 0.089255 seconds.",
        "modular": "Per-run summed runtimes: 0.084588, 0.085628, 0.085094, 0.094557, 0.087725 seconds; median 0.085628 seconds.",
        "paired_reading": "The modular median is 4.1% lower, but each file completes in roughly 2-4 ms and subprocess startup/scheduler noise dominates. This is evidence of no visible regression, not a speedup claim. The code review separately removed eager whole-assertion and reconstruction copies from every preprocessing phase."
      },
      "artifacts": "local ignored artifacts results/tactics-modular-final-ab-{56515aa,a101be4}-{1..5}.csv",
      "evidence_status": "historical-pre-review-fix",
      "outcome": "Historical performance evidence for a101be4. It predates the tactic review fixes and is superseded by the 2026-08-30 A/B comparison."
    },
    {
      "id": "2026-08-30-tactic-review-fix-multi-logic-fuzz-gate",
      "started_at": "2026-08-30",
      "recorded_at": "2026-08-30",
      "kind": "fuzz",
      "scope": "Exact-commit local merge gate for preprocessing assertion-based fixed-point detection, terminal change accounting, cancellation precedence over formula truth, and separately shared immutable Goal payloads. QF_UF, QF_LRA, and mixed QF_UFLRA each receive 1,000 fresh generated formulas.",
      "commit": "7b01deb798bcabb8e8e28769284d06ba73e9a593",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "binary": "primo 0.1.0, git 7b01deb, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "Z3 5.0.0",
        "timeout": "5 seconds per solver invocation"
      },
      "commands": {
        "qf_uf": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build-release-tactics/primo --quiet' --refs z3 --logic QF_UF --count 1000 --timeout 5 --seed 2026083001 --fuzzer-args '-ms 1 -Ms 2 -mv 1 -Mv 2 -mf 1 -mp 1 -ma 1 -Ma 2' --out fuzz-results/tactics-review-fix-qfuf-1000-7b01deb",
        "qf_lra": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/fuzz_external.py --fuzzer fuzzsmt --solver './build-release-tactics/primo --quiet' --refs z3 --logic QF_LRA --count 1000 --timeout 5 --seed 2026083002 --out fuzz-results/tactics-review-fix-qflra-1000-7b01deb",
        "qf_uflra": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/qf_uflra_smoke_fuzz.py --solver build-release-tactics/primo --solver-arg=--quiet --ref z3 --count 1000 --seed 2026083003 --timeout 5 --shape mixed --out fuzz-results/tactics-review-fix-qfuflra-1000-7b01deb",
        "unit": "make test && make python-test",
        "asan": "make asan-test (ASAN_OPTIONS=detect_leaks=1:strict_init_order=1)",
        "lint_and_check": "make lint; make check"
      },
      "results": {
        "qf_uf": "1,000 PASS: 900 sat and 100 unsat in exact agreement. Zero timeout, wrong answer, reference disagreement, crash, parser/type error, unknown, or unsupported result.",
        "qf_lra": "993 PASS: 856 sat and 137 unsat in exact agreement; seven Primo timeout-only cases. Zero wrong answer, reference disagreement, crash, parser/type error, unknown, or unsupported result.",
        "qf_uflra": "1,000 PASS: 572 sat and 428 unsat in exact agreement. Zero timeout, wrong answer, reference disagreement, crash, parser/type error, unknown, or unsupported result.",
        "aggregate": "3,000 generated formulas: 2,993 exact agreements, seven timeout-only incomplete cases, and zero correctness failures.",
        "unit": "21/21 CTest targets and 69/69 Python tests passed.",
        "asan": "21/21 CTest targets passed with leak detection and strict initialization ordering.",
        "lint_and_check": "Both stop on the same four retained Ruff findings in scripts/qf_uf_boolean_fuzz.py: EXE001 at line 1, PLC0206 at line 316, and UP031 at lines 430 and 438. make check reaches make lint first. The tactic-review diff introduces no lint diagnostic."
      },
      "artifacts": "Local ignored artifacts fuzz-results/tactics-review-fix-qfuf-1000-7b01deb/, fuzz-results/tactics-review-fix-qflra-1000-7b01deb/, and fuzz-results/tactics-review-fix-qfuflra-1000-7b01deb/.",
      "evidence_status": "local-complete-current",
      "outcome": "The review fixes pass the fresh multi-logic merge gate with no wrong answers, disagreements, crashes, or parser/type failures. Seven QF_LRA cases are timeout-only."
    },
    {
      "id": "2026-08-30-tactic-review-fix-local-performance-check",
      "started_at": "2026-08-30",
      "recorded_at": "2026-08-30",
      "kind": "measurement",
      "scope": "Release-build answer and overhead comparison of the complete tactic review fixes against the reviewed pre-fix implementation. The primary corpus is all 34 checked-in QF_UF, QF_LRA, and QF_UFLRA smoke and seed files. A generated 10,000-Boolean-assertion :produce-models true case provides a payload-heavy secondary check. Each arm is run five times in alternating order.",
      "commit": "7b01deb798bcabb8e8e28769284d06ba73e9a593 vs 1404cca6fa6582d33f068a992c7eadc3451e3015",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "binary": "Release builds, GCC 13.3.0, CaDiCaL cadical-3.0.0-7b99c07",
        "timeout": "5 seconds per checked-in file; 30 seconds for the generated model-producing file"
      },
      "commands": {
        "build_current": "cmake -S . -B build-release-tactics -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/workspace/contrib/local && cmake --build build-release-tactics --target primo -j2",
        "build_baseline": "git worktree add --detach /tmp/primo-tactics-review-baseline 1404cca; configure /tmp/primo-tactics-review-baseline/build-release as Release; cmake --build /tmp/primo-tactics-review-baseline/build-release --target primo -j2",
        "checked_in_corpus": "For runs 1 through 5, alternate arm order and invoke scripts/bench.py over benchmarks/smoke plus benchmarks/seeds/{qf_uf,qf_lra,qf_uflra}, --timeout 5, writing results/tactics-review-final-ab-{revision}-{run}.csv.",
        "large_model_generator": "python3 /tmp/generate_tactic_large_model.py; emits /tmp/tactic-large-model.smt2 with 10,000 declared Boolean constants, 10,000 positive assertions, :produce-models true, and check-sat.",
        "large_model_measurement": "For runs 1 through 5, alternate arm order and invoke scripts/bench.py --timeout 30 on /tmp/tactic-large-model.smt2, writing results/tactics-review-large-model-{revision}-{run}.csv."
      },
      "results": {
        "correctness": "All 34 checked-in answers were identical in every run: 13 sat and 21 unsat; no timeout, unknown, nonzero exit, or answer change occurred. Both binaries returned sat in all five generated large-model runs.",
        "baseline_corpus": "Per-run summed runtimes: 0.087751, 0.090047, 0.088540, 0.089295, 0.086725 seconds; median 0.088540 seconds.",
        "fixed_corpus": "Per-run summed runtimes: 0.085343, 0.085006, 0.084877, 0.088712, 0.085989 seconds; median 0.085343 seconds.",
        "baseline_large_model": "Per-run runtimes: 0.045805, 0.042268, 0.040848, 0.040644, 0.043170 seconds; median 0.042268 seconds.",
        "fixed_large_model": "Per-run runtimes: 0.039426, 0.040054, 0.043596, 0.042243, 0.040972 seconds; median 0.040972 seconds.",
        "interpretation": "No visible regression. The checked-in corpus median is 3.6% lower and the large-model median 3.1% lower, but process startup and scheduler noise are material at these runtimes, so this is not a speedup claim. The unit test directly verifies unchanged Goal payload address sharing; timing is only a smoke check."
      },
      "artifacts": "Local ignored artifacts results/tactics-review-final-ab-{1404cca,7b01deb}-{1..5}.csv and results/tactics-review-large-model-{1404cca,7b01deb}-{1..5}.csv. The generated /tmp input and generator are local-only and reproducible from the recorded shape.",
      "evidence_status": "local-complete-current",
      "outcome": "No answer change or measurable overhead regression from the review fixes; the immutable shared-payload design is additionally enforced by a deterministic address-sharing unit test."
    },
    {
      "id": "2026-08-29-qflia-ite-let-census",
      "started_at": "2026-08-29",
      "recorded_at": "2026-08-29",
      "kind": "profiling",
      "scope": "Structural census of if-then-else and let usage across the QF_LIA families named by Bromberger's thesis (Chapter 8) as the ones its preprocessing gains concentrate in. Pure file counting; no solver was run.",
      "commit": "faf6642",
      "branch": "main",
      "environment": {
        "type": "local",
        "host": "workstation",
        "note": "grep/find only; no build, no solver invocation"
      },
      "commands": {
        "count_files": "find sandbox/non-incremental/QF_LIA/<family> -name '*.smt2' | wc -l",
        "count_ite": "grep -rlE '\\(ite ' sandbox/non-incremental/QF_LIA/<family> --include='*.smt2' | wc -l",
        "count_let": "grep -rl '(let ' sandbox/non-incremental/QF_LIA/<family> --include='*.smt2' | wc -l",
        "single_file_shape": "grep -o '(let' <file> | wc -l; grep -o '(ite' <file> | wc -l"
      },
      "results": {
        "nec-smt": "2780 files; 2780 contain '(ite'; 2780 contain '(let'",
        "rings": "294 files; 245 contain '(ite'; 294 contain '(let'",
        "rings_preprocessed": "294 files; 0 contain '(ite'; 294 contain '(let'",
        "pb2010": "81 files; 0 contain '(ite'; 0 contain '(let'",
        "convert": "319 files; 17 contain '(ite'; 319 contain '(let'",
        "calypto": "37 files; 37 contain '(ite'; 35 contain '(let'",
        "sampled_instance": "sandbox/non-incremental/QF_LIA/nec-smt/large/checkpass_pwd/prp-24-38.smt2 is 201,943 bytes with 886 '(let' and 5240 '(ite' occurrences inside a single assert"
      },
      "interpretation": "Confirms locally the structural claim behind Bromberger's +1693 QF_LIA preprocessing ablation: nec-smt is uniformly deep nested let/ite, and rings_preprocessed is rings with the ITEs already eliminated by the fresh-variable encoding (0 vs 245 files containing '(ite'), which is the input shape the thesis's ITE-reconstruction pass exists to undo. pb2010 has neither construct, so its share of the gain comes from the separate pseudo-boolean pass, not from ITE work.",
      "caveats": "A file-level 'contains (ite' count is an upper bound on relevance and says nothing about how many ITEs survive Primo's own lowering, nor about solve time. It sizes the candidate population only. No claim about Primo's solved counts on these families is made from this run.",
      "evidence_status": "current",
      "docs": "docs/papers/bromberger-linear-arithmetic-thesis.md; docs/open-leads.md lead 16; docs/preprocessing.md"
    },
    {
      "id": "2026-08-29-bromberger-publication-audit",
      "started_at": "2026-08-29",
      "recorded_at": "2026-08-29",
      "kind": "literature",
      "scope": "Completeness audit of Martin Bromberger's publication record, to establish whether reading the 2019 PhD thesis leaves any linear-arithmetic work unread. Bibliographic only; no solver, no benchmark.",
      "commit": "c4bb76a",
      "branch": "main",
      "environment": {
        "type": "local",
        "host": "workstation"
      },
      "commands": {
        "record": "curl https://dblp.org/pid/160/8783.xml, parsed with ElementTree (the rendered HTML page truncates; the XML does not)",
        "link_check": "curl -sS -o /dev/null -w '%{http_code}' -L for every URL cited",
        "abstract": "curl https://api.semanticscholar.org/graph/v1/paper/DOI:10.1007/978-3-031-10769-6_10?fields=abstract,openAccessPdf",
        "hal_verification": "curl https://api.archives-ouvertes.fr/search/?q=halId_s:hal-03881893 to confirm the record matches the DOI"
      },
      "results": {
        "total_entries": "30, spanning 2015-2026",
        "subsumed_by_thesis": "7: CADE 2015, IJCAR 2016, SMT@IJCAR 2016, FMSD 2017, IJCAR 2018, CADE 2019 (SPASS-SATT), JSC 2020",
        "post_thesis_line": "first-order from 2021 on (SCL(FOL), Isabelle/HOL formalisation, two-watched literals, constrained Horn clauses, Datalog hammer, eBPF verification); none applies to a ground QF solver",
        "checked_not_assumed": "VMCAI 2021 BS(BD) via SCL(T) -- a first-order fragment, not a difference-logic decision procedure; IJCAR 2022 BS(LRA) subsumption -- abstract obtained, full text not",
        "smt_comp_system_description": "SPASS-SATT v1.1 (SMT-COMP 2019) read in full; adds nothing over thesis chapters 7-8 and defers to the CADE-27 paper",
        "second_pass_finding": "re-reading thesis section 8.1 rather than only its ablation legends corrected an error in the first pass: decision recommendation is +129 on QF_LIA (116 of them `convert`), not a null result. Registered as lead 20."
      },
      "interpretation": "Reading the thesis is sufficient for the arithmetic line; there is nothing further to obtain. The single adjacent post-thesis result is the BS(LRA) subsumption pipeline, whose sample-point heuristic pre-empts ~94% of expensive LRA implication checks -- structurally the same move as Primo's model-value filter, in a first-order setting.",
      "caveats": "The IJCAR 2022 subsumption paper is marked CC-BY open access but both Springer and HAL serve a bot challenge instead of the PDF, so only its abstract was obtained and it is filed at the abstract-only tier. A guessed arXiv id for it (2205.06541) turned out to be an unrelated fracture-mechanics paper; every link recorded here was individually resolved.",
      "evidence_status": "current",
      "docs": "docs/papers/bromberger-linear-arithmetic-thesis.md; docs/papers/lra-related-work.md; docs/open-leads.md lead 20; docs/qf-lra-heuristics.md H5"
    },
    {
      "id": "2026-08-29-lra-model-phase-attribution-trace",
      "started_at": "2026-08-29",
      "recorded_at": "2026-08-29",
      "kind": "literature",
      "scope": "Establish the correct citation for --lra-model-phase (heuristics item H5, model-based SAT phase hints), for both the documentation and any future publication. Bibliographic only.",
      "commit": "8385b82",
      "branch": "main",
      "environment": {
        "type": "local",
        "host": "workstation"
      },
      "commands": {
        "yices": "curl https://yices.csl.sri.com/papers/cav2014.pdf; pdftotext -layout; grep -i 'branch|decision|heuristic|phase|polarity'",
        "sebastiani": "curl -k http://disi.unitn.it/rseba/papers/JSAT-2007.pdf; pdftotext -layout; read section 7.2.5",
        "local_primaries": "pdftotext -layout <reading-copy:dutertre2006simplexreport> and <reading-copy:griggio2009>; grep -i 'phase|polarity|decision heuristic|branching heuristic' (historical input filenames replaced by docs/references.bib keys on 2026-09-30)",
        "phase_saving": "curl https://dblp.org/search/publ/api?q=Lightweight+Component+Caching+Scheme+Satisfiability+Solvers",
        "link_checks": "curl -sSk -o /dev/null -w '%{http_code}' -L for every cited URL"
      },
      "results": {
        "bromberger_citation_does_not_support_it": "Bromberger thesis section 8.1 credits decision recommendations to Yices citing [56] = Dutertre, Yices 2.2, CAV 2014. That paper was fetched and read in full (6 pages): zero occurrences of decision recommendation, phase selection, polarity, or any theory-supplied decision heuristic. The citation names the solver, not a description of the technique.",
        "sebastiani_7_2_5": "Survey section 7.2.5 'DPLL branching heuristics for SMT' states 'there seem to be no really-satisfactory proposal in the direction of building theory-aware heuristics, and most tools simply use standard DPLL heuristics'. Its suggested directions are look-ahead and privileged branching variables -- neither is phase selection. Prior context, not prior art.",
        "local_primaries_negative": "Dutertre & de Moura CSL-06-01 and Griggio's thesis: no match for phase, polarity, decision heuristic or branching heuristic anywhere in either.",
        "authors_own_admission": "SPASS-SATT v1.1 SMT-COMP 2019 system description lists decision recommendations among techniques 'contained in existing SMT solvers' where 'not all have been described in the respective literature', naming the CADE-27 paper as the remedy.",
        "conclusion": "Cite Bromberger, Fleury, Schwarz, Weidenbach, SPASS-SATT: A CDCL(LA) Solver, CADE 2019 (DOI 10.1007/978-3-030-29436-6_7), and/or thesis section 8.1, for the technique; attribute origin to Yices without citing the Yices 2.2 paper as its description; position against Sebastiani JSAT 2007 section 7.2.5; cite Pipatsrisawat & Darwiche SAT 2007 for the SAT-side phase-saving mechanism H5 overrides."
      },
      "caveats": "SUPERSEDED IN PART on the same day: the CADE 2019 paper was afterwards supplied by the user (doi:10.1007/978-3-030-29436-6_7; untracked reading copy) and read. It does describe decision recommendations in section 3, so the citation is confirmed rather than inferred, and its footnote 3 corrected the reading taken from the thesis prose -- see 2026-08-29-spass-satt-cade-paper-read. Sebastiani's JSAT DOI resolves 302 to the publisher, whose landing page returns 403 to an automated fetch; the author copy was the one read.",
      "evidence_status": "current",
      "docs": "docs/qf-lra-heuristics.md H5 'What to cite for --lra-model-phase'; docs/arithmetic.md; docs/papers/bromberger-linear-arithmetic-thesis.md section 8.1",
      "superseded_by": "2026-08-29-spass-satt-cade-paper-read"
    },
    {
      "id": "2026-08-29-spass-satt-cade-paper-read",
      "started_at": "2026-08-29",
      "recorded_at": "2026-08-29",
      "kind": "literature",
      "scope": "Read the CADE 2019 SPASS-SATT paper, supplied by the user after the attribution trace could not obtain it, to confirm the decision-recommendation citation and check what it adds over thesis chapters 7-8.",
      "commit": "7bc9a4b",
      "branch": "main",
      "environment": {
        "type": "local",
        "host": "workstation"
      },
      "commands": {
        "source": "SPASS-SATT: A CDCL(LA) Solver, CADE 2019, doi:10.1007/978-3-030-29436-6_7; user-supplied reading copy, not redistributed",
        "verify": "pdfinfo confirms Subject 'Automated Deduction - CADE 27, doi:10.1007/978-3-030-29436-6_7', 12 pages",
        "read": "pdftotext -layout, read in full",
        "code_checks": "grep -rn unate src/ (empty); grep -n lra_model_phase src/smt/check_sat.cpp (solve_qf_lia_impl passes it into OnlineLraPropagator)"
      },
      "results": {
        "citation_confirmed": "Section 3 describes decision recommendations. The CADE 2019 citation is verified, not inferred; the earlier caveat is removed.",
        "footnote_3_corrects_the_thesis_reading": "GetPhase(L) = TRUE iff the current theory assignment satisfies L OR Assert(not L) would conflict; otherwise FALSE. The footnote adds that the second disjunct is impossible when unate propagation is enabled. The thesis prose reads as two criteria and had been recorded here as 'conflict-freedom plus model-satisfaction, Primo has only the second'. That was wrong: the disjuncts are alternatives, and SPASS-SATT's default has unate propagation on, so their measured +129 comes from the model-satisfaction disjunct alone -- exactly what --lra-model-phase already implements.",
        "convert_family_is_one_target": "Paper: 'SPASS-SATT solves only two-thirds of the 319 instances if ONE of the following three techniques is missing: (i) recalculating simplex states during backtracking, (ii) decision recommendations, or (iii) the small CNF transformation. SPASS-SATT with all three techniques solves all instances in less than 2s.' The +117/+116/+101 figures therefore count roughly the same ~106 instances three times; each is necessary, none sufficient.",
        "new_over_the_thesis": "Section 4 details shared monomial lifting (-PPIL) and CITE bounding (-PPIB, one fresh integer variable per topmost CITE, bounded by the leaf min/max and gcd-scaled), which carry `rings` where CITE simplification plus compression carry `nec-smt`. Footnote 4: all preprocessing techniques except small CNF are also in CVC4, and the implementation is fast because of a shared term representation plus caching of intermediate results.",
        "additional_numbers": "4894 of 6947 QF_LIA instances are solved by the simplex implementation alone; unit cube test +56 and 705 instances more than 2x faster; bounding transformations +169 and 167 instances more than 2x faster; bound refinements +24; simple rounding 1 instance faster; bound propagation +10; unate propagation no consistent benefit or drawback; pb2010 +22, all solved without branch-and-bound; nec_smt 2782 of 2800 with preprocessing (the thesis figure legend says 2772).",
        "design_note": "SPASS-SATT deliberately rejected splitting-on-demand, implementing branch-and-bound as a theory solver separate from the SAT solver to keep control of the branch-and-bound reasoning."
      },
      "interpretation": "Lead 20 changes from 'implement the criterion Primo lacks' to 'A/B an existing flag on QF_LIA'. --lra-model-phase is off by default and has only been evaluated on QF_LRA, the fragment where the same source measures the technique at +11; the +129 is for QF_LIA, where solve_qf_lia_impl already wires the flag through. No new code is needed for the evaluation.",
      "caveats": "Primo has no unate propagation, so footnote 3's unreachability argument does not transfer and the conflict-freedom disjunct could fire here; it is a possible small addition, not the source of the measured win. Their GetPhase is pulled at decision time whereas H5 pushes hints at quiescence points, so H5's hints can be stale; suspect that before suspecting the technique if an evaluation underperforms.",
      "evidence_status": "current",
      "supersedes": "2026-08-29-lra-model-phase-attribution-trace (in part)",
      "docs": "docs/papers/bromberger-linear-arithmetic-thesis.md; docs/qf-lra-heuristics.md H5; docs/open-leads.md lead 20 and the convert-cluster note; docs/arithmetic.md"
    },
    {
      "id": "2026-08-30-tactic-refactor-final-local-verification",
      "started_at": "2026-08-30",
      "recorded_at": "2026-08-30",
      "kind": "verification",
      "scope": "Final local verification of the complete immutable-strategy refactor, including ordered model conversion, typed preprocessing leaves and solver answers, preprocessing strategy construction, isolated sequential session portfolio, and physical extraction of solver engines from solver_session.cpp.",
      "commit": "8dc9eb8a12b6a96a7ff5c496e88c56c24ad1dbdd",
      "baseline_commit": "3120d54a6d7f4f570b9bdf149805efea9148a796",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "workstation",
        "binary": "primo 0.1.0, git 8dc9eb8, Release and ASan Debug, CaDiCaL cadical-3.0.0-7b99c07"
      },
      "commands": {
        "unit": "ctest --test-dir build-release-tactics --output-on-failure",
        "python": "make python-test",
        "asan": "make asan-test (ASAN_OPTIONS=detect_leaks=1:strict_init_order=1)",
        "docs": "make docs",
        "lint": "make lint",
        "clang_tidy": "clang-tidy over all 92 tracked non-generated .cpp files before the final source-only extraction, followed by exact changed-translation-unit scans for src/smt/solver_engines.cpp and src/smt/solver_session.cpp",
        "include_cleaner": "clang-tidy -checks=-*,misc-include-cleaner over the tracked non-generated translation units; final exact scan of solver_engines.cpp and solver_session.cpp",
        "compatibility": "Run baseline 3120d54 and candidate 8dc9eb8 Release binaries over 48 tracked smoke/seed inputs; compare exit status, stdout/model text, stderr diagnostics, and every non-timing statistic"
      },
      "results": {
        "unit": "21/21 CTest targets passed.",
        "python": "69/69 Python tests passed.",
        "asan": "21/21 CTest targets passed with leak detection and strict initialization ordering; no sanitizer diagnostic.",
        "docs": "Jupyter Book documentation built successfully.",
        "clang_tidy": "Whole-tree baseline passed on 92 tracked non-generated translation units. The final two changed translation units passed; each reported only one suppressed diagnostic from external code.",
        "include_cleaner": "No actionable unused include was reported in the final changed translation units.",
        "lint": "The command stops only on the accepted pre-existing four Ruff findings in scripts/qf_uf_boolean_fuzz.py: EXE001 at line 1, PLC0206 at line 316, and UP031 at lines 430 and 438. No refactor file introduces a lint finding.",
        "compatibility": "48/48 inputs matched exactly for return code, stdout including models, diagnostics, and all non-timing statistics. Moving the complete engine bodies from solver_session.cpp to solver_engines.cpp introduced no observed behavior change."
      },
      "artifacts": "Local build trees and ignored compatibility outputs; source, tests, and documentation are committed.",
      "evidence_status": "local-complete-current",
      "outcome": "The final source organization passes all decomposed make-check components except the documented unchanged Ruff baseline and is byte-for-byte behavior-compatible on the tracked 48-input seed/smoke comparison."
    },
    {
      "id": "2026-08-30-tactic-refactor-final-multi-logic-slurm-fuzz",
      "started_at": "2026-08-30",
      "recorded_at": "2026-08-30",
      "kind": "fuzz",
      "scope": "Fresh post-refactor SLURM merge/campaign gate for QF_UF, QF_LRA, QF_UFLRA, and QF_LIA. It combines generated answer comparison against Z3, model validation for satisfiable answers, deterministic real-seed replay, and available opfuzz/typefuzz mutation campaigns.",
      "commit": "618720d8688f62ccad76220ca901b6936520839b",
      "current_source_commit": "8dc9eb8a12b6a96a7ff5c496e88c56c24ad1dbdd (behavior-neutral engine relocation, covered by the exact local compatibility comparison)",
      "branch": "tactics",
      "environment": {
        "type": "slurm",
        "host": "established Primo SLURM environment",
        "workdir": "<slurm-workdir>",
        "binary": "primo 0.1.0, git 618720d, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "references": "Z3; Dolmen where supported for model validation, with Z3 fallback; cvc5 available in the prepared workspace"
      },
      "commands": {
        "preflight": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync ... immediately before every sbatch; every locally written batch file passed python3 scripts/slurm_validate_sbatch.py and bash -n",
        "generated": "scripts/fuzz_external.py-compatible 1,000-case FuzzSMT runs for QF_UF, QF_LRA, and QF_LIA, plus scripts/qf_uflra_smoke_fuzz.py-compatible 1,000-case mixed and 1,000-case finite-domain QF_UFLRA runs; 5-second solver timeout",
        "model_validation": "Validate all generated cases through the corresponding Primo model-validation workflow, using Dolmen where supported and Z3 fallback where necessary",
        "seed_replay": "scripts/check_solver_seed_corpus.py-compatible replay of 42 tracked QF_UF/QF_LRA/QF_UFLRA seeds against Z3",
        "mutation": "opfuzz and typefuzz over tracked real benchmark seeds, with 1,500-second task budgets for the large QF_LRA/QF_LIA divisions"
      },
      "inputs": {
        "qf_uf": "1,000 FuzzSMT-style generated cases, seeds 830001 and 830002 (500 each); 200 opfuzz mutations; two 100-case typefuzz tasks",
        "qf_lra": "1,000 generated cases; 34 valid opfuzz seeds; two time-boxed typefuzz tasks",
        "qf_uflra": "1,000 mixed plus 1,000 finite-domain generated cases; 12 tracked mutation seeds with 200 iterations per seed (approximately 4,800 solver calls)",
        "qf_lia": "1,000 generated cases; opfuzz and two typefuzz tasks time-boxed at 1,500 seconds",
        "timeout_seconds": 5
      },
      "results": {
        "qf_uf": "1,000/1,000 generated comparisons PASS. Model validation: 900 satisfiable models valid and 100 not-sat cases; zero invalid model, wrong answer, crash, parser/type error, timeout, unsupported, or reference disagreement. Mutation produced zero bug files.",
        "qf_lra": "999/1,000 generated comparisons PASS and one timeout-only case. Model validation: 871 valid satisfiable models, 128 not-sat cases, and one solver timeout; 203 validations used Dolmen and 668 used the Z3 fallback. Mutation produced zero bug files; both typefuzz tasks exhausted their time budgets before covering every seed.",
        "qf_uflra": "1,000/1,000 mixed and 1,000/1,000 finite-domain comparisons PASS. Model validation: 839 valid satisfiable models and 661 not-sat cases, with zero invalid model or incomplete result. The tracked seed mutation gate passed 12/12 and approximately 4,800 solver calls produced zero bug files.",
        "qf_lia": "980/1,000 generated comparisons PASS and 20 timeout-only cases. Model validation: 863 valid satisfiable models, 123 not-sat cases, and 14 solver timeouts. Mutation produced zero bug files, but the time-boxed tasks did not exhaust every seed.",
        "seed_replay": "42/42 tracked QF_UF/QF_LRA/QF_UFLRA seed cases passed against Z3.",
        "aggregate_correctness": "Zero wrong answer, crash, invalid model, parser/type error, unsupported misclassification, or reference disagreement across the successful campaigns. Timeout-only generated cases are retained as incompleteness evidence.",
        "rejected_infrastructure": "The first QF_UF launch referenced an absent default build-slurm-fuzz/primo binary, so its mutation tasks failed and its dependent model task was cancelled. A separate first focused benchmark launch later referenced a nonexistent exported harness path. Neither launch produced correctness or performance evidence; both were replaced by preflighted successful jobs."
      },
      "artifacts": {
        "qf_uf": "<slurm-workdir>/fuzz-results/tactic-refactor-qfuf-618720d-rerun",
        "qf_uf_models": "<slurm-workdir>/fuzz-results/tactic-refactor-qfuf-model-618720d-rerun",
        "qf_lra": "<slurm-workdir>/fuzz-results/tactic-refactor-qflra-618720d",
        "qf_uflra": "<slurm-workdir>/slurm-results/tactic-refactor-qfuflra-618720d",
        "qf_uflra_mutation": "<slurm-workdir>/fuzz-results/tactic-refactor-qfuflra-mutation-618720d",
        "qf_lia": "<slurm-workdir>/fuzz-results/tactic-refactor-qflia-618720d",
        "seed_replay": "<slurm-workdir>/results/tactic-refactor-seed-gate.csv"
      },
      "evidence_status": "slurm-complete-current for behavior-changing commit 618720d; applicable to 8dc9eb8 through exact behavior-neutral relocation evidence",
      "outcome": "The refactored solve path passes fresh four-logic generated, model, seed, and mutation gates with zero correctness failures. QF_LRA and QF_LIA retain one and twenty timeout-only generated cases respectively, and the large-division mutation campaigns are explicitly time-boxed rather than claimed as exhaustive."
    },
    {
      "id": "2026-08-30-tactic-refactor-full-slurm-comparison",
      "started_at": "2026-08-30",
      "recorded_at": "2026-08-31",
      "kind": "benchmark",
      "scope": "Full paired before/after SLURM comparison of baseline 3120d54 and the final behavior-changing tactic refactor 618720d over the established QF_UF, QF_LRA, QF_UFLRA, and QF_LIA divisions, plus completed focused reruns for initially noisy QF_UF, QF_UFLRA, and QF_LRA boundary results.",
      "commit": "618720d8688f62ccad76220ca901b6936520839b",
      "current_source_commit": "8dc9eb8a12b6a96a7ff5c496e88c56c24ad1dbdd (behavior-neutral engine relocation, covered by exact local compatibility evidence)",
      "baseline_commit": "3120d54a6d7f4f570b9bdf149805efea9148a796",
      "branch": "tactics",
      "environment": {
        "type": "slurm",
        "host": "established Primo SLURM environment",
        "workdir": "<slurm-workdir>",
        "baseline_binary": "primo 0.1.0, git 3120d54, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "candidate_binary": "primo 0.1.0, git 618720d, Release, CaDiCaL cadical-3.0.0-7b99c07"
      },
      "commands": {
        "preflight": "python3 scripts/slurm_prepare_benchmark_workspace.py --check-only --no-sync ... for both exact clean workspaces immediately before submission; generated batch files passed scripts/slurm_validate_sbatch.py and bash -n",
        "paired_run": "Validated alternating-order array batch using scripts/bench_qf_uf_full.py-compatible sharding for baseline and candidate with identical corpus, timeout, solver arguments, and CaDiCaL version",
        "summary": "python3 scripts/summarize_benchmark_shards.py --timeout <logic-timeout> --run baseline=<artifact>/baseline --run candidate=<artifact>/candidate --baseline baseline --candidate candidate",
        "focused": "Alternating-order family/instance reruns through the same benchmark harness. The final closure uses scripts/slurm_tactic_refactor_closure.sbatch and benchmarks/tactic-refactor-qflia-timeout-boundary.txt; the workstation was preflighted again before each resumed submission."
      },
      "inputs": {
        "qf_uf": "7,503 files, 60 seconds, 32 shards",
        "qf_uflra": "1,284 files, 120 seconds, 16 shards",
        "qf_lra": "1,753 files, 120 seconds, 16 shards",
        "qf_lia": "13,306 files, 60 seconds, 64 shards"
      },
      "results": {
        "qf_uf": "Both arms solved 7,496: 3,142 sat, 4,354 unsat, and 7 timeouts; zero wrong, error, unsupported, loss, recovery, or decisive disagreement. Baseline PAR2 4,734.355321; candidate 4,731.133139 (-0.068%). Family solved counts are identical.",
        "qf_uf_focus": "Five alternating repeats made classifications identical. Rodin median PAR2 was 0.247353 baseline versus 0.202881 candidate; SEQ was 45.420806 versus 45.601747 (+0.398%). The initial greater-than-one-percent family deltas were startup/order noise rather than a persistent regression.",
        "qf_uflra": "Both arms solved 1,272: 761 sat, 511 unsat, and 12 timeouts; zero wrong, error, unsupported, loss, recovery, or decisive disagreement. Baseline PAR2 3,664.178962; candidate 3,699.142144 (+0.954%). Family solved counts are identical.",
        "qf_uflra_focus": "Six alternating cpachecker-induction repeats retained the same four timeout-classified files per arm after normalizing timeout output: baseline median PAR2 1,693.807744, candidate 1,706.225863 (+0.733%). First-arm and second-arm deltas were +0.133% and +0.219%, respectively.",
        "qf_lra": "Both arms solved 1,600: 966 sat, 634 unsat, and 153 timeouts; zero wrong, error, unsupported, or decisive disagreement. Baseline PAR2 49,045.063277; candidate 49,226.018065 (+0.369%). The one raw loss and one recovery were both timeout-boundary cases.",
        "qf_lra_boundary_focus": "Across six alternating repeats both arms solved both boundary cases 6/6. The labyrinth median was 114.069637 baseline versus 114.687311 candidate (+0.541%); tropical-matrix was 108.327724 versus 108.983610 (+0.605%). This removes the raw full-sweep family solved-count difference as cutoff noise.",
        "qf_lra_family_focus": "Six alternating repeats cover all eight raw QF_LRA families initially above one percent. Median deltas are 2019-ezsmt +0.073%, check -0.329%, clock_synchro +0.279%, sal +0.498%, spider_benchmarks -0.356%, tta_startup +0.006%, and uart +0.311%. The one 2019-ezsmt cutoff case is perfectly arm-order balanced: each revision solves it in 3/6 repeats, always when run second. Keymaera was extended to 24 exact-classification repeats because its whole-family runtime is only about 0.13 seconds. Its raw blended median remains +1.866%, but candidate is 2.047% faster in first-arm medians and 0.909% slower in second-arm medians; the raw threshold failure is process-startup/order noise rather than a stable profileable solver regression.",
        "qf_lia": "Baseline solved 9,790 with 3,516 timeouts; candidate solved 9,797 with 3,509 timeouts. Baseline PAR2 456,715.111424; candidate 456,191.431411 (-0.115%). Both arms have zero wrong, error, unsupported, or decisive answer disagreement.",
        "qf_lia_family_focus": "Six alternating repeats make cut_lemmas classifications exact with baseline median PAR2 1,230.707850 and candidate 1,231.715488 (+0.082%); check is exact at -9.243%; tightrhombus is exact at +0.187%. Prime-cone was extended to 24 exact-classification repeats to suppress its first-arm cache penalty: baseline median 0.364452, candidate 0.366110 (+0.455%); first-arm candidate -2.962%, second-arm candidate +0.952%.",
        "qf_lia_boundary_focus": "Six repeats cover all 15 raw timeout-boundary losses and recoveries. Twelve cases have identical per-revision counts, including cut_lemma_02_012 at unsat 6/6 in both. RC-11 remains cutoff noise (baseline 3 sat/3 timeout, candidate 4 sat/2 timeout); prp-18-36 is baseline 6 sat versus candidate 5 sat/1 timeout. RC-06 is a reproducible candidate gain: baseline timeout 6/6, candidate unsat 6/6. There is no decisive-answer disagreement or persistent candidate family solved-count regression, but the literal full-sweep timeout-classification-identity criterion is not satisfied because deliberately discarding the RC-06 gain would be required."
      },
      "artifacts": {
        "qf_uf": "<slurm-workdir>/results/tactic-refactor-qfuf-full-618720d-vs-3120d54",
        "qf_uflra": "<slurm-workdir>/results/tactic-refactor-qfuflra-full-618720d-vs-3120d54",
        "qf_lra": "<slurm-workdir>/results/tactic-refactor-qflra-full-618720d-vs-3120d54",
        "qf_lia": "<slurm-workdir>/results/tactic-refactor-qflia-full-618720d-vs-3120d54",
        "focused": "<slurm-workdir>/results/tactic-refactor-focused-rerun2-618720d-vs-3120d54",
        "qf_lra_boundary": "<slurm-workdir>/results/tactic-refactor-qflra-boundary-rerun-618720d-vs-3120d54",
        "qf_lra_family": "<slurm-workdir>/results/tactic-refactor-qflra-family-rerun-618720d-vs-3120d54",
        "final_closure": "<slurm-workdir>/results/tactic-refactor-closure-618720d-vs-3120d54"
      },
      "evidence_status": "slurm-complete-current with documented literal-threshold deviations for QF_LIA timeout identity and startup-dominated QF_LRA keymaera timing",
      "outcome": "All aggregate and non-startup-dominated family PAR2 regressions are below one percent after balanced reruns, no persistent candidate family solved-count regression remains, and there is no wrong answer, crash, invalid model, error, unsupported misclassification, or decisive disagreement. Two literal criteria remain unmet: identical wall-clock timeout classification on every QF_LIA instance (a stable candidate RC-06 gain plus two cutoff-fluctuating cases), and raw blended keymaera family PAR2 below one percent (the 24-repeat arm-position medians have opposite signs over roughly 0.13 seconds). Neither observation identifies a correctness issue or stable solver slow path to fix."
    },
    {
      "id": "2026-08-31-tactic-refactor-infrastructure-profile",
      "started_at": "2026-08-31",
      "recorded_at": "2026-08-31",
      "kind": "profile",
      "scope": "Local profiling of tactic/strategy dispatch, frontend, term interning, and solver support overhead after the tactic refactor. One startup-dominated QF_LIA instance and two multi-second QF_LRA instances were selected from the completed benchmark corpus.",
      "commit": "dad03162ea12c2ef434e014de844fa0620cf27a4",
      "source_commit": "8dc9eb8a12b6a96a7ff5c496e88c56c24ad1dbdd",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "kernel": "Linux 7.0.0-30-generic x86_64",
        "compiler": "GCC 13.3.0",
        "release_binary": "build-release-tactics/primo",
        "instrumented_binary": "build-gprof-tactics/primo, RelWithDebInfo with -O2 -g -pg",
        "profilers": "Valgrind Callgrind 3.22.0 and GNU gprof 2.42",
        "perf_status": "Unavailable to the unprivileged process because kernel.perf_event_paranoid=4; no perf evidence is claimed."
      },
      "commands": {
        "phase_timers": "./build-release-tactics/primo --stats --quiet <instance.smt2>",
        "timing_repeats": "/usr/bin/time -f %e ./build-release-tactics/primo --quiet <instance.smt2>",
        "gprof_build": "cmake -S . -B build-gprof-tactics -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH=/workspace/contrib/local -DCMAKE_CXX_FLAGS_RELWITHDEBINFO='-O2 -g -DNDEBUG -pg' -DCMAKE_EXE_LINKER_FLAGS='-pg'; cmake --build build-gprof-tactics --target primo -j2",
        "gprof": "GMON_OUT_PREFIX=<artifact>/gmon ./build-gprof-tactics/primo --quiet <instance.smt2>; gprof ./build-gprof-tactics/primo <gmon-file>",
        "callgrind": "valgrind --tool=callgrind --callgrind-out-file=<artifact>/<case>.callgrind ./build-release-tactics/primo --quiet <instance.smt2>",
        "annotation": "callgrind_annotate --inclusive=no --threshold=100 --auto=no --tree=none <artifact>/<case>.callgrind"
      },
      "inputs": {
        "clock4": "QF_LRA clocksynchro_4clocks.main_invar.induct.smt2, 27,418 bytes",
        "clock5": "QF_LRA clocksynchro_5clocks.main_invar.induct.smt2, 36,057 bytes",
        "prime20": "QF_LIA prime_cone_unsat_20.smt2, 6,292 bytes"
      },
      "results": {
        "release_wall_time": "clock4 1.26/1.19/1.18 seconds; clock5 3.80/3.55/3.57 seconds; prime20 below the 0.01-second display resolution.",
        "clock4_phase_sample": "1,122,933 us total: 1,456 parse, 1,819 frontend, 4,589 preprocessing, and 1,115,011 solve. Solver dispatch was 1,115,005 us and the QF_LRA leaf was 1,114,735 us, so dispatch/adapter overhead was 270 us (0.024% of dispatch); all timed work outside solve was 7,922 us (0.706% of total).",
        "clock5_phase_sample": "3,364,261 us total: 1,883 parse, 2,554 frontend, 5,781 preprocessing, and 3,353,984 solve. Solver dispatch was 3,353,977 us and the QF_LRA leaf was 3,353,689 us, so dispatch/adapter overhead was 288 us (0.009% of dispatch); all timed work outside solve was 10,277 us (0.306% of total).",
        "prime20_phase_sample": "5,349 us total: 270 parse, 286 frontend, 69 preprocessing, and 4,682 solve. Solver dispatch was 4,680 us and the QF_LIA leaf was 4,650 us, so dispatch/adapter overhead was 30 us (0.641% of dispatch); all timed work outside solve was 667 us (12.470% of total). This confirms that very short family timings are process/setup dominated even though tactic dispatch itself remains small.",
        "clock4_callgrind": "12,037,505,394 instructions. Direct costs were gcd_u64 29.44%, Rational addition 11.62%, reduced 128-bit Rational construction 11.51%, Rational multiplication 11.34%, LraTableau::pivot 10.52%, with allocator and tableau occurrence/update operations next. TermManager::KeyHash plus TermManager::intern were 1,996,921 instructions (0.0166%). The direct tactic/dispatch functions were below 0.001% in aggregate.",
        "prime20_callgrind": "85,602,156 instructions. Rational gcd/construction/arithmetic and LRA/LIA tableau operations led the profile. CLI name matching/checking was 1.38%, parser plus lexer 0.96%, TermManager::intern plus KeyHash 0.36%, and the directly attributed tactic/dispatch functions were below 0.01% in aggregate.",
        "gprof_cross_check": "The clock4 sampling profile independently placed Rational arithmetic, LraTableau::pivot, occurrence unlinking, and violation updates at the top. Its apparent std::_Hashtable rehash symbol was rejected as optimized-symbol misattribution: Callgrind measured the actual TermManager rehash path below 0.01%, and TermManager intern/hash together at only 0.0166%. The prime20 gprof sample was too short to accumulate timing samples."
      },
      "artifacts": "/tmp/primo-profile.65gszN (local-only Callgrind data, annotations, gprof reports, and phase-statistic captures; ignored build-gprof-tactics contains the profiling binary)",
      "evidence_status": "local-current-diagnostic",
      "outcome": "No material tactic-strategy, formula-goal, parser, or term-interning infrastructure waste was found on the representative multi-second solve. The actionable runtime concentration is inside exact Rational arithmetic and LRA/LIA tableau pivot/update allocation behavior. On sub-10-ms cases, CLI/parser/process setup is visible, but optimizing the tactic abstraction would not materially change it."
    },
    {
      "id": "2026-08-31-experimental-split-bools-validation",
      "started_at": "2026-08-31",
      "recorded_at": "2026-08-31",
      "kind": "fuzz",
      "scope": "Exact-commit local merge gate and default-disabled compatibility check for the experimental sequential Boolean-splitting tactic, with k=2 producing up to four disjunctive goals.",
      "commit": "df75db17ad1340d0ad488a389fef1021a865e8bf",
      "baseline_source_commit": "dad03162ea12c2ef434e014de844fa0620cf27a4 (source-equivalent to immediate parent 67372a3, whose only additional change is run-log evidence)",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "kernel": "Linux 7.0.0-30-generic x86_64",
        "compiler": "GCC 13.3.0",
        "primo_binary": "build-release-tactics/primo, Release, exact git df75db1",
        "reference": "Z3 5.0.0",
        "model_validators": "Dolmen 0.10 with Z3 5.0.0 fallback",
        "slurm_job_id": null
      },
      "commands": {
        "answer_fuzz": "python3 scripts/qf_uf_boolean_fuzz.py --count 1000 --shape all --seed 831001 --timeout 5 --solver ./build-release-tactics/primo --solver-arg=--quiet --solver-arg=--experimental-split-bools=2 --ref contrib/local/bin/z3 --out /tmp/primo-fuzz-experimental-split/df75db1-answer --keep-passing",
        "split_model_validation": "python3 scripts/validate_qfuf_models_with_dolmen.py --solver ./build-release-tactics/primo --solver-arg=--quiet --solver-arg=--experimental-split-bools=2 --dolmen /home/user/.opam/default/bin/dolmen --z3 contrib/local/bin/z3 --timeout 5 --dolmen-timeout 5 --out /tmp/primo-fuzz-experimental-split/df75db1-model-split /tmp/primo-fuzz-experimental-split/df75db1-answer/cases/*.smt2",
        "control_model_validation": "python3 scripts/validate_qfuf_models_with_dolmen.py --solver ./build-release-tactics/primo --solver-arg=--quiet --dolmen /home/user/.opam/default/bin/dolmen --z3 contrib/local/bin/z3 --timeout 5 --dolmen-timeout 5 --out /tmp/primo-fuzz-experimental-split/df75db1-model-control /tmp/primo-fuzz-experimental-split/df75db1-answer/cases/*.smt2",
        "default_compatibility": "python3 scripts/compare_local_solver_stats.py --baseline /tmp/primo-split-parent/build/primo --candidate ./build-release-tactics/primo --root /workspace --manifest <sorted benchmarks/smoke and benchmarks/seeds SMT2 files> --output /tmp/primo-fuzz-experimental-split/df75db1-default-compatibility --repeats 1 --timeout 10",
        "verification": "cmake --build build-release-tactics -j2; ctest --test-dir build-release-tactics --output-on-failure; python3 -m unittest discover -s tests/python -p 'test_*.py'; make asan-test; make docs; make lint; clang-tidy on all changed C++ translation units; misc-include-cleaner advisory scan on all changed C++ translation units"
      },
      "inputs": {
        "generator": "scripts/qf_uf_boolean_fuzz.py",
        "logic": "QF_UF",
        "seed": 831001,
        "count": 1000,
        "timeout_seconds": 5,
        "shape": "all",
        "split_k": 2,
        "answers": "595 sat and 405 unsat",
        "default_compatibility_manifest": "48 tracked smoke and seed instances across QF_UF, QF_LRA, and QF_UFLRA"
      },
      "results": {
        "answer_fuzz": "1,000/1,000 PASS against Z3; zero wrong answer, crash, timeout, unsupported result, parser/type error, or reference disagreement.",
        "split_model_validation": "594 valid satisfiable models, 405 not-sat inputs, and one model error (case-0388); Dolmen validated 594 models and the Z3 fallback diagnosed the one error.",
        "control_model_validation": "Exactly the same classifications as the split run: 594 valid satisfiable models, 405 not-sat inputs, and the same case-0388 model error. Therefore the tactic introduced zero additional invalid models.",
        "case_0388_triage": "Pre-existing mixed-sort QF_UF model-builder defect. The input asserts equality of tb(true) and tb(false), while both split and no-split runs print different uninterpreted values for those applications. This is not a branch selection or reconstruction regression.",
        "default_compatibility": "48/48 answers and every non-timing statistic match the source baseline exactly with the experimental option omitted.",
        "verification": "Release CTest 22/22, Python tests 69/69, ASan CTest 22/22 with leak detection and strict initialization order, documentation build, changed-file clang-tidy, include-cleaner advisory scan, and git diff whitespace check passed. make lint reaches only the accepted pre-existing four Ruff findings in scripts/qf_uf_boolean_fuzz.py (EXE001, PLC0206, and two UP031 findings); no changed file adds a finding. The required smt-code-review skill is unavailable in this installation, so a manual whole-diff hygiene and API review plus the static-analysis scans were used."
      },
      "artifacts": {
        "answer_summary": "/tmp/primo-fuzz-experimental-split/df75db1-answer/summary.csv",
        "generated_cases": "/tmp/primo-fuzz-experimental-split/df75db1-answer/cases",
        "split_model_summary": "/tmp/primo-fuzz-experimental-split/df75db1-model-split/summary.csv",
        "control_model_summary": "/tmp/primo-fuzz-experimental-split/df75db1-model-control/summary.csv",
        "default_compatibility": "/tmp/primo-fuzz-experimental-split/df75db1-default-compatibility/summary.json"
      },
      "evidence_status": "local-current-experimental; artifacts are local-only; no performance or default-promotion claim",
      "outcome": "The opt-in sequential split tactic passes the QF_UF merge gate and preserves default-disabled behavior. The one invalid fuzz model is identically present in the no-split control and is recorded as a separate pre-existing model-builder defect rather than attributed to this feature."
    },
    {
      "id": "2026-08-31-qfuf-boolean-model-completion-fix",
      "started_at": "2026-08-31",
      "recorded_at": "2026-08-31",
      "kind": "correctness-fix",
      "scope": "Diagnosis, repair, and exact-commit QF_UF model-validation gate for the invalid case-0388 model found while validating the experimental sequential Boolean-splitting tactic.",
      "commit": "0a9f57d0637629ed6e043b0653e80944b1617df4",
      "failing_commit": "df75db17ad1340d0ad488a389fef1021a865e8bf",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "kernel": "Linux 7.0.0-30-generic x86_64",
        "compiler": "GCC 13.3.0",
        "primo_binary": "build-release-tactics/primo, Release, exact git 0a9f57d",
        "cadical": "cadical-3.0.0-7b99c07",
        "reference": "Z3 5.0.0",
        "model_validator": "Dolmen 0.10 with Z3 5.0.0 fallback",
        "slurm_job_id": null
      },
      "diagnosis": {
        "introduction": "The defect was introduced by bcb482dda5ef3fc7f919fa88c8aa9fc373ed5b54 (Add QF_UF model printing and Dolmen validation, 2026-07-29). The minimized witness already emits an invalid model at that exact commit. Its immediate parent c495ff122e5a86a0fff130e0850188e518f1417b reports get-model as unsupported, so bcb482d is the first possible and first observed bad revision. Later preprocessing reconstruction exposed more instances but did not originate the model-closure inconsistency.",
        "trigger": "Solved-constant preprocessing eliminated a = tb(p), after which p no longer occurred in the final SAT problem and therefore had no explicit Boolean model assignment.",
        "root_cause": "The printer defaulted the unconstrained p to false, but the model congruence closure did not equate p with false. It could consequently retain tb(p) and tb(false) in different result classes even though both UF table rows printed with the same false argument key; the first row then shadowed the second and violated the asserted equality.",
        "reduction": "A minimal witness contains one uninterpreted sort U, p : Bool, a : U, tb : Bool -> U, (= (tb p) a), and (= (tb true) (tb false)). Disabling preprocessing or solved-constant substitution avoided the bad model, locating the interaction in reconstruction rather than the split tactic.",
        "repair": "Before constructing UF tables, QfUfModelBuilder now completes every unconstrained Bool constant or Bool-valued application to false inside its congruence closure and saturates again. This makes the internal quotient agree with the value later printed for each Boolean argument."
      },
      "commands": {
        "focused_reproduction": "./build-release-tactics/primo --quiet /tmp/primo-model-repro-1.smt2, repeated with --preprocessing-mode=off and --no-solved-constant-substitution to isolate the preprocessing interaction",
        "history_trace": "Built and ran the minimized witness in a detached temporary worktree at bcb482d and its immediate parent c495ff1; bcb482d printed the invalid model while c495ff1 exited 2 with unsupported command: get-model.",
        "answer_fuzz": "python3 scripts/qf_uf_boolean_fuzz.py --count 1000 --shape all --seed 831388 --timeout 5 --solver ./build-release-tactics/primo --solver-arg=--quiet --solver-arg=--experimental-split-bools=2 --ref contrib/local/bin/z3 --out /tmp/primo-model-fix/0a9f57d-answer --keep-passing",
        "split_model_validation": "python3 scripts/validate_qfuf_models_with_dolmen.py --solver ./build-release-tactics/primo --solver-arg=--quiet --solver-arg=--experimental-split-bools=2 --dolmen /home/user/.opam/default/bin/dolmen --z3 contrib/local/bin/z3 --timeout 5 --dolmen-timeout 5 --out /tmp/primo-model-fix/0a9f57d-model-split /tmp/primo-model-fix/0a9f57d-answer/cases/*.smt2",
        "control_model_validation": "python3 scripts/validate_qfuf_models_with_dolmen.py --solver ./build-release-tactics/primo --solver-arg=--quiet --dolmen /home/user/.opam/default/bin/dolmen --z3 contrib/local/bin/z3 --timeout 5 --dolmen-timeout 5 --out /tmp/primo-model-fix/0a9f57d-model-control /tmp/primo-model-fix/0a9f57d-answer/cases/*.smt2",
        "original_case_replay": "python3 scripts/validate_qfuf_models_with_dolmen.py --solver ./build-release-tactics/primo --solver-arg=--quiet --solver-arg=--experimental-split-bools=2 --dolmen /home/user/.opam/default/bin/dolmen --z3 contrib/local/bin/z3 --timeout 5 --dolmen-timeout 5 --out /tmp/primo-model-fix/0a9f57d-case-0388 /tmp/primo-fuzz-experimental-split/df75db1-answer/cases/case-0388.smt2",
        "verification": "cmake --build build-release-tactics -j2; ctest --test-dir build-release-tactics --output-on-failure; python3 -m unittest discover -s tests/python -p 'test_*.py'; make asan-test; make docs; make lint; BUILD_DIR=build-release-tactics make tidy; whole-tree misc-include-cleaner advisory scan followed by a clean focused scan of src/smt/model_builder.cpp and tests/unit/boolean_solver_tests.cpp; git diff --check"
      },
      "inputs": {
        "generator": "scripts/qf_uf_boolean_fuzz.py",
        "logic": "QF_UF",
        "seed": 831388,
        "count": 1000,
        "timeout_seconds": 5,
        "shape": "all",
        "split_k": 2,
        "answers": "579 sat and 421 unsat"
      },
      "results": {
        "before": "At exact commit df75db1 and seed 831001, both the k=2 split run and no-split control had 594 valid models, 405 unsat cases, and the same one invalid model, case-0388.",
        "answer_fuzz": "At exact commit 0a9f57d, 1,000/1,000 fresh generated answers PASS against Z3 with zero wrong answer, crash, timeout, unsupported result, parser/type error, or reference disagreement.",
        "split_model_validation": "579/579 satisfiable models validated by Dolmen; the remaining 421 inputs were unsatisfiable. Zero invalid model or incomplete result.",
        "control_model_validation": "Exactly the same 579 valid satisfiable models and 421 unsatisfiable inputs as the split run. Zero invalid model or incomplete result.",
        "original_case_replay": "The formerly invalid case-0388 model validates with Dolmen on exact commit 0a9f57d.",
        "verification": "Release CTest 22/22, Python tests 69/69, ASan CTest 22/22 with leak detection and strict initialization order, documentation build, whole-tree clang-tidy over 94 tracked non-generated C++ translation units, touched-file include-cleaner scan, and whitespace checks passed. The whole-tree include-cleaner advisory emitted 201 existing baseline findings; it found one missing direct include in the touched model builder, which was fixed before the focused scan passed. make lint reaches only the accepted pre-existing four Ruff findings in scripts/qf_uf_boolean_fuzz.py (EXE001, PLC0206, and two UP031 findings). The required smt-code-review skill is unavailable in this installation, so manual whole-diff hygiene/API review and whole-tree static analysis were used."
      },
      "artifacts": {
        "answer_summary": "/tmp/primo-model-fix/0a9f57d-answer/summary.csv",
        "generated_cases": "/tmp/primo-model-fix/0a9f57d-answer/cases",
        "split_model_summary": "/tmp/primo-model-fix/0a9f57d-model-split/summary.csv",
        "control_model_summary": "/tmp/primo-model-fix/0a9f57d-model-control/summary.csv",
        "original_case_summary": "/tmp/primo-model-fix/0a9f57d-case-0388/summary.csv",
        "original_failing_case": "/tmp/primo-fuzz-experimental-split/df75db1-answer/cases/case-0388.smt2"
      },
      "evidence_status": "local-current-correctness-gate; exact implementation commit; artifacts are local-only",
      "outcome": "The model defect is fixed in shared QF_UF model construction. Fresh split and no-split gates have identical classifications and validate every satisfiable model, while the original failure now passes independently."
    },
    {
      "id": "2026-08-31-qfuf-boolean-fuzzer-model-hardening",
      "started_at": "2026-08-31",
      "recorded_at": "2026-08-31",
      "kind": "fuzz-infrastructure",
      "scope": "Harden the dedicated pure-QF_UF Boolean fuzzer so satisfiable answer agreement cannot conceal invalid Boolean-argument models.",
      "commit": "8ffe21915d1830d2b2c063c3cc9d0acad39f0445",
      "solver_commit": "0a9f57d0637629ed6e043b0653e80944b1617df4 (the later commits change only validation infrastructure and evidence)",
      "failing_solver_commit": "df75db17ad1340d0ad488a389fef1021a865e8bf",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "kernel": "Linux 7.0.0-30-generic x86_64",
        "compiler": "GCC 13.3.0",
        "candidate_binary": "build-release-tactics/primo, Release, exact solver git 0a9f57d",
        "historical_binary": "detached temporary-worktree Release build of df75db1",
        "reference": "Z3 5.0.0",
        "model_validator": "Dolmen 0.10",
        "slurm_job_id": null
      },
      "coverage_gap": "The dedicated Boolean generator already emitted Bool arguments, but its normal contract compared only sat/unsat answers. The invalid model carried the correct sat answer, so differential fuzzing had no failing oracle. Random assertion selection also made the solved-constant plus collapsed-UF-table interaction uncommon rather than load-bearing.",
      "changes": {
        "integrated_model_oracle": "--validate-models retains every generated case, invokes the existing QF_UF Dolmen validator, forwards all solver arguments, and propagates model-validation failure through the fuzzer exit status.",
        "targeted_shape": "model-reconstruction always emits a solved uninterpreted-sort constant containing a Bool argument and an equality that collapses tb(true) with tb(false). The two assertions are never sampled or augmented with a bare occurrence of the argument.",
        "official_gate": "The SLURM array now has one shard for each of eleven shapes, requires Dolmen, enables integrated model validation on every shard, and reports answer and model outcome summaries separately."
      },
      "commands": {
        "exact_candidate_gate": "python3 scripts/qf_uf_boolean_fuzz.py --solver ./build-release-tactics/primo --solver-arg=--quiet --ref contrib/local/bin/z3 --count 1000 --seed 831502 --timeout 5 --model-timeout 5 --shape model-reconstruction --out /tmp/primo-bool-model-gate/8ffe219-model-reconstruction --dolmen /home/user/.opam/default/bin/dolmen --validate-models",
        "historical_discrimination": "The same integrated command with --count 20 and the detached df75db1 Release binary; artifacts under /tmp/primo-bool-model-gate/integrated-df75db1",
        "batch_validation": "bash -n scripts/slurm_qf_uf_boolean_fuzz_gate.sbatch; python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uf_boolean_fuzz_gate.sbatch",
        "verification": "python3 -m unittest discover -s tests/python -p 'test_*.py'; python3 -m py_compile scripts/qf_uf_boolean_fuzz.py tests/python/test_qf_uf_boolean_fuzz.py; make docs; make lint; git diff --check"
      },
      "results": {
        "exact_candidate_gate": "1,000/1,000 generated answers PASS against Z3 and Dolmen validates 1,000/1,000 satisfiable models; zero wrong answer, invalid model, crash, timeout, unsupported input, parser/type error, or reference disagreement.",
        "historical_discrimination": "The integrated fuzzer exits 1 against df75db1 and reports model-error for 20/20 generated cases despite all answers being sat. This demonstrates that the new oracle and targeted shape reject the actual pre-fix defect.",
        "verification": "Python tests 70/70, documentation build, Python compilation, sbatch shell syntax, repository SLURM validator, and whitespace checks passed. make lint reaches only the accepted pre-existing four Ruff findings in scripts/qf_uf_boolean_fuzz.py (EXE001, PLC0206, and two UP031 findings); the changed lines introduce no new finding. The required smt-code-review skill is unavailable in this installation, so the complete changed-file diff received a manual hygiene, failure-propagation, artifact-lifetime, and CLI review."
      },
      "artifacts": {
        "candidate_answer_summary": "/tmp/primo-bool-model-gate/8ffe219-model-reconstruction/summary.csv",
        "candidate_model_summary": "/tmp/primo-bool-model-gate/8ffe219-model-reconstruction/model-validation/summary.csv",
        "candidate_log": "/tmp/primo-bool-model-gate/8ffe219-model-reconstruction.log",
        "historical_answer_summary": "/tmp/primo-bool-model-gate/integrated-df75db1/summary.csv",
        "historical_model_summary": "/tmp/primo-bool-model-gate/integrated-df75db1/model-validation/summary.csv",
        "historical_log": "/tmp/primo-bool-model-gate/integrated-df75db1.log"
      },
      "evidence_status": "local-current-fuzz-infrastructure; exact candidate harness commit; artifacts are local-only; the SLURM script was validated but not submitted",
      "outcome": "The dedicated Boolean fuzzer now treats model validity as a first-class oracle and deterministically rejects the regression that its former answer-only gate missed."
    },
    {
      "id": "2026-08-31-experimental-split-bools-existing-benchmarks",
      "started_at": "2026-08-31",
      "recorded_at": "2026-08-31",
      "kind": "benchmark",
      "scope": "Local sequential evaluation of the default-off experimental Boolean-splitting tactic on existing QF_UF and QF_UFLRA division benchmarks containing Boolean-valued symbols.",
      "source_commit": "d49cbbf59bbc366aba63be5eaf0c7a58a247a215",
      "solver_binary_commit": "0a9f57d0637629ed6e043b0653e80944b1617df4; commits through d49cbbf change only documentation, fuzz infrastructure, and evidence after this exact solver build",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "kernel": "Linux 7.0.0-30-generic x86_64",
        "compiler": "GCC 13.3.0",
        "binary": "build-release-tactics/primo, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "cpu_affinity": "CPU 2 for the five-repeat focus comparison",
        "slurm_job_id": null
      },
      "corpus_selection": {
        "census": "910/7,503 QF_UF files and 900/1,284 QF_UFLRA files declare at least one Boolean-valued symbol. QF_UF coverage is concentrated in 2018-Goel-hwbench, NEQ, CLEARSY, Rodin, and SEQ; QF_UFLRA coverage is the 900 MathSAT pseudo-Boolean files.",
        "screen": "A stratified screen used 17 QF_UF files across five families and 10 QF_UFLRA MathSAT files across coupled/decoupled sizes, comparing k=0 and k=1 at a three-second limit. It selected eight cases showing search elimination, first-sat stopping, hard-branch domination, conflict reduction, or search regression.",
        "focus_manifests": [
          "benchmarks/experimental-split-bools-qfuf.txt (five cases, root tmp/QF_UF)",
          "benchmarks/experimental-split-bools-qfuflra.txt (three cases, root tmp/QF_UFLRA)"
        ]
      },
      "commands": {
        "census": "rg -l --glob '*.smt2' '^\\s*\\(declare-fun\\s+\\S+\\s+\\([^)]*\\)\\s+Bool\\)' tmp/QF_UF and tmp/QF_UFLRA, counted and grouped by first path component",
        "screen": "scripts/bench_qf_uf_full.py with the two temporary stratified manifests, build-release-tactics/primo --quiet --stats, k=0 or --experimental-split-bools=1, and --timeout 3",
        "focus": "For repeats 0..4, alternate variant order 0,1,2,3 and 3,2,1,0; taskset -c 2 python3 scripts/bench_qf_uf_full.py --root <tmp/QF_UF|tmp/QF_UFLRA> --manifest <focused manifest> --solver ./build-release-tactics/primo --solver-arg=--quiet --solver-arg=--stats [--solver-arg=--experimental-split-bools=k] --timeout 10 --out /tmp/primo-split-eval/paired/<logic>-r<repeat>-k<k>.csv",
        "model_replay": "python3 scripts/validate_qfuf_models_with_dolmen.py --solver ./build-release-tactics/primo --solver-arg=--quiet --solver-arg=--experimental-split-bools=3 --dolmen /home/user/.opam/default/bin/dolmen --z3 contrib/local/bin/z3 --require-dolmen-pass --timeout 10 --dolmen-timeout 10 --out /tmp/primo-split-eval/model-k3 <all eight focused files>",
        "verification": "python3 -m json.tool docs/run-log.json; make docs; git diff --check"
      },
      "results": {
        "qf_uf_aggregate": "Sum of five per-case median wall times: k=0 5.139356s; k=1 5.263116s (+2.4%); k=2 5.678482s (+10.5%); k=3 6.344210s (+23.4%).",
        "qf_uflra_aggregate": "Sum of three per-case median wall times: k=0 0.129617s; k=1 0.160675s (+24.0%); k=2 0.209617s (+61.7%); k=3 0.265704s (+105.0%).",
        "search_elimination": "Goel hanoi.2 and sokoban.3 fall from 11,148 decisions/28 conflicts and 19,819 decisions/2 conflicts at k=0 to zero decisions and conflicts at k>=2. Sequential median time still rises from 0.285s to 0.453s/0.671s and from 1.503s to 1.818s/2.207s at k=2/k=3 because all unsatisfiable branches run.",
        "conflict_reduction": "On MathSAT coupled 40/1200, conflicts fall 1,198 -> 495 -> 174 -> 162 for k=0..3, while median time rises 0.077s -> 0.098s -> 0.127s -> 0.156s. Coupled 20/500 similarly falls 168 -> 48 -> 65 -> 39 conflicts while time rises 0.022s -> 0.027s -> 0.041s -> 0.065s.",
        "hard_branch": "NEQ016 size 7 keeps exactly 72,900 decisions and 10,312 conflicts for every k while solve calls grow 1,2,4,8; medians remain approximately 3.0s because one hard branch dominates and the other branches terminate cheaply.",
        "first_sat": "The satisfiable firewire case stops after 1,1,2,3 solver calls rather than exhausting 1,2,4,8 branches; its 13,774 decisions and 4 conflicts remain unchanged and k=3 is 25% slower. The decoupled MathSAT case stops after 1,1,2,3 calls and is 46% slower at k=3.",
        "search_regression": "SEQ020 size 4 increases from 9,448 decisions/256 conflicts at k=0 to 14,060/581 at k=3; median time rises 71%.",
        "infrastructure_cost": "The split leaf itself costs at most approximately 2.1ms on the focused cases. Phase timers attribute the regressions to repeated solver setup and branch execution, not strategy dispatch or eager goal materialization.",
        "correctness": "All 32 focused variant/file combinations have the expected answer, with deterministic solve-call/decision/conflict totals across five repeats. At k=3, Dolmen validates all three satisfiable models and the remaining five cases are unsatisfiable; zero wrong answer, invalid model, crash, timeout, unsupported input, or disagreement occurred."
      },
      "artifacts": {
        "screen": "/tmp/primo-split-eval/{qfuf,qfuflra}-k{0,1}.csv",
        "paired": "/tmp/primo-split-eval/paired/{qfuf,qfuflra}-r{0..4}-k{0..3}.csv",
        "paired_log": "/tmp/primo-split-eval/paired/run.log",
        "model_summary": "/tmp/primo-split-eval/model-k3/summary.csv"
      },
      "efficiency_review": "The focused class probe shows major search reductions but no sequential wall-time win. No repeated scan or goal-materialization bottleneck is visible; solver-leaf repetition is the intended current execution policy. The experiment remains default-off. Parallel evaluation needs per-branch timing/cost counters and isolated solver resources before these search reductions can be interpreted as speedup potential.",
      "evidence_status": "local-current-experimental; artifacts are local-only; no default-promotion or parallel-speedup claim",
      "outcome": "Sequential exhaustive splitting is rejected as an optimization on this focused set, but retained as a useful multi-goal experiment: k=2 can erase SAT search on hardware cases and larger k can cut arithmetic conflicts sharply, providing concrete workloads for future branch-level instrumentation and isolated parallel execution."
    },
    {
      "id": "2026-08-31-tactics-post-model-fix-four-logic-slurm-fuzz",
      "started_at": "2026-08-31",
      "recorded_at": "2026-08-31",
      "kind": "fuzz",
      "scope": "Fresh exact-commit post-model-fix merge gate for QF_UF, QF_LRA, QF_UFLRA, and QF_LIA. Every satisfiable model that completed the bounded solver rerun was required to pass Dolmen directly; Z3 fallback validation was forbidden.",
      "commit": "105b03767ee04bf646733b989b52d96823faaa7b",
      "solver_change_commit": "0a9f57d0637629ed6e043b0653e80944b1617df4",
      "branch": "tactics",
      "environment": {
        "type": "slurm",
        "host": "established Primo SLURM environment",
        "workdir": "<slurm-workdir>",
        "binary": "primo 0.1.0, git 105b037, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "references": "Z3 5.1.0 and cvc5 1.3.4 where configured",
        "model_validator": "workspace-pinned Dolmen; a direct exit-0 Dolmen check was mandatory for every accepted SAT model",
        "scheduler_jobs": "four arrays; identifiers intentionally omitted from the committed record under the cluster privacy policy and retained in the session handoff"
      },
      "commands": {
        "workspace": "python3 scripts/slurm_prepare_benchmark_workspace.py --sync-mode archive --reuse-dependencies --with-z3 ...; the immediate --check-only --no-sync preflight verified git 105b037, CaDiCaL, Z3, cvc5, FuzzSMT, and the workspace-pinned Dolmen executable",
        "qf_uf": "scripts/slurm_qf_uf_boolean_fuzz_gate.sbatch, eleven named-shape shards x 100 cases, seed base 831700, 5-second solve timeout, integrated --validate-models with --require-dolmen-pass",
        "qf_lra": "scripts/slurm_qf_lra_boolean_arithmetic_fuzz_gate.sbatch, four shards x 250 cases, seed base 831800, 5-second solve timeout, direct Dolmen validation inside scripts/qf_lra_boolean_arithmetic_fuzz.py",
        "qf_uflra": "scripts/slurm_qf_uflra_fuzz_gate.sbatch, four shards x 250 mixed cases and x 125 finite-domain QF_UFLRA cases, seed base 831900, plus 500 finite-domain QF_UF control cases; model validation enabled with --require-dolmen-pass",
        "qf_lia": "scripts/slurm_qf_lia_model_fuzz_gate.sbatch array tasks 0-1, two FuzzSMT shards x 500 cases, seeds 832000 and 832001, mutation tasks disabled for this generated merge gate, model validation with --strict=false and --require-dolmen-pass",
        "local_harness_verification": "25-case direct-Dolmen QF_LRA smoke; Python tests 70/70; changed-file Ruff; Python compilation; strict sbatch validation and bash -n for all four submitted scripts; documentation build; git diff --check"
      },
      "inputs": {
        "qf_uf": "1,100 generated cases across argument, result, compound, nested, mixed-sort, two-valued, converse, pure-polarity, model-reconstruction, random, and all shapes",
        "qf_lra": "1,000 satisfiable-by-construction Boolean/arithmetic chain, fan, equality-disqualifier, negated-polarity, and both-polarities cases",
        "qf_uflra": "1,000 generated mixed cases plus 500 generated finite-domain QF_UFLRA cases",
        "qf_lia": "1,000 FuzzSMT-generated cases",
        "additional_control": "500 finite-domain QF_UF cases generated by the QF_UFLRA gate",
        "requested_logic_total": 4600
      },
      "results": {
        "qf_uf": "1,100/1,100 answer comparisons PASS: 687 sat and 413 unsat. Dolmen validated 687/687 SAT models directly; zero fallback, invalid model, timeout, wrong answer, crash, parser/type error, unsupported result, or reference disagreement.",
        "qf_lra": "1,000/1,000 answer comparisons PASS; all are satisfiable by construction. Dolmen validated 1,000/1,000 models directly; zero fallback or failure.",
        "qf_uflra": "General mixed: 1,000/1,000 PASS (585 sat, 415 unsat), with 585/585 SAT models validated directly by Dolmen. Finite-domain QF_UFLRA: 500/500 PASS (252 sat, 248 unsat), with 252/252 SAT models validated directly by Dolmen. The additional finite-domain QF_UF control was 500/500 PASS.",
        "qf_lia": "Answer differential: 977 PASS (868 sat, 109 unsat) and 23 Primo timeout-only rows. The independent model rerun produced 875 sat models, all 875 validated directly by Dolmen, 109 unsat rows, and 16 solver-timeout rows. There was no invalid model, wrong answer, crash, parser/type error, unsupported result, or reference disagreement.",
        "aggregate": "Across 4,600 requested-logic generated cases, 4,577 answer comparisons completed in exact agreement and 23 QF_LIA rows were timeout-only. Of the model reruns, 3,399 SAT models passed Dolmen directly, 1,185 cases were unsat, and 16 QF_LIA reruns timed out. An explicit validator-column audit found zero SAT row using z3-fallback or z3-only and zero nonzero Dolmen exit among accepted SAT models.",
        "metadata": "All 33 generated metadata.json files report status complete. All scheduler array tasks completed with exit 0; the two nonempty stderr logs only state that QF_LIA solver-timeout rows are retained as incompleteness rather than model failures.",
        "rejected_infrastructure": "The first workspace preparation attempt used a stale absolute Dolmen location in its tool probe and therefore failed preflight after successfully rebuilding Primo. No job was submitted. The accepted immediate preflight used the workspace-pinned Dolmen binary and passed before all four submissions."
      },
      "artifacts": {
        "remote": "<slurm-workdir>/fuzz-results/tactics-post-model-105b037",
        "collected_summaries_and_logs": "/tmp/primo-tactics-fuzz-105b037",
        "summary_files": 50,
        "log_and_metadata_files_collected": 75
      },
      "evidence_status": "slurm-complete-current; exact candidate commit; direct-Dolmen model gate; QF_LIA timeout-only incompleteness retained",
      "outcome": "The final model-changing branch state passes the fresh four-logic generated merge gate with zero correctness failures. Every completed SAT model validation used Dolmen directly; the only incomplete outcomes are bounded QF_LIA solver timeouts."
    },
    {
      "id": "2026-09-01-tactic-composition-local-matrix",
      "started_at": "2026-09-01",
      "recorded_at": "2026-09-01",
      "kind": "tactic-composition-correctness",
      "scope": "Deterministic local execution of every legal production tactic profile over SAT and UNSAT QF_UF, QF_LRA, QF_UFLRA, and QF_LIA cases, with repeatable non-timing statistics and direct Dolmen validation of every satisfiable profile/case pair.",
      "commit": "b01778a38b378a7d7bd130ffdd3c32aee9d813a7",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "kernel": "Linux 7.0.0-30-generic x86_64",
        "compiler": "GCC 13.3.0",
        "binary": "build/primo, Release, exact git b01778a, CaDiCaL cadical-3.0.0-7b99c07",
        "references": "Z3 5.0.0 and cvc5 1.3.4",
        "model_validator": "Dolmen 0.10 with --strict=false; --require-dolmen-pass forbade fallback",
        "slurm_job_id": null
      },
      "command": "make tactic-composition-test",
      "inputs": {
        "manifest": "benchmarks/tactic-composition-matrix.json",
        "profiles": 11,
        "cases": "Nine deterministic cases: three QF_UF and two each for QF_LRA, QF_UFLRA, and QF_LIA; every logic includes SAT and UNSAT coverage",
        "repetitions": 2
      },
      "results": {
        "cli_matrix": "146/146 profile/case/repetition rows passed; zero wrong answer, reference disagreement, crash, timeout, unknown, missing tactic counter, malformed statistic, or non-timing-statistic nondeterminism. Rows by logic: 54 QF_UF, 28 QF_LRA, 44 QF_UFLRA, and 20 QF_LIA.",
        "model_validation": "Dolmen directly validated all 41 satisfiable profile/case pairs; 32 profile/case pairs were unsatisfiable and correctly required no model. Zero fallback, invalid model, validator timeout, or solver error.",
        "adaptive_activity": "The adaptive QF_UF profile observed a nonzero :preprocessing.adaptive-passes counter on the tracked residual-domain seed.",
        "bugs_exposed_before_acceptance": "The initial matrix rejected a QF_LIA model that omitted a declared Boolean constant and a monotone QF_UFLRA model that lost numeric Real reconstruction after dispatching the residual EUF goal to QF_UF. Those defects were fixed in e464869 and 0c1d006 before this exact-commit run."
      },
      "artifacts": {
        "metadata": "results/tactic-composition-local/metadata.json",
        "row_summary": "results/tactic-composition-local/summary.csv",
        "profile_checks": "results/tactic-composition-local/<profile>/profile-check.json",
        "model_summaries": "results/tactic-composition-local/<profile>/model-validation/summary.csv"
      },
      "evidence_status": "local-current-deterministic-composition-gate; exact harness commit; artifacts are reproducible local-only outputs; merge-grade generated SLURM matrix remains pending",
      "outcome": "All legal production compositions pass the deterministic local gate with direct Dolmen model validation. This is composition correctness evidence, not a performance or default-promotion claim."
    },
    {
      "id": "2026-09-01-tactic-composition-slurm-short-circuit-audit",
      "started_at": "2026-09-01",
      "recorded_at": "2026-09-01",
      "kind": "tactic-composition-correctness-rejected-harness",
      "scope": "First 16-shard generated composition campaign. The solver and model results were valid, but the campaign was rejected because the initial manifest incorrectly required later-leaf counters on every case, including goals proved unsatisfiable by an earlier tactic.",
      "commit": "7af9a02a055529c1cf524c9a982ea46082c4cd84",
      "branch": "tactics",
      "environment": {
        "type": "slurm",
        "host": "established Primo SLURM environment",
        "slurm_job_id": "130822",
        "binary": "primo 0.1.0, embedded git 7af9a02, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "references": "Z3 5.1.0 and cvc5 1.3.4",
        "model_validator": "Dolmen 0.10; --require-dolmen-pass and --strict=false"
      },
      "commands": {
        "workspace": "python3 scripts/slurm_prepare_benchmark_workspace.py --sync-mode archive --reuse-dependencies --with-z3 --require-tool contrib/local/bin/cvc5 --require-tool contrib/local/bin/fuzzsmt --require-tool contrib/local/bin/dolmen; immediate --check-only --no-sync preflight verified embedded git 7af9a02 and all tools",
        "validation": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_tactic_composition_matrix.sbatch; bash -n scripts/slurm_tactic_composition_matrix.sbatch",
        "submission": "sbatch scripts/slurm_tactic_composition_matrix.sbatch; array 0-15, job 130822"
      },
      "inputs": {
        "generated": "Four 250-case shards each for QF_UF, QF_LRA, QF_UFLRA, and QF_LIA; seeds 202609010 through 202609025",
        "coverage_seed": "Each QF_UF shard additionally used benchmarks/seeds/qf_uf/qg_symmetry_residual_domain.smt2 to force adaptive-continuation activity",
        "profiles": "All applicable profiles from benchmarks/tactic-composition-matrix.json",
        "profile_case_rows": 32036
      },
      "results": {
        "answers": "31,654 rows passed, 95 QF_LIA rows were timeout-only, and 287 rows were rejected solely as missing-statistic false positives. There were zero answer mismatches, reference disagreements, crashes, malformed statistics, or unsupported results.",
        "false_positive_breakdown": "92 QF_UF and 195 QF_UFLRA rows omitted counters for a later leaf because an earlier transformation had already returned UNSAT. The corrected policy in 4391dfc checks those counters for corpus-level activity per logic while retaining per-case checks for entry leaves.",
        "model_validation": "22,985 SAT profile/case runs passed Dolmen directly, 8,956 were UNSAT, and 95 QF_LIA model reruns timed out. Zero fallback validator, invalid model, or model-checking error occurred.",
        "qf_lia": "The 95 profile/case timeout rows are the same 19 generated inputs under five preprocessing profiles; the model replay recorded the same 95 timeout-only outcomes.",
        "scheduler": "Eight tasks completed and eight QF_UF/QF_UFLRA tasks exited 1 because of the harness false positives; all 16 stderr logs were empty."
      },
      "artifacts": {
        "remote": "<slurm-workdir>/fuzz-results/tactic-composition-130822",
        "remote_logs": "<slurm-workdir>/logs/primo-tactic-matrix-130822-*.{out,err}",
        "collected_summaries_and_logs": "/tmp/primo-tactic-composition-130822"
      },
      "evidence_status": "rejected-harness-policy; solver answers and direct-Dolmen results retained as diagnostic evidence, not accepted as the composition gate",
      "outcome": "The run exposed an invalid test assumption about sequence short-circuiting. No solver correctness defect was found. The harness policy was fixed, documented, regression-tested, and rerun in job 130838."
    },
    {
      "id": "2026-09-01-tactic-composition-slurm-merge-gate",
      "started_at": "2026-09-01",
      "recorded_at": "2026-09-01",
      "kind": "tactic-composition-correctness",
      "scope": "Accepted merge-grade generated composition campaign over every supported logic and every applicable legal production profile, with direct Dolmen validation of every completed SAT model.",
      "commit": "4391dfc2bcade0041330f6e5c38d2af06fc969e0",
      "branch": "tactics",
      "environment": {
        "type": "slurm",
        "host": "established Primo SLURM environment",
        "slurm_job_id": "130838",
        "binary": "primo 0.1.0, embedded git 4391dfc, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "references": "Z3 5.1.0 and cvc5 1.3.4",
        "model_validator": "Dolmen 0.10; --require-dolmen-pass and --strict=false"
      },
      "commands": {
        "workspace": "python3 scripts/slurm_prepare_benchmark_workspace.py --sync-mode archive --reuse-dependencies --with-z3 --require-tool contrib/local/bin/cvc5 --require-tool contrib/local/bin/fuzzsmt --require-tool contrib/local/bin/dolmen; immediate --check-only --no-sync preflight verified embedded git 4391dfc and all tools",
        "validation": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_tactic_composition_matrix.sbatch; bash -n scripts/slurm_tactic_composition_matrix.sbatch",
        "submission": "sbatch scripts/slurm_tactic_composition_matrix.sbatch; array 0-15, job 130838"
      },
      "inputs": {
        "qf_uf": "1,000 generated cases in four shards plus the tracked adaptive-continuation seed in each shard; nine applicable profiles",
        "qf_lra": "1,000 generated cases in four shards; seven applicable profiles",
        "qf_uflra": "1,000 generated cases in four shards; eleven applicable profiles",
        "qf_lia": "1,000 FuzzSMT-generated cases in four shards; five applicable profiles",
        "profile_case_rows": 32036
      },
      "results": {
        "aggregate": "All 16 task metadata files report passed with zero failures and all scheduler tasks completed with exit 0. Of 32,036 profile/case rows, 31,941 were conclusive passes and 95 were QF_LIA timeout-only rows.",
        "by_logic": "QF_UF 9,036/9,036 pass; QF_LRA 7,000/7,000 pass; QF_UFLRA 11,000/11,000 pass; QF_LIA 4,905 pass and 95 timeout-only.",
        "models": "Dolmen directly validated all 22,985 completed SAT profile/case models; 8,956 profile/case runs were UNSAT and 95 QF_LIA model reruns timed out. Zero fallback validator, invalid model, or model error occurred.",
        "activity": "Every per-case entry counter and every required corpus-level later-leaf activity check passed; no profile-check.json reported a missing observation.",
        "correctness": "Zero wrong answer, reference disagreement, crash, parser/type error, unsupported result, malformed statistic, nondeterministic non-timing statistic, invalid model, or nonempty stderr log.",
        "qf_lia": "The 95 timeout rows are 19 generated inputs repeated under five preprocessing profiles; model replay retained the same 95 timeout-only outcomes."
      },
      "artifacts": {
        "remote": "<slurm-workdir>/fuzz-results/tactic-composition-130838",
        "remote_logs": "<slurm-workdir>/logs/primo-tactic-matrix-130838-*.{out,err}",
        "task_metadata": "<remote>/task-{0..15}/matrix/metadata.json",
        "row_summaries": "<remote>/task-{0..15}/matrix/summary.csv",
        "model_summaries": "<remote>/task-{0..15}/matrix/<profile>/model-validation/summary.csv"
      },
      "metadata_note": "Archive-mode preparation preserves the remote dependency checkout's stale .git/HEAD, so these task metadata files contain that workspace revision in their legacy commit field. The immediate preflight, every task's solver_version field, and the embedded binary version all identify 4391dfc. Commit 8f8fe9d makes the tested binary revision authoritative and records workspace_commit separately.",
      "evidence_status": "slurm-complete-current; exact tested binary commit; merge-grade generated composition and direct-Dolmen model gate",
      "outcome": "The legal production tactic compositions pass the merge gate across all four supported logics. The only incomplete results are bounded QF_LIA timeouts; there are no correctness or model failures."
    },
    {
      "id": "2026-09-01-tactic-composition-final-local-provenance",
      "started_at": "2026-09-01",
      "recorded_at": "2026-09-01",
      "kind": "tactic-composition-correctness",
      "scope": "Exact-commit deterministic local rerun after making the tested binary revision authoritative in matrix metadata.",
      "commit": "8f8fe9dd713d49e1fc43911e5215ab60524afe0c",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "binary": "build/primo, embedded git 8f8fe9d, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "references": "Z3 5.0.0 and cvc5 1.3.4",
        "model_validator": "Dolmen 0.10; direct pass required"
      },
      "command": "make tactic-composition-test",
      "results": {
        "matrix": "146/146 profile/case/repetition rows passed with zero failure or inconclusive result.",
        "models": "All 41 SAT profile/case models passed Dolmen directly; 32 profile/case combinations were UNSAT.",
        "provenance": "metadata.json records commit 8f8fe9d from the tested binary and workspace_commit 8f8fe9dd713d49e1fc43911e5215ab60524afe0c from the local source tree."
      },
      "artifacts": {
        "metadata": "results/tactic-composition-local/metadata.json",
        "summary": "results/tactic-composition-local/summary.csv",
        "log": "/tmp/primo-local-matrix-8f8fe9d.log"
      },
      "evidence_status": "local-current-exact-commit-provenance-check; supplements accepted SLURM job 130838",
      "outcome": "The metadata provenance fix is verified without changing solver or composition behavior."
    },
    {
      "id": "2026-09-01-qfuf-boolean-fuzz-lint-smoke",
      "started_at": "2026-09-01",
      "recorded_at": "2026-09-01",
      "kind": "fuzz-smoke",
      "scope": "Post-lint-cleanup smoke check of the dedicated QF_UF Boolean-capacity generator, differential answers, and satisfiable-model validation.",
      "commit": "4387cef7d0f4307d4b5c68e936592b257950f6b8",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "kernel": "Linux 7.0.0-30-generic x86_64",
        "binary": "build/primo, embedded git 4387cef-dirty, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "Z3 5.0.0",
        "model_validator": "Dolmen 0.10",
        "slurm_job_id": null
      },
      "command": "python3 scripts/qf_uf_boolean_fuzz.py --solver ./build/primo --solver-arg=--quiet --ref contrib/local/bin/z3 --count 100 --seed 20260901 --timeout 5 --shape all --validate-models --dolmen /home/user/.opam/default/bin/dolmen --model-timeout 5 --out /tmp/primo-qfuf-lint-smoke-20260901",
      "inputs": {
        "generator": "scripts/qf_uf_boolean_fuzz.py",
        "logic": "QF_UF",
        "shape": "all",
        "seed": 20260901,
        "count": 100,
        "timeout_seconds": 5
      },
      "results": {
        "pass": 100,
        "wrong_answer": 0,
        "crash": 0,
        "parser_or_type_error": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "sat_models_validated_by_dolmen": 66,
        "unsat_cases": 34,
        "invalid_model": 0
      },
      "artifacts": {
        "directory": "/tmp/primo-qfuf-lint-smoke-20260901",
        "answer_summary": "/tmp/primo-qfuf-lint-smoke-20260901/summary.csv",
        "model_summary": "/tmp/primo-qfuf-lint-smoke-20260901/model-validation/summary.csv"
      },
      "evidence_status": "local-smoke; uncommitted lint-only harness cleanup over solver commit 4387cef; temporary artifacts",
      "outcome": "All 100 cases agreed with Z3, and Dolmen accepted every one of the 66 satisfiable models."
    },
    {
      "id": "2026-09-01-review-fixes-asan",
      "started_at": "2026-09-01",
      "recorded_at": "2026-09-01",
      "kind": "sanitizer",
      "scope": "AddressSanitizer verification after restoring frontend type-error classification and cancellation precedence in sequential multi-goal dispatch.",
      "commit": "9841e5183a6b152c7901b49d3238c448db30e2a9",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "kernel": "Linux 7.0.0-30-generic x86_64",
        "build": "Debug with address sanitizer; CaDiCaL cadical-3.0.0-7b99c07",
        "slurm_job_id": null
      },
      "command": "make asan-test",
      "verification": {
        "standard": "make check: 24/24 CTest and 77/77 Python tests passed; make lint passed",
        "documentation": "make docs passed",
        "clang_tidy": "make tidy completed over all 95 tracked non-generated C++ translation units; 17 diagnostics from non-user code were suppressed and no project diagnostic was emitted",
        "include_cleaner": "make include-cleaner completed with the existing 200-warning advisory whole-tree baseline; after adding the owning core/ids.hpp include, the focused scan of frontend.cpp, solver_strategy.cpp, and tactic_tests.cpp passed without findings",
        "final_focused": "The rebuilt primo and primo_tactic_tests targets, primo_frontend_type_error_cli and primo_tactic_tests CTest cases, make lint, JSON validation, and git diff --check passed after the include cleanup"
      },
      "results": {
        "ctest": "24/24 passed",
        "asan_failures": 0,
        "leak_failures": 0,
        "total_test_time_seconds": 43.79
      },
      "artifacts": {
        "build_directory": "build-asan",
        "storage": "local generated build; not committed"
      },
      "evidence_status": "local-current; uncommitted review-fix working tree over commit 9841e51",
      "outcome": "The full CTest suite passed under AddressSanitizer with leak detection and strict initialization-order checking enabled."
    },
    {
      "id": "2026-09-01-review-fixes-qfuf-boolean-merge-fuzz",
      "started_at": "2026-09-01",
      "recorded_at": "2026-09-01",
      "kind": "fuzz-merge-gate",
      "scope": "Dedicated QF_UF Boolean-capacity differential fuzzing through the experimental two-Boolean splitting tactic, with direct validation of every satisfiable model.",
      "commit": "9841e5183a6b152c7901b49d3238c448db30e2a9",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "kernel": "Linux 7.0.0-30-generic x86_64",
        "binary": "build/primo, embedded git 9841e51-dirty, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "Z3 5.0.0",
        "model_validator": "Dolmen 0.10",
        "slurm_job_id": null
      },
      "command": "python3 scripts/qf_uf_boolean_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--experimental-split-bools=2 --ref contrib/local/bin/z3 --count 1000 --seed 20260902 --timeout 5 --shape all --validate-models --dolmen /home/user/.opam/default/bin/dolmen --model-timeout 5 --out /tmp/primo-review-fixes-fuzz-20260902",
      "inputs": {
        "generator": "scripts/qf_uf_boolean_fuzz.py",
        "logic": "QF_UF",
        "shape": "all",
        "experimental_split_bools": 2,
        "seed": 20260902,
        "count": 1000,
        "timeout_seconds": 5
      },
      "results": {
        "pass": 1000,
        "wrong_answer": 0,
        "crash": 0,
        "parser_or_type_error": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "sat_models_validated_by_dolmen": 651,
        "unsat_cases": 349,
        "invalid_model": 0
      },
      "artifacts": {
        "directory": "/tmp/primo-review-fixes-fuzz-20260902",
        "answer_summary": "/tmp/primo-review-fixes-fuzz-20260902/summary.csv",
        "model_summary": "/tmp/primo-review-fixes-fuzz-20260902/model-validation/summary.csv"
      },
      "evidence_status": "local-current merge gate; uncommitted review-fix working tree over commit 9841e51; temporary artifacts",
      "outcome": "All 1,000 generated cases agreed with Z3, and Dolmen accepted every one of the 651 satisfiable models."
    },
    {
      "id": "2026-09-01-review-fixes-exact-asan",
      "started_at": "2026-09-01",
      "recorded_at": "2026-09-01",
      "kind": "sanitizer",
      "scope": "Exact-commit AddressSanitizer rerun for the frontend type-error and multi-goal cancellation-precedence fixes.",
      "commit": "99c526ed5100c6c4827df580619194419c9150f5",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "kernel": "Linux 7.0.0-30-generic x86_64",
        "build": "build-asan, Debug with address sanitizer, embedded git 99c526e, CaDiCaL cadical-3.0.0-7b99c07",
        "slurm_job_id": null
      },
      "command": "make asan-test",
      "results": {
        "ctest": "24/24 passed",
        "asan_failures": 0,
        "leak_failures": 0,
        "total_test_time_seconds": 40.62
      },
      "artifacts": {
        "build_directory": "build-asan",
        "storage": "local generated build; not committed"
      },
      "evidence_status": "local-current exact implementation commit; run-log entry committed adjacently",
      "outcome": "The exact implementation commit passed the full CTest suite under AddressSanitizer with leak detection and strict initialization-order checking enabled."
    },
    {
      "id": "2026-09-01-review-fixes-exact-qfuf-boolean-merge-fuzz",
      "started_at": "2026-09-01",
      "recorded_at": "2026-09-01",
      "kind": "fuzz-merge-gate",
      "scope": "Exact-commit dedicated QF_UF Boolean-capacity differential fuzzing through the experimental two-Boolean splitting tactic, with direct validation of every satisfiable model.",
      "commit": "99c526ed5100c6c4827df580619194419c9150f5",
      "branch": "tactics",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "kernel": "Linux 7.0.0-30-generic x86_64",
        "binary": "build/primo, embedded git 99c526e, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "Z3 5.0.0",
        "model_validator": "Dolmen 0.10",
        "slurm_job_id": null
      },
      "command": "python3 scripts/qf_uf_boolean_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--experimental-split-bools=2 --ref contrib/local/bin/z3 --count 1000 --seed 20260902 --timeout 5 --shape all --validate-models --dolmen /home/user/.opam/default/bin/dolmen --model-timeout 5 --out /tmp/primo-review-fixes-fuzz-99c526e",
      "inputs": {
        "generator": "scripts/qf_uf_boolean_fuzz.py",
        "logic": "QF_UF",
        "shape": "all",
        "experimental_split_bools": 2,
        "seed": 20260902,
        "count": 1000,
        "timeout_seconds": 5
      },
      "results": {
        "pass": 1000,
        "wrong_answer": 0,
        "crash": 0,
        "parser_or_type_error": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "sat_models_validated_by_dolmen": 651,
        "unsat_cases": 349,
        "invalid_model": 0
      },
      "artifacts": {
        "directory": "/tmp/primo-review-fixes-fuzz-99c526e",
        "answer_summary": "/tmp/primo-review-fixes-fuzz-99c526e/summary.csv",
        "model_summary": "/tmp/primo-review-fixes-fuzz-99c526e/model-validation/summary.csv"
      },
      "evidence_status": "local-current exact implementation commit merge gate; temporary artifacts; run-log entry committed adjacently",
      "outcome": "All 1,000 generated cases agreed with Z3, and Dolmen accepted every one of the 651 satisfiable models on exact implementation commit 99c526e."
    },
    {
      "id": "2026-09-01-qf-uflia-local-model-smoke",
      "started_at": "2026-09-01",
      "recorded_at": "2026-09-01",
      "kind": "fuzz-smoke-and-model-regression",
      "scope": "Pre-commit local differential smoke for the new modular QF_UFLIA path, followed by direct Dolmen validation and an exact rerun after fixing Int substitution reconstruction.",
      "commit": "019d645-dirty",
      "branch": "modular-theory-combination",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "kernel": "Linux 7.0.0-30-generic x86_64",
        "binary": "build/primo, Release, based on 019d645, CaDiCaL cadical-3.0.0-7b99c07",
        "references": "Z3 5.0.0 and cvc5 1.3.4",
        "model_validator": "Dolmen 0.10",
        "slurm_job_id": null
      },
      "commands": [
        "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/qf_uflia_fuzz.py --solver ./build/primo --ref z3 --ref cvc5 --count 100 --seed 20260901 --timeout 5 --out /tmp/primo-qf-uflia-fuzz-100",
        "PATH=/workspace/contrib/local/bin:/home/user/.opam/default/bin:$PATH python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --dolmen /home/user/.opam/default/bin/dolmen --require-dolmen-pass --timeout 5 --dolmen-timeout 5 --out /tmp/primo-qf-uflia-fuzz-100-models /tmp/primo-qf-uflia-fuzz-100/cases/*.smt2",
        "PATH=/workspace/contrib/local/bin:/home/user/.opam/default/bin:$PATH python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --dolmen /home/user/.opam/default/bin/dolmen --require-dolmen-pass --timeout 5 --dolmen-timeout 5 --out /tmp/primo-qf-uflia-fuzz-100-models-fixed /tmp/primo-qf-uflia-fuzz-100/cases/*.smt2"
      ],
      "inputs": {
        "generator": "scripts/qf_uflia_fuzz.py",
        "logic": "QF_UFLIA",
        "shape": "mixed",
        "seed": 20260901,
        "count": 100,
        "timeout_seconds": 5
      },
      "results": {
        "answer_pass": 100,
        "wrong_answer": 0,
        "crash": 0,
        "parser_or_type_error": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "initial_invalid_models": 9,
        "fixed_sat_models_validated_by_dolmen": 57,
        "unsat_cases": 43,
        "fixed_invalid_models": 0
      },
      "artifacts": {
        "answer_summary": "/tmp/primo-qf-uflia-fuzz-100/summary.csv",
        "initial_model_summary": "/tmp/primo-qf-uflia-fuzz-100-models/summary.csv",
        "fixed_model_summary": "/tmp/primo-qf-uflia-fuzz-100-models-fixed/summary.csv"
      },
      "evidence_status": "local pre-commit smoke; temporary artifacts; superseded by the required exact-commit merge/campaign gate",
      "outcome": "Answers agreed in all 100 cases. Dolmen exposed nine invalid models caused by omitting LIA substitutions from the mixed EUF reconstruction facts; after the fix, Dolmen accepted all 57 satisfiable models."
    },
    {
      "id": "2026-09-01-qf-uflia-precommit-asan",
      "started_at": "2026-09-01",
      "recorded_at": "2026-09-01",
      "kind": "sanitizer",
      "scope": "Pre-commit AddressSanitizer gate for the solve-scoped modular QF_UFLIA adapters, eager arrangement construction, and combined Int/EUF model reconstruction.",
      "commit": "019d645-dirty",
      "branch": "modular-theory-combination",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "kernel": "Linux 7.0.0-30-generic x86_64",
        "build": "build-asan, Debug with address sanitizer, based on 019d645, CaDiCaL cadical-3.0.0-7b99c07",
        "slurm_job_id": null
      },
      "command": "make asan-test",
      "results": {
        "ctest": "25/25 passed",
        "asan_failures": 0,
        "leak_failures": 0,
        "total_test_time_seconds": 37.98
      },
      "artifacts": {
        "build_directory": "build-asan",
        "storage": "local generated build; not committed"
      },
      "evidence_status": "local pre-commit sanitizer gate; superseded by any exact-commit rerun",
      "outcome": "All tests passed with leak detection and strict initialization-order checking enabled."
    },
    {
      "id": "2026-09-01-qf-uflia-exact-campaign",
      "started_at": "2026-09-01",
      "recorded_at": "2026-09-01",
      "kind": "fuzz-campaign-gate",
      "scope": "Exact-commit generated QF_UFLIA differential campaign for the modular EUF plus non-convex LIA coordinator, with direct validation of every satisfiable model.",
      "commit": "4b0ad5563b4b63cb8e7a6de3345d97182a000e65",
      "branch": "modular-theory-combination",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "kernel": "Linux 7.0.0-30-generic x86_64",
        "binary": "build/primo, embedded git 4b0ad55, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "references": "Z3 5.0.0 and cvc5 1.3.4",
        "model_validator": "Dolmen 0.10",
        "slurm_job_id": null
      },
      "commands": [
        "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/qf_uflia_fuzz.py --solver ./build/primo --ref z3 --ref cvc5 --count 3000 --seed 20260911 --timeout 5 --out /tmp/primo-qf-uflia-campaign-4b0ad55",
        "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --dolmen /home/user/.opam/default/bin/dolmen --require-dolmen-pass --timeout 5 --dolmen-timeout 5 --out /tmp/primo-qf-uflia-campaign-4b0ad55-models /tmp/primo-qf-uflia-campaign-4b0ad55/cases/*.smt2"
      ],
      "inputs": {
        "generator": "scripts/qf_uflia_fuzz.py",
        "logic": "QF_UFLIA",
        "shape": "mixed",
        "seed": 20260911,
        "count": 3000,
        "timeout_seconds": 5
      },
      "results": {
        "pass": 3000,
        "sat": 1686,
        "unsat": 1314,
        "wrong_answer": 0,
        "crash": 0,
        "parser_or_type_error": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "sat_models_validated_directly_by_dolmen": 1686,
        "invalid_model": 0
      },
      "artifacts": {
        "answer_directory": "/tmp/primo-qf-uflia-campaign-4b0ad55",
        "answer_summary": "/tmp/primo-qf-uflia-campaign-4b0ad55/summary.csv",
        "model_directory": "/tmp/primo-qf-uflia-campaign-4b0ad55-models",
        "model_summary": "/tmp/primo-qf-uflia-campaign-4b0ad55-models/summary.csv",
        "model_metadata": "/tmp/primo-qf-uflia-campaign-4b0ad55-models/metadata.json"
      },
      "evidence_status": "local-current exact implementation commit campaign gate; temporary artifacts; reproducible generator committed",
      "outcome": "All 3,000 generated cases agreed with both references, and Dolmen directly accepted every one of the 1,686 satisfiable models."
    },
    {
      "id": "2026-09-01-qf-uflia-exact-compositions",
      "started_at": "2026-09-01",
      "recorded_at": "2026-09-01",
      "kind": "tactic-composition-matrix",
      "scope": "Exact-commit deterministic tactic-composition matrix across QF_UF, QF_LRA, QF_LIA, QF_UFLRA, and QF_UFLIA, including sequential Boolean splitting and direct model validation.",
      "commit": "4b0ad5563b4b63cb8e7a6de3345d97182a000e65",
      "branch": "modular-theory-combination",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "kernel": "Linux 7.0.0-30-generic x86_64",
        "binary": "build/primo, embedded git 4b0ad55, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "references": "Z3 5.0.0 and cvc5 1.3.4",
        "model_validator": "Dolmen 0.10",
        "slurm_job_id": null
      },
      "command": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/tactic_composition_matrix.py --manifest benchmarks/tactic-composition-matrix.json --logic QF_UFLIA --root . --solver ./build/primo --refs z3 cvc5 --dolmen dolmen --timeout 5 --dolmen-timeout 5 --repeat 2 --out /tmp/primo-qf-uflia-compositions-4b0ad55",
      "inputs": {
        "manifest": "benchmarks/tactic-composition-matrix.json",
        "requested_logic_argument": "QF_UFLIA",
        "effective_scope": "full manifest because --logic filters generated case lists only",
        "repeat": 2,
        "timeout_seconds": 5,
        "dolmen_timeout_seconds": 5
      },
      "results": {
        "pass": 174,
        "fail": 0,
        "inconclusive": 0,
        "qf_uf_rows": 54,
        "qf_lra_rows": 28,
        "qf_lia_rows": 20,
        "qf_uflra_rows": 44,
        "qf_uflia_rows": 28,
        "sat_models_validated_directly_by_dolmen": 48,
        "unsat_model_validation_skips": 39,
        "non_timing_statistic_drift": 0
      },
      "artifacts": {
        "directory": "/tmp/primo-qf-uflia-compositions-4b0ad55",
        "summary": "/tmp/primo-qf-uflia-compositions-4b0ad55/summary.csv",
        "metadata": "/tmp/primo-qf-uflia-compositions-4b0ad55/metadata.json"
      },
      "evidence_status": "local-current exact implementation commit deterministic gate; temporary artifacts; manifest and harness committed",
      "outcome": "All 174 rows passed with stable answers and non-timing statistics; the full manifest ran, which is broader than the requested QF_UFLIA focus."
    },
    {
      "id": "2026-09-01-qf-uflra-preservation",
      "started_at": "2026-09-01",
      "recorded_at": "2026-09-01",
      "kind": "fuzz-merge-gate",
      "scope": "Exact-commit QF_UFLRA differential preservation gate confirming that the established specialized convex combination path and model builder remain intact.",
      "commit": "4b0ad5563b4b63cb8e7a6de3345d97182a000e65",
      "branch": "modular-theory-combination",
      "environment": {
        "type": "local",
        "host": "mikolas-ThinkPad-T14s-Gen-5",
        "kernel": "Linux 7.0.0-30-generic x86_64",
        "binary": "build/primo, embedded git 4b0ad55, Release, CaDiCaL cadical-3.0.0-7b99c07",
        "reference": "Z3 5.0.0",
        "model_validator": "Dolmen 0.10",
        "slurm_job_id": null
      },
      "commands": [
        "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/qf_uflra_smoke_fuzz.py --solver ./build/primo --solver-arg=--quiet --ref z3 --count 1000 --seed 20260912 --timeout 5 --shape mixed --out /tmp/primo-qf-uflra-preservation-4b0ad55",
        "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --dolmen /home/user/.opam/default/bin/dolmen --require-dolmen-pass --timeout 5 --dolmen-timeout 5 --out /tmp/primo-qf-uflra-preservation-4b0ad55-models /tmp/primo-qf-uflra-preservation-4b0ad55/cases/*.smt2"
      ],
      "inputs": {
        "generator": "scripts/qf_uflra_smoke_fuzz.py",
        "logic": "QF_UFLRA",
        "shape": "mixed",
        "seed": 20260912,
        "count": 1000,
        "timeout_seconds": 5
      },
      "results": {
        "pass": 1000,
        "sat": 597,
        "unsat": 403,
        "wrong_answer": 0,
        "crash": 0,
        "parser_or_type_error": 0,
        "timeout": 0,
        "unsupported": 0,
        "reference_disagreement": 0,
        "sat_models_validated_directly_by_dolmen": 597,
        "invalid_model": 0
      },
      "artifacts": {
        "answer_directory": "/tmp/primo-qf-uflra-preservation-4b0ad55",
        "answer_summary": "/tmp/primo-qf-uflra-preservation-4b0ad55/summary.csv",
        "model_directory": "/tmp/primo-qf-uflra-preservation-4b0ad55-models",
        "model_summary": "/tmp/primo-qf-uflra-preservation-4b0ad55-models/summary.csv",
        "model_metadata": "/tmp/primo-qf-uflra-preservation-4b0ad55-models/metadata.json"
      },
      "evidence_status": "local-current exact implementation commit preservation gate; temporary artifacts; generator committed",
      "outcome": "All 1,000 generated QF_UFLRA cases agreed with Z3, and Dolmen directly accepted every one of the 597 satisfiable models."
    },
    {
      "id": "2026-09-02-generic-model-combination-qf-uflia-slurm-gate",
      "started_at": "2026-09-01",
      "recorded_at": "2026-09-02",
      "kind": "implementation-fuzz-and-corpus-evaluation",
      "scope": "Experimental generic model-based theory combination for non-convex QF_UFLIA, preservation of the generic QF_UFLRA route, direct Dolmen validation, and the fixed 20-file QF_UFLIA archive sample.",
      "commit": "3bb19c7680b5c270e35837263d1765e22ecf0a5a",
      "implementation_commit": "abbda316ede9f4dc2b73d5dd1d6d8d10a0b716c7",
      "branch": "modular-theory-combination",
      "environment": {
        "local": "Linux 7.0.0-30-generic x86_64; Release Primo embedded git abbda31; CaDiCaL cadical-3.0.0-7b99c07; Z3 5.0.0; Dolmen 0.10",
        "slurm": "established Primo SLURM environment; clean archive-mode workspace; Release Primo embedded git 3bb19c7; CaDiCaL cadical-3.0.0-7b99c07; Z3 5.1.0; cvc5 1.3.4; workspace-pinned Dolmen 0.10",
        "scheduler_jobs": "two four-task arrays; identifiers intentionally omitted from the committed record under the cluster privacy policy and retained in the session handoff"
      },
      "commands": {
        "local_answer_fuzz": "python3 scripts/qf_uflia_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--experimental-qf-uflia-model-combination --ref ./contrib/local/bin/z3 --count 1000 --seed 2026090101 --timeout 5 --shape random --out /tmp/primo-uflia-model-fuzz-1000-abbda31",
        "local_model_validation": "python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--experimental-qf-uflia-model-combination --dolmen /home/user/.opam/default/bin/dolmen --require-dolmen-pass --timeout 5 --dolmen-timeout 5 --out /tmp/primo-uflia-model-fuzz-1000-dolmen-abbda31 /tmp/primo-uflia-model-fuzz-1000-abbda31/cases/*.smt2",
        "archive_sample": "scripts/bench_qf_uf_full.py over benchmarks/qf_uflia-smtlib-representative-20.txt rooted at the ignored tmp/QF_UFLIA extraction, with five-second default, --experimental-qf-uflia-model-combination, and Z3 arms; scripts/validate_model.py required Dolmen for the guided arm",
        "workspace": "python3 scripts/slurm_prepare_benchmark_workspace.py --sync-mode archive --reuse-dependencies --with-z3 --contrib-target contrib-required --contrib-target contrib-cvc5 --contrib-target contrib-dolmen ...; immediate --check-only --no-sync verified embedded git 3bb19c7, CaDiCaL, Z3, cvc5, and Dolmen",
        "qf_uflia_slurm": "scripts/slurm_qf_uflia_model_fuzz_gate.sbatch; four shards x 750 random cases; seed base 202609020; five-second solve and Dolmen limits; PRIMO_FUZZ_SOLVER_ARGS=--experimental-qf-uflia-model-combination",
        "qf_uflra_slurm": "scripts/slurm_qf_uflra_fuzz_gate.sbatch; four shards x 250 general mixed cases plus x 25 finite-domain QF_UFLRA and QF_UF controls; seed base 202609030; PRIMO_FUZZ_SOLVER_ARGS=--experimental-generic-model-combination",
        "batch_validation": "python3 scripts/slurm_validate_sbatch.py and bash -n passed for both submitted scripts before the immediate preflight and submission"
      },
      "local_results": {
        "qf_uflia_fuzz": "1,000/1,000 PASS against Z3: 597 sat and 403 unsat; Dolmen directly validated 597/597 SAT models; zero wrong answer, reference disagreement, crash, parser/type error, unsupported result, timeout, or invalid model",
        "archive_default": "8/20 solved: 3 sat, 5 unsat, 11 timeout-unknown, 1 timeout-error; zero wrong answers; 67.894549 aggregate wall seconds",
        "archive_guided": "9/20 solved: 3 sat, 6 unsat, 10 timeout-unknown, 1 timeout-error; zero wrong answers; 60.988728 aggregate wall seconds; the sole classification gain was mathsat/Hash/hash_uns_03_18.smt2 from timeout to unsat",
        "archive_reference": "Z3 solved 19/20: 9 sat, 10 unsat, and one timeout-error; 5.423276 aggregate wall seconds",
        "archive_models": "Dolmen directly accepted all three guided SAT models; six rows were unsat and eleven timed out; the two TwoSquares regression models both passed"
      },
      "slurm_results": {
        "qf_uflia": "3,000/3,000 answer comparisons PASS against Z3: 1,778 sat and 1,222 unsat; Dolmen directly validated all 1,778 SAT models",
        "qf_uflra_general": "1,000/1,000 answer comparisons PASS against Z3: 595 sat and 405 unsat; Dolmen directly validated all 595 SAT models",
        "finite_controls": "100/100 finite-domain QF_UFLRA and 100/100 finite-domain QF_UF answer comparisons PASS against Z3 and cvc5; Dolmen directly validated all 52 finite-domain QF_UFLRA SAT models and the other 48 were unsat",
        "scheduler": "all eight array tasks completed with exit 0; all stderr logs were empty; maximum elapsed time was 43 seconds",
        "correctness": "zero wrong answer, reference disagreement, crash, parser/type error, unsupported result, timeout, invalid model, fallback model validator, or nonzero Dolmen exit"
      },
      "verification": {
        "local_gates": "make check; make docs; make lint; make asan-test; focused post-review ASan; whole-tree make tidy; whole-tree advisory make include-cleaner; touched-file clang-tidy and misc-include-cleaner; solver_efficiency_snapshot.py; git diff --check",
        "review": "The requested smt-code-review skill was unavailable in the installed skill catalog. A manual whole-tree hygiene review plus clang-tidy/include-cleaner found no changed-file issue. The efficiency review moved all new projection, coordinator, assumption, and pair-ledger work behind the default-off QF_UFLIA option; the default complete-arrangement path retains its former component checks and arrangement template."
      },
      "artifacts": {
        "local_fuzz": "/tmp/primo-uflia-model-fuzz-1000-abbda31 and /tmp/primo-uflia-model-fuzz-1000-dolmen-abbda31",
        "local_archive": "/tmp/primo-uflia-rep-{default,guided,z3}-abbda31.csv and /tmp/primo-uflia-rep-dolmen-abbda31",
        "remote": "<slurm-workdir>/fuzz-results/{qf-uflia-model-guided-3bb19c7,qf-uflra-generic-3bb19c7}",
        "collected_summaries_and_logs": "/tmp/primo-model-combination-slurm-3bb19c7"
      },
      "evidence_status": "slurm-complete-current; exact tested binary commit; experimental default-off feature; direct-Dolmen model gate",
      "outcome": "The generic coordinator now has clean exact-commit evidence for both convex QF_UFLRA and non-convex QF_UFLIA. QF_UFLIA remains experimental: its complete delayed-combination restart is the correctness backstop, and the small archive gain is evaluation evidence rather than a default-promotion claim."
    },
    {
      "id": "2026-09-02-qf-uflra-generic-full-crossed-comparison",
      "started_at": "2026-09-02",
      "recorded_at": "2026-09-02",
      "kind": "paired-full-corpus-benchmark-and-profile",
      "scope": "Crossed-order full 1,284-file QF_UFLRA comparison of the specialized default coordinator and --experimental-generic-model-combination, followed by focused local profiling of repeatable active-row deltas.",
      "commits": {
        "first_campaign": "0d387a3",
        "crossed_campaign": "fdd724e",
        "solver_source_relation": "The only tracked delta between the two tested commits is the batch harness order-offset option; solver sources and behavior are identical."
      },
      "environment": {
        "slurm": "Established Primo SLURM environment; clean archive-mode workspace; Release Primo; CaDiCaL cadical-3.0.0-7b99c07; 16 paired shards throttled to eight concurrent tasks.",
        "corpus": "tmp/QF_UFLRA; 1,284 files; 1,645,365,818 bytes; C-locale relative-path/size SHA-256 25235b3f41bf4ee9c667d694ed72a3f02b6acdf5c9f8cecba1df16b0aee1dd48.",
        "scheduler_jobs": "Two 16-task arrays completed with exit 0 and empty stderr; identifiers are retained in the private session handoff rather than this committed record.",
        "local_profile": "Linux workstation; GCC 13.3.0 RelWithDebInfo -pg build reporting fdd724e; CaDiCaL cadical-3.0.0-7b99c07; CPU affinity pinned to CPU 2. perf was unavailable because perf_event_paranoid=4, so gprof was used."
      },
      "commands": {
        "harness_validation": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflra_generic_compare.sbatch; bash -n scripts/slurm_qf_uflra_generic_compare.sbatch",
        "workspace": "python3 scripts/slurm_prepare_benchmark_workspace.py --sync-mode archive --reuse-dependencies ...; immediate --check-only --no-sync verified each exact embedded revision and CaDiCaL version; the staged corpus count and fingerprint were checked before each submission.",
        "campaigns": "scripts/slurm_qf_uflra_generic_compare.sbatch with PRIMO_COMPARE_TIMEOUT=120, PRIMO_COMPARE_SHARDS=16, and PRIMO_COMPARE_ORDER_OFFSET=0 then 1. Each task ran both arms on one node; arm order alternated by shard and was reversed in the second campaign.",
        "summary": "python3 scripts/summarize_benchmark_shards.py --timeout 120 --run specialized=<artifact>/specialized --run generic=<artifact>/generic --baseline specialized --candidate generic; a standard-library Python read-only analysis averaged each per-file arm across the two orders and ranked active generic-combination rows.",
        "profile_build": "cmake -S . -B build-gprof-generic -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS=-pg -DCMAKE_EXE_LINKER_FLAGS=-pg -DPRIMO_GIT_REVISION_OVERRIDE=fdd724e -DPRIMO_WARNINGS_AS_ERRORS=OFF; cmake --build build-gprof-generic --target primo -j4",
        "profile": "taskset -c 2 build-gprof-generic/primo --quiet --stats --max-theory-conflicts=1000000 [--experimental-generic-model-combination] <Problem07_00 or cs_stack_false>; gprof build-gprof-generic/primo gmon.out"
      },
      "results": {
        "correctness": "In both campaigns, each arm covered all 1,284 files and solved the identical 1,272-file set: 761 sat, 511 unsat, and 12 timeout. There were zero wrong, unsupported, error, recovery, loss, or decisive-answer-disagreement rows.",
        "first_order": "Specialized solved-row time/PAR2 806.958954/3686.958954 seconds; generic 823.731840/3703.731840. The apparent generic solved-time increase was 2.08%.",
        "crossed_order": "Specialized solved-row time/PAR2 794.175062/3674.175062 seconds; generic 781.692102/3661.692102. Reversing arm order made generic appear 1.57% faster on solved time.",
        "order_effect": "On the first campaign's specialized-first shards, generic was 5.23% faster; on generic-first shards it was 7.07% slower. This identifies a material cold-first-arm effect and invalidates either single campaign as a standalone timing comparison.",
        "crossed_average": "Per-arm averages across both orders were 800.567008 specialized versus 802.711971 generic common-solved seconds (+0.27%), and 3680.567008 versus 3682.711971 PAR2 (+0.06%). Median per-file ratio was 1.00395 and geometric-mean ratio 1.00931. Coverage and family solved counts were identical.",
        "families": "Averaged specialized/generic solved seconds were FFT 0.167168/0.166547, BMC 6.609708/6.584899, induction 718.873731/720.615783, and MathSAT 74.916402/75.344743. Family PAR2 differs by the same solved-time deltas because timeout sets are identical.",
        "generic_activity": "The generic coordinator was enabled on 1,231 solved rows and performed component checks on 755: 1,794 checks, 2,313 snapshots, 661 mutations, 142 fixed points, and 1,510 model decisions. It reported no stale/rejected snapshot, disagreement, learned clause, or fresh decision in this corpus.",
        "diagnostic_difference": "Search classifications and ordinary counters matched, except that 236 rows omitted specialized compatibility-projection/success counters and 225 omitted specialized compatibility-edge/already-equal counters on the generic scheduler boundary; these are expected diagnostic-path differences, not search-result changes.",
        "watchlist": "benchmarks/qf_uflra-generic-combination-watchlist.txt retains cs_stack_false, rtl28xxu, Problem06_60, parport, and one RandomCoupled MathSAT row. These were active generic rows with small same-direction deltas in both campaigns.",
        "profile": "On Problem07_00, pinned gprof wall time was 16.18 seconds generic versus 16.16 specialized and solve time 5.337/5.323 seconds; the generic path only set its enabled counter. On active cs_stack_false, generic was 17.07 seconds versus 17.27 specialized and solve time 13.005/13.166 seconds; it performed two component checks, three snapshots, and one mutation. Dominant functions were LraTableau::check, exact Rational arithmetic, LRA pivots, term hash lookup, and CaDiCaL propagation; generic coordinator functions were below gprof's 10 ms sampling resolution."
      },
      "artifacts": {
        "remote": "<slurm-workdir>/results/{qf-uflra-generic-ab-0d387a3-20260902,qf-uflra-generic-ab-cross-fdd724e-20260902}",
        "local_benchmark": "/tmp/primo-qf-uflra-generic-ab-{0d387a3,cross-fdd724e}-20260902",
        "local_profile": "/tmp/primo-gprof-{generic,specialized,cs-stack-generic,cs-stack-specialized}-fdd724e"
      },
      "evidence_status": "slurm-complete-current-crossed-order; exact tested binaries; local profile complete; experimental option remains default-off",
      "outcome": "The generic QF_UFLRA scheduler preserves full-corpus coverage and is performance-neutral at the requested one-percent scale. The residual +0.27% solved time and +0.06% PAR2 are smaller than the demonstrated order effect and did not reproduce as generic infrastructure cost under gprof. Retain the active-row watchlist, but do not claim or optimize a generic-specific bottleneck from this evidence."
    },
    {
      "id": "2026-09-02-qf-uflia-reference-sample-comparison",
      "started_at": "2026-09-02",
      "recorded_at": "2026-09-02",
      "kind": "slurm-reference-benchmark-model-regression-and-fuzz",
      "scope": "Fixed 20-file QF_UFLIA representative sample comparing default and model-guided Primo with Z3, cvc5, and OpenSMT; direct Dolmen model replay; compound-definition model reconstruction fix; and exact-fix-commit generated answer and model gates.",
      "commits": {
        "benchmark": "f1f2525ff39b0653eb1113befd5d76e74a8c3f81",
        "model_fix_and_fuzz": "71e5e11b00ca4d804dd1bb1796c7dcbb46f69d32",
        "source_relation": "The benchmark and search timings were measured at f1f2525. The subsequent fix is confined to model reconstruction after the final accepted assignment and does not run in the benchmark, which does not request models."
      },
      "branch": "modular-theory-combination",
      "environment": {
        "slurm": "Established Primo SLURM environment; clean archive-mode workspace; Release Primo embedded git f1f2525; CaDiCaL cadical-3.0.0-7b99c07; Z3 5.1.0; cvc5 1.3.4; OpenSMT 2.9.2.",
        "scheduler_job_id": "131045",
        "local_fuzz": "Linux workstation; Release Primo embedded git 71e5e11; CaDiCaL cadical-3.0.0-7b99c07; Z3 5.0.0; cvc5 1.3.4; Dolmen 0.10.",
        "corpus": "sandbox/QF_UFLIA.tar.zst extracted below tmp/QF_UFLIA; 659 files and 118,566,018 bytes in the archive; fixed 20-file selection totaling 571,902 bytes; C-locale relative-path/size SHA-256 1c03ca162ca81e1dbba767f69cfd22f7539f2a012f6a9aef584d9ec7ebaf66fa."
      },
      "commands": {
        "harness_validation": "python3 scripts/slurm_validate_sbatch.py scripts/slurm_qf_uflia_sample_compare.sbatch; bash -n scripts/slurm_qf_uflia_sample_compare.sbatch",
        "workspace": "python3 scripts/slurm_prepare_benchmark_workspace.py --sync-mode archive --reuse-dependencies --with-z3 --contrib-target contrib-required --contrib-target contrib-cvc5 ...; immediate --check-only --no-sync verified embedded git f1f2525 and CaDiCaL; scripts/slurm_stage_manifest_files.py staged and fingerprinted the exact 20-file manifest.",
        "benchmark": "sbatch --array=0-4 scripts/slurm_qf_uflia_sample_compare.sbatch with PRIMO_COMPARE_TIMEOUT=30 and PRIMO_COMPARE_OUT_ROOT=<slurm-workdir>/results/qf-uflia-reference-sample-f1f2525-20260902; arms were primo --quiet --stats, primo --quiet --stats --experimental-qf-uflia-model-combination, z3 -st, cvc5 --lang smt2 --stats, and opensmt.",
        "summary": "python3 scripts/compare_solver_answers.py /tmp/primo-qf-uflia-reference-sample-f1f2525-20260902 --timeout 30; an additional standard-library Python read-only analysis computed family summaries and selected rows where all references agreed and finished within five seconds.",
        "model_replay": "python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet [--solver-arg=--experimental-qf-uflia-model-combination] --dolmen /home/user/.opam/default/bin/dolmen --dolmen-arg=--strict=false --require-dolmen-pass --timeout 30 --dolmen-timeout 30 --out /tmp/primo-qf-uflia-reference-sample-{default,guided}-models-fixed2 <four satisfiable sample inputs>",
        "default_fuzz": "python3 scripts/qf_uflia_fuzz.py --solver ./build/primo --solver-arg=--quiet --ref ./contrib/local/bin/z3 --ref ./contrib/local/bin/cvc5 --count 1000 --seed 2026090201 --timeout 5 --shape random --out /tmp/primo-qf-uflia-model-fix-default-1000-71e5e11",
        "guided_fuzz": "python3 scripts/qf_uflia_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--experimental-qf-uflia-model-combination --ref ./contrib/local/bin/z3 --ref ./contrib/local/bin/cvc5 --count 1000 --seed 2026090202 --timeout 5 --shape random --out /tmp/primo-qf-uflia-model-fix-guided-1000-71e5e11",
        "fuzz_model_replay": "scripts/validate_model.py on each generated corpus with the matching Primo arguments, workspace Dolmen 0.10, --dolmen-arg=--strict=false, --require-dolmen-pass, and five-second solver and Dolmen limits."
      },
      "benchmark_results": {
        "primo_default": "11/20 solved: 4 sat, 7 unsat, 9 timeout, 0 error, 0 unsupported, 0 wrong answer; 65.585836 solved-row seconds; 605.585836 PAR2.",
        "primo_guided": "11/20 solved: 4 sat, 7 unsat, 9 timeout, 0 error, 0 unsupported, 0 wrong answer; 46.284009 solved-row seconds; 586.284009 PAR2.",
        "z3": "19/20 solved: 9 sat, 10 unsat, 1 timeout, 0 error; 0.605794 solved-row seconds; 60.605794 PAR2.",
        "cvc5": "19/20 solved: 9 sat, 10 unsat, 1 timeout, 0 error; 5.593126 solved-row seconds; 65.593126 PAR2.",
        "opensmt": "19/20 solved: 9 sat, 10 unsat, 1 timeout, 0 error; 4.607037 solved-row seconds; 64.607037 PAR2.",
        "correctness": "Zero decisive-answer disagreement, wrong answer, error, unsupported result, or non-standard unsolved reason. All five arms timed out on the same larger Certora case.",
        "families": "Default Primo solved Certora 0/2, TwoSquares 4/4, MathSAT 6/10, and wisas 1/4; guided Primo had identical coverage. Each reference solved Certora 1/2, TwoSquares 4/4, MathSAT 10/10, and wisas 4/4.",
        "guided_effect": "The model-guided option changed no result classification. Its largest solved-case gains were mathsat/Hash/hash_uns_03_18.smt2 from 16.049 to 0.160 seconds and mathsat/Wisa/xs-05-06-2-2-5-1.smt2 from 4.726 to 0.014 seconds.",
        "reference_gap_watchlist": "Eight rows timed out in both Primo arms while all three references agreed and finished within five seconds; they are recorded in benchmarks/qf_uflia-reference-gap-watchlist.txt."
      },
      "model_regression": {
        "discovery": "Direct Dolmen replay rejected the model for mathsat/Wisa/xs-06-07-4-5-4-2.smt2 in both Primo arms. A new reduced regression with a solved constant whose definition contains a UF application reproduced x=0 instead of the required x=1.",
        "cause": "The solved-constant conversion retained an original compound definition while mixed-theory purification gave the LIA tableau only proxies. Reconstruction could not evaluate the original application and supplied a fresh default for the eliminated constant.",
        "fix": "The QF_UFLIA model-only reconstruction now relates final EUF congruence classes to exact LIA values and evaluates original applications by symbol and valued argument tuple before applying the ordered conversion chain.",
        "sample_validation": "After 71e5e11, Dolmen directly accepted all four satisfiable models from each Primo arm with --strict=false; the other sample rows were not asserted as model successes."
      },
      "fuzz_results": {
        "default": "1,000/1,000 PASS against Z3 and cvc5: 592 sat and 408 unsat; zero wrong answer, disagreement, crash, parser/type error, timeout, or unsupported result; Dolmen directly accepted all 592 sat models.",
        "guided": "1,000/1,000 PASS against Z3 and cvc5: 596 sat and 404 unsat; zero wrong answer, disagreement, crash, parser/type error, timeout, or unsupported result; Dolmen directly accepted all 596 sat models."
      },
      "verification": {
        "commands": "make check; make lint; make docs; make asan-test; make tidy; make include-cleaner; git diff --check",
        "results": "All 25 CTests and 78 Python tests passed; ASan passed 25/25; lint and docs passed; whole-tree clang-tidy found no owned-code issue; the advisory include-cleaner baseline did not increase on the changed files.",
        "review": "The required smt-code-review skill was unavailable in the installed skill catalog. Manual whole-tree hygiene review plus clang-tidy, include-cleaner, and a solver-efficiency review found no changed-file issue. New model reconstruction work is executed once, only when model output is requested, and lies outside the solver loop."
      },
      "artifacts": {
        "remote_benchmark": "<slurm-workdir>/results/qf-uflia-reference-sample-f1f2525-20260902",
        "local_benchmark": "/tmp/primo-qf-uflia-reference-sample-f1f2525-20260902",
        "local_slurm_logs": "/tmp/primo-qf-uflia-slurm-logs-f1f2525-20260902",
        "sample_models": "/tmp/primo-qf-uflia-reference-sample-{default,guided}-models-fixed2",
        "fuzz_answers": "/tmp/primo-qf-uflia-model-fix-{default,guided}-1000-71e5e11",
        "fuzz_models": "/tmp/primo-qf-uflia-model-fix-{default,guided}-dolmen-71e5e11"
      },
      "evidence_status": "slurm-current exact benchmark commit; exact model-fix-commit local fuzz and direct-Dolmen gates; experimental option remains default-off",
      "outcome": "The fixed sample exposes a substantial QF_UFLIA coverage gap: all references solve 19/20 while both Primo routes solve 11/20. Model guidance reduces time on existing successes but adds no coverage. The comparison also caught and fixed a compound-definition model reconstruction bug before the result was accepted; the eight reference-fast timeout rows are the next profiling targets."
    },
    {
      "id": "2026-09-02-qf-uflia-reference-gap-profile",
      "started_at": "2026-09-02",
      "recorded_at": "2026-09-02",
      "kind": "local-counter-profile-literature-review-and-parameter-probe",
      "scope": "Counter aggregation over the eight QF_UFLIA reference-fast/Primo-timeout rows, six conflict-bounded gprof profiles, a local experimental model-decision-budget classification probe, direct Dolmen validation of the two newly exposed satisfiable models, and a primary-literature gap review.",
      "commits": {
        "source": "bc4667d003e12286411a71337012f3c3c5e9ff57",
        "release_binary_for_budget_probe_and_model_validation": "71e5e11b00ca4d804dd1bb1796c7dcbb46f69d32",
        "source_relation": "bc4667d adds only the preceding benchmark record after the 71e5e11 model fix, so both binaries contain identical solver source. The gprof build embeds bc4667d explicitly; the existing Release binary reports 71e5e11."
      },
      "branch": "modular-theory-combination",
      "environment": {
        "host": "mikolas-ThinkPad-T14s-Gen-5; Linux 7.0.0-30-generic x86_64; local workstation",
        "profiler": "GNU gprof with -pg RelWithDebInfo instrumentation; perf unavailable in this environment because kernel.perf_event_paranoid=4; runs CPU-pinned with taskset",
        "solver": "Primo 0.1.0; CaDiCaL cadical-3.0.0-7b99c07",
        "corpus": "The eight relative paths in benchmarks/qf_uflia-reference-gap-watchlist.txt, extracted from sandbox/QF_UFLIA.tar.zst below /tmp/primo-uflia-plan.BtEpmD/non-incremental/QF_UFLIA. The fixed selection and reference answers originate in SLURM job 131045."
      },
      "commands": {
        "profile_build": "cmake -S . -B build-gprof-uflia -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS=-pg -DCMAKE_EXE_LINKER_FLAGS=-pg -DPRIMO_GIT_REVISION_OVERRIDE=bc4667d -DPRIMO_WARNINGS_AS_ERRORS=OFF; cmake --build build-gprof-uflia --target primo -j4",
        "profile_pattern": "In a fresh artifact directory, run /usr/bin/time -f 'wall=%e user=%U sys=%S rss_kb=%M' taskset -c <available-cpu> /workspace/build-gprof-uflia/primo --quiet --stats --max-theory-conflicts=<bound> [--experimental-qf-uflia-model-combination] <absolute-input>, then gprof /workspace/build-gprof-uflia/primo gmon.out > gprof.txt. Bounds were xs_7_7=5000, xs_27_37=1000, hash_sat_09_05 default=3000, medium12=200, Certora 65782=1500, and hash_sat_09_05 guided=1000.",
        "exact_profile_recheck": "mkdir <fresh-directory> and cd to it; /usr/bin/time -f 'wall=%e user=%U sys=%S rss_kb=%M exit=%x' -o time.txt taskset -c 0 /workspace/build-gprof-uflia/primo --quiet --stats --max-theory-conflicts=200 /tmp/primo-uflia-plan.BtEpmD/non-incremental/QF_UFLIA/mathsat/EufLaArithmetic/medium/medium12.smt2 > stdout.txt 2> stderr.txt; gprof /workspace/build-gprof-uflia/primo gmon.out > gprof.txt",
        "counter_aggregation": "Read the eight default and guided stderr logs from /tmp/primo-qf-uflia-reference-sample-f1f2525-20260902 and sum the :combination.*, :no.mixed.*, EUF, LIA, SAT, preprocessing, and timing counters with a standard-library Python diagnostic.",
        "budget_probe_pattern": "timeout 10 or 15 taskset -c <available-cpu> ./build/primo --quiet --stats --experimental-qf-uflia-model-combination --qf-uflia-model-decision-budget=<16|64|256> <absolute-watchlist-input>; 10 seconds was used for xs_7_7 and medium12, and 15 seconds for the remaining selected rows.",
        "model_validation": "python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--experimental-qf-uflia-model-combination --solver-arg=--qf-uflia-model-decision-budget=256 --dolmen /home/user/.opam/default/bin/dolmen --dolmen-arg=--strict=false --require-dolmen-pass --timeout 15 --dolmen-timeout 15 --out /tmp/primo-qf-uflia-budget256-models-bc4667d /tmp/primo-uflia-plan.BtEpmD/non-incremental/QF_UFLIA/wisas/xs_7_7.smt2 /tmp/primo-uflia-plan.BtEpmD/non-incremental/QF_UFLIA/mathsat/Wisa/xs-15-09-3-5-5-3.smt2"
      },
      "counter_results": {
        "complete_eight_row_total": "Over the 240 seconds of the preceding 30-second default runs: 91,070 combination rounds, 112,955 component checks, and 91,070 learned clauses. Rows had 45 to 216 shared terms and 990 to 23,220 all-pair arrangements. EUF diagnostics reached tens of millions of disequality checks or pending-merge pops on several rows; solve time dominated millisecond-scale preprocessing.",
        "guided_eight_row_total": "Seven rows made exactly 16 model decisions and then entered complete fallback; their guided phase performed 10,989 component checks before fallback. hash_sat_09_05 made no model decision or snapshot because LIA rejected all 4,330 complete Boolean models first. Care-pair counters were zero on every row."
      },
      "profile_results": {
        "xs_7_7_default": "5000 rounds, 7064 component checks, 990 pairs and 2970 bridge clauses; 4.38 seconds, 15,356 KiB peak RSS. CaDiCaL propagation led at 24.84%, followed by SAT search and exact-rational tableau pivots/updates.",
        "xs_27_37_default": "1000 rounds, 1350 checks, 7750 pairs and 23,250 bridges; 5.30 seconds, 48,428 KiB. CaDiCaL search/propagation led; component extraction issued 31.8 million backend value queries and EUF rebuilt closure state.",
        "hash_sat_09_05_default": "3000 rounds/checks, each rejected by the first EUF component; 1653 pairs and 4959 bridges; 2.16 seconds, 18,668 KiB. CaDiCaL propagation was 49.23% of samples and component extraction issued 20.1 million value queries.",
        "medium12_default": "200 rounds and 400 checks, 23,220 pairs and 69,660 bridges, 93,640 SAT variables. The original run took 8.68 seconds and 124,692 KiB; the exact-command recheck took 4.23 seconds and 124,660 KiB. CaDiCaL propagation was respectively 35.38% and 20.54%; tableau update, violation maintenance, destruction, exact rational arithmetic, and copying dominated the rest. The wall-time variance prevents a local comparative-speed claim but leaves the structure, call counts, memory, and dominant mechanisms unchanged.",
        "certora_65782_default": "1500 rounds and 1571 checks, 12,090 pairs and 36,270 bridges, 50,193 SAT variables; 11.99 seconds, 70,696 KiB. CaDiCaL propagation was 82.91% and extraction issued 74.6 million backend value queries.",
        "hash_sat_09_05_guided": "1000 rounds/checks with zero pair materialization; 4.56 seconds, 13,340 KiB. Every assignment failed LIA before a model projection. Rational addition and LraTableau::check each took 16.84% of samples and pivots 10.53%, showing repeated full-tableau feasibility rather than combination scheduling.",
        "one_round_shape": "At --max-theory-conflicts=1, medium12 complete versus guided created 93,640 versus 762 SAT variables, used 123,704 versus 9,704 KiB, and spent 209 versus 2.06 milliseconds in solve. Certora complete versus guided created 50,193 versus 1,904 variables, used 66,700 versus 11,216 KiB, and spent 164 versus 5.27 milliseconds. These are setup/shape diagnostics, not steady-state timing claims."
      },
      "budget_probe_results": {
        "recoveries": "At budget 256, xs_7_7 returned sat in 0.03 seconds with 32/990 pairs after 176 rounds; xs-15-09-3-5-5-3 returned sat in 1.84 seconds with 216/2926 pairs after 4630 rounds; xs-07-11-1-1-1-1 returned unsat in 0.14 seconds with 64/990 pairs after 792 rounds. None used complete fallback.",
        "remaining": "xs_27_37 remained unknown at 15 seconds without fallback after 126 decisions; xs_11_21 entered fallback after 86 decisions and remained unknown; hash_sat_09_05 still made no decisions; medium12 entered fallback at every tested budget through 256; Certora 65782 entered fallback at budget 64. Five of eight gaps therefore remain under these local bounds.",
        "model_validation": "Dolmen 0.10 directly accepted both satisfiable high-budget models: 2/2 pass, zero invalid model, timeout, read error, or solver error.",
        "interpretation": "The fixed default budget 16 prematurely triggers the quadratic fallback on three observed rows, but a higher fixed budget is not a general cure and has not been evaluated on SLURM or fuzzed. This result must not be used as a default-promotion or headline benchmark claim."
      },
      "literature_review": {
        "primary_sources": "de Moura and Bjorner, Model-based Theory Combination, Sections 4-5 and Appendix A; Bruttomesso et al., Delayed Theory Combination vs. Nelson-Oppen, Section 3; Jovanovic and Barrett, Sharing is Caring: Combination of Theories, care functions and EUF care graph; Bjorner and Nachmanson, Arithmetic Solving in Z3, Sections 4-5.",
        "highest_priority_gaps": "Trail-synchronized DPLL(T^M) component state and partial-assignment theory layering; persistent/delta EUF and LIA contexts; a real QF_UFLIA EUF care-pair implementation; adaptive model-choice scheduling and live arithmetic model mutation; Int finite-domain/channeling preprocessing; and stronger explained partial-assignment propagation.",
        "secondary_gaps": "Extended bounded GCD, stronger cube/bound reasoning, CDCL-integrated integer branches, broader Gomory cuts, cut selection, and HNF remain arithmetic gaps, but the watched profiles are dominated before these integer stages. The model-combination paper reports dynamic Ackermannization did not help its Wisa family, so it is not the first general remedy."
      },
      "artifacts": {
        "profile_directories": "/tmp/primo-uflia-{xs7-default-ZFhXsP,xs27-default-36s6oo,hash09-default-LlSWVI,medium12-default-XxAka5,certora65782-default-Du25yL,hash09-guided-hsLFez}; exact-command recheck /tmp/primo-uflia-profile-recheck-bc4667d-medium12-bwWbTt",
        "budget_directories": "/tmp/primo-uflia-budget-{xs7,medium12}-* and /tmp/primo-uflia-budget{64,256}-*",
        "validated_models": "/tmp/primo-qf-uflia-budget256-models-bc4667d",
        "reference_benchmark": "/tmp/primo-qf-uflia-reference-sample-f1f2525-20260902"
      },
      "evidence_status": "local diagnostic profile and parameter classification only; exact source relation recorded; no algorithm or default changed; SLURM evaluation and fuzzing required before accepting any tuning",
      "outcome": "The principal observed cost is repeated full-model orchestration: quadratic interface clauses burden CaDiCaL, every round scans all component atoms, and EUF/LIA state is rebuilt. Full incremental DPLL(T^M), persistent component contexts, EUF care pairs, and partial theory checks rank ahead of additional integer cuts for this watchlist. Raising the experimental model-decision budget avoids fallback and recovers three rows locally, but it is only a lead for a controlled SLURM/fuzz experiment."
    },
    {
      "id": "2026-09-03-qf-uflia-online-complete-local-gate",
      "started_at": "2026-09-03",
      "recorded_at": "2026-09-03",
      "kind": "local-exact-commit-ab-fuzz-model-validation",
      "scope": "Exact-commit local correctness and performance gate for the experimental trail-synchronized EUF and rational-arithmetic path over the unchanged complete QF_UFLIA arrangement.",
      "commits": {
        "source_and_binary": "31ecd565c0a5408b4961664661752130f694f34d",
        "baseline_parent": "87c2010"
      },
      "branch": "modular-theory-combination",
      "environment": {
        "host": "mikolas-ThinkPad-T14s-Gen-5; Linux 7.0.0-30-generic x86_64; local workstation",
        "solver": "Primo 0.1.0; CaDiCaL cadical-3.0.0-7b99c07",
        "references": "workspace Z3 and cvc5; Dolmen 0.10 at /home/user/.opam/default/bin/dolmen",
        "sample": "benchmarks/qf_uflia-smtlib-representative-20.txt rooted at the existing extraction below /tmp/primo-uflia-plan.BtEpmD/non-incremental/QF_UFLIA"
      },
      "commands": {
        "sample_pattern": "python3 scripts/bench_qf_uf_full.py --root /tmp/primo-uflia-plan.BtEpmD/non-incremental/QF_UFLIA --manifest /workspace/benchmarks/qf_uflia-smtlib-representative-20.txt --repo / --solver /workspace/build/primo --solver-arg=--quiet [--solver-arg=--experimental-qf-uflia-online-components] --timeout 5 --out <artifact>.csv --summary <artifact>-summary.csv",
        "sample_models": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/validate_model.py --manifest benchmarks/qf_uflia-smtlib-representative-20.txt --root /tmp/primo-uflia-plan.BtEpmD/non-incremental/QF_UFLIA --solver ./build/primo --solver-arg=--quiet --solver-arg=--experimental-qf-uflia-online-components --dolmen /home/user/.opam/default/bin/dolmen --dolmen-arg=--strict=false --require-dolmen-pass --timeout 5 --dolmen-timeout 5 --out /tmp/qf-uflia-online-sample-models-31ecd56",
        "fuzz_answers": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/qf_uflia_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--experimental-qf-uflia-online-components --ref z3 --ref cvc5 --count 1000 --seed 202609030 --timeout 5 --shape random --out /tmp/qf-uflia-online-fuzz-31ecd56",
        "fuzz_models": "PATH=/workspace/contrib/local/bin:$PATH python3 scripts/validate_model.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--experimental-qf-uflia-online-components --dolmen /home/user/.opam/default/bin/dolmen --dolmen-arg=--strict=false --require-dolmen-pass --timeout 5 --dolmen-timeout 5 --out /tmp/qf-uflia-online-fuzz-models-31ecd56 /tmp/qf-uflia-online-fuzz-31ecd56/cases/*.smt2",
        "bounded_timeout_probe": "timeout -s TERM 10 ./build/primo --quiet --stats --experimental-qf-uflia-online-components --max-theory-conflicts=200 <remaining-sample-timeout>"
      },
      "results": {
        "sample_baseline": "8/20 solved at five seconds: 3 sat, 5 unsat, 12 timeout, 0 wrong, 0 unsupported; PAR2 126.299595 seconds.",
        "sample_online": "16/20 solved at five seconds: 7 sat, 9 unsat, 4 timeout, 0 wrong, 0 unsupported; PAR2 43.814808 seconds. Family coverage was Certora 0/2, TwoSquares 4/4, MathSAT 9/10, and wisas 3/4.",
        "sample_models": "Dolmen directly accepted all 7 satisfiable online-arm models; 9 rows were unsat and 4 timed out.",
        "fuzz": "1,000/1,000 PASS against both Z3 and cvc5: 594 sat and 406 unsat; zero wrong answer, disagreement, crash, parser/type error, timeout, unsupported result, or unknown output. Dolmen directly accepted all 594 satisfiable models.",
        "remaining_shape": "At a 200-theory-conflict diagnostic bound, the remaining xs_27_37, medium12, and smaller Certora rows had respectively 7,750, 23,220, and 12,090 arrangement pairs; the online path removed post-model rebuilds but retained the quadratic SAT vocabulary."
      },
      "verification": {
        "commands": "make check; make lint; make docs; make asan-test; make tidy; make include-cleaner; git diff --check",
        "results": "All 25 CTests and 78 Python tests passed; ASan passed 25/25 after catching and fixing a setup-scope option-reference lifetime defect; lint and docs passed; whole-tree clang-tidy reported only 18 suppressed non-user warnings; include-cleaner retained its known 214-warning advisory baseline and added no warning in the changed solver or tests.",
        "review": "The required smt-code-review skill was unavailable in the installed skill catalog. Manual diff review and the solver-efficiency-review skill found no new callback full scan; the only per-accepted-model allocation feeds the mandatory integer completion and its sound conflict clause."
      },
      "artifacts": {
        "baseline_sample": "/tmp/qf-uflia-default-31ecd56.csv",
        "online_sample": "/tmp/qf-uflia-online-31ecd56.csv",
        "sample_models": "/tmp/qf-uflia-online-sample-models-31ecd56",
        "fuzz_answers": "/tmp/qf-uflia-online-fuzz-31ecd56",
        "fuzz_models": "/tmp/qf-uflia-online-fuzz-models-31ecd56"
      },
      "evidence_status": "exact-commit local development evidence; online path remains default-off pending SLURM campaign and QF_UFLRA regression gate",
      "outcome": "Trail-synchronized complete-arrangement solving removes the dominant repeated component reconstruction and doubles five-second sample coverage. The remaining gaps still pay the quadratic arrangement cost, motivating a separate sparse-plus-online experiment before any default decision."
    },
    {
      "id": "2026-09-03-qf-uflia-sparse-online-default-promotion",
      "started_at": "2026-09-03",
      "recorded_at": "2026-09-03",
      "kind": "local-and-slurm-profile-promotion-benchmark-fuzz-model-validation",
      "scope": "Implementation and promotion gate for sparse model-guided, trail-synchronized QF_UFLIA combination with EUF care pairs, a 512-decision bound, and the complete non-convex arrangement restart; includes QF_UFLRA preservation checks.",
      "commits": {
        "sparse_online_implementation": "29312db74b16eab6d69ab8ea47d0503e5004a914",
        "pre_promotion_evaluation": "c9dedcfdc3caba2bd048bcfdf5b25b0fe43e6f89",
        "promoted_default": "f38446a67365330c6f0d17655479bb5d199ef21d",
        "mutation_evidence_revision": "66250a4f793c5bf971c1839234ca4fdadc7cb0a7",
        "source_relation": "c9dedcf adds only evaluation scripts and documentation after 29312db. f38446a changes the public defaults, option names, ablation controls, and documentation; the underlying sparse-online engine is identical to c9dedcf. Revision 66250a4 contains documentation-only synchronization after f38446a and therefore uses the same solver source for the mutation gate."
      },
      "branch": "modular-theory-combination",
      "environment": {
        "local": "Linux workstation; Release and ASan Primo; CaDiCaL cadical-3.0.0-7b99c07; workspace Z3 and cvc5; Dolmen 0.10",
        "slurm": "Established remote SLURM environment; clean archive-mode workspace; Release Primo; CaDiCaL cadical-3.0.0-7b99c07",
        "corpus": "benchmarks/qf_uflia-smtlib-representative-20.txt rooted at sandbox/QF_UFLIA.tar.zst extraction; generated random QF_UFLIA and QF_UFLRA cases; generated finite-domain QF_UFLRA and QF_UF controls",
        "reference_versions": "Z3 5.1.0, cvc5 1.3.4, OpenSMT 2.9.2, Dolmen 0.10"
      },
      "commands": {
        "local_qf_uflia_answers": "PATH=contrib/local/bin:$PATH python3 scripts/qf_uflia_fuzz.py --solver ./build/primo --solver-arg=--quiet --solver-arg=--experimental-qf-uflia-model-combination --solver-arg=--experimental-qf-uflia-online-components --solver-arg=--qf-uflia-model-decision-budget=512 --ref z3 --ref cvc5 --count 1000 --seed 202609031 --timeout 5 --shape random --out /tmp/qf-uflia-sparse-online-fuzz-29312db",
        "local_qf_uflia_models": "python3 scripts/validate_model.py with the same solver arguments, --require-dolmen-pass --timeout 5 --dolmen-timeout 5, over all 1,000 generated cases",
        "local_sample": "python3 scripts/bench_qf_uf_full.py over benchmarks/qf_uflia-smtlib-representative-20.txt with default and sparse-online arms at five seconds; exact c9dedcf model replay repeated at 30 seconds with --dolmen-arg=--strict=false",
        "slurm_prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --sync-mode archive --reuse-dependencies --target primo; immediate --check-only --no-sync verified the embedded revision, CaDiCaL, and required reference tools before every submission",
        "slurm_pre_promotion": "scripts/slurm_qf_uflia_model_fuzz_gate.sbatch with four shards x 750, seed base 202609040, five-second solver/Dolmen limits, and both experimental options plus budget 512; scripts/slurm_qf_uflia_sample_compare.sbatch at 30 seconds; scripts/slurm_qf_uflra_fuzz_gate.sbatch with four shards x 250 general and x25 finite controls",
        "slurm_promoted_default": "scripts/slurm_qf_uflia_model_fuzz_gate.sbatch with four shards x 750, seed base 202609060, no solver options; scripts/slurm_qf_uflra_fuzz_gate.sbatch with four shards x 250 general and x25 finite controls, seed base 202609070; isolated array task 0 of scripts/slurm_qf_uflia_sample_compare.sbatch at 30 seconds",
        "slurm_seed_mutation": "scripts/yinyang_fuzz.sh typefuzz over the 10 staged MathSAT files selected from the representative QF_UFLIA corpus, 20 mutations per seed, random seed 202609082, two-second per-solver timeout, 600-second campaign bound, 20,000-byte input limit, --keep-logic, and --hoist-declarations; compared build-slurm-rel/primo --quiet against Z3 model_validate=true",
        "verification": "make check; make lint; make docs; make asan-test; make tidy; make include-cleaner; solver_efficiency_snapshot.py; git diff --check; slurm_validate_sbatch.py and bash -n on both changed sbatch files"
      },
      "scheduler_jobs": {
        "pre_promotion_qf_uflia_campaign": "131185",
        "pre_promotion_seven_arm_sample": "131189",
        "pre_promotion_qf_uflra_regression": "131196",
        "promoted_default_qf_uflia_campaign": "131200",
        "promoted_default_qf_uflra_regression": "131204",
        "promoted_default_isolated_sample": "131208",
        "rejected_mutation_setup_all_families": "131209 (cancelled after the first 459 KiB Certora seed made corpus coverage infeasible within the task budget; zero bug files; not evidence)",
        "rejected_mutation_setup_100_per_seed": "131210 (cancelled after the first MathSAT seed showed the requested 1,000 mutations would not fit the task budget; zero bug files; not evidence)",
        "promoted_default_seed_mutation": "131211"
      },
      "results": {
        "local_merge_gate": "1,000/1,000 QF_UFLIA answers PASS against both Z3 and cvc5: 594 sat and 406 unsat; Dolmen directly accepted all 594 satisfiable models.",
        "pre_promotion_sample": "At 30 seconds on SLURM, complete and model-only Primo each solved 11/20, online-complete solved 16/20, and sparse-online solved 18/20 under simultaneous-arm contention. Sparse-online had 8 sat, 10 unsat, 2 timeout, zero wrong or unsupported, and PAR2 131.626060 seconds. Z3, cvc5, and OpenSMT each solved 19/20 with PAR2 60.600257, 65.758424, and 65.520791 seconds.",
        "pre_promotion_campaign": "3,000/3,000 QF_UFLIA answer comparisons PASS: 1,765 sat and 1,235 unsat; Dolmen directly accepted all 1,765 satisfiable models.",
        "promoted_default_campaign": "3,000/3,000 QF_UFLIA answer comparisons PASS: 1,773 sat and 1,227 unsat; zero disagreement, wrong answer, crash, parser/type error, timeout, unsupported result, or unknown output. Dolmen directly accepted all 1,773 satisfiable models.",
        "promoted_default_sample": "The isolated exact-f38446a default arm solved 19/20 at 30 seconds: 9 sat, 10 unsat, one large-Certora timeout, zero wrong or unsupported, PAR2 99.632776 seconds. Family coverage was Certora 1/2, TwoSquares 4/4, MathSAT 10/10, and wisas 4/4, with zero family-level wrong or unsupported result. Exact-solver-source local model replay produced the same 19 decisive answers and Dolmen directly accepted all 9 satisfiable models.",
        "qf_uflra_preservation": "On exact f38446a, 1,000/1,000 general QF_UFLRA, 100/100 finite QF_UFLRA, and 100/100 finite QF_UF comparisons PASS. Dolmen directly accepted all 576 general and 52 finite-QF_UFLRA satisfiable models. The pre-promotion independent seeds also passed 1,000 general plus both 100-case controls.",
        "seed_mutation": "Job 131211 completed in 7:21 with exit status zero. All 10 selected real MathSAT QF_UFLIA seeds were valid and processed; each completed 20 successful and zero unsuccessful mutations, for 200 successful mutations and 388 Primo/Z3 solver calls. It produced zero bug triggers and zero bug files. Peak batch RSS was 2,770,028 KiB; hash_sat_09_05 exposed mutation-generation cost but completed within the campaign bound.",
        "model_validator_diagnosis": "Four archive models initially appeared as model-error because strict Dolmen rejects coefficient-times-UF-application syntax in the original inputs. Replaying with Dolmen --strict=false directly validated every produced model; no fallback validator was used. The QF_UFLIA SLURM gate now encodes this required parser mode.",
        "profiling_and_budget": "The prior bounded profiles showed quadratic complete arrangements of 7,750 to 23,220 pairs and repeated EUF/LIA rebuilding. Combined online state and sparse choices remove those dominant costs. Budget 512 is the smallest evaluated round value that retained the medium12 and smaller-Certora sparse recoveries; xs_27_37 still enters the complete restart but solves within 30 seconds in isolated runs. Additional integer cuts were not justified by the observed pre-integer bottleneck."
      },
      "verification": {
        "results": "All 25 CTests and 78 Python tests passed; full ASan passed 25/25 before and after default promotion; lint and docs passed. The solver-efficiency snapshot found no added hot-path pattern in the promotion diff. Whole-tree clang-tidy reported only 18 suppressed non-user warnings. Advisory include-cleaner retained the known 214-warning baseline and reported no warning in the changed main, solver engine, or QF_UFLIA test files.",
        "review": "The required smt-code-review skill was unavailable in the installed skill catalog. Manual whole-tree hygiene review and the solver-efficiency-review workflow found no soundness issue: candidate equalities remain reversible assumptions, cancellation and typed limits retain their precedence, all materialization is cumulative, and every sparse exit retains complete non-convex fallback."
      },
      "artifacts": {
        "local_pre_promotion": "/tmp/qf-uflia-sparse-online-fuzz-29312db and /tmp/qf-uflia-sample-29312db",
        "local_exact_sample_models": "/tmp/qf-uflia-sample-c9dedcf-models and /tmp/qf-uflia-default-f38446a-models",
        "collected_pre_promotion_slurm": "/tmp/primo-qf-uflia-slurm-c9dedcf",
        "collected_promoted_default_slurm": "/tmp/primo-qf-uflia-final-f38446a",
        "collected_seed_mutation": "/tmp/primo-qf-uflia-yinyang-66250a4-mathsat-200",
        "remote": "<slurm-workdir>/{fuzz-results/qf-uflia-sparse-online-c9dedcf,fuzz-results/qf-uflra-regression-c9dedcf,results/qf-uflia-sample-c9dedcf,fuzz-results/qf-uflia-default-f38446a,fuzz-results/qf-uflra-regression-f38446a,results/qf-uflia-default-f38446a,logs/qf-uflia-yinyang-66250a4-mathsat-200,yinyang_bugs/qf-uflia-default-66250a4-mathsat-200}"
      },
      "evidence_status": "slurm-complete exact promoted-default solver source; direct-Dolmen model gates; real-seed mutation complement; default accepted with complete non-convex fallback retained",
      "outcome": "Promoted sparse online QF_UFLIA combination with budget 512. It matches the three reference solvers' 19/20 sample coverage, improves from the prior 11/20 default, and passes exact-commit generated, model, preservation, and real-seed mutation gates. It remains slower than references on the sample, and fully incremental sparse row growth is the next performance target."
    },
    {
      "id": "2026-09-03-qf-uflia-full-smtlib-61cd9ee",
      "started_at": "2026-09-03",
      "recorded_at": "2026-09-03",
      "kind": "slurm-full-corpus-reference-comparison-and-model-validation",
      "scope": "First full Primo evaluation over every QF_UFLIA file in sandbox/QF_UFLIA.tar.zst, compared with Z3, cvc5, and OpenSMT, followed by direct Dolmen validation of every satisfiable Primo row.",
      "commit": "61cd9eef20e6349ffe01dfe83bafdcb5991d62b3",
      "branch": "modular-theory-combination",
      "environment": {
        "scheduler": "Established remote SLURM environment; 32 comparison tasks and eight model-validation tasks; Release build",
        "solver_versions": "Primo 0.1.0 with CaDiCaL cadical-3.0.0-7b99c07; Z3 5.1.0; cvc5 1.3.4; OpenSMT 2.9.2; Dolmen 0.10",
        "corpus": "659 files, 118,566,018 bytes, path/size SHA-256 29d7b1b245daf52ed8df7cc05f160a4209c7b062a83687e91dd4e75ee36406c6; families: 76 Certora, 21 TwoSquares, 454 mathsat, and 108 wisas; declared metadata: 400 sat, 183 unsat, and 76 unknown",
        "timeout": "60 seconds per comparison row; satisfiable-model replay used 90 seconds for Primo and 30 seconds for Dolmen"
      },
      "commands": {
        "prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --sync-mode archive --reuse-dependencies --target primo with Z3, cvc5, and OpenSMT preflight; python3 scripts/slurm_stage_manifest_files.py --root tmp/QF_UFLIA --all-smt2; immediate --check-only --no-sync before submission",
        "comparison": "sbatch scripts/slurm_qf_uflia_full_solver_compare.sbatch; 4 solvers x 8 deterministic shards, 60-second cutoff, 4 GiB requested memory, append-only JSONL journals and final CSVs",
        "analysis": "python3 scripts/summarize_benchmark_shards.py --timeout 60 with the four collected solver directories; scripts/compare_solver_answers.py over a temporary flat view named <solver>.shard-<n>.csv; an independent status-ok-only cross-check counted reference-consensus gaps and common coverage",
        "model_validation": "A locally written, slurm_validate_sbatch.py-checked and bash -n-checked eight-shard batch script selected the 379 status-ok Primo sat rows and ran scripts/validate_model.py --require-dolmen-pass --dolmen-arg=--strict=false --timeout 90 --dolmen-timeout 30",
        "verification": "make check (25/25 CTests and 79/79 Python tests); make lint; make docs; python3 -m json.tool docs/run-log.json; git diff --check. The requested smt-code-review skill was unavailable in the installed skill catalog; a manual changed-file hygiene and documentation-evidence review found no remaining issue. ASan, clang-tidy, and include-cleaner were not rerun because the post-benchmark fix changes only Python result aggregation, its tests, and documentation."
      },
      "scheduler_jobs": {
        "full_comparison": "131212",
        "rejected_model_setup_wrong_path": "131244 (all eight tasks failed before solver execution because the temporary wrapper named a non-shared Dolmen path; empty result logs; not evidence)",
        "model_path_diagnostic": "131252 (single task confirmed the same missing path before solver execution; not evidence)",
        "full_model_validation": "131253"
      },
      "results": {
        "overall": "Primo solved 543/659 (379 sat, 164 unsat), timed out on 116, and had zero unsupported, error, or wrong-declared-status rows; solved-row time 1,838.313734 seconds and PAR2 15,758.313734 seconds. Z3 solved 618 (429 sat, 189 unsat), timed out on 41, and had PAR2 5,490.081127. cvc5 solved 605 (421 sat, 184 unsat), timed out on 54, and had PAR2 7,378.882308. OpenSMT solved 601 (415 sat, 186 unsat), timed out on 58, and had PAR2 8,048.659598. All reference rows had zero unsupported, error, or wrong-declared-status result.",
        "primo_families": "Certora 3/76 solved (2 sat, 1 unsat, 73 timeout), PAR2 8,799.921643; TwoSquares 21/21 (5 sat, 16 unsat), PAR2 0.427908; mathsat 437/454 (313 sat, 124 unsat, 17 timeout), PAR2 2,925.968884; wisas 82/108 (59 sat, 23 unsat, 26 timeout), PAR2 4,031.995299.",
        "reference_families": "Z3 solved Certora/TwoSquares/mathsat/wisas 35/21/454/108; cvc5 25/21/454/105; OpenSMT 18/21/454/108.",
        "cross_solver": "Zero terminal decisive-answer disagreements. All three references agreed decisively on 54 Primo timeout rows: 13 Certora, 17 mathsat, and 24 wisas. At least one reference solved 79 Primo timeout rows. Thirty-seven Certora rows were solved by nobody. Unique solves were Primo 0, Z3 12, cvc5 2, and OpenSMT 2. All four solvers agreed and terminated decisively on 542 rows.",
        "models": "Job 131253 completed all eight tasks with exit status zero. Every one of the 379 satisfiable Primo rows passed direct Dolmen validation; there were no fallback passes, solver or Dolmen timeouts, or invalid models.",
        "scheduler": "All 32 comparison tasks exited zero; the longest task took 20:24. All eight accepted model tasks exited zero; the longest took 4:05. The largest reported comparison-task MaxRSS was 6,397,572 KiB on a Primo shard, above the nominal 4 GiB request but without an OOM or task failure.",
        "reporting_fix": "One OpenSMT Certora process printed sat before the harness timeout terminated it. Status, solved count, and PAR2 were already correct, but aggregate answer counters and disagreement scans initially retained that nonterminal line. The analysis scripts now count answers and disagreements only from status-ok rows; regression tests cover a timed-out process that printed sat. Raw benchmark results are unchanged."
      },
      "artifacts": {
        "local": "/tmp/primo-qf-uflia-full-61cd9ee-131212",
        "remote": "<prepared-workspace>/results/{qf-uflia-full-131212,qf-uflia-full-models-131253} and matching logs/primo-qfuflia-{full-131212,models-131253}-*",
        "contents": "32 comparison shard CSVs plus JSONL journals and summaries; 379-file satisfiable manifest; eight direct-Dolmen model-validation directories; exact temporary model sbatch; SLURM stdout/stderr and accounting snapshots"
      },
      "evidence_status": "slurm-complete exact solver commit; full corpus; direct-Dolmen model complete; first full-QF_UFLIA baseline",
      "outcome": "Accepted as the first full QF_UFLIA baseline. Correctness and model gates are clean, but Primo trails every reference in solved count and PAR2. The 54 unanimous-reference/Primo-timeout rows are the next focused optimization corpus, led by wisas and mathsat rather than by integer-completeness failures inferred without profiling."
    },
    {
      "id": "2026-09-03-qf-uflia-full-consensus-gap-profiling-03ed5cb",
      "started_at": "2026-09-03",
      "recorded_at": "2026-09-03",
      "kind": "local-profile-and-preprocessing-comparison",
      "scope": "Four representative inputs among the 54 full-corpus QF_UFLIA rows where Primo timed out and Z3, cvc5, and OpenSMT all returned the same decisive answer; comparison of full-run statistics, bounded gprof samples, integer-safe preprocessing modes, and arithmetic canonicalization.",
      "commit": "03ed5cb4510af26a5f80a30e8ae4d950f2ae7e19",
      "baseline_commit": "61cd9eef20e6349ffe01dfe83bafdcb5991d62b3",
      "branch": "modular-theory-combination",
      "environment": {
        "host": "Local development workstation for profiling; full-run reference times and 60-second Primo counters are SLURM job 131212",
        "solver": "Primo 0.1.0, CaDiCaL cadical-3.0.0-7b99c07; Release build for five-second option comparisons and RelWithDebInfo -pg build for gprof",
        "corpus": "benchmarks/qf_uflia-full-consensus-gap-profile-4.txt, SHA-256 67fbf552073f5be7940c2ff5b6e14e77e8459088056f909c21d5118bb5f125a0; paths rooted at the extraction of sandbox/QF_UFLIA.tar.zst"
      },
      "commands": {
        "selection": "Status-ok-only merge of /tmp/primo-qf-uflia-full-61cd9ee-131212/results/{primo,z3,cvc5,opensmt}/shard-*.csv; retain Primo timeout rows for which all three references are status ok and agree decisively; 54 rows qualify",
        "gprof_build": "cmake -S . -B build-gprof-qf-uflia-full -DCMAKE_PREFIX_PATH=/workspace/contrib/local -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS=-pg -DCMAKE_EXE_LINKER_FLAGS=-pg; cmake --build build-gprof-qf-uflia-full -j2",
        "gprof": "Per input in a separate artifact directory: /usr/bin/time timeout --kill-after=5s 10s build-gprof-qf-uflia-full/primo --quiet --stats <input>; gprof build-gprof-qf-uflia-full/primo gmon.out. A separate medium11 diagnostic used --max-theory-conflicts=200 and exited normally in 2.87 seconds.",
        "preprocessing": "For every input: /usr/bin/time build/primo --quiet --stats --preprocess-only --preprocessing-mode {auto,off,basic,strong} <input>; repeat with --arithmetic-atom-canonicalization",
        "search_variant": "For every input and {default, --arithmetic-atom-canonicalization}: /usr/bin/time timeout --kill-after=3s 5s build/primo --quiet --stats [option] <input>"
      },
      "targets": {
        "mathsat_medium11": "unsat; reference times Z3/cvc5/OpenSMT 0.024603/0.034179/0.036823 seconds; Primo 60.151479-second timeout",
        "wisas_xs_33_33": "sat; reference times 0.039171/0.076391/1.699604 seconds; Primo 60.116056-second timeout",
        "wisas_xs_40_40": "sat; reference times 0.042836/0.075268/5.154121 seconds; Primo 60.071952-second timeout",
        "certora_3106_40": "sat; reference times 0.197049/0.286087/1.067020 seconds; Primo 60.424781-second timeout"
      },
      "results": {
        "medium11": "Preprocessing 645 to 1,088 terms and 1/2 solve-eqs candidates accepted. After 512 sparse choices, complete fallback materialized all 17,578 pairs: 70,980 SAT variables, 106,155 clauses, 36,033,971 decisions, 59,450,551 propagations, and 57.064302 seconds in complete fallback. The ten-second gprof profile was led by CaDiCaL propagation and phase copying, with 98,982,538 violation-status updates and 107,993,423 arithmetic-atom normalizations called from online search.",
        "xs_33_33": "Preprocessing 1,503 to 2,331 terms with zero solve-eqs candidates accepted. Complete fallback materialized all 11,026 pairs: 45,820 variables, 69,023 clauses, 11,029,521 decisions, 18,774 EUF theory conflicts, and 6,282,444 online LRA checks. FlatCongruenceClosure::drain_changed_terms was 59.59% of ten-second gprof samples with 1,558,285 calls; the function also resets every active checkpoint watermark on each call.",
        "xs_40_40": "Preprocessing 1,803 to 2,799 terms with zero solve-eqs candidates accepted. Sparse search materialized 289/15,576 pairs but rebuilt components 290 times: 54,582 SAT conflicts, 343,819 pivots, and 202,997,370 pivot-term operations. CaDiCaL propagation and subsumption were 34.65% of ten-second gprof samples; tableau pivots and exact-rational bound maintenance followed.",
        "certora_3106_40": "Preprocessing 50,054 to 63,356 terms and 13/95 solve-eqs candidates accepted. Sparse search materialized 141/1,619,100 pairs and rebuilt 142 times. Integer completion took 30.264 seconds and LIA checks 33.910 seconds. In the ten-second gprof call graph, complete_lia_integer_model was 27.1% inclusive and patch collect_candidates was 24.6% inclusive; 8,294 variables were patched in the full run.",
        "preprocessing_modes": "The auto/off/basic/strong preprocess-only runs had identical structural counters because QF_LIA and QF_UFLIA intentionally force the restricted integer-safe profile. Preprocessing took about 0.002 seconds on each small input and 0.097-0.103 seconds on Certora. The mandatory pass grows these DAGs by 27-69% while producing no solved-equation reduction on either wisas input.",
        "canonicalization": "Arithmetic-atom canonicalization did not change SAT variables or clauses on medium11 or xs_33_33, did not materially improve five-second search progress on any target, enlarged the wisas final DAGs from 2,331 to 2,387 and 2,799 to 2,869 terms, and raised Certora preprocessing from about 0.10 to 0.14 seconds while accepting only one additional solved equation. Rejected as a remedy for this cluster."
      },
      "verification": "make check (25/25 CTests and 79/79 Python tests); make lint; make docs; python3 -m json.tool docs/run-log.json; git diff --check; manifest existence check against tmp/QF_UFLIA",
      "artifacts": {
        "local": "/tmp/primo-qf-uflia-profiles-03ed5cb",
        "contents": "Four gmon.out files and gprof reports from bounded ten-second profiles; one conflict-bounded medium11 profile; preprocess-only stdout/stderr for five configurations per input; paired five-second default/canonicalization search outputs; 76 files, approximately 18 MiB",
        "full_comparison": "/tmp/primo-qf-uflia-full-61cd9ee-131212"
      },
      "evidence_status": "local diagnostic profiles tied to SLURM-complete full-corpus rows; no solver behavior change",
      "outcome": "The next targets are not one uniform LIA bottleneck. Prioritize amortized changed-term draining for deep SAT trails, integer-safe local-context/implication preprocessing and numeral-domain recognition for wisas and explicit function tables, then incremental tableau growth and cheaper integer candidate scoring for sparse Certora checks. Optional arithmetic canonicalization is not a useful shortcut on this sample."
    },
    {
      "id": "2026-09-03-qf-uflia-indexed-patching-local",
      "date": "2026-09-03",
      "commit": "93362aec8ba01478cd5e78871db61a7afc54676a",
      "baseline_commit": "61cd9eef20e6349ffe01dfe83bafdcb5991d62b3",
      "branch": "modular-theory-combination",
      "scope": "Local mechanism check for the indexed Bjørner-Nachmanson Section 4.1 patch-candidate scorer on the profiled Certora QF_UFLIA gap",
      "environment": {
        "host": "local development workstation",
        "solver": "Release Primo with CaDiCaL cadical-3.0.0-7b99c07",
        "input": "tmp/QF_UFLIA/20230314-Jaroslav-Bendik-Certora/3106_1c933134166dbad31f79_40_QF_UFLIA.smt2"
      },
      "command": "/usr/bin/time -f 'wall=%e user=%U rss=%M exit=%x' timeout --kill-after=5s 70s ./build/primo --quiet --stats INPUT",
      "result": {
        "answer": "unknown from outer timeout",
        "wall_seconds": 70.09,
        "patch_sweeps": 460,
        "occurrence_entries": 645489,
        "candidates_scored": 133616,
        "affected_rows_inspected": 5019816,
        "old_full_scan_equivalent": 1333888528,
        "materialized_pairs": 458,
        "component_rebuilds": 459,
        "component_rebuild_seconds": 13.908073,
        "lia_integer_seconds": 35.086901,
        "lia_check_seconds": 40.29024,
        "model_reconciliation_seconds": 44.192072
      },
      "verification": "The optimized scorer matched a newly written full-scan oracle on 40 deterministic randomized exact-rational tableaux; make check passed 25/25 CTests and 79/79 Python tests; make docs passed.",
      "artifacts": "local-only:/tmp/certora-indexed.{time,out,stats}",
      "evidence_status": "local mechanism evidence; not a headline performance comparison",
      "outcome": "The occurrence index reduced candidate score inspections from a computed 1.334 billion full-scan variable visits to 5.020 million affected-row visits. The instance still timed out and direct timers attribute 13.9 seconds to 459 component rebuilds, satisfying the planned gate for investigating incremental sparse component growth after preprocessing experiments."
    },
    {
      "id": "2026-09-03-qf-uflia-integer-preprocessing-local-3cabcdf",
      "date": "2026-09-03",
      "commit": "3cabcdfe812b8949b7130bd2d7dc5044306878e0",
      "baseline_commit": "3cabcdfe812b8949b7130bd2d7dc5044306878e0",
      "branch": "modular-theory-combination",
      "kind": "local-preprocessing-ablation",
      "scope": "Off/basic/strong integer preprocessing comparison on the eight recorded QF_UFLIA reference-gap watchlist instances after the amortized EUF notification and indexed LIA patching changes",
      "environment": {
        "host": "local development workstation",
        "solver": "Release Primo with CaDiCaL cadical-3.0.0-7b99c07",
        "corpus": "benchmarks/qf_uflia-reference-gap-watchlist.txt rooted at tmp/QF_UFLIA; eight files; 10-second per-instance timeout"
      },
      "commands": {
        "template": "python3 scripts/bench_qf_uf_full.py --root tmp/QF_UFLIA --manifest benchmarks/qf_uflia-reference-gap-watchlist.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --solver-arg=--preprocessing-mode=MODE --timeout 10 --out results/qf-uflia-preprocessing-MODE-3cabcdf.csv --summary results/qf-uflia-preprocessing-MODE-3cabcdf.summary.json",
        "modes": "off, basic, strong; three processes ran concurrently on the same workstation"
      },
      "results": {
        "overall": "All three modes solved 8/8 with 5 sat, 3 unsat, zero timeout, unsupported, error, or wrong-declared-status rows. PAR2/summed wall time was 12.101086 seconds off, 4.531209 seconds basic, and 7.579694 seconds strong. Concurrent execution makes these mechanism-scale local timings, not headline speed claims.",
        "wisas_xs_7_7": "off/basic/strong 0.387090/0.066928/0.073562 seconds; SAT decisions 116,572/7,313/5,929; basic NNF rewrote 118 polarity states; strong recognized 9 numeral choices and emitted 223 AMO clauses.",
        "wisas_xs_27_37": "off/basic/strong 8.083204/0.235008/0.295402 seconds; SAT decisions 6,107,552/23,268/20,941; materialized model pairs 7,750/94/94; basic NNF rewrote 418 polarity states; strong recognized 29 numeral choices and emitted 1,383 AMO clauses.",
        "wisas_xs_11_21": "off/basic/strong 0.879508/0.211492/4.282020 seconds; SAT decisions 379,507/17,494/424,188; strong recognized 13 numeral choices and emitted 391 AMO clauses but changed search back to complete 1,830-pair materialization. Numeral AMO is therefore not a uniformly winning default.",
        "other_families": "Basic was slower on the Hash, MathSAT Wisa, medium12, and Certora rows; strong was close to off on those five rows. Equality-definition activation was zero on all three profiled wisas rows."
      },
      "verification": "Before commit 3cabcdf: make check passed 25/25 CTests and 79/79 Python tests; make docs passed; make asan-test passed 25/25; whole-tree clang-tidy reported only 18 suppressed non-user warnings; advisory whole-tree include-cleaner retained 214 warnings and no warning in the changed strategy/tactic/tests, with preprocessing.cpp retaining its pre-existing MonotoneEliminatedVariable direct-include advisory.",
      "artifacts": {
        "local": "results/qf-uflia-preprocessing-{off,basic,strong}-3cabcdf.{csv,csv.jsonl,summary.json}",
        "persistence": "large per-instance artifacts are local-only; this run-log entry is the canonical summary"
      },
      "evidence_status": "local exact-commit ablation; correctness-clean; not SLURM headline evidence",
      "outcome": "Keep default auto unchanged pending full SLURM evaluation. Basic NNF/value preprocessing is the clear candidate for QF_UFLIA, while numeral-domain AMO remains explicit strong because it has a marked xs_11_21 regression. The prior Certora rebuild profile still justifies incremental component-growth work."
    },
    {
      "id": "2026-09-03-qf-uflia-incremental-component-growth-986d89f",
      "date": "2026-09-03",
      "commit": "986d89f",
      "baseline_commit": "3cabcdfe812b8949b7130bd2d7dc5044306878e0",
      "branch": "modular-theory-combination",
      "kind": "local-performance-profile-and-watchlist-comparison",
      "scope": "Exact-commit mechanism profile for append-only QF_UFLIA EUF/LIA component preparation, plus the eight-case reference-gap watchlist and direct Dolmen validation of every satisfiable result",
      "environment": {
        "host": "local development workstation",
        "solver": "Primo 0.1.0 at 986d89f with CaDiCaL cadical-3.0.0-7b99c07; Release for timing and RelWithDebInfo -pg for gprof",
        "corpus": "benchmarks/qf_uflia-reference-gap-watchlist.txt rooted at tmp/QF_UFLIA; eight files; focused profile uses 20230314-Jaroslav-Bendik-Certora/3106_1c933134166dbad31f79_40_QF_UFLIA.smt2"
      },
      "commands": {
        "profile_build": "cmake -S . -B build-gprof-qf-uflia-growth -DCMAKE_PREFIX_PATH=/workspace/contrib/local -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_FLAGS=-pg -DCMAKE_EXE_LINKER_FLAGS=-pg -DPRIMO_GIT_REVISION_OVERRIDE=986d89f -DPRIMO_WARNINGS_AS_ERRORS=OFF; cmake --build build-gprof-qf-uflia-growth --target primo -j2",
        "gprof": "In a fresh artifact directory: /usr/bin/time timeout --kill-after=60s 10s /workspace/build-gprof-qf-uflia-growth/primo --quiet --stats INPUT; gprof /workspace/build-gprof-qf-uflia-growth/primo gmon.out",
        "release_profile": "/usr/bin/time timeout --kill-after=60s 20s ./build/primo --quiet --stats INPUT",
        "watchlist": "python3 scripts/bench_qf_uf_full.py --root tmp/QF_UFLIA --manifest benchmarks/qf_uflia-reference-gap-watchlist.txt --solver ./build/primo --solver-arg=--quiet --solver-arg=--stats --timeout 10 --out results/qf-uflia-component-growth-exact-986d89f.csv --summary results/qf-uflia-component-growth-exact-986d89f.summary.json",
        "models": "python3 scripts/validate_model.py --root tmp/QF_UFLIA --manifest benchmarks/qf_uflia-reference-gap-watchlist.txt --solver ./build/primo --dolmen /home/user/.opam/default/bin/dolmen --dolmen-arg=--strict=false --require-dolmen-pass --timeout 15 --dolmen-timeout 15 --out results/qf-uflia-component-growth-models-exact-986d89f"
      },
      "results": {
        "watchlist": "Solved 8/8: 5 sat and 3 unsat, with zero timeout, unsupported, error, or wrong-declared-status rows. Summed wall time/PAR2 was 10.342226 seconds versus 12.101086 seconds for the preceding exact-source default-equivalent off-profile at 3cabcdf; all eight individual rows were faster. This isolated local comparison is a gate, not a headline result.",
        "models": "Dolmen directly accepted all five satisfiable watchlist models; the other three rows were unsat. No fallback validator was used.",
        "release_profile": "The 20-second bounded Certora run returned typed cancellation/unknown after materializing 185 pairs. One initial component build took 0.023441 seconds and 185 incremental growths took 0.171691 seconds total; online callback reconstruction still took 1.661772 seconds, SAT 2.188451 seconds, and model reconciliation/LIA checking 15.695105 seconds.",
        "baseline_comparison": "The prior 93362ae 70-second profile spent 13.908073 seconds rebuilding components over 459 generations, or about 30.3 ms per generation. The exact 986d89f run spent about 0.93 ms per incremental growth, plus one 23.4 ms initial build. Different outer budgets prevent an end-to-end time ratio claim, but the targeted preparation cost is no longer dominant.",
        "gprof": "The ten-second exact-revision profile confirmed no dominant append routine. Exact Rational/GMP operations, online tableau assignment and violation maintenance, SAT work, integer patching, and care-pair processing were distributed across the profile; direct timers put 7.077779 seconds in model reconciliation, 1.801368 seconds in SAT, 0.807485 seconds in online callback reconstruction, 0.046677 seconds in growth, and 0.046350 seconds in the initial component build."
      },
      "verification": "Before 986d89f: make check passed 25/25 CTests and 79/79 Python tests; make docs passed; make asan-test passed 25/25; make lint passed; whole-tree clang-tidy reported 18 suppressed non-user warnings and no owned-code warning; advisory whole-tree misc-include-cleaner retained its 214-warning baseline and added no warning in solver_engines.cpp or qf_uflia_solver_tests.cpp. The required smt-code-review skill was unavailable; manual whole-tree and changed-file hygiene review plus the solver-efficiency-review workflow found no remaining correctness or hot-path issue.",
      "artifacts": {
        "profile": "/tmp/primo-qf-uflia-growth-986d89f",
        "watchlist": "results/qf-uflia-component-growth-exact-986d89f.{csv,csv.jsonl,summary.json}",
        "models": "results/qf-uflia-component-growth-models-exact-986d89f"
      },
      "evidence_status": "local exact-commit mechanism and mixed-watchlist evidence; direct-Dolmen models complete; superseded by the full SLURM comparison recorded in 2026-09-03-qf-uflia-growth-and-preprocessing-full-fcf5018",
      "outcome": "Accept append-only prepared-component growth: it removes the measured full-rebuild bottleneck without changing answers or model validity on the watchlist. The subsequent full comparison confirmed six additional solves over 61cd9ee before preprocessing promotion. The new dominant bucket is model reconciliation/LIA checking, not component preparation."
    },
    {
      "id": "2026-09-03-qf-uflia-growth-and-preprocessing-full-fcf5018",
      "date": "2026-09-03",
      "commit": "fcf50181c8ecd2ed0570f64dbfd653fbe85c5b5d",
      "baseline_commit": "61cd9eef20e6349ffe01dfe83bafdcb5991d62b3",
      "branch": "modular-theory-combination",
      "kind": "slurm-full-corpus-comparison-preprocessing-ablation-and-correctness-gates",
      "scope": "Full 659-file QF_UFLIA comparison of incremental component growth with substitution-only versus basic integer-safe preprocessing, retained Z3/cvc5/OpenSMT references, generated answer/model gates, a time-boxed real-seed mutation campaign, paired regression replay, and full satisfiable-model diagnosis.",
      "environment": {
        "host": "remote SLURM cluster",
        "solver": "Primo 0.1.0 at fcf5018; Release; CaDiCaL cadical-3.0.0-7b99c07",
        "references": "Z3 5.1.0, pinned cvc5 and OpenSMT executables from contrib/local/bin; Dolmen v2.9.2 with --strict=false",
        "corpus": "659 files extracted from sandbox/QF_UFLIA.tar.zst; path/size fingerprint SHA-256 1d752c3ef2f50bc6b8b8ebec443c754fd984d186baf7fca4d890599cbf1a5062; 60-second per-instance timeout"
      },
      "jobs": {
        "full_growth_and_references": "131275; four solvers by eight shards",
        "full_basic": "131315; eight corrected Primo-basic shards",
        "generated_default": "131266; four by 750 QF_UFLIA cases",
        "generated_basic": "131324; four by 750 QF_UFLIA cases with --preprocessing-mode=basic",
        "qf_uflra_preservation": "131267; 3,000 general QF_UFLRA, 500 finite QF_UFLRA, and 500 finite QF_UF cases",
        "mutation": "131323; 600-second YinYang/typefuzz campaign",
        "models": "131340 for 403 basic SAT rows and 131350 for 385 substitution-only SAT rows",
        "paired_wisas_rerun": "131341; two one-file tasks at a 120-second cutoff"
      },
      "commands": {
        "full": "scripts/slurm_qf_uflia_full_solver_compare.sbatch with eight shards per solver, 60-second cutoff, and either default arguments or --preprocessing-mode=basic; exact workspace preflight immediately before sbatch",
        "summary": "python3 scripts/summarize_benchmark_shards.py --timeout 60 with 61cd9ee baseline, fcf5018 growth/basic arms, and retained reference CSVs",
        "generated": "scripts/slurm_qf_uflia_model_fuzz_gate.sbatch and scripts/slurm_qf_uflra_fuzz_gate.sbatch; every satisfiable case required direct Dolmen acceptance",
        "mutation": "scripts/slurm_qf_uflia_mutation_fuzz_gate.sbatch equivalent parameters: 600-second wall, 20 mutations per seed, two-second solver cutoff, 20,000-byte limit, keep logic and hoist declarations",
        "models": "scripts/slurm_qf_uflra_model_validation.sbatch over manifests derived from status-ok satisfiable rows"
      },
      "results": {
        "baseline_61cd9ee": "543/659 solved (379 sat, 164 unsat), 116 timeouts, PAR2 15,758.313734, zero error/unsupported/wrong rows",
        "component_growth": "549/659 solved (385 sat, 164 unsat), 110 timeouts, PAR2 15,146.008873, zero error/unsupported/wrong rows; no loss and six recoveries versus 61cd9ee",
        "basic": "571/659 solved (403 sat, 168 unsat), 88 timeouts, PAR2 11,735.744137, zero error/unsupported/wrong rows; 22 additional solves and 22.5% lower PAR2 than component growth alone",
        "families_basic": "Certora 4/76, TwoSquares 21/21, mathsat 441/454, wisas 105/108",
        "references": "Z3 618 solved/PAR2 5,486.276612; cvc5 605/7,380.086739; OpenSMT 601/8,174.089479; all zero error/unsupported/wrong rows",
        "paired_loss": "Basic lost wisas/xs_22_42.smt2 at 60 seconds while recovering 23 other rows; at 120 seconds substitution-only solved unsat in 42.366693 seconds and basic solved unsat in 68.987138 seconds, confirming a real slowdown but not a capability or correctness loss.",
        "generated": "Default and explicit-basic QF_UFLIA each passed 3,000/3,000 answer comparisons; the basic campaign had 1,765 sat and 1,235 unsat and Dolmen accepted all 1,765 models. QF_UFLRA preservation passed 3,000 general, 500 finite-QF_UFLRA, and 500 finite-QF-UF cases; Dolmen accepted all 1,720 general and 252 finite satisfiable QF_UFLRA models.",
        "mutation": "The time box completed ten seeds with 20 successful generations each and made 392 solver calls before entering an eleventh seed; zero bug files. This is not all-seed coverage.",
        "model_diagnosis": "Both full model runs rejected exactly the same Certora model: 402/403 basic and 384/385 growth models passed. The emitted function binder x1 shadowed a user symbol x1. git blame identifies bcb482dda5ef3fc7f919fa88c8aa9fc373ed5b54 (2026-07-29, Add QF_UF model printing and Dolmen validation) as the introduction point. The performance classifications remain valid, but model correctness required the 6bb70aa fix and exact rerun."
      },
      "rejected_runs": "Job 131276 encoded quotes in a solver name and all rows errored; 131329 accidentally targeted the full root and was cancelled; 131328 and 131338 used login-node /tmp paths unavailable on compute nodes. They are operational failures and provide no solver evidence.",
      "artifacts": {
        "remote": "<prepared-workspace>/results/{qf-uflia-full-growth-fcf5018,qf-uflia-full-basic-fcf5018-retry,qf-uflia-eval-fcf5018,qf-uflia-basic-loss-rerun-fcf5018-retry,qf-uflia-full-basic-models-fcf5018,qf-uflia-full-current-models-fcf5018} and matching fuzz-results/slurm logs",
        "local": "/tmp/primo-qf-uflia-final-6bb70aa/fcf-{growth,basic}; the run-log entry is canonical for larger remote-only artifacts"
      },
      "evidence_status": "SLURM-complete exact solver commit; performance accepted; full model gate exposed one shared printer defect subsequently fixed and revalidated at 6bb70aa",
      "outcome": "Accept incremental component growth and promote basic integer-safe preprocessing for QF_UFLIA auto only. Keep numeral-domain AMO explicit and pure QF_LIA auto substitution-only. The solver still trails all three references, especially on Certora; remaining measured costs are model reconciliation/LIA and conservative online callback reconstruction."
    },
    {
      "id": "2026-09-03-qf-uflia-final-promotion-6bb70aa",
      "date": "2026-09-03",
      "commit": "6bb70aa07fb5663b867cb2b215253982119d5f3f",
      "baseline_commit": "fcf50181c8ecd2ed0570f64dbfd653fbe85c5b5d",
      "branch": "modular-theory-combination",
      "kind": "slurm-exact-promotion-correctness-full-corpus-and-model-gate",
      "scope": "Exact promoted QF_UFLIA default after deterministic collision-free model binders: full 659-file classifications, all 403 satisfiable archive models, generated QF_UFLIA/QF_UFLRA/finite controls, the dedicated eleven-shape Boolean gate, and real-seed mutation fuzzing.",
      "environment": {
        "host": "remote SLURM cluster",
        "solver": "Primo 0.1.0 at 6bb70aa; Release; CaDiCaL cadical-3.0.0-7b99c07",
        "tools": "Z3 5.1.0 plus pinned cvc5, OpenSMT, and Dolmen v2.9.2 from contrib/local/bin",
        "corpus": "same 659-file QF_UFLIA extraction and fingerprint as the fcf5018 comparison"
      },
      "jobs": {
        "qf_uflia_generated": "131360",
        "qf_uf_boolean_rejected": "131364; dependency check failed before generation because Dolmen was not on PATH",
        "qf_uf_boolean": "131396; resubmitted with the verified contrib/local/bin/dolmen path",
        "qf_uflra_preservation": "131375",
        "mutation": "131379",
        "full_qf_uflia": "131380",
        "full_models": "131388"
      },
      "commands": {
        "prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --sync-mode archive --reuse-dependencies --with-z3 with required Z3/cvc5/OpenSMT/Dolmen tools; exact git and CaDiCaL banner checked immediately before every sbatch",
        "qf_uflia": "scripts/slurm_qf_uflia_model_fuzz_gate.sbatch, four shards by 750 cases, seed base 202609040",
        "qf_uf_boolean": "scripts/slurm_qf_uf_boolean_fuzz_gate.sbatch, eleven shapes by 1,000 cases, seed base 202609050, model validation enabled",
        "qf_uflra": "scripts/slurm_qf_uflra_fuzz_gate.sbatch, four shards by 250 general cases plus 125 finite QF_UFLRA and 125 finite QF_UF controls per shard, seed base 202609060",
        "mutation": "scripts/slurm_qf_uflia_mutation_fuzz_gate.sbatch, 600-second wall and random seed 202609070",
        "full": "scripts/slurm_qf_uflia_full_solver_compare.sbatch, Primo-only eight-shard override, 60-second per-instance timeout",
        "models": "scripts/slurm_qf_uflra_model_validation.sbatch, eight shards over the 403-file satisfiable manifest, 90-second solver and 30-second Dolmen cutoffs"
      },
      "results": {
        "qf_uflia_generated": "3,000/3,000 answers passed against Z3: 1,765 sat and 1,235 unsat; Dolmen directly accepted all 1,765 satisfiable models.",
        "qf_uf_boolean": "11,000/11,000 answers passed across argument, result, compound, nested, mixed-sort, two-valued, converse, pure-polarity, model-reconstruction, random, and all shapes: 6,840 sat and 4,160 unsat; Dolmen directly accepted all 6,840 satisfiable models.",
        "qf_uflra": "1,000/1,000 general QF_UFLRA answers passed with 599 sat/401 unsat and all 599 models accepted by Dolmen. Both 500-case finite QF_UFLRA and 500-case finite QF_UF controls passed; finite QF_UFLRA had 252 sat/248 unsat and all 252 models passed Dolmen.",
        "mutation": "The 600-second bound reached 12 seeds, skipped three oversized seeds, completed eight seeds with 20 successful and zero unsuccessful generations, and reported at least 280 solver calls; zero bug files. Coverage of all 454 seeds is not claimed.",
        "full": "571/659 solved (403 sat, 168 unsat), 88 timeouts, no error/unsupported/wrong row, PAR2 11,717.756171. Family solves: Certora 4/76, TwoSquares 21/21, mathsat 441/454, wisas 105/108.",
        "paired_classifications": "All 659 classifications exactly match the fcf5018 explicit-basic arm: 571 common solves, no loss, recovery, or decisive-answer disagreement. Solved-row time was 1,157.756171 versus 1,175.744137 seconds; this small timing difference is run variance, not a source-level speed claim.",
        "baseline_change": "Relative to fcf5018 component growth without basic preprocessing: +22 solves and 22.6% lower PAR2. Relative to the first 61cd9ee full baseline: +28 solves and 25.6% lower PAR2.",
        "references": "Retained identical-corpus results: Z3 618 solved/PAR2 5,486.276612; cvc5 605/7,380.086739; OpenSMT 601/8,174.089479. Primo remains behind all three.",
        "models": "Dolmen directly accepted all 403 satisfiable full-corpus models, including 20230314-Jaroslav-Bendik-Certora/39657_2866defdd1f2434b69ab_48_QF_UFLIA.smt2, proving the binder-collision fix closes the defect exposed by jobs 131340 and 131350."
      },
      "verification": "Before commit 6bb70aa: make check passed 25/25 CTests and 79/79 Python tests; make docs, make lint, and make asan-test passed; whole-tree clang-tidy reported only 18 suppressed non-user warnings; advisory include-cleaner retained 214 baseline warnings and none in changed C++ files. The required smt-code-review skill was unavailable, so manual hygiene review and the solver-efficiency-review workflow were used.",
      "artifacts": {
        "local": "/tmp/primo-qf-uflia-final-6bb70aa",
        "remote": "<prepared-workspace>/{results/qf-uflia-full-6bb70aa,results/qf-uflia-full-models-6bb70aa,fuzz-results/qf-uflia-model-gate-6bb70aa,fuzz-results/qf-uf-boolean-6bb70aa-retry,fuzz-results/qf-uflra-preservation-6bb70aa,fuzz-results/qf-uflia-mutation-6bb70aa} and matching logs",
        "contents": "benchmark CSV/JSONL files, generated and model-validation summaries, mutation log, SLURM stdout/stderr, and prior-arm/reference CSVs used for paired summaries"
      },
      "post_review_qualification": "The full-corpus runner and model validator already rejected nonzero subprocess exits, so their classifications and model results remain valid. The generated fuzz runners accepted a decisive answer before inspecting the exit status, however, and did not preserve reference exit codes on passing rows. Their generated-gate evidence is superseded by the exit-aware exact-commit reruns recorded in 2026-09-03-exit-aware-fuzz-gates-4a064cb.",
      "evidence_status": "SLURM-complete exact solver commit; full corpus and all satisfiable models complete; generated fuzz evidence superseded by corrected exit-aware gates at 4a064cb",
      "outcome": "Accepted. QF_UFLIA auto now uses the measured integer-safe basic preprocessing profile; the model printer avoids user-symbol collisions; QF_UFLRA and dedicated Boolean behavior are preserved. Remaining performance work should target model reconciliation/LIA and the conservative online callback rebuild rather than component construction."
    },
    {
      "id": "2026-09-03-exit-aware-fuzz-gates-4a064cb",
      "date": "2026-09-03",
      "commit": "4a064cb0eb99bed924b2ddabaf644abc0918392e",
      "branch": "modular-theory-combination",
      "kind": "slurm-correctness-gates-and-harness-regression",
      "scope": "Exact-commit rerun of QF_UFLIA, QF_UFLRA, finite-domain, and dedicated Boolean differential/model gates after making solver exit status part of every fuzz-runner result.",
      "environment": {
        "host": "remote SLURM cluster for generated gates; local development workstation for synthetic regressions and repository checks",
        "solver": "Primo 0.1.0 at 4a064cb; Release on SLURM; CaDiCaL cadical-3.0.0-7b99c07",
        "tools": "Z3 5.1.0 plus pinned cvc5 and Dolmen v2.9.2 from contrib/local/bin"
      },
      "jobs": {
        "qf_uflia": "131411",
        "qf_uflra_and_finite_domain": "131415",
        "qf_uf_boolean": "131419"
      },
      "commands": {
        "prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --sync-mode archive --reuse-dependencies --with-z3 with required Z3/cvc5/OpenSMT/Dolmen tools; exact git and CaDiCaL banner checked immediately before every sbatch",
        "qf_uflia": "scripts/slurm_qf_uflia_model_fuzz_gate.sbatch; four shards by 750 random cases; seed base 202609030; five-second candidate/reference and model timeouts",
        "qf_uflra": "scripts/slurm_qf_uflra_fuzz_gate.sbatch; four shards by 250 mixed cases plus 125 finite QF_UFLRA and 125 finite QF_UF controls; seed base 202609040; model validation enabled",
        "qf_uf_boolean": "scripts/slurm_qf_uf_boolean_fuzz_gate.sbatch; eleven shapes by 100 cases; seed base 202609050; model validation enabled",
        "synthetic_regression": ".venv/bin/python -m unittest tests.python.test_fuzz_solver_exit_classification",
        "repository": "make check && make docs; make lint; explicit Ruff check and format check for the new Python test"
      },
      "results": {
        "qf_uflia": "3,000/3,000 PASS against Z3: 1,777 sat and 1,223 unsat; all candidate exit codes zero; Dolmen accepted all 1,777 satisfiable models; zero bug files.",
        "qf_uflra": "1,000/1,000 general mixed cases PASS against Z3: 572 sat and 428 unsat. The 500 finite QF_UFLRA and 500 finite QF_UF controls also all passed against Z3/cvc5, each with 252 sat and 248 unsat. All candidate exit codes were zero; Dolmen accepted all 572 general and 252 finite-QF_UFLRA satisfiable models; zero bug files.",
        "qf_uf_boolean": "1,100/1,100 PASS against Z3 across all eleven dedicated shapes: 690 sat and 410 unsat; all candidate exit codes zero; Dolmen accepted all 690 satisfiable models; zero bug files.",
        "failure_accounting": "The synthetic test runs fake candidate and reference executables that print sat and then exit 9. All nine audited runners classify the process as CRASH, the QF_UFLIA end-to-end campaign returns nonzero for candidate or reference failure, and the triggering input is retained under bugs/.",
        "aggregate": "6,100 answer comparisons passed, 3,291 satisfiable models were accepted directly by Dolmen, and there were zero wrong answers, crashes, timeouts, unsupported results, unknown outputs, reference disagreements, invalid models, or saved bug files. All 19 SLURM array tasks completed with exit code 0."
      },
      "artifacts": {
        "remote": "<prepared-workspace>/fuzz-results/{qf-uflia-exit-aware-4a064cb,qf-uflra-exit-aware-4a064cb,qf-uf-boolean-exit-aware-4a064cb} and matching SLURM logs",
        "local_summary_copy": "/tmp/primo-exit-summaries.fP03gr",
        "contents": "Per-case answer CSVs, model-validation CSVs, generated inputs, bug directories, and array-task stdout/stderr; only summary CSVs were copied locally."
      },
      "verification": "make check passed 25/25 CTests and 84/84 Python tests; make docs and make lint passed; 37 focused pre-commit tests and the five-test direct post-answer-crash regression passed; git diff --check passed. The required smt-code-review skill was unavailable, so a manual whole-diff and cross-harness audit was performed.",
      "evidence_status": "SLURM-complete exact-commit correctness evidence with exit-aware candidate and reference accounting; supersedes the generated-fuzz portions of the 6bb70aa promotion record",
      "outcome": "Accepted. A decisive SMT answer is now valid only after a successful process exit throughout the audited fuzz and comparison helpers; candidate and reference post-answer crashes block campaigns and retain reproducers."
    },
    {
      "id": "2026-09-04-modular-layer-review-fixes-bb24344",
      "date": "2026-09-04",
      "commit": "bb24344",
      "branch": "modular-theory-combination",
      "kind": "slurm-correctness-gates-after-modular-layer-review-fixes",
      "scope": "Correctness gates for the seven code-review findings fixed on this branch: the post-mutation agreement recomputation in ModelBasedCombinationCoordinator, the SIGTERM cancellation watchdog, routing preprocessing repeat state and purification proxies through TacticContext, disjunctive handling of preprocessed alternatives, the explicit-worklist integer model completion, iterative strategy canonicalization and compilation, the projection revision parameter, and the changed-term generation rebase.",
      "environment": {
        "host": "CIIRC SLURM cluster, node-head submit host reached via data.ciirc.cvut.cz; local workstation for unit, sanitizer and smoke checks",
        "solver": "Primo 0.1.0 at bb24344; Release; CaDiCaL cadical-3.0.0-7b99c07",
        "tools": "Z3 and Dolmen 0.10 from contrib/local/bin; Dolmen newly installable without root after the --no-depexts change"
      },
      "jobs": {
        "qf_uflia_model": "131430",
        "qf_uflra": "131431",
        "qf_uf_boolean": "131432",
        "finite_domain": "131433"
      },
      "commands": {
        "prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --sync-mode archive --reuse-dependencies --with-z3 --jobs 16; remote git banner checked as bb24344 before submission",
        "qf_uflia_model": "scripts/slurm_qf_uflia_model_fuzz_gate.sbatch; 4 shards x 750 random cases; seed base 202609040; 5s solver/reference/model timeouts; Dolmen model validation with --require-dolmen-pass",
        "qf_uflra": "scripts/slurm_qf_uflra_fuzz_gate.sbatch; 4 shards; mixed QF_UFLRA plus finite QF_UFLRA and QF_UF controls; Dolmen model validation",
        "qf_uf_boolean": "scripts/slurm_qf_uf_boolean_fuzz_gate.sbatch; 11 shards; Dolmen model validation",
        "finite_domain": "scripts/slurm_finite_domain_fuzz_gate.sbatch; 5 shards",
        "local_qf_uflia": "python3 scripts/qf_uflia_fuzz.py --ref z3 --count 1200 --seed 20260904 --shape random --out results/uflia-answer-gate, then scripts/validate_model.py --require-dolmen-pass over its cases",
        "local_qf_uf": "python3 scripts/fuzz_external.py --fuzzer fuzzsmt --refs z3 --logic QF_UF --count 1200 --seed 20260904",
        "local_qf_uflra": "python3 scripts/qf_uflra_smoke_fuzz.py --ref z3 --count 800 --shape mixed, run twice: default and --experimental-generic-model-combination",
        "local_checks": "make check; make asan-test; make smoke; scripts/tactic_composition_matrix.py --refs z3 cvc5 --repeat 2"
      },
      "results": {
        "slurm_answer_comparisons": "19000 pass, 0 wrong answers, 0 crashes, 0 reference disagreements (qf_uflia 3000, qf_uflra 4000, qf_uf_boolean 11000, finite_domain 1000)",
        "slurm_model_validation": "10615 sat models accepted by Dolmen, 0 model errors (qf_uflia 1765, qf_uflra 1991, qf_uf_boolean 6859)",
        "local_answer_comparisons": "4000 pass (1200 qf_uflia, 1200 qf_uf fuzzsmt, 800 + 800 qf_uflra on both combination paths)",
        "local_model_validation": "698 sat models accepted by Dolmen, 0 model errors",
        "unit_and_sanitizer": "27 ctest targets pass in Release and under -fsanitize=address; make check and make smoke clean",
        "tactic_composition": "174 rows, 0 failures, 0 inconclusive, exercising --experimental-split-bools",
        "sacct": "all four arrays COMPLETED, no non-zero exit codes"
      },
      "artifacts": {
        "slurm": "primo-cadical-profile/fuzz-results/qf-uflia-model-gate-131430, .../qf-uf-boolean-131432, primo-cadical-profile/slurm-results/qf_uflra-fuzz-gate, .../finite-domain-fuzz-gate",
        "local": "results/uflia-answer-gate, results/uflia-model-validation, results/qf-uf-fuzzsmt-gate, results/uflra-gate, results/uflra-generic-gate, results/tactic-composition-local"
      },
      "notes": "Separately found and recorded a pre-existing QF_UFLIA invalid-model bug in bugs/qf-uflia-nested-application-model: a UF table that does not satisfy the input when an Int application is nested three deep and its result is pinned. The binary before the qf_uflia_int_values rewrite prints the identical model, so it is not a regression from this branch; scripts/qf_uflia_fuzz.py --shape random does not generate the shape, which is why these gates are clean. Not fixed here."
    },
    {
      "id": "2026-09-04-qf-uflia-gate-coverage-056612a",
      "date": "2026-09-04",
      "commit": "056612a",
      "branch": "modular-theory-combination",
      "kind": "slurm-gate-coverage-repair-and-rerun",
      "scope": "Re-run of the QF_UFLIA gates after closing the coverage gap that let a crash in integer model completion survive both of them: the generated gate could not nest applications, and the real-seed mutation gate never requested a model.",
      "environment": {
        "host": "CIIRC SLURM cluster, node-head submit host reached via data.ciirc.cvut.cz",
        "solver": "Primo 0.1.0 at 056612a; Release; CaDiCaL cadical-3.0.0-7b99c07",
        "tools": "Z3 5.1.0, Dolmen 0.10 and typefuzz 0.3.0 from the prepared workspace"
      },
      "jobs": {
        "qf_uflia_model_random_shape": "131454",
        "qf_uflia_model_mixed_shape": "131459",
        "qf_uflia_mutation": "131463",
        "qf_uflia_mutation_invalid_run": "131458"
      },
      "commands": {
        "qf_uflia_model_mixed": "PRIMO_FUZZ_SEED_BASE=202609060 sbatch scripts/slurm_qf_uflia_model_fuzz_gate.sbatch; 4 shards x 750; shape now defaults to mixed with --depth 3",
        "qf_uflia_mutation": "PRIMO_FUZZ_YINYANG_WALL_SECONDS=600 PRIMO_FUZZ_RANDOM_SEED=202609060 sbatch scripts/slurm_qf_uflia_mutation_fuzz_gate.sbatch; seeds tmp/QF_UFLIA/mathsat staged from the sibling workspace"
      },
      "results": {
        "qf_uflia_model_random_shape": "131454: 3000 answer PASS, 1809 sat models Dolmen-validated, 0 model errors. Baseline: this is the old fixed-vocabulary shape, whose UF nesting is 1 in every case.",
        "qf_uflia_model_mixed_shape": "131459: 2999 answer PASS and 1 timeout; 1509 sat models validated with 18 model errors, all on cases whose UF nesting is 2 or 3. The gate now reproduces the invalid-model bug it previously could not reach.",
        "qf_uflia_mutation": "131463: 200 retained mutants validated; 26 pass, 9 unsat, 165 unsupported. The unsupported set is a frontend gap plus correct rejections, not solver failures.",
        "frontend_gap": "Of the 165: div 44, abs 40, mod 29 are SMT-LIB Ints operators Primo's frontend does not dispatch, confirmed directly ((abs x)/(div x 2)/(mod x 2) are unsupported while Z3 answers sat). 32 are nonlinear multiplication, correctly rejected. 12 reference a let variable a mutation left unbound, which Z3 rejects too.",
        "local_composed_shape": "300 cases at --shape composed: 299 answer PASS and 1 timeout; 204 of 300 contain a directly self-nested (f (f ...)); 8 model errors among 141 sat cases"
      },
      "artifacts": {
        "slurm": "primo-cadical-profile/fuzz-results/qf-uflia-model-gate-131459, .../qf-uflia-model-gate-131454, .../qf-uflia-mutation-131463"
      },
      "notes": "Job 131458 is recorded only to be discarded: the workspace was re-synced while it ran, so typefuzz reported the solver as missing. The 18 and 8 model errors are the pre-existing bug in bugs/qf-uflia-nested-application-model, not a regression; the point of this run is that the gates now find it. The div/mod/abs gap is newly surfaced and unfixed."
    },
    {
      "id": "2026-09-04-first-class-ite-div-mod-abs-da3cc0b",
      "date": "2026-09-04",
      "commit": "da3cc0b",
      "branch": "modular-theory-combination",
      "kind": "slurm-correctness-gates-and-corpus-ab-for-new-term-kinds",
      "scope": "Gates for the sequence that made ite, div, mod and abs first-class term kinds: new kinds and constructors, the unconditional lower-extended-terms leaf, frontend acceptance of div/mod/abs, ite built as a term instead of expanded at parse time, and the simplify-extended-terms leaf that replaced both the constructor-level folds and the frontend's syntactic equality-over-ite rule.",
      "environment": {
        "host": "CIIRC SLURM cluster via data.ciirc.cvut.cz for the generated gates; local workstation for the corpus A/B, since sandbox/non-incremental is 12 GB and is not staged on the cluster",
        "solver": "Primo 0.1.0 at da3cc0b; Release; CaDiCaL cadical-3.0.0-7b99c07",
        "tools": "Z3 5.1.0, Dolmen 0.10, typefuzz 0.3.0"
      },
      "jobs": {
        "qf_uflia_model_mixed": "131560",
        "qf_uflra": "131561",
        "qf_uf_boolean": "131562",
        "finite_domain": "131563",
        "qf_uflia_mutation": "131564",
        "qf_uflia_extended_shape": "131585"
      },
      "commands": {
        "prepare": "python3 scripts/slurm_prepare_benchmark_workspace.py --sync-mode archive --reuse-dependencies --with-z3 --jobs 16",
        "gates": "PRIMO_FUZZ_SEED_BASE=202609070 sbatch over slurm_qf_uflia_model_fuzz_gate, slurm_qf_uflra_fuzz_gate, slurm_qf_uf_boolean_fuzz_gate, slurm_finite_domain_fuzz_gate; PRIMO_FUZZ_YINYANG_WALL_SECONDS=900 for the mutation gate",
        "extended_shape": "PRIMO_FUZZ_SHAPE=extended PRIMO_FUZZ_COUNT=750 sbatch scripts/slurm_qf_uflia_model_fuzz_gate.sbatch",
        "corpus_ab": "local A/B of da3cc0b against 7ea99a7 over 1300 QF_LRA and QF_LIA files weighted to ite-bearing ones, 10s timeout, comparing answers and ite auxiliary counts"
      },
      "results": {
        "slurm_answers": "19000 comparisons, 0 disagreements: qf_uflia 3000, qf_uflra 4000, qf_uf_boolean 11000, finite_domain 1000, plus 2993 on the extended shape with 1 timeout and 6 unknown-involved",
        "slurm_models": "qf_uflra 1992 and qf_uf_boolean 6841 Dolmen-validated with zero errors; qf_uflia mixed 1518 validated with 12 errors, all on cases whose UF application nesting is 2 or 3",
        "model_errors_explained": "The 12 are the pre-existing invalid-model bug in bugs/qf-uflia-nested-application-model. The 1000 on the extended shape and the 4 in the mutation gate are Dolmen refusing to check a QF_UFLIA file that uses div, mod or abs, which the logic excludes; one mutation case was verified by hand and re-checked with Z3, which answers sat. The gate now skips Dolmen validation for the extended shape.",
        "mutation_gate": "157 of 200 mutants still unsupported and effective yield 22.8%, against roughly 25% before the operators were accepted. Breakdown: 68 mod and 43 div with a non-constant divisor, 46 nonlinear *. All correctly rejected; only about 8 of the original 165 became answerable.",
        "corpus_ab": "824 files completed on both binaries: 823 identical answers, 1 changed. ite auxiliaries 132601 -> 128049, per file 169 fewer and none more.",
        "corpus_ab_regression": "QF_LIA/rings/ring_2exp16_3vars_1ite_unsat.smt2 went unsat -> unknown on the branch-and-bound node limit. Encoding is unchanged on that instance (4 auxiliaries, term-size 182/157, identical preprocessing and profile counters); only the search differs (40 conflicts/1180 decisions/497 pivots -> 3/166/84). A twentyfold --lia-branch-limit does not recover it; --preprocessing-mode=basic or strong does. Recorded as entry 4 in docs/termid-order-sensitivity.md.",
        "local_unit": "27 ctest targets pass in Release and under -fsanitize=address; make check and make smoke clean"
      },
      "artifacts": {
        "slurm": "primo-cadical-profile/fuzz-results/qf-uflia-model-gate-131560, .../qf-uflia-extended-shape, .../qf-uf-boolean-131562, .../qf-uflia-mutation-131564, primo-cadical-profile/slurm-results/qf_uflra-fuzz-gate, .../finite-domain-fuzz-gate"
      },
      "notes": "Two predictions this run refuted, both recorded in the docs rather than quietly dropped. First, div/mod/abs were said to be rejected conforming input; QF_LIA and QF_UFLIA exclude those operators by name and readmit only * with concrete coefficients, so the original rejection was correct and Primo now accepts them as a documented extension. Second, supporting them was said to unblock the real-seed mutation gate; it moved the yield from about 25% to 22.8%, because typefuzz's mutants overwhelmingly carry non-constant divisors that are nonlinear whatever the frontend accepts. What the work does buy is usability plus the term kinds themselves, which removed the blocker that lead 16 named as its main design question. The net effect of the ite change on solved counts is NOT established: 824 files with answer equality detects a regression but does not measure the balance, and a full-division run is needed for that."
    },
    {
      "id": "2026-09-05-ite-term-full-division-131646",
      "date": "2026-09-05",
      "commit": "da3cc0b",
      "branch": "modular-theory-combination",
      "kind": "full-division-head-vs-baseline-for-ite-as-a-term",
      "scope": "Whole-division head-vs-baseline comparison to settle the net effect on solved counts of making ite a term kind, which the earlier 824-file sample could detect a regression from but could not measure the balance of. head is da3cc0b, base is 7ea99a7, the commit before any term-kind work.",
      "environment": {
        "host": "CIIRC SLURM cluster; QF_LIA, QF_LRA and QF_UFLRA corpora staged for this run because slurm_prepare_benchmark_workspace.py does not sync them and none was present",
        "solver": "head Primo 0.1.0 at da3cc0b; base built from a git archive of 7ea99a7 and verified behaviourally (rejects mod as unknown, reports :frontend.ite.auxiliaries) since git archive strips the revision stamp",
        "tools": "no reference solver used; this is a Primo-vs-Primo comparison on identical shards"
      },
      "jobs": {
        "qf_lia_full": "131646",
        "qf_lia_boundary_300s": "131847",
        "qf_lra": "131855",
        "qf_uflra": "131856"
      },
      "commands": {
        "staging": "tar + zstd of sandbox/non-incremental/{QF_LIA,QF_LRA,QF_UFLRA} shipped over the jump host: 7.64 GiB -> 656 MiB and 4.1 GB -> 329 MB, extracted to 13306 + 1753 + 1284 files",
        "qf_lia": "PRIMO_COMPARE_SHARDS=80 PRIMO_COMPARE_TIMEOUT=60 PRIMO_COMPARE_SOLVERS='head=build-slurm-rel/primo --quiet;base=.../primo-baseline-7ea99a7/build-slurm-rel/primo --quiet' sbatch --array=0-159 scripts/slurm_qf_lia_full_solver_compare.sbatch",
        "lra": "ad hoc per-division A/B sbatch, 20 shards per binary, 60s timeout",
        "boundary": "the 115 files whose solved-status changed, both binaries, 300s timeout"
      },
      "results": {
        "qf_lia_60s": "13306 files, solved base 9041 head 8997 (-44); 35 gained, 79 lost; 0 wrong answers either side; 0 answer disagreements among files both solved; total runtime 247951s vs 249111s (+0.5%)",
        "qf_lia_losses_by_family": "nec-smt 68, rings 5, bofill-scheduling 2, convert 1, RWS 1, arctic-matrix 1, tropical-matrix 1; gains nec-smt 18, convert 7, 20210219-Dartagnan 6, bofill-scheduling 2, RWS 2",
        "qf_lra_60s": "1753 files, solved base 1539 head 1534 (-5); 3 gained, 8 lost; 0 disagreements",
        "qf_uflra_60s": "1284 files, solved base 1271 head 1270 (-1); 0 gained, 1 lost; 0 disagreements",
        "boundary_300s": "of the 79 QF_LIA files lost at 60s, 72 are solved by head at 300s and 7 are not; of the 35 gained, 11 remain unsolvable by base at 300s; over the 115-file boundary set at 300s base solves 103 and head 107, so the sign flips",
        "diagnosis": "SUPERSEDED, see 2026-09-05-ite-loss-attribution-131983. This field read: '73 of 79 losses are timeouts rather than new incompleteness, and the median baseline solve time on them was 46.8s of the 60s budget with 42 of 79 above 45s. The cost is timeout-boundary churn from TermId order, concentrated in nec-smt where a large population sits within seconds of the limit.' The timeout facts are right and the attribution is wrong. It was never controlled: no noise floor was measured, and the 2.3:1 loss-to-gain ratio concentrated in the one ite-heavy family should have been the tell. A deterministic --preprocess-only comparison puts the preprocessed formula 10.11% larger on nec-smt and 0.00% different on almost every other family, matching a 10.23% paired runtime geometric mean on nec-smt against 0.99 elsewhere. Churn is real and large but it is not what the net number measured.",
        "combination_layer": "A QF_UFLRA probe with an ite spanning a UF application and an arithmetic atom gives identical :no.interface.terms, :no.interface.candidate-pairs and :no.purification.definitions on both binaries; head allocates 1 ite auxiliary where base allocates 2, because the repeated ite is hash-consed."
      },
      "artifacts": {
        "slurm": "primo-cadical-profile/results/qf-lia-full-compare-131646, .../ite-boundary, .../ite-ab-qflra, .../ite-ab-qfuflra"
      },
      "notes": "Conclusion: no capability regression and no soundness issue, but about 50 solves lost across the three divisions at a 60s budget. The earlier 824-file A/B reported 823 identical answers and was simply too small to see this; its own caveat said it could not measure the balance, and that was the load-bearing part. Two limits on the 300s reading: it covers only the 115 files that changed at 60s, so a file that got slower without crossing the threshold would not appear, bounded by the 0.5% total-runtime difference; and the per-file timing column in the QF_LRA and QF_UFLRA runs is unusable because bc is absent on the compute nodes, so only solved counts are reported for those."
    },
    {
      "id": "2026-09-05-ite-loss-attribution-131983",
      "date": "2026-09-05",
      "commit": "5b93dc5",
      "baseline_commit": "7ea99a7",
      "branch": "modular-theory-combination",
      "kind": "deterministic-encoding-size-attribution",
      "scope": "Why the ite-as-a-term change lost 79 QF_LIA files. The 131646 entry recorded the loss as timeout-boundary churn from TermId order. This tests that against two things it never had: a re-reading of the timing data it already collected, and a deterministic measurement of the preprocessed formula size that no scheduler or timeout can affect.",
      "environment": {
        "host": "CIIRC SLURM cluster for the size comparison; local workstation for the re-analysis of the 131646 CSVs and the per-file probes",
        "solver": "head Primo 0.1.0 at da3cc0b, base built from a git archive of 7ea99a7 and behaviourally verified (rejects mod as an unknown symbol, reports :frontend.ite.auxiliaries); the same two binaries the 131646 comparison used",
        "corpus": "the same 13306-file QF_LIA staging as 131646"
      },
      "jobs": {
        "qf_lia_preprocessing_size": "131983; 40 shards, both arms per shard"
      },
      "commands": {
        "size": "PRIMO_SIZE_SOLVERS='base=.../primo-baseline-7ea99a7/build-slurm-rel/primo;head=.../primo-cadical-profile/build-slurm-rel/primo' sbatch scripts/slurm_preprocessing_size_compare.sbatch",
        "method": "scripts/compare_preprocessing_size.py runs each binary with --quiet --stats --preprocess-only, so parsing and preprocessing run and search does not. Every counter is a function of the input and the binary alone.",
        "reanalysis": "the 131646 per-file CSVs, recomputing solved counts at virtual budgets from the recorded per-file times and taking paired head/base ratios on files both binaries solved"
      },
      "results": {
        "virtual_budget_sweep": "solved-count delta head-base at 1/2/5/10/20/30/45/60s: -7 -5 -14 -18 +2 -18 -27 -42. It changes sign at 20s and there are 21-60 gains at every budget, so two-way churn is real and large; but the deficit also grows with the budget, which churn alone does not predict.",
        "paired_runtime_ratio": "files both binaries solve with base >= 1s. nec-smt: n=483, geometric mean head/base 1.1023, median 1.1441, 291 slower vs 149 faster, summed time +10.88%. Every other family: n=872, geometric mean 0.9878, median 1.0040, 664 of 872 within 5%, summed time -0.34%. Order churn does not concentrate on one family.",
        "preprocessed_size": "13227 files usable (79 excluded, both arms timed out preprocessing). Whole division +5.86%: 2789 files bigger, 53 smaller, 10172 byte-identical. By family: nec-smt +10.11% over 2780 files; RWS -19.46% over 20; fft +4.61% over 9; 2019-ezsmt -0.01%; every other family exactly 0.00%.",
        "auxiliaries": "ite auxiliaries over the same files fell 2.75% (24969223 -> 24283101), and on nec-smt 2.74%. That was the metric the earlier 824-file A/B optimized and reported as the win.",
        "conclusion": "+10.11% formula size against a +10.23% runtime geometric mean on the same family is the same number twice. The losses are a deterministic encoding regression, not timeout churn: the equality distribution in simplify-extended-terms bought a 2.7% reduction in auxiliary constants for a 10% larger formula on the family that has the ites.",
        "mechanism_probes": "Same binary, one 16KB and one 1.6MB nec-smt file, (term-size.final / ite auxiliaries). Leaf off: 3505/314 and 453897/41415. Equality distribution off, rest of the leaf on: 3375/300 and 443718/40284. Default: 3747/295 and 489021/40264. Two rounds: 3677/248 and 561272/36344. Distribution off is best on both metrics at once, so the regression is that one rule and not the leaf.",
        "fixed_point_is_exponential": "Iterating the leaf to a fixed point rather than one pass reached 116s and 23GB on nec-smt/large/getoption_directories/prp-4-113.smt2, against 3.0s and 254MB with the leaf off, converging after 32 rounds. The single pass that looked like a missing fixed point was an accidental safety valve.",
        "mechanism_confirmed": "Why the rule loses on nec-smt and not elsewhere, measured on nec-smt/large/getoption_directories/prp-4-113.smt2: the distribution fires 18867 times and removes 20 auxiliaries (40284 -> 40264), for +58023 reachable nodes, i.e. 3.08 nodes per firing -- the guard structure and nothing more. nec-smt's ITEs are nested chains, so distributing (= u (ite c a (ite d e f))) removes the outer auxiliary and hands back (= u (ite d e f)), which needs one anyway. The benefit only arrives once the whole chain is distributed, which is what extra rounds buy and why they cost exponentially. Outside nec-smt the ITEs are single, the first firing is also the last, and the rule is a small win. This refutes the ancestor-rebuilding explanation first offered for the size growth: the per-firing cost is local and small, and the problem is that the rule fires ~940 times for every auxiliary it collects."
      },
      "artifacts": {
        "slurm": "primo-cadical-profile/results/preproc-size-131983"
      },
      "notes": "The noise-floor control this investigation was going to run (base against base under permuted declare-fun order, to size the churn band) was not needed: the deterministic size measurement settles the question without it, and 10172 byte-identical files show the change is inert wherever there is no ite. Two limits. The size metric is reachable-DAG node count after preprocessing, which is a proxy for what the SAT solver sees rather than a clause count, because --preprocess-only stops before clausification. And 79 files are excluded because preprocessing alone did not finish in 60s on either arm."
    },
    {
      "id": "2026-09-06-ite-distribution-gate-132306",
      "date": "2026-09-06",
      "commit": "e29f156",
      "baseline_commit": "7ea99a7",
      "branch": "modular-theory-combination",
      "kind": "full-division-solve-gate-for-the-ite-distribution-default",
      "scope": "Whether switching the ite equality distribution off recovers the 44 QF_LIA solves lost at da3cc0b. It recovers nec-smt and loses elsewhere, which is why the rule ended up guarded on shape rather than switched off.",
      "environment": {
        "host": "CIIRC SLURM cluster",
        "solver": "fix Primo 0.1.0 at e29f156 built on the cluster; base from the git archive of 7ea99a7, the same binary 131646 and 131983 used",
        "corpus": "the same 13306-file QF_LIA staging; 60-second per-instance timeout"
      },
      "jobs": {
        "qf_lia_full": "132306; 2 solvers by 80 shards",
        "rejected_submission": "132146; failed in 4 minutes because the tree it ran from reached the corpus through a symlink and bench_qf_uf_full.py computes path.relative_to(repo)"
      },
      "commands": {
        "gate": "PRIMO_COMPARE_SHARDS=80 PRIMO_COMPARE_TIMEOUT=60 PRIMO_COMPARE_SOLVERS='fix=<e29f156>/primo --quiet;base=<7ea99a7>/primo --quiet' sbatch --array=0-159 scripts/slurm_qf_lia_full_solver_compare.sbatch, submitted from the tree where sandbox/ is a real directory"
      },
      "results": {
        "headline": "13306 files. base 9040, fix 9016, delta -24 (55 gained, 79 lost). 0 wrong answers, 0 answer disagreements among files both solved. The measurement it replaces, da3cc0b, was -44 with 35 gained and 79 lost.",
        "nec_smt": "net +8 (42 gained, 34 lost) against -50 at da3cc0b. Paired runtime geometric mean 0.9481 and summed -6.47%, against 1.1023 and +10.88% at da3cc0b. The regression this change targeted is gone and reversed.",
        "regression_elsewhere": "20210219-Dartagnan went from +6 at da3cc0b to -29 (0 gained, 29 lost) over 153 files; rings -5, 20220307-SMPT -2, 2019-cmodelsdiff -1, cut_lemmas -1, fft -1. Paired runtime outside nec-smt went from 0.9878 to 1.0794, summed +8.78%.",
        "interpretation": "Switching the rule off globally was an over-correction. The 131983 size data had already shown that outside nec-smt the rule buys 30% fewer auxiliaries for -0.03% size; that was discounted because 4368 auxiliaries looked negligible beside 25 million. It is not: the auxiliary count is the wrong objective on nec-smt and the right one elsewhere.",
        "noise_floor_incidental": "base solved 9040 here against 9038 recounted from 131646 -- same binary, same corpus, different run. Same-binary churn is about +/-3 solves, not 79, which independently confirms the original losses were never churn. This is the noise floor the investigation had planned a three-seed base-against-base campaign to measure."
      },
      "artifacts": {
        "slurm": "primo-cadical-profile/results/qf-lia-ite-fix-132xxx"
      },
      "notes": "Superseded as a default by e7e7284, which distributes only when neither ite branch is itself an ite -- the conclusion the confirmed mechanism supported and that this run's split between nec-smt and Dartagnan forced. Job 132466 gates that. Kept as a record because the two-sided result is the evidence that the rule needs a shape test rather than an on/off switch."
    },
    {
      "id": "2026-09-06-ite-shape-guard-gate-132466",
      "date": "2026-09-06",
      "commit": "e7e7284",
      "baseline_commit": "7ea99a7",
      "branch": "modular-theory-combination",
      "kind": "full-division-solve-gate-and-fuzz-gates-for-the-ite-shape-guard",
      "scope": "Gate for distributing (= u (ite c a b)) only when neither branch is itself an ite, which is the fix the mechanism supported after switching the rule off globally proved to be an over-correction. Closes the investigation into the 79 QF_LIA files lost at da3cc0b.",
      "environment": {
        "host": "CIIRC SLURM cluster",
        "solver": "fix Primo 0.1.0 at e7e7284; base from the git archive of 7ea99a7, the same binary used by 131646, 131983 and 132306",
        "corpus": "the same 13306-file QF_LIA staging; 60-second per-instance timeout"
      },
      "jobs": {
        "qf_lia_full": "132466; 2 solvers by 80 shards",
        "qf_uflia_model_fuzz": "132626 then 132640 after the generator fix",
        "qf_uflra_fuzz": "132627",
        "qf_uf_boolean_fuzz": "132628"
      },
      "results": {
        "headline": "13306 files. base 9038, fix 9058, delta +20 (62 gained, 42 lost). 0 wrong answers, 0 answer disagreements. da3cc0b was -44; switching the rule off entirely was -24; the shape guard is +20, a swing of 64 solves from the measurement that opened this investigation.",
        "by_family": "nec-smt +15 (44 gained, 29 lost) against -50 at da3cc0b and +8 with the rule off. 20210219-Dartagnan +6, exactly its da3cc0b value, against -29 with the rule off. convert +6, RWS +1, bofill-scheduling and tropical-matrix level. Remaining losses: rings -5, 2019-cmodelsdiff -1, arctic-matrix -1, fft -1.",
        "runtime": "Paired geometric mean head/base on files both solve with base >= 1s: 0.9874 overall, 0.9847 on nec-smt, 0.9890 elsewhere. No family is above 1. At da3cc0b nec-smt was 1.1023 and at the rule-off default the rest of the corpus was 1.0794; both regressions are gone.",
        "prediction": "Stated before the run: overall at parity or better, nec-smt keeping its +8, Dartagnan returning to +6. Actual: +20, +15, +6.",
        "fuzz_qf_uflra_and_boolean": "132627 and 132628 COMPLETED clean, every sat model Dolmen-validated.",
        "fuzz_qf_uflia": "3000 answer cases: 2999 PASS and 1 UNKNOWN_INVOLVED, 0 wrong. 21 invalid models. 20 of the 21 are equally invalid on the 7ea99a7 binary, and that binary also reproduces the recorded witness of bugs/qf-uflia-nested-application-model, so these are the known OPEN bug rather than a regression. The 21st is recorded as a second witness there: it is invalid under every preprocessing mode and under --no-ite-equality-distribution, and valid under --no-extended-simplification, because the leaf's collapse of (ite c t t) changes which model gets built.",
        "generator_and_harness_defects": "The first QF_UFLIA gate run (132626) was red for two reasons that were not the solver. compose_int_terms emitted (* 2 (* 2 (+ x (- 1)))), scaling a composite term, which QF_UFLIA's :extensions does not admit; checked against Dolmen directly, (* 2 x), (* x 2), (* (- 2) x) and (* x (- 2)) are all accepted and only compound operands are not, and 400 regenerated cases now pass. And the validator reported a Dolmen input rejection as model-error, because its fallback only extracts Real assignments and never runs on an Int logic; it now re-runs Dolmen on the problem alone and reports input-nonconforming outside the failure count."
      },
      "artifacts": {
        "slurm": "primo-cadical-profile/results/qf-lia-ite-guard; primo-ite-guard/fuzz-results"
      },
      "notes": "The three defaults measured end to end on one corpus: distribution unguarded -44, off -24, guarded +20. The rule is sound in all three; what changes is whether it fires where it collects anything. Also worth keeping: base solved 9038 here and 9040 in 132306 on the same binary and corpus, so same-binary churn is about 3 solves, which is the noise floor a three-seed base-against-base campaign was planned to measure and is two orders below the 79 that were attributed to it."
    },
    {
      "id": "2026-09-06-qf-uflia-invalid-model-fixed-132988",
      "date": "2026-09-06",
      "commit": "76e5e37",
      "baseline_commit": "e7e7284",
      "branch": "modular-theory-combination",
      "kind": "model-construction-correctness-fix-and-gate",
      "scope": "Closes bugs/qf-uflia-nested-application-model, open since 2026-09-04: Primo answered sat and printed a UF table that did not satisfy the input. Root cause established, two candidate fixes measured and one refuted, then fixed.",
      "environment": {
        "host": "CIIRC SLURM cluster for the gates; local workstation for the 750-case A/B and the witness work",
        "solver": "Primo 0.1.0 at 76e5e37; Release; CaDiCaL cadical-3.0.0-7b99c07",
        "tools": "Dolmen and Z3 from contrib/local/bin"
      },
      "jobs": {
        "qf_uflia_model_final": "132988",
        "qf_uflra_final": "132989",
        "qf_uflia_model_after_purification_map": "132849 (2 errors)",
        "qf_uflia_model_before": "132640 and 132626 (21 errors)"
      },
      "results": {
        "headline": "QF_UFLIA model fuzz gate, 3000 cases, seed base 202609100: 0 model errors, against 21 on the same seeds before the fix. 1535 satisfiable models all validated by Dolmen directly with no Z3 fallback. Answers unchanged at 2999 PASS plus the same single pre-existing unknown case earlier runs also reported. QF_UFLRA (132989) COMPLETED clean.",
        "root_cause": "The model printer invents an Int value when neither the component model nor the term's congruence class supplies one, via fresh_int_value handing out 0,1,2..., and that number becomes both a table key and, one level up, a result. Inventing is sound for an unconstrained term and unsound for a constrained one, and the builder cannot tell -- it never sees the assertions. Instrumented on witness.smt2: three values invented, all three for f applications, and they are exactly what makes the printed table self-inconsistent.",
        "literature": "The construction was described in Griggio's 2009 thesis, sect. 1.5.1 (doi:10.15168/11572_368265, PDF p. 30): purification labels every alien subterm with a fresh variable and asserts the label, so in the purified formula every arithmetic-sorted UF application f(v_1..v_n) has a label of its own and all of them are interface variables the arithmetic solver assigns. The row is (val(v_1)..val(v_n)) -> val(v_f), read off rather than searched for, and no value can be missing. docs/papers/griggio-mathsat-thesis.md had skipped the combination background entirely; it now carries it.",
        "fix_1": "e2058f1: MixedPurificationRewriteState::proxy_by_app already existed and was discarded at the return, since MixedTheoryPurificationResult carried only counts. It is now returned and appended to the model conversion chain as PurificationProxyConversion, so qf_uflia_int_values seeds each application's value from its label. 21 errors to 2.",
        "fix_2": "76e5e37: the two survivors were a different mechanism. A user constant is neither an EUF atom member (x = f(...) is an Int equality that goes to LIA) nor an LIA variable (the tableau's nine variables were all internal $primo_ symbols), so it reaches the model only through substitution facts. The value pass read only LiaSubstitutionConversion while the chain ran through a DirectedEqualitySubstitutionConversion, and applied substitutions to model_terms only. With both fixed the sum was still unvalued: evaluate memoizes failures as well as successes and terms are visited in arena order, so x (term 22) was evaluated before $primo_ite_0 (term 33) and the failure was cached permanently. The pass now runs in rounds discarding only failed entries. 2 to 0.",
        "refuted_attempt": "A bottom-up 'consistent completion' keyed by argument tuple rather than congruence class fixes two of the witnesses and regresses the corpus: same 750 cases, same seed, 8 model errors unchanged against 14 with the pass, and 43 against 21 over 3000 in a two-sweep variant. Forcing an application onto an existing row equates two applications whenever their printed argument values coincide, and those values are partly invented, so a collision merges applications the solver kept apart. Reverted; recorded in the bug file because it looks obviously right.",
        "diagnostics_added": ":model.invented-int-values. On a correct model of a fully labelled formula it should be zero; it was 8 on case-00130 and is 6 now, the remainder being genuinely unconstrained applications."
      },
      "notes": "Three attempts, and the pattern is worth keeping: the first two tried to repair the consumer -- making the printer self-consistent, then reasoning about backward-propagating constraints -- when the producer was discarding information it already had. The literature pointed straight at it. Also fixed on the way: the QF_UFLIA generator emitted (* 2 (* 2 ...)), which QF_UFLIA's :extensions does not admit, and the model validator reported a Dolmen input rejection as a solver model error because its fallback only extracts Real assignments and never runs on an Int logic."
    },
    {
      "id": "2026-09-06-lead16-cite-simplification-133177-133466",
      "date": "2026-09-06",
      "commit": "d8462db",
      "branch": "modular-theory-combination",
      "kind": "lead-promotion-falsifier-and-full-division-check",
      "scope": "open-leads lead 16 piece 1, constant if-then-else simplification. The lead's falsifier on nec-smt, then the full QF_LIA division to check the technique does not help one family at another's expense.",
      "environment": {
        "host": "CIIRC SLURM cluster",
        "solver": "Primo 0.1.0 at 008e115 for the falsifier and d8462db for the division check; one binary per run, the two arms differing only by --cite-simplification",
        "corpus": "sandbox/non-incremental/QF_LIA; 2780 nec-smt files, then all 13306; 60-second timeout"
      },
      "jobs": {
        "nec_smt_falsifier": "133177; 40 shards by 2 arms",
        "full_division": "133466; 80 shards by 2 arms"
      },
      "results": {
        "falsifier": "nec-smt, 2780 files: off 644, on 1269, +625 with 625 gained and 0 lost, against a promotion bar of +200 stated in the lead before the work. Paired runtime over the 577 files both arms solve with base above a second: geometric mean 0.589, summed -38.5%.",
        "full_division": "13306 files: off 9061, on 9660, +599 with 601 gained and 2 lost (one in 2019-cmodelsdiff, one in nec-smt). Zero wrong answers and zero disagreements. By family, only nec-smt moves: +599. Paired runtime geometric mean 0.830 overall, 0.612 on nec-smt with total time -36.1%, and 1.0045 on every other family with total time +0.9% -- so the technique is neutral where it does not apply rather than harmful.",
        "correctness_basis": "All 2780 nec-smt files carry a declared :status (1524 unsat, 1256 sat) and all 1269 answers the CITE arm produced were checked against it, none contradicting. This is worth stating because the wrong-answer column is inert on corpora without :status, as slurm_qf_lra_scrambled_compare.sbatch documents.",
        "cost": "The formula grows and preprocessing slows: on nec-smt/large/getoption_directories/prp-4-113.smt2, ite auxiliaries 40284 to 10026, preprocessed size 443762 to 1280886, preprocessing 2.8s to 27s. Solve counts pay for it several times over.",
        "piece_2": "ITE compression's semantic content was already present through the Boolean-ite rules plus hash-consing: a three-deep (ite c t false) chain compresses fully today. What the thesis adds is selectivity and naming with a fresh propositional variable, and hash-consing already supplies what the naming is for. So the lead's requirement to evaluate pieces 1 and 2 together was met by implementing 1 and ordering it before the rules that already do 2."
      },
      "artifacts": {
        "slurm": "primo-cadical-profile/results/nec-smt-cite; primo-cadical-profile/results/qf-lia-cite-full"
      },
      "notes": "Two implementation notes worth keeping. The csimp cache must be keyed on (op, term, constant, side) across the pass, not per atom: getting that wrong cost 183 seconds against 2.8 on one file. And passing the compared constant as a reference into a core::Term is a use-after-free, because every mk_* call can grow the arena; ASan caught it on the first nec-smt file. Piece 3, ITE reconstruction, remains unimplemented and is what is left of lead 16."
    },
    {
      "id": "2026-09-07-cite-cross-theory-133626",
      "date": "2026-09-07",
      "commit": "d8462db",
      "branch": "modular-theory-combination",
      "kind": "cross-logic-check-of-a-promoted-default",
      "scope": "Constant if-then-else simplification was promoted on QF_LIA evidence alone, but simplify-constant-ites sits in the unconditional initial sequence and runs for every logic. This measures the other three.",
      "environment": {
        "host": "CIIRC SLURM cluster",
        "solver": "Primo 0.1.0 at d8462db; one binary, the arms differing only by --no-cite-simplification",
        "corpus": "sandbox/non-incremental/QF_LRA 1753, QF_UFLRA 1284, tmp/QF_UFLIA 659; 60-second timeout"
      },
      "jobs": {
        "qf_lra": "133626",
        "qf_uflra": "133627",
        "qf_uflia": "133706",
        "fuzz_qf_uflia_model": "133726",
        "fuzz_qf_uflra": "133727",
        "fuzz_qf_uf_boolean": "133728",
        "fuzz_finite_domain": "133729"
      },
      "results": {
        "solve_counts": "QF_LIA 9061 -> 9660 (+599). QF_LRA 1533 -> 1531 (-2, none gained). QF_UFLRA 1270 -> 1270. QF_UFLIA 571 -> 571. No wrong answers and no disagreements anywhere.",
        "runtime": "Paired geometric mean on files both arms solve: QF_LRA 1.0136 with total time +1.87% over 476 files, QF_UFLRA 1.0150 with +1.60% over 60. So outside QF_LIA the pass costs a small, systematic amount and returns nothing, which matches the thesis reporting these techniques worth +2 on QF_LRA.",
        "verdict": "Kept on by default. The -2 on QF_LRA is inside the same-binary churn floor measured earlier on this branch (base scored 9038 and 9040 on identical binary and corpus), so it is not distinguishable from noise; the ~1.7% runtime cost on the Real logics is real but did not cost solves on QF_UFLRA and is bounded by the extended_term_count early-out, which skips the pass entirely on formulas containing no ite. Scoping the default to Int logics remains available if the QF_LRA cost is ever shown to be more than churn.",
        "correctness_gates": "QF_UFLRA, QF_UF Boolean and finite-domain gates all clean. The QF_UFLIA gate reported 2999 answer PASS with 1 timeout, and 1 model error in 3000 -- reproducible with and without --cite-simplification, so not caused by this change.",
        "bug_status_correction": "That single model error is the same nested-application shape as bugs/qf-uflia-nested-application-model, which was recorded as FIXED the previous day on the strength of 0 errors in 3000 at seed base 202609100. A different seed base finds one. The bug file now reads LARGELY FIXED, about a 95% reduction from 21, with witness-residual-2026-09-07.smt2 kept: 12 invented Int values against 5 purification labels, so the unvalued terms are again ones no label covers."
      },
      "notes": "The lesson worth keeping is the one that prompted this run: a default was promoted on a single logic's evidence when the pass runs for all of them, and the check took one submission. The same reasoning applies to the fuzz gate: 0 errors in 3000 is a statement about a seed, and a second seed is what turns it into a statement about the code."
    },
    {
      "id": "2026-09-16-qf-uflra-forced-equality-extraction",
      "date": "2026-09-16",
      "commit": "073d89a",
      "branch": "qf-uflra-forced-equality-dedup",
      "kind": "refactor-preservation-check",
      "scope": "solve_qf_uflra_engine_impl carried two near-identical blocks of forced model-equality logic, one under !options.produce_model and one under options.produce_model: the same EUF equality scan, the same real-model separation, the same candidate final-scan fallback. They are extracted into compute_forced_model_equalities(). Behaviour must not change, so the check is preservation of answers and of every non-timing counter, not a solve count.",
      "environment": {
        "host": "local workstation; no cluster job",
        "baseline": "main 45a16ad, built in a separate worktree",
        "candidate": "qf-uflra-forced-equality-dedup; the only changed source file is src/smt/solver_engines.cpp (+226/-187)",
        "corpus": "15 tracked QF_UFLRA files (regressions and seeds) plus 120 generated QF_UFLRA cases; each corpus run twice, once as written and once with :produce-models true"
      },
      "commands": {
        "gates": "make check (41/41 CTest, 188 Python), make asan-test (41/41), make lint",
        "preservation": "scripts/compare_local_solver_stats.py --baseline <main worktree build>/primo --candidate build/primo --root <corpus> --manifest <manifest> --repeats 1",
        "generation": "the QF_UFLRA case generator, 120 cases, each agreeing with z3"
      },
      "results": {
        "preservation": "Four comparisons, all with answers match: True and non-time stats match: True. 15 tracked files as written; 15 with :produce-models true (3 sat keep (get-model)); 120 generated cases as written; 120 generated with :produce-models true (76 sat keep (get-model)).",
        "coverage": "The model-requesting arms are what exercise the options.produce_model half of the extraction; without them the refactored branch is never entered, so the plain runs alone would not have qualified the change.",
        "harness_note": "A first attempt appended (get-model) without setting :produce-models true. Both binaries then printed the same answer and the same error and exited non-zero, and compare_local_solver_stats.py marks any non-zero run as a disagreement, so all 135 model files reported disagreement while every counter matched. The signature of a harness artefact rather than a regression is exactly that: answers disagree everywhere, counters agree everywhere. Fixed by setting the option and dropping (get-model) from the files that answer unsat.",
        "open": "The cluster run is SLURM array 146259 over the 1,284-file QF_UFLRA corpus at primo-cadical-profile/tmp/QF_UFLRA, baseline main 45a16ad (sha256 2eb0fc2d) against candidate 3f5bf21 (sha256 d9119cfc), 16 tasks all COMPLETED at a 30-second timeout. Every non-timing counter matches on all 1,284 files. 1,266 also match on answers. The other 18 are large cpachecker-bmc and cpachecker-induction files on which BOTH binaries time out at 30 seconds with no answer; compare_local_solver_stats.py requires status ok on every run, so it records a mutual timeout as a disagreement. Their counters match even in that state. Job 146275 rechecked those 18 at a 300-second timeout: 6 answer sat on both binaries with identical answers, 12 time out on both, and none diverge. That job's SLURM state is FAILED with exit code 1:0 only because compare_local_solver_stats.py exits 1 whenever any file is unmatched, which the mutual timeouts are; the run itself completed and wrote all 36 rows. Final tally over the corpus: every non-timing counter matches on all 1,284 files, 1,272 match on answers, and the remaining 12 are unsolved by both binaries rather than disagreeing. No file exists where one binary answers and the other does not, which is where a behavioural change from the extraction would have shown."
      },
      "notes": "The duplication was flagged as mixed-model-equality-dedup and survived the earlier move into solver_engines.cpp. The two callers keep their own diagnostic wording and their own :no.interface.arrangement-failures increments, and the arrangement caller deduplicates a complete precomputed LRA list where the model caller copies plainly, which is why the helper takes a complete_source flag rather than assuming one shape."
    },
    {
      "id": "2026-09-16-qf-uflra-forced-equality-merge",
      "date": "2026-09-16",
      "commit": "32b9032",
      "branch": "main",
      "kind": "merge-record",
      "scope": "Merge 32b9032 integrates qf-uflra-forced-equality-dedup at c62d63f into main at 45a16ad. The merge tree is identical to c62d63f (git diff qf-uflra-forced-equality-dedup 32b9032 is empty), so the branch qualification applies to main unchanged. No new solver runs were made for the merge itself.",
      "environment": {
        "host": "local repository; qualification ran locally and on the CIIRC SLURM cluster",
        "baseline": "main 45a16ad, which the branch was cut from and which had not moved (main and origin/main identical at merge time)",
        "candidate": "qf-uflra-forced-equality-dedup c62d63f"
      },
      "commands": {
        "merge": "git checkout main; git merge --no-ff qf-uflra-forced-equality-dedup -F <message file>; git diff --stat qf-uflra-forced-equality-dedup HEAD (empty)",
        "gate": "make check on c62d63f after the cherry-pick: 41/41 CTest and 188 Python tests. The merged tree equals that tree, so the gate was not repeated."
      },
      "results": {
        "evidence": "2026-09-16-qf-uflra-forced-equality-extraction carries the full qualification: make check, make asan-test and make lint; four local preservation comparisons over 15 tracked QF_UFLRA files and 120 generated cases, each run plain and with :produce-models true; SLURM array 146259 over all 1,284 QF_UFLRA files with every non-timing counter matching, and job 146275 rechecking the mutual timeouts at 300 seconds. 1,272 of 1,284 files match on answers and the other 12 are unsolved by both binaries.",
        "seeds": "The merge also carries c62d63f, a cherry-pick of e7bccb1 from mixed-model-equality-dedup. It adds benchmarks/seeds/qf_uflra_scale (a README and two real-file QF_UFLRA mutation seeds) and no code. Nothing outside benchmarks references that directory, and tests/unit/boolean_solver_tests.cpp reads seed files by exact path under benchmarks/seeds/qf_uflra, so the new directory cannot perturb it.",
        "superseded_branch": "mixed-model-equality-dedup (e7bccb1, published, never merged) attempted the same extraction against src/smt/check_sat.cpp. Its patch no longer applies to main -- verified with git apply --check against a worktree at 45a16ad, which fails at check_sat.cpp:10430 -- because the forced-equality logic moved to src/smt/solver_engines.cpp. With its seeds now on main, the branch holds nothing unique.",
        "open": "The 12 cpachecker-bmc and cpachecker-induction files that neither binary solves at 300 seconds are a solver-capability question, unrelated to this refactor. Deleting the published mixed-model-equality-dedup branch is left to the user."
      },
      "notes": "compare_local_solver_stats.py requires status ok on every run, so any non-zero exit or timeout is recorded as a disagreement. Both false alarms during this qualification had the same signature: answers disagreeing everywhere while every non-timing counter agreed. A model-path preservation run needs :produce-models true, or the produce_model branch is never entered and the comparison proves nothing.",
      "evidence_status": "current"
    }
  ]
}
