lemma-db 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- db_extension/AGENT.md +125 -0
- db_extension/DEMO.md +59 -0
- db_extension/__init__.py +3 -0
- db_extension/agent/__init__.py +41 -0
- db_extension/agent/claude_stream.py +157 -0
- db_extension/agent/config.py +84 -0
- db_extension/agent/docker_runner.py +130 -0
- db_extension/agent/egress_bridge.py +406 -0
- db_extension/agent/egress_proxy_sidecar.py +81 -0
- db_extension/agent/extract.py +134 -0
- db_extension/agent/harness.py +611 -0
- db_extension/agent/lease_measure.py +167 -0
- db_extension/agent/mcp_host.py +57 -0
- db_extension/agent/mcp_proxy.py +162 -0
- db_extension/agent/mcp_socket.py +168 -0
- db_extension/agent/mcp_tool_registry.py +174 -0
- db_extension/agent/mcp_tool_specs.py +166 -0
- db_extension/agent/measure_core.py +709 -0
- db_extension/agent/model_bridge.py +260 -0
- db_extension/agent/model_proxy_sidecar.py +107 -0
- db_extension/agent/profile.py +213 -0
- db_extension/agent/session_clock.py +200 -0
- db_extension/agent/sql_gate.py +103 -0
- db_extension/agent/tools_worker.py +290 -0
- db_extension/catalog.py +62 -0
- db_extension/dataset_config.py +500 -0
- db_extension/optimizer.py +1357 -0
- db_extension/plan.md +131 -0
- db_extension/prepare_data.py +53 -0
- db_extension/queries/q2.sql +5 -0
- db_extension/queries/q3.sql +5 -0
- db_extension/run_optimizer.py +281 -0
- db_extension/test_extension.py +124 -0
- db_extension/utils.py +227 -0
- db_extension/verus_bridge.py +650 -0
- db_extension/workload_config.py +376 -0
- declarative_spec/__init__.py +16 -0
- declarative_spec/admit.py +461 -0
- declarative_spec/agent_scan.py +290 -0
- declarative_spec/assemble.py +1452 -0
- declarative_spec/assemble_library.py +1940 -0
- declarative_spec/bench.py +228 -0
- declarative_spec/best_so_far.py +167 -0
- declarative_spec/chain_lemmas.py +209 -0
- declarative_spec/decline.py +245 -0
- declarative_spec/dense_budget.py +325 -0
- declarative_spec/distinct_lemmas.py +256 -0
- declarative_spec/drive.py +634 -0
- declarative_spec/emit.py +1100 -0
- declarative_spec/emit_agg.py +379 -0
- declarative_spec/emit_corr_count.py +108 -0
- declarative_spec/emit_date.py +46 -0
- declarative_spec/emit_filter.py +89 -0
- declarative_spec/emit_in.py +96 -0
- declarative_spec/emit_join.py +238 -0
- declarative_spec/emit_like.py +24 -0
- declarative_spec/emit_projection.py +604 -0
- declarative_spec/emit_surface.py +2853 -0
- declarative_spec/emit_tail.py +182 -0
- declarative_spec/exact_rational.py +251 -0
- declarative_spec/example_registry.py +245 -0
- declarative_spec/feedback.py +277 -0
- declarative_spec/flatten_group.py +149 -0
- declarative_spec/fold_group_join.py +198 -0
- declarative_spec/fragment.py +447 -0
- declarative_spec/future_float_error_bounds/README.md +67 -0
- declarative_spec/future_float_error_bounds/__init__.py +1 -0
- declarative_spec/future_float_error_bounds/error_bounds.py +206 -0
- declarative_spec/future_float_error_bounds/fixtures/float_sum_eps.rs +87 -0
- declarative_spec/future_float_error_bounds/fixtures/sum_idealized_eps0.rs +70 -0
- declarative_spec/future_float_error_bounds/float_eps.py +44 -0
- declarative_spec/group_close.py +175 -0
- declarative_spec/heavy_phase.py +53 -0
- declarative_spec/inline_cte.py +73 -0
- declarative_spec/join_chain.py +143 -0
- declarative_spec/lemma_index.py +96 -0
- declarative_spec/lemmas.py +239 -0
- declarative_spec/lift.py +177 -0
- declarative_spec/literals.py +41 -0
- declarative_spec/nulls.py +400 -0
- declarative_spec/numeric_rewrite.py +791 -0
- declarative_spec/parallel.py +77 -0
- declarative_spec/parse.py +207 -0
- declarative_spec/parse_exprs.py +186 -0
- declarative_spec/parse_query.py +1562 -0
- declarative_spec/pipeline.py +708 -0
- declarative_spec/principles.py +217 -0
- declarative_spec/prompt.py +1580 -0
- declarative_spec/prover.py +76 -0
- declarative_spec/pushdown.py +419 -0
- declarative_spec/regions.py +69 -0
- declarative_spec/resolve.py +188 -0
- declarative_spec/schema_types.py +466 -0
- declarative_spec/sessions.py +171 -0
- declarative_spec/shapes.py +166 -0
- declarative_spec/sql_switches.py +30 -0
- declarative_spec/sql_text.py +118 -0
- declarative_spec/stateful.py +398 -0
- declarative_spec/stream.py +1213 -0
- declarative_spec/stream_distinct.py +363 -0
- declarative_spec/stream_join.py +1333 -0
- declarative_spec/stream_prompt.py +704 -0
- declarative_spec/string_encoding.py +30 -0
- declarative_spec/surface.py +126 -0
- declarative_spec/templates.py +723 -0
- declarative_spec/trusted_sets.py +123 -0
- declarative_spec/verus_docs.py +342 -0
- declarative_spec/verus_limits.py +158 -0
- declarative_spec/vstd_index.py +98 -0
- lemma_cli/__init__.py +1 -0
- lemma_cli/assumptions.py +109 -0
- lemma_cli/cache.py +101 -0
- lemma_cli/common.py +152 -0
- lemma_cli/duck.py +132 -0
- lemma_cli/executor.py +121 -0
- lemma_cli/generate.py +61 -0
- lemma_cli/main.py +150 -0
- lemma_cli/optimize.py +311 -0
- lemma_cli/sandbox.py +217 -0
- lemma_cli/setup_cmd.py +272 -0
- lemma_config.py +658 -0
- lemma_data/BUILD_INFO.json +6 -0
- lemma_data/__init__.py +0 -0
- lemma_data/docker/agent/Dockerfile +47 -0
- lemma_data/docker/agent/Dockerfile.harness +37 -0
- lemma_data/docker/agent/entrypoint.sh +187 -0
- lemma_data/docker/agent/install-agents.sh +28 -0
- lemma_data/docker/prover/Dockerfile +39 -0
- lemma_data/lemma.toml +119 -0
- lemma_data/scripts/fetch_libduckdb.sh +11 -0
- lemma_data/scripts/ram/README.md +7 -0
- lemma_data/scripts/ram/heavy.sh +31 -0
- lemma_data/scripts/ram/verus_guarded.sh +64 -0
- lemma_data/tests/fixtures/declarative_proofs/cold_count_int.rs +128 -0
- lemma_data/tests/fixtures/declarative_proofs/cold_sum_filter.rs +234 -0
- lemma_data/tests/fixtures/declarative_proofs/cold_sum_two_cols.rs +216 -0
- lemma_data/tests/fixtures/declarative_proofs/count_case_global.rs +24 -0
- lemma_data/tests/fixtures/declarative_proofs/decline/exact_avg_checked.rs +99 -0
- lemma_data/tests/fixtures/declarative_proofs/decline/exact_q14_ratio_checked.rs +112 -0
- lemma_data/tests/fixtures/declarative_proofs/decline/exact_q14_ratio_unchecked_must_fail.rs +98 -0
- lemma_data/tests/fixtures/declarative_proofs/decline/group_count_sum_checked.rs +218 -0
- lemma_data/tests/fixtures/declarative_proofs/decline/join_group_sum_checked.rs +307 -0
- lemma_data/tests/fixtures/declarative_proofs/decline/scan_usum_checked.rs +124 -0
- lemma_data/tests/fixtures/declarative_proofs/decline/stateful_exact_avg_checked.rs +111 -0
- lemma_data/tests/fixtures/declarative_proofs/decline/stateful_scan_usum_checked.rs +146 -0
- lemma_data/tests/fixtures/declarative_proofs/decline/stateful_usum_checked.rs +62 -0
- lemma_data/tests/fixtures/declarative_proofs/decline/template_usum_checked.rs +47 -0
- lemma_data/tests/fixtures/declarative_proofs/decline/usum_checked.rs +44 -0
- lemma_data/tests/fixtures/declarative_proofs/decline/usum_unchecked_must_fail.rs +37 -0
- lemma_data/tests/fixtures/declarative_proofs/dict_filter_count_sum.rs +82 -0
- lemma_data/tests/fixtures/declarative_proofs/dict_group_count_dense.rs +170 -0
- lemma_data/tests/fixtures/declarative_proofs/dict_group_count_sum_dense.rs +190 -0
- lemma_data/tests/fixtures/declarative_proofs/dict_group_count_sum_parallel.rs +588 -0
- lemma_data/tests/fixtures/declarative_proofs/dict_join_probe_sum.rs +411 -0
- lemma_data/tests/fixtures/declarative_proofs/dict_shipmode_min_count.rs +79 -0
- lemma_data/tests/fixtures/declarative_proofs/dict_string_filter_minmax.rs +88 -0
- lemma_data/tests/fixtures/declarative_proofs/dict_tpch_q14_exact_ratio.rs +323 -0
- lemma_data/tests/fixtures/declarative_proofs/exact_avg_decimal.rs +53 -0
- lemma_data/tests/fixtures/declarative_proofs/exact_ratio_sums.rs +63 -0
- lemma_data/tests/fixtures/declarative_proofs/float_avg_decimal.rs +71 -0
- lemma_data/tests/fixtures/declarative_proofs/float_avg_float.rs +97 -0
- lemma_data/tests/fixtures/declarative_proofs/float_avg_group_count_distinct.rs +586 -0
- lemma_data/tests/fixtures/declarative_proofs/float_avg_int.rs +75 -0
- lemma_data/tests/fixtures/declarative_proofs/float_filter_count.rs +35 -0
- lemma_data/tests/fixtures/declarative_proofs/float_group_avg_decimal.rs +195 -0
- lemma_data/tests/fixtures/declarative_proofs/float_group_avg_having.rs +238 -0
- lemma_data/tests/fixtures/declarative_proofs/float_group_sum_having.rs +214 -0
- lemma_data/tests/fixtures/declarative_proofs/float_group_sum_order_limit.rs +448 -0
- lemma_data/tests/fixtures/declarative_proofs/float_min_max.rs +67 -0
- lemma_data/tests/fixtures/declarative_proofs/float_order_limit.rs +346 -0
- lemma_data/tests/fixtures/declarative_proofs/float_product_sum.rs +92 -0
- lemma_data/tests/fixtures/declarative_proofs/float_sum.rs +67 -0
- lemma_data/tests/fixtures/declarative_proofs/group_count_where.rs +196 -0
- lemma_data/tests/fixtures/declarative_proofs/group_sum_where.rs +203 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/count_distinct.rs +50 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/dict_anti_join_group_topk.rs +1287 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/dict_group_two_keys_count_distinct_avg.rs +856 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/dict_having_scalar_subquery.rs +2208 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/dict_join3_group_topk.rs +3223 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/dict_join_group_count_distinct_topn.rs +1457 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/dict_parallel_hash_group_topn.rs +1141 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/dict_parallel_q1.rs +1609 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/dict_parallel_q12.rs +1844 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/dict_parallel_q1_exact_avg.rs +1641 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/dict_parallel_star_join_group_sum_sorted.rs +1134 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/dict_parallel_star_join_two_keys_revenue_order.rs +988 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/dict_parallel_star_join_two_keys_string_order.rs +1273 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/dict_projection_join_correlated_max_topk.rs +1576 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/dict_star_join_group_sum_sorted.rs +792 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/group_decimal_sums_string_keys_sorted.rs +1134 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/map_count.rs +63 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/projection_join_correlated_max_topk.rs +756 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/string_tuple_count_distinct_sorted.rs +550 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/two_key.rs +200 -0
- lemma_data/tests/fixtures/declarative_proofs/hard/usum_nonlinear.rs +50 -0
- lemma_data/tests/fixtures/declarative_proofs/int_group_count.rs +63 -0
- lemma_data/tests/fixtures/declarative_proofs/join_group_sum.rs +325 -0
- lemma_data/tests/fixtures/declarative_proofs/join_min_stringhashmap_probe.rs +123 -0
- lemma_data/tests/fixtures/declarative_proofs/parallel_dict_filter_count_max_blockskip.rs +512 -0
- lemma_data/tests/fixtures/declarative_proofs/parallel_dict_filter_count_max_slices.rs +503 -0
- lemma_data/tests/fixtures/declarative_proofs/parallel_dict_nullable_count_min.rs +428 -0
- lemma_data/tests/fixtures/declarative_proofs/parallel_ungrouped_count.rs +293 -0
- lemma_data/tests/fixtures/declarative_proofs/parallel_ungrouped_max.rs +323 -0
- lemma_data/tests/fixtures/declarative_proofs/parallel_ungrouped_min.rs +323 -0
- lemma_data/tests/fixtures/declarative_proofs/parallel_ungrouped_product_sum.rs +327 -0
- lemma_data/tests/fixtures/declarative_proofs/parallel_ungrouped_product_sum_slices.rs +436 -0
- lemma_data/tests/fixtures/declarative_proofs/parallel_ungrouped_sum.rs +308 -0
- lemma_data/tests/fixtures/declarative_proofs/principles/group_by_dict_key.rs +190 -0
- lemma_data/tests/fixtures/declarative_proofs/principles/join_unique_lookup.rs +146 -0
- lemma_data/tests/fixtures/declarative_proofs/principles/null_skipping_aggregate.rs +57 -0
- lemma_data/tests/fixtures/declarative_proofs/principles/parallel_scan_sum.rs +308 -0
- lemma_data/tests/fixtures/declarative_proofs/principles/scan_filter_sum_count.rs +50 -0
- lemma_data/tests/fixtures/declarative_proofs/principles/star_join_group_by.rs +309 -0
- lemma_data/tests/fixtures/declarative_proofs/principles/top_n_with_ties.rs +153 -0
- lemma_data/tests/fixtures/declarative_proofs/projection_correlated_max.rs +87 -0
- lemma_data/tests/fixtures/declarative_proofs/projection_distinct.rs +77 -0
- lemma_data/tests/fixtures/declarative_proofs/projection_int_key.helpers.rs +12 -0
- lemma_data/tests/fixtures/declarative_proofs/projection_join.rs +76 -0
- lemma_data/tests/fixtures/declarative_proofs/projection_null_cell.helpers.rs +12 -0
- lemma_data/tests/fixtures/declarative_proofs/projection_null_cell.rs +49 -0
- lemma_data/tests/fixtures/declarative_proofs/projection_top_k.helpers.rs +48 -0
- lemma_data/tests/fixtures/declarative_proofs/projection_top_k.rs +91 -0
- lemma_data/tests/fixtures/declarative_proofs/projection_where.helpers.rs +12 -0
- lemma_data/tests/fixtures/declarative_proofs/projection_where.rs +47 -0
- lemma_data/tests/fixtures/declarative_proofs/scan_filtered_sum.rs +118 -0
- lemma_data/tests/fixtures/declarative_proofs/self_join_count.rs +47 -0
- lemma_data/tests/fixtures/declarative_proofs/stateful_date_prefix.rs +252 -0
- lemma_data/tests/fixtures/declarative_proofs/stateful_degenerate_sum.rs +57 -0
- lemma_data/tests/fixtures/declarative_proofs/stateful_group_table.rs +210 -0
- lemma_data/tests/fixtures/declarative_proofs/stream/group_count_distinct.rs +414 -0
- lemma_data/tests/fixtures/declarative_proofs/stream/group_nullable_key_count_sum.rs +329 -0
- lemma_data/tests/fixtures/declarative_proofs/stream/group_string_count_sum.rs +244 -0
- lemma_data/tests/fixtures/declarative_proofs/stream/join_group_build_key.rs +580 -0
- lemma_data/tests/fixtures/declarative_proofs/stream/ungrouped_sum_filter.rs +100 -0
- lemma_data/tests/fixtures/declarative_proofs/stream/ungrouped_sum_filter_template.rs +106 -0
- lemma_data/tests/fixtures/declarative_proofs/string_group_count.rs +58 -0
- lemma_data/tests/fixtures/declarative_proofs/template_date_count.rs +28 -0
- lemma_data/tests/fixtures/declarative_proofs/template_sum_where.rs +38 -0
- lemma_data/tests/fixtures/declarative_proofs/tpch_q14_promo_ratio.rs +296 -0
- lemma_data/tests/fixtures/declarative_proofs/tpch_q19_disjunction.rs +173 -0
- lemma_data/tests/fixtures/declarative_proofs/tpch_q3_join_group_topk.rs +739 -0
- lemma_data/tests/fixtures/declarative_proofs/tpch_shipmode_min_count_plain.rs +46 -0
- lemma_data/tests/fixtures/declarative_proofs/u64_group_count_slots_t_k.rs +126 -0
- lemma_data/tests/fixtures/declarative_proofs/u64_group_count_t_k.rs +63 -0
- lemma_data/tests/fixtures/declarative_proofs/ungrouped_decimal_product_sum.rs +65 -0
- lemma_data/tests/fixtures/declarative_proofs/ungrouped_minmax_string_filter.rs +54 -0
- lemma_data/tests/fixtures/declarative_proofs/ungrouped_sum_where.rs +35 -0
- lemma_data/tests/fixtures/declarative_proofs/zero_copy_count_int.rs +64 -0
- lemma_data/tests/fixtures/declarative_proofs/zero_copy_count_int.spec.rs +145 -0
- lemma_data/tests/fixtures/declarative_proofs/zero_copy_count_int_flat.rs +30 -0
- lemma_data/tests/fixtures/declarative_proofs/zero_copy_sum_filter.rs +94 -0
- lemma_data/tests/fixtures/declarative_proofs/zero_copy_sum_filter.spec.rs +142 -0
- lemma_data/tests/fixtures/declarative_proofs/zero_copy_sum_filter_flat.rs +45 -0
- lemma_data/tests/fixtures/declarative_proofs/zero_copy_sum_filter_parallel.rs +407 -0
- lemma_data/tests/fixtures/declarative_proofs/zero_copy_sum_filter_parallel.spec.rs +143 -0
- lemma_data/tests/fixtures/declarative_proofs/zero_copy_sum_filter_parallel_flat.rs +290 -0
- lemma_data/tests/fixtures/declarative_proofs/zero_copy_sum_two_cols.rs +105 -0
- lemma_data/tests/fixtures/declarative_proofs/zero_copy_sum_two_cols.spec.rs +145 -0
- lemma_data/tests/fixtures/declarative_proofs/zero_copy_sum_two_cols_flat.rs +48 -0
- lemma_db-0.1.0.dist-info/METADATA +282 -0
- lemma_db-0.1.0.dist-info/RECORD +1194 -0
- lemma_db-0.1.0.dist-info/WHEEL +5 -0
- lemma_db-0.1.0.dist-info/entry_points.txt +2 -0
- lemma_db-0.1.0.dist-info/licenses/LICENSE +21 -0
- lemma_db-0.1.0.dist-info/top_level.txt +8 -0
- research_loop/AGENT_SANDBOX.md +274 -0
- research_loop/README.md +93 -0
- research_loop/__init__.py +1 -0
- research_loop/_transpiler.py +27 -0
- research_loop/admit_agent_runquery.py +833 -0
- research_loop/admit_runquery.py +59 -0
- research_loop/adversary/PROMPT.md +28 -0
- research_loop/adversary/__init__.py +3 -0
- research_loop/adversary/candidate.py +63 -0
- research_loop/adversary/judge.py +611 -0
- research_loop/adversary/judge_declarative.py +281 -0
- research_loop/adversary/run.py +167 -0
- research_loop/adversary/significance.py +120 -0
- research_loop/adversary/tamper.py +113 -0
- research_loop/agent_context.py +354 -0
- research_loop/agent_harness.py +230 -0
- research_loop/agent_image_check.py +79 -0
- research_loop/agent_primitives/Cargo.lock +180 -0
- research_loop/agent_primitives/Cargo.toml +34 -0
- research_loop/agent_primitives/__init__.py +44 -0
- research_loop/agent_primitives/build.rs +53 -0
- research_loop/agent_primitives/emit_externs.py +81 -0
- research_loop/agent_primitives/src/dict.rs +56 -0
- research_loop/agent_primitives/src/duckdb_export.rs +269 -0
- research_loop/agent_primitives/src/duckdb_pin.rs +619 -0
- research_loop/agent_primitives/src/duckdb_stream.rs +483 -0
- research_loop/agent_primitives/src/hash_join.rs +522 -0
- research_loop/agent_primitives/src/lib.rs +56 -0
- research_loop/agent_primitives/src/parallel.rs +75 -0
- research_loop/agent_primitives/src/small_card_agg.rs +186 -0
- research_loop/agent_primitives/src/spill_hash.rs +86 -0
- research_loop/agent_primitives/src/stats.rs +275 -0
- research_loop/agent_primitives/src/vector_scan.rs +99 -0
- research_loop/agent_primitives/src/zone_map.rs +103 -0
- research_loop/agent_primitives/test_emit_externs.py +148 -0
- research_loop/agent_primitives/tests/equiv.rs +292 -0
- research_loop/agent_primitives/verus_externs_core.rs.inc +171 -0
- research_loop/agent_primitives/verus_externs_parallel.rs.inc +800 -0
- research_loop/agent_sandbox.py +1712 -0
- research_loop/agent_vstd_imports.py +27 -0
- research_loop/agents/AGENTS.md +259 -0
- research_loop/agents/COMPILATION_GUIDE.md +103 -0
- research_loop/agents/HOLDOUT_PROPOSALS.md +80 -0
- research_loop/agents/JOIN_EXEC_MENU.md +56 -0
- research_loop/agents/JOIN_PROOF_PATHS.md +4 -0
- research_loop/agents/PRIMITIVES.md +169 -0
- research_loop/assemble_runquery.py +718 -0
- research_loop/assemble_verified_program.py +1515 -0
- research_loop/assumption_packages/__init__.py +55 -0
- research_loop/assumption_packages/check.py +263 -0
- research_loop/assumption_packages/json_io.py +83 -0
- research_loop/assumption_packages/profile.py +279 -0
- research_loop/assumption_packages/registry/ssb_sf1.json +339 -0
- research_loop/assumption_packages/registry/ssb_sf1.md +165 -0
- research_loop/assumption_packages/registry/tpch_sf1.json +349 -0
- research_loop/assumption_packages/registry/tpch_sf1.md +171 -0
- research_loop/assumption_packages/registry/tpch_sf10.json +346 -0
- research_loop/assumption_packages/registry/tpch_sf10.md +187 -0
- research_loop/assumption_packages/sec_margin.py +324 -0
- research_loop/bench_standins/README.md +21 -0
- research_loop/bench_standins/__init__.py +1 -0
- research_loop/bench_standins/basic_sql_extended_fixtures.py +537 -0
- research_loop/bench_standins/basic_sql_fixtures.py +253 -0
- research_loop/bench_standins/basic_sql_join_fixtures.py +250 -0
- research_loop/bench_standins/basic_sql_proj_order_fixtures.py +153 -0
- research_loop/bench_standins/basic_sql_set_cte_fixtures.py +239 -0
- research_loop/bench_standins/sec_holdout_runqueries.py +161 -0
- research_loop/bench_standins/sec_q1_runquery.py +101 -0
- research_loop/bench_standins/sec_q1_runquery.rs +87 -0
- research_loop/bench_standins/tpch_runqueries.py +348 -0
- research_loop/bench_standins/verified_runqueries.py +1069 -0
- research_loop/benchmark_runqueries.py +174 -0
- research_loop/benchmark_verified.py +332 -0
- research_loop/cold_lib.rs +126 -0
- research_loop/cold_stream.py +496 -0
- research_loop/config.env +73 -0
- research_loop/dafny_legacy/README.md +13 -0
- research_loop/dafny_legacy/admit_runquery.py +262 -0
- research_loop/dafny_legacy/agent_workspace/runquery_agent.dfy +11 -0
- research_loop/dafny_legacy/assemble_runquery.py +134 -0
- research_loop/dafny_legacy/harness.py +410 -0
- research_loop/dafny_legacy/native.dfy +54 -0
- research_loop/dafny_legacy/native_bridge/Cargo.toml +7 -0
- research_loop/dafny_legacy/native_bridge/src/lib.rs +4 -0
- research_loop/dafny_legacy/native_bridge/src/native_agg.rs +214 -0
- research_loop/dafny_legacy/native_bridge/src/native_ops.rs +19 -0
- research_loop/dafny_legacy/pipeline_columnar.py +99 -0
- research_loop/dafny_legacy/postprocessor.py +563 -0
- research_loop/dafny_legacy/template_runquery.dfy +25 -0
- research_loop/dafny_legacy/templates/runquery_agent.dfy +23 -0
- research_loop/dafny_legacy/working_query-rust/Cargo.lock +119 -0
- research_loop/dafny_legacy/working_query-rust/Cargo.toml +11 -0
- research_loop/dafny_legacy/working_query-rust/runtime/Cargo.lock +112 -0
- research_loop/dafny_legacy/working_query-rust/runtime/Cargo.toml +18 -0
- research_loop/dafny_legacy/working_query-rust/runtime/Makefile +28 -0
- research_loop/dafny_legacy/working_query-rust/runtime/src/big_int.rs +420 -0
- research_loop/dafny_legacy/working_query-rust/runtime/src/lib.rs +3853 -0
- research_loop/dafny_legacy/working_query-rust/runtime/src/small_int.rs +335 -0
- research_loop/dafny_legacy/working_query-rust/runtime/src/system/mod.rs +3983 -0
- research_loop/dafny_legacy/working_query-rust/runtime/src/tests/mod.rs +1324 -0
- research_loop/dafny_legacy/working_query-rust/src/cols_native.rs +632 -0
- research_loop/dafny_legacy/working_query-rust/src/native_agg.rs +92 -0
- research_loop/dafny_legacy/working_query-rust/src/native_ops.rs +19 -0
- research_loop/dafny_legacy/working_query-rust/src/working_query-rs.dtr +3 -0
- research_loop/dafny_legacy/working_query-rust/src/working_query.rs +570 -0
- research_loop/data_profile.py +512 -0
- research_loop/decl_columns.py +85 -0
- research_loop/decl_query_measure.py +899 -0
- research_loop/duckdb_load_ffi.rs.inc +462 -0
- research_loop/duckdb_load_mode.py +79 -0
- research_loop/exec_cols.py +90 -0
- research_loop/experiment_stream.py +309 -0
- research_loop/format_result_from_type.py +88 -0
- research_loop/harness.py +2255 -0
- research_loop/harness_legacy.py +240 -0
- research_loop/harvest_traces.py +117 -0
- research_loop/having_filter_bridge.py +908 -0
- research_loop/having_map_peel.rs.inc +11 -0
- research_loop/holdout/README.md +81 -0
- research_loop/holdout/bench_holdout/Cargo.lock +195 -0
- research_loop/holdout/bench_holdout/Cargo.toml +20 -0
- research_loop/holdout/bench_holdout/src/loader.rs +72 -0
- research_loop/holdout/bench_holdout/src/main.rs +372 -0
- research_loop/holdout/bench_holdout/src/prepared.rs +1292 -0
- research_loop/holdout/bench_holdout/src/queries.rs +657 -0
- research_loop/holdout/gen_data.py +183 -0
- research_loop/holdout/queries.py +386 -0
- research_loop/holdout/results.json +369 -0
- research_loop/holdout/run_holdout_bench.py +256 -0
- research_loop/in_duckdb.py +477 -0
- research_loop/job_label.py +16 -0
- research_loop/lemma_flags.py +97 -0
- research_loop/local_sandbox_eval.py +119 -0
- research_loop/menu_profile.py +330 -0
- research_loop/menus/TRUSTED_ADDITION_PROTOCOL.md +48 -0
- research_loop/menus/adversary_declarative0_HOLES_LOG.md +95 -0
- research_loop/menus/adversary_declarative0_LOG.md +341 -0
- research_loop/menus/adversary_declarative0_narrow_cells_VERDICT.md +33 -0
- research_loop/menus/adversary_declarative0_narrow_default_VERDICT.md +165 -0
- research_loop/menus/adversary_declarative0_speed_claims_VERDICT.md +95 -0
- research_loop/menus/adversary_dict_cap_VERDICT.md +9 -0
- research_loop/menus/adversary_sandbox_data_hide_VERDICT.md +69 -0
- research_loop/menus/adversary_target_cpu_VERDICT.md +16 -0
- research_loop/menus/adversary_vstd_axiom_groups_VERDICT.md +23 -0
- research_loop/menus/arena_record_and_broadcast_note_ADVERSARY_VERDICT.md +43 -0
- research_loop/menus/cold_path_feasibility.md +115 -0
- research_loop/menus/cold_stream_ADVERSARY_VERDICT.md +51 -0
- research_loop/menus/cold_stream_ADVERSARY_VERDICT_2.md +65 -0
- research_loop/menus/container_login_refresh_ADVERSARY_VERDICT.md +31 -0
- research_loop/menus/container_vs_manual_gap.md +92 -0
- research_loop/menus/custom_verus_audit.md +208 -0
- research_loop/menus/dense_lint_false_positive_ADVERSARY_VERDICT.md +41 -0
- research_loop/menus/duck_measure_settings_ADVERSARY_VERDICT.md +82 -0
- research_loop/menus/emitter_coverage_LOG.md +65 -0
- research_loop/menus/exec_helpers_ADVERSARY_VERDICT.md +129 -0
- research_loop/menus/exists_ungrouped_aggregate_ADVERSARY_VERDICT.md +112 -0
- research_loop/menus/exporter_batches_ADVERSARY_VERDICT.md +81 -0
- research_loop/menus/exporter_bulk_ADVERSARY_VERDICT.md +109 -0
- research_loop/menus/f64_idealization_ADVERSARY_VERDICT.md +279 -0
- research_loop/menus/future_work_parameterized_literals.md +35 -0
- research_loop/menus/gap_feedback_ADVERSARY_VERDICT.md +213 -0
- research_loop/menus/gap_q5_dense_slot_ADVERSARY_VERDICT.md +41 -0
- research_loop/menus/gap_routing_ADVERSARY_VERDICT.md +109 -0
- research_loop/menus/iter_tpch_ssb_LOG.md +67 -0
- research_loop/menus/join_chain_ADVERSARY_VERDICT.md +48 -0
- research_loop/menus/join_chain_ADVERSARY_VERDICT_2.md +41 -0
- research_loop/menus/limit_tie_row_check_ADVERSARY_VERDICT.md +35 -0
- research_loop/menus/null_cells_ADVERSARY_VERDICT.md +97 -0
- research_loop/menus/nulls_ADVERSARY_VERDICT.md +106 -0
- research_loop/menus/official_measure_ADVERSARY_VERDICT.md +66 -0
- research_loop/menus/parallel_dict_ADVERSARY_VERDICT.md +58 -0
- research_loop/menus/pin_path_archive.md +90 -0
- research_loop/menus/principles_examples_ADVERSARY_VERDICT.md +144 -0
- research_loop/menus/pub6_egress_manifest_ADVERSARY_VERDICT.md +21 -0
- research_loop/menus/pub6_examples_a_ADVERSARY_VERDICT.md +110 -0
- research_loop/menus/pub6_examples_b_ADVERSARY_VERDICT.md +55 -0
- research_loop/menus/pub6_haiku_diagnosis.md +81 -0
- research_loop/menus/pub6_keyword_columns_ADVERSARY_VERDICT.md +21 -0
- research_loop/menus/pub6_prompt_imperative_tools_ADVERSARY_VERDICT.md +22 -0
- research_loop/menus/pub6_sonnet_diagnosis.md +58 -0
- research_loop/menus/ratio_division_ADVERSARY_VERDICT.md +123 -0
- research_loop/menus/ratio_division_PROPOSAL.md +90 -0
- research_loop/menus/sec_decimal_variant.md +134 -0
- research_loop/menus/sql_agg_times_constant_ADVERSARY_VERDICT.md +18 -0
- research_loop/menus/sql_cte_reuse_ADVERSARY_VERDICT.md +15 -0
- research_loop/menus/sql_derived_agg_expr_ADVERSARY_VERDICT.md +14 -0
- research_loop/menus/sql_left_join_count_ADVERSARY_VERDICT.md +10 -0
- research_loop/menus/string_dictionary_ADVERSARY_VERDICT.md +60 -0
- research_loop/menus/string_dictionary_PROPOSAL.md +104 -0
- research_loop/menus/zero_copy_gate.md +88 -0
- research_loop/menus/zero_copy_lease_ADVERSARY_VERDICT.md +156 -0
- research_loop/menus/zero_copy_lease_ADVERSARY_VERDICT_2.md +153 -0
- research_loop/menus/zero_copy_lease_PROPOSAL.md +184 -0
- research_loop/method_spec_ret_type.py +169 -0
- research_loop/multi_agg_step_bridge.py +3692 -0
- research_loop/native/Cargo.toml +13 -0
- research_loop/native/src/agg.rs +16 -0
- research_loop/native/src/lib.rs +25 -0
- research_loop/official_measure.py +407 -0
- research_loop/pipeline_demo.py +454 -0
- research_loop/pipeline_log.py +89 -0
- research_loop/run_artifacts.py +447 -0
- research_loop/sandbox_hide.py +49 -0
- research_loop/scan_export.py +107 -0
- research_loop/scripts/__init__.py +1 -0
- research_loop/scripts/arena_draw.py +169 -0
- research_loop/scripts/arena_record.py +368 -0
- research_loop/scripts/batch_verify_prove_loop.py +123 -0
- research_loop/scripts/bench_agent_primitives.py +73 -0
- research_loop/scripts/bootstrap_prove_loop_round.py +143 -0
- research_loop/scripts/build_rust_with_duckdb.py +29 -0
- research_loop/scripts/check_agent_mcp_ready.sh +212 -0
- research_loop/scripts/checkpoint_prove_loop.sh +24 -0
- research_loop/scripts/classify_product_failures.py +324 -0
- research_loop/scripts/claude_mock_e2e.py +177 -0
- research_loop/scripts/cold_profile.rs +319 -0
- research_loop/scripts/cold_stream_oneshot.py +125 -0
- research_loop/scripts/container_batch.py +175 -0
- research_loop/scripts/container_table.py +62 -0
- research_loop/scripts/dashboard.py +214 -0
- research_loop/scripts/decl_coverage.py +241 -0
- research_loop/scripts/decl_coverage_dec.py +72 -0
- research_loop/scripts/decl_dict_bench.py +115 -0
- research_loop/scripts/decl_duck_timing.py +88 -0
- research_loop/scripts/decl_fuzz.py +340 -0
- research_loop/scripts/decl_speceval_fuzz.py +194 -0
- research_loop/scripts/decl_triage.py +48 -0
- research_loop/scripts/decl_try.py +38 -0
- research_loop/scripts/decl_typecheck_sample.py +77 -0
- research_loop/scripts/declarative_draws.py +161 -0
- research_loop/scripts/declarative_ladder.py +162 -0
- research_loop/scripts/declarative_ladder_claude.py +40 -0
- research_loop/scripts/declarative_manual.py +207 -0
- research_loop/scripts/declarative_oneshot.py +241 -0
- research_loop/scripts/declarative_remeasure.py +71 -0
- research_loop/scripts/declarative_round.py +439 -0
- research_loop/scripts/declarative_tiers.py +259 -0
- research_loop/scripts/declarative_transplant.py +42 -0
- research_loop/scripts/duckdb_sf1_standin_ref.py +69 -0
- research_loop/scripts/env_verus.sh +2 -0
- research_loop/scripts/experiment_event_receiver.py +174 -0
- research_loop/scripts/fetch_verus_docs.sh +26 -0
- research_loop/scripts/fixture_rlimit_sweep.sh +28 -0
- research_loop/scripts/fragment_coverage.py +146 -0
- research_loop/scripts/fragment_diff.py +148 -0
- research_loop/scripts/fragment_gen.py +709 -0
- research_loop/scripts/fragment_pool.py +155 -0
- research_loop/scripts/fragment_round.py +52 -0
- research_loop/scripts/fragment_smith.py +98 -0
- research_loop/scripts/gcp_experiment_preflight.sh +201 -0
- research_loop/scripts/gen_tpch.py +35 -0
- research_loop/scripts/gendb_published_one_run.py +513 -0
- research_loop/scripts/guidance_draws.py +111 -0
- research_loop/scripts/in_duckdb_bench.py +94 -0
- research_loop/scripts/in_duckdb_install_run.py +96 -0
- research_loop/scripts/inject_fold_bound_proofs.py +1318 -0
- research_loop/scripts/inspect_run.py +34 -0
- research_loop/scripts/install_verus.md +41 -0
- research_loop/scripts/lemma_fail_wake.py +324 -0
- research_loop/scripts/lemma_guest_halt.sh +22 -0
- research_loop/scripts/lemma_laptop_lease_watch.sh +29 -0
- research_loop/scripts/load_ssb_sf1.py +88 -0
- research_loop/scripts/local_e2e_gendb_docker.sh +5 -0
- research_loop/scripts/local_e2e_gendb_suite.py +129 -0
- research_loop/scripts/local_e2e_gendb_tiny.py +216 -0
- research_loop/scripts/local_e2e_tiny_docker.py +791 -0
- research_loop/scripts/local_e2e_tiny_docker.sh +14 -0
- research_loop/scripts/local_e2e_tiny_queries.sql +29 -0
- research_loop/scripts/local_sandbox_agent_ladder.sh +38 -0
- research_loop/scripts/local_sandbox_agent_vs_standin.py +159 -0
- research_loop/scripts/local_sandbox_agent_vs_standin.sh +114 -0
- research_loop/scripts/local_sandbox_ssb_ladder.sh +82 -0
- research_loop/scripts/make_tpch.py +87 -0
- research_loop/scripts/manual_attempt.py +51 -0
- research_loop/scripts/mock_anthropic_api.py +318 -0
- research_loop/scripts/overnight_lemma.py +897 -0
- research_loop/scripts/overnight_lemma.sh +389 -0
- research_loop/scripts/prove_measure_competitive.py +226 -0
- research_loop/scripts/r24_rocket_fast_chain.sh +78 -0
- research_loop/scripts/r25_rocket_fast_chain.sh +78 -0
- research_loop/scripts/r26_rocket_fast_mid_chain.sh +108 -0
- research_loop/scripts/record_db_meta.py +57 -0
- research_loop/scripts/require_expect_sha.sh +25 -0
- research_loop/scripts/resample_eval.py +177 -0
- research_loop/scripts/results_table.py +107 -0
- research_loop/scripts/rewrite_agent_views.py +271 -0
- research_loop/scripts/rewrite_seq_views_prove_loop.py +51 -0
- research_loop/scripts/run_container_agent.py +357 -0
- research_loop/scripts/run_standin_tpch_sf1.sh +27 -0
- research_loop/scripts/save_par_fixtures.py +38 -0
- research_loop/scripts/sec_feasibility_timed.py +498 -0
- research_loop/scripts/spot_r15_agent_prove.py +187 -0
- research_loop/scripts/spot_r15_experiment.sh +158 -0
- research_loop/scripts/spot_resource_monitor.sh +48 -0
- research_loop/scripts/sqlsmith_trusted_coverage.py +540 -0
- research_loop/scripts/ssb13.py +61 -0
- research_loop/scripts/ssb13_write_queries.py +105 -0
- research_loop/scripts/tail_experiment_sse.sh +5 -0
- research_loop/scripts/tpch22.py +124 -0
- research_loop/scripts/tpch_shapes.py +77 -0
- research_loop/scripts/trusted_capability_score.py +394 -0
- research_loop/scripts/vm_bringup_experiment.sh +37 -0
- research_loop/scripts/zero_copy_oneshot.py +314 -0
- research_loop/scripts/zero_copy_prove.py +271 -0
- research_loop/scripts/zero_copy_round.py +88 -0
- research_loop/sec_table_assumptions.py +190 -0
- research_loop/spec_styles.py +36 -0
- research_loop/speed_bench/__init__.py +0 -0
- research_loop/speed_bench/ab.py +27 -0
- research_loop/speed_bench/kernels/Cargo.lock +7 -0
- research_loop/speed_bench/kernels/Cargo.toml +13 -0
- research_loop/speed_bench/kernels/src/main.rs +254 -0
- research_loop/speed_bench/measure.py +196 -0
- research_loop/speed_bench/oracle.py +113 -0
- research_loop/speed_bench/par_spike/README.md +40 -0
- research_loop/speed_bench/par_spike/bw.rs +44 -0
- research_loop/speed_bench/par_spike/par_measure.py +149 -0
- research_loop/speed_bench/par_spike/q01_par.rs +477 -0
- research_loop/speed_bench/par_spike/q03_par.rs +1179 -0
- research_loop/speed_bench/par_spike/q04_par.rs +832 -0
- research_loop/speed_bench/par_spike/results/bandwidth.txt +6 -0
- research_loop/speed_bench/par_spike/results/r100M.json +260 -0
- research_loop/speed_bench/par_spike/results/r20M.json +260 -0
- research_loop/speed_bench/par_spike/results/r2M.json +260 -0
- research_loop/speed_bench/par_spike/results/spawn_cost.txt +8 -0
- research_loop/speed_bench/par_spike/results/table.txt +9 -0
- research_loop/speed_bench/par_spike/spawn_cost.sh +10 -0
- research_loop/speed_bench/par_spike/table.py +23 -0
- research_loop/speed_bench/proved/q01_filter_sum.rs +170 -0
- research_loop/speed_bench/proved/q02_filter_count.rs +124 -0
- research_loop/speed_bench/proved/q03_group_sum.rs +396 -0
- research_loop/speed_bench/proved/q04_group_count.rs +345 -0
- research_loop/speed_bench/proved/q05_two_pred_sum.rs +189 -0
- research_loop/speed_bench/proved/q06_distinct.rs +320 -0
- research_loop/speed_bench/proved/q07_join_sum.rs +546 -0
- research_loop/speed_bench/proved/q08_range_count.rs +125 -0
- research_loop/speed_bench/proved/q09_group_two.rs +1286 -0
- research_loop/speed_bench/proved/q10_group_topk.rs +742 -0
- research_loop/speed_bench/queries.py +49 -0
- research_loop/speed_bench/report.py +28 -0
- research_loop/speed_bench/results/base_2M.err +0 -0
- research_loop/speed_bench/results/base_2M.json +342 -0
- research_loop/speed_bench/results/base_2M_r2.err +0 -0
- research_loop/speed_bench/results/base_2M_r2.json +382 -0
- research_loop/speed_bench/results/base_2M_r3.json +442 -0
- research_loop/speed_bench/results/base_2M_r3.out +10 -0
- research_loop/speed_bench/results/final_100M.err +0 -0
- research_loop/speed_bench/results/final_100M.json +422 -0
- research_loop/speed_bench/results/final_20M.err +0 -0
- research_loop/speed_bench/results/final_20M.json +422 -0
- research_loop/speed_bench/results/final_2M.err +0 -0
- research_loop/speed_bench/results/final_2M.json +442 -0
- research_loop/speed_bench/results/opt1.err +0 -0
- research_loop/speed_bench/results/opt1_2M.json +90 -0
- research_loop/speed_bench/run.py +201 -0
- research_loop/ssb_queries.py +172 -0
- research_loop/ssb_workload.py +317 -0
- research_loop/structural_catalog.py +46 -0
- research_loop/table_assumptions.py +349 -0
- research_loop/templates/runquery_agent.rs +19 -0
- research_loop/tpch_workload.py +104 -0
- research_loop/trust_configs/README.md +32 -0
- research_loop/trust_configs/__init__.py +50 -0
- research_loop/trust_configs/_types.py +12 -0
- research_loop/trust_configs/adversary_declarative0.py +32 -0
- research_loop/trust_configs/adversary_imperativespec0.py +40 -0
- research_loop/trust_configs/fast.py +19 -0
- research_loop/trust_configs/product.py +19 -0
- research_loop/trusted_adversarial/Cargo.lock +192 -0
- research_loop/trusted_adversarial/Cargo.toml +13 -0
- research_loop/trusted_adversarial/README.md +11 -0
- research_loop/trusted_adversarial/src/lib.rs +4 -0
- research_loop/trusted_adversarial/tests/abs_u64_exec.rs +151 -0
- research_loop/trusted_adversarial/tests/add_i64.rs +220 -0
- research_loop/trusted_adversarial/tests/add_u64.rs +167 -0
- research_loop/trusted_adversarial/tests/build_hashset_u32.rs +126 -0
- research_loop/trusted_adversarial/tests/build_zone_map_u32.rs +220 -0
- research_loop/trusted_adversarial/tests/case_when_u64_exec.rs +129 -0
- research_loop/trusted_adversarial/tests/decode_dict_str.rs +159 -0
- research_loop/trusted_adversarial/tests/may_satisfy_range_u32.rs +157 -0
- research_loop/trusted_adversarial/tests/mul_u64_u32.rs +169 -0
- research_loop/trusted_adversarial/tests/par_filter_sum_u64.rs +158 -0
- research_loop/trusted_adversarial/tests/par_sum_u64.rs +110 -0
- research_loop/trusted_adversarial/tests/probe_sum_u64.rs +165 -0
- research_loop/trusted_adversarial/tests/str_ilike_match_exec.rs +200 -0
- research_loop/trusted_adversarial/tests/str_like_contains_exec.rs +150 -0
- research_loop/trusted_adversarial/tests/str_like_prefix_exec.rs +141 -0
- research_loop/trusted_adversarial/tests/str_like_suffix_exec.rs +142 -0
- research_loop/trusted_adversarial/tests/str_like_underscore_match_exec.rs +199 -0
- research_loop/trusted_adversarial/tests/str_lower_exec.rs +136 -0
- research_loop/trusted_adversarial/tests/str_upper_exec.rs +159 -0
- research_loop/trusted_adversarial/tests/sub_u64_to_i64.rs +132 -0
- research_loop/trusted_families.py +237 -0
- research_loop/trusted_ret_bridge.py +1178 -0
- research_loop/trusted_semantic_oracle.py +636 -0
- research_loop/trusted_usage.py +124 -0
- research_loop/vendor/__init__.py +0 -0
- research_loop/vendor/verus_docs/COMMIT +1 -0
- research_loop/vendor/verus_docs/examples/README.md +23 -0
- research_loop/vendor/verus_docs/examples/adts.rs +85 -0
- research_loop/vendor/verus_docs/examples/adts_eq.rs +28 -0
- research_loop/vendor/verus_docs/examples/assert_by_compute.rs +453 -0
- research_loop/vendor/verus_docs/examples/assertions.rs +31 -0
- research_loop/vendor/verus_docs/examples/assorted_demo.rs +68 -0
- research_loop/vendor/verus_docs/examples/atomic_increment.rs +170 -0
- research_loop/vendor/verus_docs/examples/atomics.rs +139 -0
- research_loop/vendor/verus_docs/examples/basic_failure.rs +24 -0
- research_loop/vendor/verus_docs/examples/basic_lock1.rs +100 -0
- research_loop/vendor/verus_docs/examples/basic_lock2.rs +76 -0
- research_loop/vendor/verus_docs/examples/bitmap.rs +175 -0
- research_loop/vendor/verus_docs/examples/bitvector_basic.rs +126 -0
- research_loop/vendor/verus_docs/examples/bitvector_equivalence.rs +173 -0
- research_loop/vendor/verus_docs/examples/bitvector_garbage_collection.rs +177 -0
- research_loop/vendor/verus_docs/examples/broadcast_proof.rs +190 -0
- research_loop/vendor/verus_docs/examples/calc.rs +50 -0
- research_loop/vendor/verus_docs/examples/cargo-verus/library/Cargo.toml +15 -0
- research_loop/vendor/verus_docs/examples/cargo-verus/library/src/lib.rs +12 -0
- research_loop/vendor/verus_docs/examples/cargo-verus/run.sh +21 -0
- research_loop/vendor/verus_docs/examples/cargo-verus/test/Cargo.toml +13 -0
- research_loop/vendor/verus_docs/examples/cargo-verus/test/src/main.rs +16 -0
- research_loop/vendor/verus_docs/examples/cells.rs +24 -0
- research_loop/vendor/verus_docs/examples/cuckoo_hash_table/cuckoo.rs +1456 -0
- research_loop/vendor/verus_docs/examples/cuckoo_hash_table/main.rs +70 -0
- research_loop/vendor/verus_docs/examples/cuckoo_hash_table/rwlock.rs +683 -0
- research_loop/vendor/verus_docs/examples/datatypes.rs +102 -0
- research_loop/vendor/verus_docs/examples/debug.rs +80 -0
- research_loop/vendor/verus_docs/examples/debug_expand.rs +323 -0
- research_loop/vendor/verus_docs/examples/doubly_linked.rs +591 -0
- research_loop/vendor/verus_docs/examples/doubly_linked_xor.rs +493 -0
- research_loop/vendor/verus_docs/examples/entry_api.rs +52 -0
- research_loop/vendor/verus_docs/examples/even_cell.rs +54 -0
- research_loop/vendor/verus_docs/examples/exec_termination_example.rs +114 -0
- research_loop/vendor/verus_docs/examples/extensionality.rs +120 -0
- research_loop/vendor/verus_docs/examples/external.rs +18 -0
- research_loop/vendor/verus_docs/examples/float.rs +91 -0
- research_loop/vendor/verus_docs/examples/fun_ext.rs +35 -0
- research_loop/vendor/verus_docs/examples/generics.rs +75 -0
- research_loop/vendor/verus_docs/examples/guide/assert_by_compute.rs +89 -0
- research_loop/vendor/verus_docs/examples/guide/bst_map.rs +426 -0
- research_loop/vendor/verus_docs/examples/guide/bst_map_generic.rs +763 -0
- research_loop/vendor/verus_docs/examples/guide/bst_map_type_invariant.rs +420 -0
- research_loop/vendor/verus_docs/examples/guide/calc.rs +38 -0
- research_loop/vendor/verus_docs/examples/guide/const.rs +91 -0
- research_loop/vendor/verus_docs/examples/guide/datatypes.rs +130 -0
- research_loop/vendor/verus_docs/examples/guide/equality.rs +39 -0
- research_loop/vendor/verus_docs/examples/guide/exec_attr.rs +123 -0
- research_loop/vendor/verus_docs/examples/guide/exec_spec_unverified.rs +31 -0
- research_loop/vendor/verus_docs/examples/guide/exec_spec_verified.rs +36 -0
- research_loop/vendor/verus_docs/examples/guide/ext_equal.rs +86 -0
- research_loop/vendor/verus_docs/examples/guide/external_trait_specs.rs +88 -0
- research_loop/vendor/verus_docs/examples/guide/getting_started.rs +21 -0
- research_loop/vendor/verus_docs/examples/guide/higher_order_fns.rs +194 -0
- research_loop/vendor/verus_docs/examples/guide/integers.rs +112 -0
- research_loop/vendor/verus_docs/examples/guide/interior_mutability.rs +65 -0
- research_loop/vendor/verus_docs/examples/guide/invariants.rs +257 -0
- research_loop/vendor/verus_docs/examples/guide/iterators.rs +220 -0
- research_loop/vendor/verus_docs/examples/guide/lib_examples.rs +293 -0
- research_loop/vendor/verus_docs/examples/guide/logatom.rs +212 -0
- research_loop/vendor/verus_docs/examples/guide/modes.rs +372 -0
- research_loop/vendor/verus_docs/examples/guide/nonlinear_bitvec.rs +86 -0
- research_loop/vendor/verus_docs/examples/guide/opaque.rs +34 -0
- research_loop/vendor/verus_docs/examples/guide/overflow.rs +49 -0
- research_loop/vendor/verus_docs/examples/guide/pervasive_example.rs +18 -0
- research_loop/vendor/verus_docs/examples/guide/quants.rs +497 -0
- research_loop/vendor/verus_docs/examples/guide/recursion.rs +531 -0
- research_loop/vendor/verus_docs/examples/guide/references.rs +111 -0
- research_loop/vendor/verus_docs/examples/guide/requires_ensures.rs +30 -0
- research_loop/vendor/verus_docs/examples/guide/requires_ensures_edit.rs +84 -0
- research_loop/vendor/verus_docs/examples/guide/strings.rs +60 -0
- research_loop/vendor/verus_docs/examples/guide/traits.rs +186 -0
- research_loop/vendor/verus_docs/examples/helping.rs +449 -0
- research_loop/vendor/verus_docs/examples/imo_1988_6.rs +127 -0
- research_loop/vendor/verus_docs/examples/impl_basic.rs +68 -0
- research_loop/vendor/verus_docs/examples/integer_ring/circular_by_d.rs +165 -0
- research_loop/vendor/verus_docs/examples/integer_ring/integer_ring.rs +311 -0
- research_loop/vendor/verus_docs/examples/integer_ring/integer_ring_bound_check.rs +130 -0
- research_loop/vendor/verus_docs/examples/integers.rs +65 -0
- research_loop/vendor/verus_docs/examples/invariants.rs +40 -0
- research_loop/vendor/verus_docs/examples/logatom_lib.rs +496 -0
- research_loop/vendor/verus_docs/examples/mergesort.rs +188 -0
- research_loop/vendor/verus_docs/examples/modules.rs +36 -0
- research_loop/vendor/verus_docs/examples/multiset.rs +46 -0
- research_loop/vendor/verus_docs/examples/nevd_script.rs +213 -0
- research_loop/vendor/verus_docs/examples/overflow.rs +69 -0
- research_loop/vendor/verus_docs/examples/playground.rs +42 -0
- research_loop/vendor/verus_docs/examples/power_of_2.rs +212 -0
- research_loop/vendor/verus_docs/examples/prelude.rs +17 -0
- research_loop/vendor/verus_docs/examples/proposal-rw2022.rs +75 -0
- research_loop/vendor/verus_docs/examples/quantifiers.rs +100 -0
- research_loop/vendor/verus_docs/examples/recommends.rs +63 -0
- research_loop/vendor/verus_docs/examples/recursion.rs +116 -0
- research_loop/vendor/verus_docs/examples/recursive_types.rs +133 -0
- research_loop/vendor/verus_docs/examples/resource/agreement.rs +101 -0
- research_loop/vendor/verus_docs/examples/resource/count_to_two.rs +328 -0
- research_loop/vendor/verus_docs/examples/resource/log.rs +301 -0
- research_loop/vendor/verus_docs/examples/resource/monotonic_counter.rs +362 -0
- research_loop/vendor/verus_docs/examples/resource/oneshot.rs +481 -0
- research_loop/vendor/verus_docs/examples/rfmig_script.rs +255 -0
- research_loop/vendor/verus_docs/examples/rw2022_script.rs +189 -0
- research_loop/vendor/verus_docs/examples/rwlock_vstd.rs +65 -0
- research_loop/vendor/verus_docs/examples/scache/rwlock.rs +1180 -0
- research_loop/vendor/verus_docs/examples/set_from_vec.rs +58 -0
- research_loop/vendor/verus_docs/examples/state_machines/adder.rs +47 -0
- research_loop/vendor/verus_docs/examples/state_machines/adder_generic.rs +43 -0
- research_loop/vendor/verus_docs/examples/state_machines/adder_with_max.rs +68 -0
- research_loop/vendor/verus_docs/examples/state_machines/arc.rs +331 -0
- research_loop/vendor/verus_docs/examples/state_machines/conditional.rs +114 -0
- research_loop/vendor/verus_docs/examples/state_machines/counting.rs +267 -0
- research_loop/vendor/verus_docs/examples/state_machines/disk_example.rs +294 -0
- research_loop/vendor/verus_docs/examples/state_machines/dist_rwlock.rs +407 -0
- research_loop/vendor/verus_docs/examples/state_machines/flat_combine.rs +461 -0
- research_loop/vendor/verus_docs/examples/state_machines/interner.rs +293 -0
- research_loop/vendor/verus_docs/examples/state_machines/leader_election_complete.rs +182 -0
- research_loop/vendor/verus_docs/examples/state_machines/maps.rs +136 -0
- research_loop/vendor/verus_docs/examples/state_machines/petersons_algorithm.rs +176 -0
- research_loop/vendor/verus_docs/examples/state_machines/reference-examples/strategy_option.rs +92 -0
- research_loop/vendor/verus_docs/examples/state_machines/refinement.rs +121 -0
- research_loop/vendor/verus_docs/examples/state_machines/refinement_labels.rs +135 -0
- research_loop/vendor/verus_docs/examples/state_machines/rwlock.rs +197 -0
- research_loop/vendor/verus_docs/examples/state_machines/top_sort_dfs.rs +547 -0
- research_loop/vendor/verus_docs/examples/state_machines/tutorial/counting_to_2.rs +209 -0
- research_loop/vendor/verus_docs/examples/state_machines/tutorial/counting_to_n.rs +224 -0
- research_loop/vendor/verus_docs/examples/state_machines/tutorial/counting_to_n_atomic.rs +62 -0
- research_loop/vendor/verus_docs/examples/state_machines/tutorial/fifo.rs +766 -0
- research_loop/vendor/verus_docs/examples/state_machines/tutorial/pcell_example.rs +54 -0
- research_loop/vendor/verus_docs/examples/state_machines/tutorial/rc.rs +335 -0
- research_loop/vendor/verus_docs/examples/state_machines/tutorial/ref_cell.rs +435 -0
- research_loop/vendor/verus_docs/examples/state_machines/tutorial/unverified_counting_to_2.rs +58 -0
- research_loop/vendor/verus_docs/examples/state_machines/tutorial/unverified_counting_to_n +0 -0
- research_loop/vendor/verus_docs/examples/state_machines/tutorial/unverified_counting_to_n.rs +53 -0
- research_loop/vendor/verus_docs/examples/state_machines/tutorial/unverified_fifo.rs +132 -0
- research_loop/vendor/verus_docs/examples/state_machines/tutorial/unverified_rc.rs +96 -0
- research_loop/vendor/verus_docs/examples/statements.rs +60 -0
- research_loop/vendor/verus_docs/examples/statics.rs +173 -0
- research_loop/vendor/verus_docs/examples/std_test/chars_iterator.rs +31 -0
- research_loop/vendor/verus_docs/examples/std_test/num.rs +245 -0
- research_loop/vendor/verus_docs/examples/std_test/option_test.rs +63 -0
- research_loop/vendor/verus_docs/examples/std_test/rc_test.rs +44 -0
- research_loop/vendor/verus_docs/examples/std_test/result.rs +65 -0
- research_loop/vendor/verus_docs/examples/std_test/template.rs +12 -0
- research_loop/vendor/verus_docs/examples/std_test/vec_test.rs +28 -0
- research_loop/vendor/verus_docs/examples/std_test/vecdeque_test.rs +63 -0
- research_loop/vendor/verus_docs/examples/structural.rs +30 -0
- research_loop/vendor/verus_docs/examples/summer_school/chapter-1-22.rs +240 -0
- research_loop/vendor/verus_docs/examples/summer_school/chapter-2-1.rs +49 -0
- research_loop/vendor/verus_docs/examples/summer_school/chapter-2-2.rs +49 -0
- research_loop/vendor/verus_docs/examples/summer_school/chapter-2-3.rs +110 -0
- research_loop/vendor/verus_docs/examples/summer_school/chapter-6-1.rs +307 -0
- research_loop/vendor/verus_docs/examples/syntax.rs +692 -0
- research_loop/vendor/verus_docs/examples/syntax_attr.rs +339 -0
- research_loop/vendor/verus_docs/examples/test.rs +20 -0
- research_loop/vendor/verus_docs/examples/test_expand_errors.rs +238 -0
- research_loop/vendor/verus_docs/examples/thread.rs +34 -0
- research_loop/vendor/verus_docs/examples/trait_for_fn.rs +23 -0
- research_loop/vendor/verus_docs/examples/traits.rs +79 -0
- research_loop/vendor/verus_docs/examples/trigger_loops.rs +113 -0
- research_loop/vendor/verus_docs/examples/vectors.rs +158 -0
- research_loop/vendor/verus_docs/examples/verified_vec.rs +171 -0
- research_loop/vendor/verus_docs/guide/SUMMARY.md +212 -0
- research_loop/vendor/verus_docs/guide/assert-mut-ref.md +15 -0
- research_loop/vendor/verus_docs/guide/assert_assume.md +466 -0
- research_loop/vendor/verus_docs/guide/assert_by.md +46 -0
- research_loop/vendor/verus_docs/guide/assert_by_compute.md +120 -0
- research_loop/vendor/verus_docs/guide/binary_search.md +233 -0
- research_loop/vendor/verus_docs/guide/bitvec.md +166 -0
- research_loop/vendor/verus_docs/guide/break.md +31 -0
- research_loop/vendor/verus_docs/guide/breaking_proofs_into_pieces.md +147 -0
- research_loop/vendor/verus_docs/guide/broadcast_proof.md +86 -0
- research_loop/vendor/verus_docs/guide/calc.md +75 -0
- research_loop/vendor/verus_docs/guide/call-from-unverified-code.md +46 -0
- research_loop/vendor/verus_docs/guide/calling-unverified-from-verified.md +110 -0
- research_loop/vendor/verus_docs/guide/calling-verified-from-unverified.md +49 -0
- research_loop/vendor/verus_docs/guide/cargo_verus.md +233 -0
- research_loop/vendor/verus_docs/guide/checklist.md +23 -0
- research_loop/vendor/verus_docs/guide/complex_ownership.md +7 -0
- research_loop/vendor/verus_docs/guide/concurrency.md +10 -0
- research_loop/vendor/verus_docs/guide/const.md +83 -0
- research_loop/vendor/verus_docs/guide/container_bst.md +7 -0
- research_loop/vendor/verus_docs/guide/container_bst_all_source.md +23 -0
- research_loop/vendor/verus_docs/guide/container_bst_clone.md +114 -0
- research_loop/vendor/verus_docs/guide/container_bst_first_draft.md +180 -0
- research_loop/vendor/verus_docs/guide/container_bst_generic.md +83 -0
- research_loop/vendor/verus_docs/guide/container_bst_mut_refs.md +105 -0
- research_loop/vendor/verus_docs/guide/container_bst_type_invariant.md +189 -0
- research_loop/vendor/verus_docs/guide/contributed.md +5 -0
- research_loop/vendor/verus_docs/guide/datatypes.md +4 -0
- research_loop/vendor/verus_docs/guide/datatypes_enum.md +68 -0
- research_loop/vendor/verus_docs/guide/datatypes_struct.md +12 -0
- research_loop/vendor/verus_docs/guide/develop_proofs.md +4 -0
- research_loop/vendor/verus_docs/guide/equality.md +40 -0
- research_loop/vendor/verus_docs/guide/erasure.md +88 -0
- research_loop/vendor/verus_docs/guide/exec_attr.md +144 -0
- research_loop/vendor/verus_docs/guide/exec_closures.md +53 -0
- research_loop/vendor/verus_docs/guide/exec_funs_as_values.md +161 -0
- research_loop/vendor/verus_docs/guide/exec_lib.md +46 -0
- research_loop/vendor/verus_docs/guide/exec_spec.md +256 -0
- research_loop/vendor/verus_docs/guide/exec_termination.md +5 -0
- research_loop/vendor/verus_docs/guide/exec_to_spec.md +60 -0
- research_loop/vendor/verus_docs/guide/exists.md +82 -0
- research_loop/vendor/verus_docs/guide/extensional_equality.md +72 -0
- research_loop/vendor/verus_docs/guide/external_trait_specifications.md +128 -0
- research_loop/vendor/verus_docs/guide/features.md +435 -0
- research_loop/vendor/verus_docs/guide/for.md +20 -0
- research_loop/vendor/verus_docs/guide/forall.md +198 -0
- research_loop/vendor/verus_docs/guide/getting_started.md +10 -0
- research_loop/vendor/verus_docs/guide/getting_started_cmd_line.md +91 -0
- research_loop/vendor/verus_docs/guide/getting_started_vscode.md +91 -0
- research_loop/vendor/verus_docs/guide/ghost_vs_exec.md +93 -0
- research_loop/vendor/verus_docs/guide/graphics/mut-ref-cons-example-1.png +0 -0
- research_loop/vendor/verus_docs/guide/graphics/mut-ref-cons-example-2.png +0 -0
- research_loop/vendor/verus_docs/guide/graphics/verus-analyzer-error-example.png +0 -0
- research_loop/vendor/verus_docs/guide/graphics/verus-rust.svg +254 -0
- research_loop/vendor/verus_docs/guide/graphics/verusdoc-example.png +0 -0
- research_loop/vendor/verus_docs/guide/guarantees.md +3 -0
- research_loop/vendor/verus_docs/guide/higher-order-fns.md +3 -0
- research_loop/vendor/verus_docs/guide/ide_support.md +23 -0
- research_loop/vendor/verus_docs/guide/induction.md +185 -0
- research_loop/vendor/verus_docs/guide/install-singular.md +19 -0
- research_loop/vendor/verus_docs/guide/integers.md +195 -0
- research_loop/vendor/verus_docs/guide/interacting-with-unverified-code.md +7 -0
- research_loop/vendor/verus_docs/guide/interior_mutability.md +92 -0
- research_loop/vendor/verus_docs/guide/invariants.md +231 -0
- research_loop/vendor/verus_docs/guide/iterator-specs.md +109 -0
- research_loop/vendor/verus_docs/guide/iterators.md +68 -0
- research_loop/vendor/verus_docs/guide/lex_mutual.md +51 -0
- research_loop/vendor/verus_docs/guide/llmforverusproof.md +245 -0
- research_loop/vendor/verus_docs/guide/llms.md +3 -0
- research_loop/vendor/verus_docs/guide/logatom-call.md +85 -0
- research_loop/vendor/verus_docs/guide/logatom-open.md +64 -0
- research_loop/vendor/verus_docs/guide/logatom-spec.md +132 -0
- research_loop/vendor/verus_docs/guide/logatom.md +97 -0
- research_loop/vendor/verus_docs/guide/memory-safety.md +77 -0
- research_loop/vendor/verus_docs/guide/modes.md +37 -0
- research_loop/vendor/verus_docs/guide/multitriggers.md +249 -0
- research_loop/vendor/verus_docs/guide/mutable-references.md +548 -0
- research_loop/vendor/verus_docs/guide/mutation-references-borrowing.md +52 -0
- research_loop/vendor/verus_docs/guide/nonlinear.md +314 -0
- research_loop/vendor/verus_docs/guide/opaque.md +17 -0
- research_loop/vendor/verus_docs/guide/operators.md +64 -0
- research_loop/vendor/verus_docs/guide/overflow.md +57 -0
- research_loop/vendor/verus_docs/guide/overview.md +91 -0
- research_loop/vendor/verus_docs/guide/performance.md +10 -0
- research_loop/vendor/verus_docs/guide/pervasive.md +52 -0
- research_loop/vendor/verus_docs/guide/pointers.md +1 -0
- research_loop/vendor/verus_docs/guide/prefix-and-or.md +35 -0
- research_loop/vendor/verus_docs/guide/profiling.md +103 -0
- research_loop/vendor/verus_docs/guide/projects.md +6 -0
- research_loop/vendor/verus_docs/guide/proof_functions.md +102 -0
- research_loop/vendor/verus_docs/guide/quantproofs.md +124 -0
- research_loop/vendor/verus_docs/guide/quants.md +50 -0
- research_loop/vendor/verus_docs/guide/recursion.md +133 -0
- research_loop/vendor/verus_docs/guide/recursion_loops.md +19 -0
- research_loop/vendor/verus_docs/guide/ref-extensional-equality.md +27 -0
- research_loop/vendor/verus_docs/guide/reference-as.md +71 -0
- research_loop/vendor/verus_docs/guide/reference-assert-by-prover.md +52 -0
- research_loop/vendor/verus_docs/guide/reference-assert-by.md +25 -0
- research_loop/vendor/verus_docs/guide/reference-assert-forall-by.md +31 -0
- research_loop/vendor/verus_docs/guide/reference-assert.md +12 -0
- research_loop/vendor/verus_docs/guide/reference-assume-specification.md +103 -0
- research_loop/vendor/verus_docs/guide/reference-assume.md +25 -0
- research_loop/vendor/verus_docs/guide/reference-at-sign.md +22 -0
- research_loop/vendor/verus_docs/guide/reference-attributes.md +297 -0
- research_loop/vendor/verus_docs/guide/reference-chained-op.md +24 -0
- research_loop/vendor/verus_docs/guide/reference-decreases-to.md +65 -0
- research_loop/vendor/verus_docs/guide/reference-decreases.md +132 -0
- research_loop/vendor/verus_docs/guide/reference-exec-signature.md +44 -0
- research_loop/vendor/verus_docs/guide/reference-flag-record.md +6 -0
- research_loop/vendor/verus_docs/guide/reference-global.md +68 -0
- research_loop/vendor/verus_docs/guide/reference-has.md +42 -0
- research_loop/vendor/verus_docs/guide/reference-implication.md +33 -0
- research_loop/vendor/verus_docs/guide/reference-is.md +28 -0
- research_loop/vendor/verus_docs/guide/reference-matches.md +36 -0
- research_loop/vendor/verus_docs/guide/reference-opens-invariants.md +40 -0
- research_loop/vendor/verus_docs/guide/reference-pointers-cells.md +7 -0
- research_loop/vendor/verus_docs/guide/reference-proof-signature.md +65 -0
- research_loop/vendor/verus_docs/guide/reference-prover-mode-bit-vector.md +65 -0
- research_loop/vendor/verus_docs/guide/reference-prover-mode-compute.md +55 -0
- research_loop/vendor/verus_docs/guide/reference-prover-mode-integer-ring.md +33 -0
- research_loop/vendor/verus_docs/guide/reference-prover-mode-nonlinear.md +39 -0
- research_loop/vendor/verus_docs/guide/reference-recommends.md +3 -0
- research_loop/vendor/verus_docs/guide/reference-returns.md +28 -0
- research_loop/vendor/verus_docs/guide/reference-reveal-hide.md +32 -0
- research_loop/vendor/verus_docs/guide/reference-reveal-strlit.md +24 -0
- research_loop/vendor/verus_docs/guide/reference-signature-fnonce.md +26 -0
- research_loop/vendor/verus_docs/guide/reference-signature-inheritance.md +22 -0
- research_loop/vendor/verus_docs/guide/reference-spec-index.md +23 -0
- research_loop/vendor/verus_docs/guide/reference-spec-signature.md +57 -0
- research_loop/vendor/verus_docs/guide/reference-specification-language.md +7 -0
- research_loop/vendor/verus_docs/guide/reference-type-invariants.md +100 -0
- research_loop/vendor/verus_docs/guide/reference-types.md +263 -0
- research_loop/vendor/verus_docs/guide/reference-unions.md +45 -0
- research_loop/vendor/verus_docs/guide/reference-unwind-sig.md +47 -0
- research_loop/vendor/verus_docs/guide/reference-var-modes.md +246 -0
- research_loop/vendor/verus_docs/guide/requires_ensures.md +205 -0
- research_loop/vendor/verus_docs/guide/smt_failures.md +64 -0
- research_loop/vendor/verus_docs/guide/smt_perf_overview.md +14 -0
- research_loop/vendor/verus_docs/guide/spec-arithmetic.md +100 -0
- research_loop/vendor/verus_docs/guide/spec-bit-ops.md +52 -0
- research_loop/vendor/verus_docs/guide/spec-choose.md +56 -0
- research_loop/vendor/verus_docs/guide/spec-equality.md +28 -0
- research_loop/vendor/verus_docs/guide/spec-expressions.md +43 -0
- research_loop/vendor/verus_docs/guide/spec-operator-precedence.md +31 -0
- research_loop/vendor/verus_docs/guide/spec-quantifiers.md +63 -0
- research_loop/vendor/verus_docs/guide/spec-rust-subset.md +105 -0
- research_loop/vendor/verus_docs/guide/spec_closures.md +32 -0
- research_loop/vendor/verus_docs/guide/spec_functions.md +76 -0
- research_loop/vendor/verus_docs/guide/spec_lib.md +232 -0
- research_loop/vendor/verus_docs/guide/spec_vs_proof.md +122 -0
- research_loop/vendor/verus_docs/guide/specs.md +11 -0
- research_loop/vendor/verus_docs/guide/static.md +20 -0
- research_loop/vendor/verus_docs/guide/strings.md +72 -0
- research_loop/vendor/verus_docs/guide/syntax.md +7 -0
- research_loop/vendor/verus_docs/guide/tcb.md +41 -0
- research_loop/vendor/verus_docs/guide/traits.md +174 -0
- research_loop/vendor/verus_docs/guide/triangle.md +45 -0
- research_loop/vendor/verus_docs/guide/trigger-annotations.md +102 -0
- research_loop/vendor/verus_docs/guide/verus_macro_intro.md +45 -0
- research_loop/vendor/verus_docs/guide/verusdoc.md +76 -0
- research_loop/vendor/verus_docs/guide/vstd.md +8 -0
- research_loop/vendor/verus_docs/guide/while.md +74 -0
- research_loop/vendor/verus_docs/tests/adts.rs +1990 -0
- research_loop/vendor/verus_docs/tests/adts_generics.rs +254 -0
- research_loop/vendor/verus_docs/tests/adts_opaque.rs +194 -0
- research_loop/vendor/verus_docs/tests/arrays.rs +508 -0
- research_loop/vendor/verus_docs/tests/assert_bitvector_by.rs +76 -0
- research_loop/vendor/verus_docs/tests/assert_by_compute.rs +848 -0
- research_loop/vendor/verus_docs/tests/assert_forall_by.rs +308 -0
- research_loop/vendor/verus_docs/tests/assoc_type_impls.rs +1043 -0
- research_loop/vendor/verus_docs/tests/async_functions.rs +180 -0
- research_loop/vendor/verus_docs/tests/atomic_lib.rs +1047 -0
- research_loop/vendor/verus_docs/tests/atomics.rs +383 -0
- research_loop/vendor/verus_docs/tests/basic.rs +831 -0
- research_loop/vendor/verus_docs/tests/bitvector.rs +1573 -0
- research_loop/vendor/verus_docs/tests/boundary_suggestions.rs +425 -0
- research_loop/vendor/verus_docs/tests/broadcast_forall.rs +660 -0
- research_loop/vendor/verus_docs/tests/btree.rs +482 -0
- research_loop/vendor/verus_docs/tests/calc.rs +115 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/unverified/consume_basic_verified_lib/Cargo.toml +11 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/unverified/consume_basic_verified_lib/src/main.rs +7 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/unverified/consume_machines/Cargo.toml +11 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/unverified/consume_machines/src/lib.rs +4 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/unverified/consume_vstd/Cargo.toml +11 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/unverified/consume_vstd/src/lib.rs +4 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/unverified/spec_use/Cargo.toml +11 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/unverified/spec_use/src/lib.rs +7 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/unverified/structural/Cargo.toml +11 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/unverified/structural/src/main.rs +13 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/basic_verified_lib/Cargo.toml +12 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/basic_verified_lib/src/lib.rs +38 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/basic_verified_lib_consumer_verified/Cargo.toml +13 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/basic_verified_lib_consumer_verified/src/main.rs +11 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/big_rlimit/Cargo.toml +13 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/big_rlimit/src/lib.rs +31 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/lib_with_bin/Cargo.toml +12 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/lib_with_bin/src/lib.rs +11 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/lib_with_bin/src/main.rs +7 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/spec_def/Cargo.toml +12 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/spec_def/src/lib.rs +31 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/spec_def2/Cargo.toml +12 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/spec_def2/src/lib.rs +19 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/spec_use/Cargo.toml +15 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/spec_use/src/lib.rs +35 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/state_machine_macro_usage/Cargo.toml +13 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/state_machine_macro_usage/src/lib.rs +266 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/transitive1/Cargo.toml +12 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/transitive1/src/lib.rs +10 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/transitive2/Cargo.toml +13 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/transitive2/src/lib.rs +15 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/transitive3/Cargo.toml +13 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/transitive3/src/lib.rs +16 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/vstd_macro_usage/Cargo.toml +12 -0
- research_loop/vendor/verus_docs/tests/cargo-tests/verified/vstd_macro_usage/src/lib.rs +49 -0
- research_loop/vendor/verus_docs/tests/cargo.rs +164 -0
- research_loop/vendor/verus_docs/tests/cell_lib.rs +405 -0
- research_loop/vendor/verus_docs/tests/choose.rs +266 -0
- research_loop/vendor/verus_docs/tests/closures.rs +168 -0
- research_loop/vendor/verus_docs/tests/common/mod.rs +981 -0
- research_loop/vendor/verus_docs/tests/compile.rs +32 -0
- research_loop/vendor/verus_docs/tests/consts.rs +666 -0
- research_loop/vendor/verus_docs/tests/contrib.rs +84 -0
- research_loop/vendor/verus_docs/tests/control_flow.rs +1249 -0
- research_loop/vendor/verus_docs/tests/core_special_setup.rs +87 -0
- research_loop/vendor/verus_docs/tests/cow.rs +49 -0
- research_loop/vendor/verus_docs/tests/dafny_axioms.rs +48 -0
- research_loop/vendor/verus_docs/tests/default_trait.rs +265 -0
- research_loop/vendor/verus_docs/tests/eq_cmp.rs +123 -0
- research_loop/vendor/verus_docs/tests/erase.rs +30 -0
- research_loop/vendor/verus_docs/tests/examples.rs +162 -0
- research_loop/vendor/verus_docs/tests/exec_closures.rs +1883 -0
- research_loop/vendor/verus_docs/tests/exec_spec_unverified.rs +322 -0
- research_loop/vendor/verus_docs/tests/exec_spec_verified.rs +2043 -0
- research_loop/vendor/verus_docs/tests/exec_termination.rs +411 -0
- research_loop/vendor/verus_docs/tests/expand_errors.rs +458 -0
- research_loop/vendor/verus_docs/tests/expr_stmts.rs +90 -0
- research_loop/vendor/verus_docs/tests/ext_equal.rs +592 -0
- research_loop/vendor/verus_docs/tests/external_fn_specification.rs +1644 -0
- research_loop/vendor/verus_docs/tests/external_traits.rs +899 -0
- research_loop/vendor/verus_docs/tests/external_type_specification.rs +490 -0
- research_loop/vendor/verus_docs/tests/float.rs +227 -0
- research_loop/vendor/verus_docs/tests/fndef_types.rs +2064 -0
- research_loop/vendor/verus_docs/tests/functions.rs +133 -0
- research_loop/vendor/verus_docs/tests/generics.rs +177 -0
- research_loop/vendor/verus_docs/tests/harness.rs +83 -0
- research_loop/vendor/verus_docs/tests/hash.rs +972 -0
- research_loop/vendor/verus_docs/tests/impl.rs +336 -0
- research_loop/vendor/verus_docs/tests/inline.rs +246 -0
- research_loop/vendor/verus_docs/tests/integer_ring.rs +313 -0
- research_loop/vendor/verus_docs/tests/integers.rs +616 -0
- research_loop/vendor/verus_docs/tests/iterators.rs +491 -0
- research_loop/vendor/verus_docs/tests/layout.rs +500 -0
- research_loop/vendor/verus_docs/tests/let_else.rs +176 -0
- research_loop/vendor/verus_docs/tests/lifetime.rs +2062 -0
- research_loop/vendor/verus_docs/tests/literals.rs +68 -0
- research_loop/vendor/verus_docs/tests/logatom.rs +693 -0
- research_loop/vendor/verus_docs/tests/loops.rs +1881 -0
- research_loop/vendor/verus_docs/tests/loops_havoc.rs +571 -0
- research_loop/vendor/verus_docs/tests/loops_no_spinoff.rs +1440 -0
- research_loop/vendor/verus_docs/tests/maps.rs +186 -0
- research_loop/vendor/verus_docs/tests/marker_traits.rs +375 -0
- research_loop/vendor/verus_docs/tests/match.rs +1393 -0
- research_loop/vendor/verus_docs/tests/modes.rs +1782 -0
- research_loop/vendor/verus_docs/tests/modules.rs +408 -0
- research_loop/vendor/verus_docs/tests/multiset.rs +128 -0
- research_loop/vendor/verus_docs/tests/mut_refs.rs +5279 -0
- research_loop/vendor/verus_docs/tests/mut_refs_closures.rs +850 -0
- research_loop/vendor/verus_docs/tests/mut_refs_libs.rs +478 -0
- research_loop/vendor/verus_docs/tests/mut_refs_loops.rs +2210 -0
- research_loop/vendor/verus_docs/tests/mut_refs_modes.rs +1986 -0
- research_loop/vendor/verus_docs/tests/mut_refs_old.rs +624 -0
- research_loop/vendor/verus_docs/tests/mut_refs_patterns.rs +4253 -0
- research_loop/vendor/verus_docs/tests/mut_refs_slices_arrays.rs +1969 -0
- research_loop/vendor/verus_docs/tests/mut_refs_temporaries.rs +3938 -0
- research_loop/vendor/verus_docs/tests/mut_refs_time_travel.rs +1801 -0
- research_loop/vendor/verus_docs/tests/mut_refs_unions.rs +989 -0
- research_loop/vendor/verus_docs/tests/mutable_params.rs +589 -0
- research_loop/vendor/verus_docs/tests/nested_items.rs +243 -0
- research_loop/vendor/verus_docs/tests/never_type.rs +104 -0
- research_loop/vendor/verus_docs/tests/no_cheating.rs +107 -0
- research_loop/vendor/verus_docs/tests/nonlinear.rs +289 -0
- research_loop/vendor/verus_docs/tests/opaque_reveal.rs +487 -0
- research_loop/vendor/verus_docs/tests/opaque_types.rs +586 -0
- research_loop/vendor/verus_docs/tests/open_invariant.rs +1033 -0
- research_loop/vendor/verus_docs/tests/operators.rs +354 -0
- research_loop/vendor/verus_docs/tests/option.rs +126 -0
- research_loop/vendor/verus_docs/tests/output_json.rs +272 -0
- research_loop/vendor/verus_docs/tests/overflow.rs +341 -0
- research_loop/vendor/verus_docs/tests/partial_eq.rs +21 -0
- research_loop/vendor/verus_docs/tests/proof_closures.rs +1867 -0
- research_loop/vendor/verus_docs/tests/proof_in_spec.rs +489 -0
- research_loop/vendor/verus_docs/tests/proph.rs +68 -0
- research_loop/vendor/verus_docs/tests/prophecy.rs +859 -0
- research_loop/vendor/verus_docs/tests/quantifiers.rs +324 -0
- research_loop/vendor/verus_docs/tests/raw_ptrs.rs +393 -0
- research_loop/vendor/verus_docs/tests/real.rs +74 -0
- research_loop/vendor/verus_docs/tests/recommends.rs +99 -0
- research_loop/vendor/verus_docs/tests/recursion.rs +2357 -0
- research_loop/vendor/verus_docs/tests/recursive_types.rs +412 -0
- research_loop/vendor/verus_docs/tests/refs.rs +658 -0
- research_loop/vendor/verus_docs/tests/regression.rs +1534 -0
- research_loop/vendor/verus_docs/tests/results.rs +84 -0
- research_loop/vendor/verus_docs/tests/return.rs +235 -0
- research_loop/vendor/verus_docs/tests/returns_postcondition.rs +484 -0
- research_loop/vendor/verus_docs/tests/safe_api.rs +443 -0
- research_loop/vendor/verus_docs/tests/scope.rs +168 -0
- research_loop/vendor/verus_docs/tests/seqs.rs +130 -0
- research_loop/vendor/verus_docs/tests/sets.rs +187 -0
- research_loop/vendor/verus_docs/tests/shr_ref_struct_wrap.rs +381 -0
- research_loop/vendor/verus_docs/tests/size_of.rs +240 -0
- research_loop/vendor/verus_docs/tests/slices.rs +571 -0
- research_loop/vendor/verus_docs/tests/spec_derive.rs +552 -0
- research_loop/vendor/verus_docs/tests/state_machines.rs +9223 -0
- research_loop/vendor/verus_docs/tests/std.rs +1648 -0
- research_loop/vendor/verus_docs/tests/strings.rs +848 -0
- research_loop/vendor/verus_docs/tests/struct_with_invariants.rs +50 -0
- research_loop/vendor/verus_docs/tests/structural.rs +111 -0
- research_loop/vendor/verus_docs/tests/summer_school.rs +1034 -0
- research_loop/vendor/verus_docs/tests/syntax_attr.rs +1680 -0
- research_loop/vendor/verus_docs/tests/traits.rs +4817 -0
- research_loop/vendor/verus_docs/tests/traits_dyn.rs +433 -0
- research_loop/vendor/verus_docs/tests/traits_extend_ensures.rs +858 -0
- research_loop/vendor/verus_docs/tests/traits_modules.rs +1046 -0
- research_loop/vendor/verus_docs/tests/traits_modules_pub_crate.rs +1048 -0
- research_loop/vendor/verus_docs/tests/triggers.rs +650 -0
- research_loop/vendor/verus_docs/tests/ui.rs +33 -0
- research_loop/vendor/verus_docs/tests/unions.rs +379 -0
- research_loop/vendor/verus_docs/tests/unsafe.rs +26 -0
- research_loop/vendor/verus_docs/tests/unwind.rs +607 -0
- research_loop/vendor/verus_docs/tests/user_defined_type_invariants.rs +2716 -0
- research_loop/vendor/verus_docs/tests/vec.rs +68 -0
- research_loop/vendor/verus_docs/tests/verifier_assume_allow.rs +81 -0
- research_loop/vendor/verus_docs/tests/when_used_as_spec.rs +287 -0
- research_loop/vendor/verus_docs/tests/z3_restart.rs +172 -0
- research_loop/verus_lib/eq_join.rs +17658 -0
- research_loop/verus_lib/eq_str_view_check.rs +237 -0
- research_loop/verus_lib/stream_lib.rs +408 -0
- research_loop/working_query/Cargo.lock +14 -0
- research_loop/working_query/Cargo.toml +17 -0
- research_loop/working_query/src/cols.rs +60 -0
- research_loop/working_query/src/main.rs +34 -0
- research_loop/working_query/src/query.rs +23 -0
- research_loop/working_query/src/spec.rs +201 -0
- research_loop/zero_copy.py +361 -0
- research_loop/zero_copy_ffi.rs +196 -0
- research_loop/zero_copy_lib.rs +155 -0
- sql_transpiler/__init__.py +18 -0
- sql_transpiler/agg_push.py +47 -0
- sql_transpiler/agg_push_str.py +45 -0
- sql_transpiler/column_projection.py +51 -0
- sql_transpiler/transpiler.py +1071 -0
- sql_transpiler/value_bounds.py +115 -0
- verus_transpiler/__init__.py +18 -0
- verus_transpiler/agg_push.py +132 -0
- verus_transpiler/agg_push_str.py +119 -0
- verus_transpiler/col_exprs.py +265 -0
- verus_transpiler/column_projection.py +312 -0
- verus_transpiler/dialect_flags.py +33 -0
- verus_transpiler/eq_join_prelude.py +136 -0
- verus_transpiler/joins.py +11042 -0
- verus_transpiler/order_limit.py +219 -0
- verus_transpiler/parse_sql.py +2998 -0
- verus_transpiler/query_tables.py +77 -0
- verus_transpiler/recursive_cte.py +18 -0
- verus_transpiler/ret_type_key.py +61 -0
- verus_transpiler/rust_ident.py +68 -0
- verus_transpiler/subqueries.py +1912 -0
- verus_transpiler/templates.py +250 -0
- verus_transpiler/transpiler.py +2426 -0
- verus_transpiler/value_bounds.py +2447 -0
- verus_transpiler/windows.py +150 -0
db_extension/AGENT.md
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Lemma OpenRouter agent
|
|
2
|
+
|
|
3
|
+
Schema-driven **Verus** optimizer (not SSB-only). The host transpiles SQL with a caller-supplied
|
|
4
|
+
or catalog-resolved schema via `verus_transpiler`; agents edit `runquery_agent.rs` against
|
|
5
|
+
`/context/ro/spec.rs`. Legacy Dafny paths live under `research_loop/dafny_legacy/` and are not
|
|
6
|
+
used by the default optimizer.
|
|
7
|
+
|
|
8
|
+
## Schema
|
|
9
|
+
|
|
10
|
+
Pass an explicit schema dict to `run_optimization_loop(..., schema={...})`, set
|
|
11
|
+
`LEMMA_SCHEMA_JSON=/path/to/schema.json`, or use `DatabaseCatalog` against the DuckDB
|
|
12
|
+
file that holds the workload tables (`LEMMA_DUCKDB_PATH`). Unknown tables fail loudly —
|
|
13
|
+
there is no hardcoded SSB/TPCH schema invent path.
|
|
14
|
+
|
|
15
|
+
## Architecture
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Host
|
|
19
|
+
├─ OpenRouter ReAct (LLM on host) [default]
|
|
20
|
+
├─ EgressBridge allowlist UDS [CLI-in-Docker: Cursor/Anthropic/…]
|
|
21
|
+
├─ McpSocketServer UDS → measure_core
|
|
22
|
+
└─ tool/CLI container (--network none)
|
|
23
|
+
├─ tools_worker / agent CLI
|
|
24
|
+
├─ mcp_proxy (stdio MCP → MCP sock)
|
|
25
|
+
└─ egress sidecar HTTPS_PROXY → only vendor API hosts
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**CLI:** mount `~/.cursor` (or `AGENT_CREDENTIALS_DIR`), pass `AGENT_ENV` keys, egress
|
|
29
|
+
allowlist by profile (`cursor`, `anthropic`, …). Non-API web is blocked by the proxy.
|
|
30
|
+
With egress on, Cursor also gets `CURSOR_FORCED_SHELL_EGRESS=1` so **WebSearch/WebFetch**
|
|
31
|
+
are disabled automatically (they run in Cursor cloud via `api2`, not as local curls).
|
|
32
|
+
See `research_loop/AGENT_SANDBOX.md`.
|
|
33
|
+
|
|
34
|
+
**Real MCP:** `mcp_tool_specs.py` → host FastMCP, sandbox `mcp_proxy`, OpenRouter defs.
|
|
35
|
+
|
|
36
|
+
### Tools
|
|
37
|
+
|
|
38
|
+
| Tool | Action |
|
|
39
|
+
|------|--------|
|
|
40
|
+
| `validate_runquery` | Body lint |
|
|
41
|
+
| `run_runquery` | Host harness; `run_id` + metrics |
|
|
42
|
+
| `submit_runquery` / `submit` | Mark only |
|
|
43
|
+
| `get_submit_result` / `list_runs` / `mcp_health` | Read back |
|
|
44
|
+
|
|
45
|
+
### Register MCP (CLI on host)
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
{
|
|
49
|
+
"mcpServers": {
|
|
50
|
+
"lemma-host": {
|
|
51
|
+
"command": "uv",
|
|
52
|
+
"args": ["run", "python", "-m", "db_extension.agent.mcp_host", "--transport", "stdio"],
|
|
53
|
+
"env": {
|
|
54
|
+
"LEMMA_AGENT_WORKSPACE": "/ABS/PATH/research_loop/agent_workspace",
|
|
55
|
+
"LEMMA_QUERY_ID": "1"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Inside Docker CLI mode, entrypoint writes `.cursor/mcp.json` → `python -m lemma_agent.mcp_proxy`.
|
|
63
|
+
|
|
64
|
+
## CLI-in-Docker (Cursor / other CLIs)
|
|
65
|
+
|
|
66
|
+
`--network none` + **allowlisted egress** (not open internet):
|
|
67
|
+
|
|
68
|
+
- Mount `AGENT_CREDENTIALS_DIR` (default `~/.cursor`) → `/root/.cursor`
|
|
69
|
+
- Pass `AGENT_ENV` keys (e.g. `CURSOR_API_KEY`)
|
|
70
|
+
- Host `EgressBridge` allowlist by `AGENT_EGRESS_PROFILE` (`cursor`, `anthropic`, …)
|
|
71
|
+
- Sandbox `HTTPS_PROXY=http://127.0.0.1:8118` → only those API hosts
|
|
72
|
+
- MCP measure via Unix socket / `mcp_proxy`
|
|
73
|
+
|
|
74
|
+
See `research_loop/AGENT_SANDBOX.md`. Rebuild: `docker build -t lemma-agent:latest -f docker/agent/Dockerfile .`
|
|
75
|
+
|
|
76
|
+
## Run
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
docker build -t lemma-agent:latest -f docker/agent/Dockerfile .
|
|
80
|
+
MOCK_AGENT=0 OPENROUTER_API_KEY=sk-or-... uv run python -m db_extension.run_optimizer "SELECT ..."
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Custom schema example:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
export LEMMA_SCHEMA_JSON=/path/to/schema.json # {"V":"int"} or multi-table JSON
|
|
87
|
+
uv run python -c "
|
|
88
|
+
from db_extension.optimizer import run_optimization_loop
|
|
89
|
+
print(run_optimization_loop('SELECT SUM(v) FROM t', schema={'V':'int'}, use_mock=True))
|
|
90
|
+
"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Tests
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
uv run python -m pytest db_extension/tests/test_measure_core.py db_extension/tests/test_mcp_socket.py db_extension/tests/test_mcp_host.py db_extension/tests/test_mcp_registry_sync.py db_extension/tests/test_model_bridge.py db_extension/tests/test_tools_worker_paths.py -q
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Run artifacts (GCP harvest)
|
|
100
|
+
|
|
101
|
+
Each optimizer job **with ``LEMMA_RESEARCH_LOG=1``** writes one harvest directory under
|
|
102
|
+
`research_loop/runs/<id>/`:
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
manifest.json
|
|
106
|
+
result.json
|
|
107
|
+
history.json
|
|
108
|
+
workspace/ # agent files, mcp_results/, egress_*.jsonl, trace.jsonl
|
|
109
|
+
logs/pipeline.log
|
|
110
|
+
logs/pipeline.jsonl
|
|
111
|
+
logs/docker_agent.*
|
|
112
|
+
logs/harness_iter*.json
|
|
113
|
+
logs/openrouter_meta_iter*.json
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
`research_loop/runs/LATEST` points at the most recent run (absolute path). Set automatically via
|
|
117
|
+
`LEMMA_RUN_DIR` and `LEMMA_AGENT_WORKSPACE` when research logging is on.
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
LEMMA_RESEARCH_LOG=1 # required for harvest dirs (default 0)
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Archive the whole directory for GCP: `tar czf run.tgz -C research_loop/runs <id>/` or `gsutil cp -r research_loop/runs/<id>/ gs://bucket/path/`.
|
|
124
|
+
|
|
125
|
+
For Spot/preemptible VMs, also set `LEMMA_EXPERIMENT_EVENT_URL` to a durable receiver (`research_loop/scripts/experiment_event_receiver.py`; see `holdout/EXPERIMENTS_GENDB.md`) so `query_end` summaries stream off-box as each query finishes.
|
db_extension/DEMO.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Lemma interactive demo
|
|
2
|
+
|
|
3
|
+
## Live demo (real agent)
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
chmod +x scripts/demo.sh
|
|
7
|
+
./scripts/demo.sh
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
Right pane (split terminal):
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
./scripts/demo_view/follow-agent-log.sh
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
This script:
|
|
17
|
+
|
|
18
|
+
1. Clears **all** cached optimized queries
|
|
19
|
+
2. Sets `LEMMA_DEMO=1`, `MOCK_AGENT=0`, `LEMMA_DATASET_SIZE=100000`
|
|
20
|
+
3. Drops you into the **official DuckDB CLI** (downloaded to `build/duckdb` on first run)
|
|
21
|
+
|
|
22
|
+
Requires the Cursor \`agent\` CLI on PATH (same auth as running \`agent\` in your shell).
|
|
23
|
+
|
|
24
|
+
## Mock demo (offline / no API key)
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
./scripts/mockdemo.sh
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Same UX, but seeds a hardcoded RunQuery body (`MOCK_AGENT=1`, `LEMMA_DATASET_SIZE=2000000`, no LLM).
|
|
31
|
+
|
|
32
|
+
Override query: `DEMO_QUERY_ID=5 ./scripts/demo.sh`
|
|
33
|
+
|
|
34
|
+
## In the DuckDB shell
|
|
35
|
+
|
|
36
|
+
```sql
|
|
37
|
+
-- (1) Vanilla (DuckDB prints its own timing after the result)
|
|
38
|
+
SELECT SUM(...) FROM lineorder_flat WHERE ...;
|
|
39
|
+
|
|
40
|
+
-- (2) Lemma (demo steps on stdout, then result)
|
|
41
|
+
SELECT lemma('SELECT SUM(...) FROM lineorder_flat WHERE ...');
|
|
42
|
+
|
|
43
|
+
-- (3) Run (2) again → cached 💾 path
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Env toggles
|
|
47
|
+
|
|
48
|
+
| Variable | `demo.sh` | `mockdemo.sh` |
|
|
49
|
+
|----------|-----------|---------------|
|
|
50
|
+
| `LEMMA_DEMO` | on | on |
|
|
51
|
+
| `MOCK_AGENT` | **0** (real agent) | **1** (fixture) |
|
|
52
|
+
| `LEMMA_DATASET_SIZE` | 100,000 | 2,000,000 |
|
|
53
|
+
| `LEMMA_LOG_LEVEL` | WARN | WARN |
|
|
54
|
+
|
|
55
|
+
Production `config.env` keeps demo **off**.
|
|
56
|
+
|
|
57
|
+
## Re-run fresh pipeline
|
|
58
|
+
|
|
59
|
+
Run the script again — it clears cache every time.
|
db_extension/__init__.py
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"""Sandboxed OpenRouter agent for Lemma RunQuery optimization."""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
# ``config`` imports the host's ``lemma_config``, which the container image does not have (this package is mounted into it): the three
|
|
5
|
+
# config names load on first use, so ``import lemma_agent.mcp_proxy`` works in the container.
|
|
6
|
+
_CONFIG_NAMES = ("AgentFlags", "load_agent_flags", "truthy")
|
|
7
|
+
|
|
8
|
+
__all__ = [
|
|
9
|
+
"AgentFlags",
|
|
10
|
+
"extract_marked_body",
|
|
11
|
+
"load_agent_flags",
|
|
12
|
+
"run_openrouter_agent_iteration",
|
|
13
|
+
"truthy",
|
|
14
|
+
"wrap_body_with_markers",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def __getattr__(name: str):
|
|
19
|
+
if name in _CONFIG_NAMES:
|
|
20
|
+
from . import config
|
|
21
|
+
|
|
22
|
+
return getattr(config, name)
|
|
23
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def extract_marked_body(*args, **kwargs):
|
|
27
|
+
from .extract import extract_marked_body as _fn
|
|
28
|
+
|
|
29
|
+
return _fn(*args, **kwargs)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def wrap_body_with_markers(*args, **kwargs):
|
|
33
|
+
from .extract import wrap_body_with_markers as _fn
|
|
34
|
+
|
|
35
|
+
return _fn(*args, **kwargs)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def run_openrouter_agent_iteration(*args, **kwargs):
|
|
39
|
+
from .harness import run_openrouter_agent_iteration as _run
|
|
40
|
+
|
|
41
|
+
return _run(*args, **kwargs)
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"""Convert Claude Code ``--output-format stream-json`` into the Cursor-style transcript.
|
|
2
|
+
|
|
3
|
+
Runs inside the agent container as the tail of the agent command:
|
|
4
|
+
``claude -p ... | python -m lemma_agent.claude_stream --raw <file>``.
|
|
5
|
+
stdout becomes ``agent_stream.jsonl`` (the entrypoint tees it), so the trace-reading
|
|
6
|
+
rules (thinking deltas, tool_call started/completed) work for both agents.
|
|
7
|
+
The untouched Claude lines go to ``--raw``.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import argparse
|
|
13
|
+
import json
|
|
14
|
+
import sys
|
|
15
|
+
import time
|
|
16
|
+
from typing import IO, Iterable, Iterator
|
|
17
|
+
|
|
18
|
+
_TOOL_KEYS = {
|
|
19
|
+
"Read": "readToolCall",
|
|
20
|
+
"Edit": "editToolCall",
|
|
21
|
+
"MultiEdit": "editToolCall",
|
|
22
|
+
"Write": "writeToolCall",
|
|
23
|
+
"Glob": "globToolCall",
|
|
24
|
+
"Grep": "grepToolCall",
|
|
25
|
+
"Bash": "shellToolCall",
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def _tool_call(name: str, tool_input: dict) -> tuple[str, dict]:
|
|
30
|
+
"""Return (cursor tool_call key, args) for one Claude ``tool_use`` block."""
|
|
31
|
+
if name.startswith("mcp__"):
|
|
32
|
+
_, server, tool = name.split("__", 2)
|
|
33
|
+
return "mcpToolCall", {"server": server, "name": tool, "args": tool_input}
|
|
34
|
+
key = _TOOL_KEYS.get(name, f"{name[0].lower()}{name[1:]}ToolCall")
|
|
35
|
+
args = dict(tool_input)
|
|
36
|
+
if "file_path" in args:
|
|
37
|
+
args["path"] = args.pop("file_path")
|
|
38
|
+
if key == "globToolCall" and "pattern" in args:
|
|
39
|
+
args["globPattern"] = args.pop("pattern")
|
|
40
|
+
return key, args
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def _result_text(content) -> str:
|
|
44
|
+
if isinstance(content, str):
|
|
45
|
+
return content
|
|
46
|
+
return "".join(b.get("text", "") for b in content if b.get("type") == "text")
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def convert_events(events: Iterable[dict]) -> Iterator[dict]:
|
|
50
|
+
"""Yield Cursor-style events for Claude Code stream-json events."""
|
|
51
|
+
session_id = ""
|
|
52
|
+
pending: dict[str, tuple[str, dict]] = {}
|
|
53
|
+
for ev in events:
|
|
54
|
+
now_ms = int(time.time() * 1000)
|
|
55
|
+
kind = ev.get("type")
|
|
56
|
+
session_id = ev.get("session_id", session_id)
|
|
57
|
+
if kind == "system":
|
|
58
|
+
if ev.get("subtype") == "init":
|
|
59
|
+
yield {
|
|
60
|
+
"type": "system",
|
|
61
|
+
"subtype": "init",
|
|
62
|
+
"apiKeySource": ev.get("apiKeySource"),
|
|
63
|
+
"cwd": ev.get("cwd"),
|
|
64
|
+
"session_id": session_id,
|
|
65
|
+
"model": ev.get("model"),
|
|
66
|
+
"permissionMode": ev.get("permissionMode"),
|
|
67
|
+
"mcp_servers": ev.get("mcp_servers"),
|
|
68
|
+
}
|
|
69
|
+
elif kind == "assistant":
|
|
70
|
+
for block in ev["message"]["content"]:
|
|
71
|
+
btype = block["type"]
|
|
72
|
+
if btype == "thinking":
|
|
73
|
+
yield {
|
|
74
|
+
"type": "thinking",
|
|
75
|
+
"subtype": "delta",
|
|
76
|
+
"text": block["thinking"],
|
|
77
|
+
"session_id": session_id,
|
|
78
|
+
"timestamp_ms": now_ms,
|
|
79
|
+
}
|
|
80
|
+
yield {
|
|
81
|
+
"type": "thinking",
|
|
82
|
+
"subtype": "completed",
|
|
83
|
+
"session_id": session_id,
|
|
84
|
+
"timestamp_ms": now_ms,
|
|
85
|
+
}
|
|
86
|
+
elif btype == "text":
|
|
87
|
+
yield {
|
|
88
|
+
"type": "assistant",
|
|
89
|
+
"message": {"role": "assistant", "content": [{"type": "text", "text": block["text"]}]},
|
|
90
|
+
"session_id": session_id,
|
|
91
|
+
"timestamp_ms": now_ms,
|
|
92
|
+
}
|
|
93
|
+
elif btype == "tool_use":
|
|
94
|
+
key, args = _tool_call(block["name"], block["input"])
|
|
95
|
+
pending[block["id"]] = (key, args)
|
|
96
|
+
yield {
|
|
97
|
+
"type": "tool_call",
|
|
98
|
+
"subtype": "started",
|
|
99
|
+
"call_id": block["id"],
|
|
100
|
+
"tool_call": {key: {"args": args}},
|
|
101
|
+
"session_id": session_id,
|
|
102
|
+
"timestamp_ms": now_ms,
|
|
103
|
+
}
|
|
104
|
+
elif kind == "user":
|
|
105
|
+
content = ev["message"]["content"]
|
|
106
|
+
if isinstance(content, str):
|
|
107
|
+
continue
|
|
108
|
+
for block in content:
|
|
109
|
+
if block.get("type") != "tool_result":
|
|
110
|
+
continue
|
|
111
|
+
key, args = pending.pop(block["tool_use_id"])
|
|
112
|
+
text = _result_text(block["content"])
|
|
113
|
+
outcome = {"error": {"message": text}} if block.get("is_error") else {"success": {"content": text}}
|
|
114
|
+
yield {
|
|
115
|
+
"type": "tool_call",
|
|
116
|
+
"subtype": "completed",
|
|
117
|
+
"call_id": block["tool_use_id"],
|
|
118
|
+
"tool_call": {key: {"args": args, "result": outcome}},
|
|
119
|
+
"session_id": session_id,
|
|
120
|
+
"timestamp_ms": now_ms,
|
|
121
|
+
}
|
|
122
|
+
elif kind == "result":
|
|
123
|
+
yield {
|
|
124
|
+
"type": "result",
|
|
125
|
+
"subtype": ev["subtype"],
|
|
126
|
+
"is_error": ev.get("is_error"),
|
|
127
|
+
"result": ev.get("result", ""),
|
|
128
|
+
"duration_ms": ev.get("duration_ms"),
|
|
129
|
+
"num_turns": ev.get("num_turns"),
|
|
130
|
+
"total_cost_usd": ev.get("total_cost_usd"),
|
|
131
|
+
"session_id": session_id,
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def convert_stream(src: IO[str], dst: IO[str], raw: IO[str]) -> None:
|
|
136
|
+
def parsed() -> Iterator[dict]:
|
|
137
|
+
for line in src:
|
|
138
|
+
raw.write(line)
|
|
139
|
+
raw.flush()
|
|
140
|
+
if line.strip():
|
|
141
|
+
yield json.loads(line)
|
|
142
|
+
|
|
143
|
+
for out in convert_events(parsed()):
|
|
144
|
+
dst.write(json.dumps(out) + "\n")
|
|
145
|
+
dst.flush()
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def main() -> None:
|
|
149
|
+
parser = argparse.ArgumentParser()
|
|
150
|
+
parser.add_argument("--raw", required=True)
|
|
151
|
+
args = parser.parse_args()
|
|
152
|
+
with open(args.raw, "a", encoding="utf-8") as raw:
|
|
153
|
+
convert_stream(sys.stdin, sys.stdout, raw)
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
if __name__ == "__main__":
|
|
157
|
+
main()
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"""Agent configuration: run settings from lemma.toml (lemma_config), the imperative/OpenRouter ones from research_loop/config.env and process env."""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import os
|
|
5
|
+
from dataclasses import dataclass
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
import lemma_config
|
|
9
|
+
|
|
10
|
+
ROOT = Path(__file__).resolve().parents[2]
|
|
11
|
+
DEFAULT_CONFIG_ENV = ROOT / "research_loop" / "config.env"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def truthy(s: str | None) -> bool:
|
|
15
|
+
if s is None:
|
|
16
|
+
return False
|
|
17
|
+
return s.strip().lower() not in ("", "0", "false", "no", "off")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _load_config_file(path: Path) -> dict[str, str]:
|
|
21
|
+
out: dict[str, str] = {}
|
|
22
|
+
if not path.is_file():
|
|
23
|
+
return out
|
|
24
|
+
with open(path) as f:
|
|
25
|
+
for line in f:
|
|
26
|
+
line = line.strip()
|
|
27
|
+
if not line or line.startswith("#") or "=" not in line:
|
|
28
|
+
continue
|
|
29
|
+
k, v = line.split("=", 1)
|
|
30
|
+
out[k.strip()] = v.strip()
|
|
31
|
+
return out
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@dataclass(frozen=True)
|
|
35
|
+
class AgentFlags:
|
|
36
|
+
backend: str = "openrouter"
|
|
37
|
+
openrouter_api_key: str = ""
|
|
38
|
+
openrouter_model: str = "anthropic/claude-sonnet-4"
|
|
39
|
+
openrouter_base_url: str = "https://openrouter.ai/api/v1"
|
|
40
|
+
agent_timeout_sec: int = 600
|
|
41
|
+
agent_network: bool = False
|
|
42
|
+
agent_data_mode: str = "stats"
|
|
43
|
+
agent_workload_hint: bool = True
|
|
44
|
+
agent_submit_ends_session: bool = False
|
|
45
|
+
agent_image: str = "lemma-agent:latest"
|
|
46
|
+
agent_max_turns: int = 40
|
|
47
|
+
|
|
48
|
+
@classmethod
|
|
49
|
+
def from_mapping(cls, cfg: dict[str, str]) -> AgentFlags:
|
|
50
|
+
return cls(
|
|
51
|
+
backend=cfg.get("LEMMA_AGENT_BACKEND", "openrouter"),
|
|
52
|
+
openrouter_api_key=cfg.get("OPENROUTER_API_KEY", ""),
|
|
53
|
+
openrouter_model=cfg.get("OPENROUTER_MODEL", "anthropic/claude-sonnet-4"),
|
|
54
|
+
openrouter_base_url=cfg.get("OPENROUTER_BASE_URL", "https://openrouter.ai/api/v1"),
|
|
55
|
+
agent_timeout_sec=int(cfg.get("AGENT_TIMEOUT_SEC", "600")),
|
|
56
|
+
agent_network=truthy(cfg.get("AGENT_NETWORK", "0")),
|
|
57
|
+
agent_data_mode=cfg.get("AGENT_DATA_MODE", "stats"),
|
|
58
|
+
agent_workload_hint=truthy(cfg.get("AGENT_WORKLOAD_HINT", "1")),
|
|
59
|
+
agent_submit_ends_session=truthy(cfg.get("AGENT_SUBMIT_ENDS_SESSION", "0")),
|
|
60
|
+
agent_image=cfg.get("AGENT_IMAGE", "lemma-agent:latest"),
|
|
61
|
+
agent_max_turns=int(cfg.get("AGENT_MAX_TURNS", "40")),
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def load_agent_flags(config_env: Path | None = None) -> AgentFlags:
|
|
66
|
+
"""Load flags from config.env; process environment overrides file values."""
|
|
67
|
+
cfg = _load_config_file(config_env or DEFAULT_CONFIG_ENV)
|
|
68
|
+
keys = (
|
|
69
|
+
"LEMMA_AGENT_BACKEND",
|
|
70
|
+
"OPENROUTER_API_KEY",
|
|
71
|
+
"OPENROUTER_MODEL",
|
|
72
|
+
"OPENROUTER_BASE_URL",
|
|
73
|
+
"AGENT_NETWORK",
|
|
74
|
+
"AGENT_WORKLOAD_HINT",
|
|
75
|
+
"AGENT_IMAGE",
|
|
76
|
+
"AGENT_MAX_TURNS",
|
|
77
|
+
)
|
|
78
|
+
for key in keys:
|
|
79
|
+
if key in os.environ:
|
|
80
|
+
cfg[key] = os.environ[key]
|
|
81
|
+
cfg["AGENT_TIMEOUT_SEC"] = str(lemma_config.get("agent_timeout_sec"))
|
|
82
|
+
cfg["AGENT_DATA_MODE"] = lemma_config.get("agent_data_mode")
|
|
83
|
+
cfg["AGENT_SUBMIT_ENDS_SESSION"] = "1" if lemma_config.get("agent_submit_ends_session") else "0"
|
|
84
|
+
return AgentFlags.from_mapping(cfg)
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"""Docker tool-container runner for the OpenRouter agent."""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import json
|
|
5
|
+
import subprocess
|
|
6
|
+
import threading
|
|
7
|
+
import uuid
|
|
8
|
+
from dataclasses import dataclass, field
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
from db_extension.agent.config import AgentFlags
|
|
12
|
+
from research_loop.agent_image_check import agent_code_mount_args
|
|
13
|
+
from research_loop.job_label import job_label_args
|
|
14
|
+
from research_loop.sandbox_hide import shadow_mount_args
|
|
15
|
+
|
|
16
|
+
ROOT = Path(__file__).resolve().parents[2]
|
|
17
|
+
DOCKERFILE = ROOT / "docker" / "agent" / "Dockerfile"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@dataclass
|
|
21
|
+
class ContainerSession:
|
|
22
|
+
proc: subprocess.Popen[str]
|
|
23
|
+
_lock: threading.Lock = field(default_factory=threading.Lock)
|
|
24
|
+
_counter: int = 0
|
|
25
|
+
|
|
26
|
+
def call_tool(self, name: str, args: dict | None = None) -> dict:
|
|
27
|
+
with self._lock:
|
|
28
|
+
self._counter += 1
|
|
29
|
+
req_id = self._counter
|
|
30
|
+
req = {"id": req_id, "tool": name, "args": args or {}}
|
|
31
|
+
assert self.proc.stdin is not None
|
|
32
|
+
assert self.proc.stdout is not None
|
|
33
|
+
self.proc.stdin.write(json.dumps(req) + "\n")
|
|
34
|
+
self.proc.stdin.flush()
|
|
35
|
+
line = self.proc.stdout.readline()
|
|
36
|
+
if not line:
|
|
37
|
+
raise RuntimeError("tool container closed stdout")
|
|
38
|
+
return json.loads(line)
|
|
39
|
+
|
|
40
|
+
def close(self) -> None:
|
|
41
|
+
if self.proc.poll() is None:
|
|
42
|
+
self.proc.terminate()
|
|
43
|
+
try:
|
|
44
|
+
self.proc.wait(timeout=5)
|
|
45
|
+
except subprocess.TimeoutExpired:
|
|
46
|
+
self.proc.kill()
|
|
47
|
+
self.proc.wait()
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def docker_image_built(image: str) -> bool:
|
|
51
|
+
return subprocess.run(
|
|
52
|
+
["docker", "image", "inspect", image],
|
|
53
|
+
capture_output=True,
|
|
54
|
+
).returncode == 0
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def ensure_image(image: str) -> None:
|
|
58
|
+
if docker_image_built(image):
|
|
59
|
+
return
|
|
60
|
+
if not DOCKERFILE.is_file():
|
|
61
|
+
raise FileNotFoundError(f"Dockerfile not found: {DOCKERFILE}")
|
|
62
|
+
subprocess.run(
|
|
63
|
+
["docker", "build", "-t", image, "-f", str(DOCKERFILE), str(ROOT)],
|
|
64
|
+
check=True,
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def start_tool_container(
|
|
69
|
+
workspace: Path,
|
|
70
|
+
context_ro: Path,
|
|
71
|
+
data_dir: Path | None,
|
|
72
|
+
flags: AgentFlags,
|
|
73
|
+
*,
|
|
74
|
+
data_file_name: str | None = None,
|
|
75
|
+
mcp_sock: Path | None = None,
|
|
76
|
+
query_id: int | None = None,
|
|
77
|
+
) -> ContainerSession:
|
|
78
|
+
if mcp_sock is None:
|
|
79
|
+
raise RuntimeError(
|
|
80
|
+
"Host MCP Unix socket path is required for tool container measure/submit tools. "
|
|
81
|
+
"Start McpSocketServer and pass mcp_sock= to start_tool_container."
|
|
82
|
+
)
|
|
83
|
+
ensure_image(flags.agent_image)
|
|
84
|
+
workspace = workspace.resolve()
|
|
85
|
+
context_ro = context_ro.resolve()
|
|
86
|
+
name = f"lemma-agent-{uuid.uuid4().hex[:12]}"
|
|
87
|
+
cmd = [
|
|
88
|
+
"docker",
|
|
89
|
+
"run",
|
|
90
|
+
"--rm",
|
|
91
|
+
"-i",
|
|
92
|
+
"--name",
|
|
93
|
+
name,
|
|
94
|
+
*job_label_args(),
|
|
95
|
+
"--cap-drop",
|
|
96
|
+
"ALL",
|
|
97
|
+
"-v",
|
|
98
|
+
f"{workspace}:/workspace:rw",
|
|
99
|
+
*shadow_mount_args(workspace),
|
|
100
|
+
"-v",
|
|
101
|
+
f"{context_ro}:/context/ro:ro",
|
|
102
|
+
*agent_code_mount_args(), # the commit's agent code over the image's baked copy
|
|
103
|
+
"-e",
|
|
104
|
+
f"AGENT_DATA_MODE={flags.agent_data_mode}",
|
|
105
|
+
"-e",
|
|
106
|
+
"PYTHONPATH=/app",
|
|
107
|
+
"-w",
|
|
108
|
+
"/workspace",
|
|
109
|
+
]
|
|
110
|
+
if not flags.agent_network:
|
|
111
|
+
cmd.extend(["--network", "none"])
|
|
112
|
+
if data_dir is not None and data_dir.is_dir():
|
|
113
|
+
cmd.extend(["-v", f"{data_dir.resolve()}:/data:ro"])
|
|
114
|
+
if data_file_name:
|
|
115
|
+
cmd.extend(["-e", f"AGENT_DATA_FILE={data_file_name}"])
|
|
116
|
+
sock = mcp_sock.resolve()
|
|
117
|
+
cmd.extend(["-v", f"{sock}:/lemma-mcp.sock"])
|
|
118
|
+
cmd.extend(["-e", "LEMMA_MCP_SOCK=/lemma-mcp.sock"])
|
|
119
|
+
if query_id is not None:
|
|
120
|
+
cmd.extend(["-e", f"LEMMA_QUERY_ID={query_id}"])
|
|
121
|
+
cmd.append(flags.agent_image)
|
|
122
|
+
proc = subprocess.Popen(
|
|
123
|
+
cmd,
|
|
124
|
+
stdin=subprocess.PIPE,
|
|
125
|
+
stdout=subprocess.PIPE,
|
|
126
|
+
stderr=subprocess.PIPE,
|
|
127
|
+
text=True,
|
|
128
|
+
bufsize=1,
|
|
129
|
+
)
|
|
130
|
+
return ContainerSession(proc=proc)
|