bazel aquery: provision the launcher's runtime — libstdc++6/zlib1g build inputs + LD_LIBRARY_PATH on the standard multiarch dirs (the container sets LIBRARY_PATH for compile, not LD_LIBRARY_PATH for runtime), so the dynamically-linked bazel launcher loads in-container
Created by pmeunier on Aug 5, 2026, 5:36 AM
State:
SMUTCCQ32XKRPF4GXDSOENUD44QG6PS5EMWMYE5R5ZDXTYXS2DJQCcontainer: unit-test elf_trailing_data_len — appended payload detected (delta ≈ payload, robust to baseline), non-ELF is a no-op, a normally linked ELF stays under the 4KiB skip floor so real outputs still patch
Created by pmeunier on Aug 5, 2026, 5:34 AM
State:
JYDSPQH2J76VAGCNOS3VJ5AFSGTFXXXLDG2A4I6ST6HGGYGRADQACcontainer: patch_result_elf skips self-extracting binaries (ELF + appended payload). elfedit rewrites ELF headers in place and drops any data glued after the ELF image; the 55MB bazel launcher (ELF + embedded JDK/server zip) was being patched down to its 5.7MB ELF, losing the zip -> 'cannot find central directory' at self-extraction. New elf_trailing_data_len computes the true ELF image extent (max end across program/section header tables and every header's file range, ignoring SHT_NOBITS) and patch_result_elf now returns Ok(false) when >4KiB of payload follows it. Fixes bazel-in-container (aquery-drive) and any makeself/AppImage-style output.
Created by pmeunier on Aug 5, 2026, 5:32 AM
State:
ZLQPRMDGOZ6SZA6LY5LC4RFPZYJVBCNXXSW4JEBE7IORKXQN3NHACimage_service: current_system unit ExecStart /bin/sh -> /bin/bash
Created by pmeunier on Aug 5, 2026, 5:31 AM
State:
ALQDGVUVZIFL5V5KNNE3IU54LPF5JPM4GTEYFTHWUQJTVGHCFZ4ACeval-vm.md: REVERSE the host_solve-in-Rust decision — solve is pure compute, not an effect, so it stays OCaml (opam_solve.ml keeps Mccs.resolve_cudf in-process). Dropping it avoids an absurd OCaml->Rust->spawn-mccs-binary->back triple-hop. Clarify the model: the curated table's boundary is EFFECT, not native code — pure-compute native libs (mccs/cudf, later blake3/zlib) join the table and run in the VM; only IO goes through a host prim. Effect table now complete; increment 4 becomes 'admit mccs/cudf C stubs to the table + link libmccs'.
Created by pmeunier on Aug 5, 2026, 5:24 AM
State:
5KQSXFWQQWOEFNWR3OGR5VVHPJPUDXEFSBKMVGGUUTPH4FD6PHTQCelpe: fetch_bin (script-friendly raw fetch by url+hash, string algo, no unpack) + use it in examples/bazel for the bazel launcher; drop unused self in class aquery. A build.ml should never have to name the internal Elpe__Elpegrpc Hash enum or hex-decode by hand — fetch_bin wraps http with hash_of_string + Hex.to_bytes.
Created by pmeunier on Aug 5, 2026, 5:16 AM
State:
XQ5OQ4EKAGKPQUPEUIWTAUXWCEDH7K3QLVLKQNF5SOLNIDDKKRZQCeval-vm.md: increment 9 landed — sync write leaf host_write_file (write_lock/write_sbom ✅) + read_lock reuses the read leaf, proven end-to-end. Only host_solve remains in the sync table (wiring trivial; e2e proof needs the mccs binary on PATH).
Created by pmeunier on Aug 5, 2026, 5:16 AM
State:
VPYDHYOQJ7CTVL45WLXA2K7TADTZFWRUTLSXI34JE7ZCCAEXOGFACeval-vm increment 9: the sync write leaf host_write_file (behind write_lock/write_sbom) + read_lock. host_write_file : string -> string -> unit writes a CWD-confined path atomically (tmp+rename, matching Lock.write); read_lock reuses the read leaf (same CWD policy as local_src, OCaml parses JSON). The DSL keeps the filename policy + rendering (Lock.render/Sbom); only the write syscall + CWD policy move to the host. Demo test round-trips a lock snapshot and confirms out-of-CWD writes are denied. (host_solve deferred: needs the mccs binary on PATH, absent in this env.)
Created by pmeunier on Aug 5, 2026, 5:15 AM
State:
PPLLUPNCUCYY7OYPVRPI434TI6ZGKP6BXDD47GEI7FZKCEST2YGQCelpe: Bazel aquery-in-container live wiring + examples/bazel. class aquery now takes the bazel toolchain as a build INPUT (so std_derivation's PATH picks up usr/bin/bazel; add_path only feeds the SBOM closure) and pulls ca-certificates for the HTTPS module registry; from_targets drops the redundant pre-build. New examples/bazel: fetch the official bazel 7.6.0 self-extracting launcher (bundled JDK) as a toolchain, run aquery over a two-genrule workspace in-container, build the terminal action as a native derivation. Cargo-parity path (aquery : cargo metadata :: action replay : crate build); live run is the next empirical milestone.
Created by pmeunier on Aug 5, 2026, 5:12 AM
State:
DFEY7YAG5V3AJDJI6WKGRMCMDXHNHWXRL522NW6BXZ7TQ33T7O5ACeval-vm increment 8: regenerate Cargo.nix for demo's new prost/prost-build deps (keeps the crate2nix file in sync with Cargo.lock)
Created by pmeunier on Aug 5, 2026, 5:10 AM
State:
44ML2JDIC4CSARUZ3MGXC6HO73ZEDWRNII34USDL7HD4FTM7SE6QCelfedit: repoint all section-naming DT_* tags after a section move
Created by pmeunier on Aug 5, 2026, 5:10 AM
State:
62RUNLHDTWBRDRC4DUELITNZ5O5RW2Q2FH6WA6ZY6FAXMEORXMAQCeval-vm.md: increment 8 landed — host_add_path (client-streaming AddPath) proven end-to-end; primitive table row ✅; effect table now has all three gRPC shapes. Remaining increment 4 narrowed to the sync leaves (locks/solve/sbom).
Created by pmeunier on Aug 5, 2026, 5:09 AM
State:
37FD263H3FK4LA6JLURUV4X5MC57TWMJH6WZSPSZBZNU3MHFQ2IQCeval-vm increment 8: host_add_path, the client-streaming effect leaf (add_path). The CWD-confined directory walk moves to Rust (readdir/lstat/read are denied prims in the VM) and client-streams prost-encoded AddPathRequest to the backend; the single DerivationReply resolves the Lwt thread (unary-shaped via the bridge). Ignore POLICY stays in OCaml (default_src_ignores/.ignore), handed to the host as a resolved pattern set; only the match runs host-side. New: prost codegen of elpegrpc.proto in demo, addpath.rs walk, grpc.rs client_streaming. Vm_prelude add_path; demo test walks eval-vm/demo/ocaml and decodes the reply.
Created by pmeunier on Aug 5, 2026, 5:08 AM
State:
JBQWCICDQIFYOVKR4F5CIZRXODTZ5ZK6IPSQD3T66YON5INHLLSACelpe frontend: Bazel aquery-drive layer 3 — acquisition (aquery-in-container) + real-dump regression test. Bazel.aquery std_derivation runs 'bazel aquery --output=proto deps(<targets>)' over the workspace src and captures the ActionGraphContainer on stdout (mirror of Rust.metadata/cargo metadata); from_targets decodes it and yields one native derivation per terminal action via the layer-2 replay. aquery_query wraps targets in deps() — REQUIRED (verified against real Bazel 7: a bare aquery emits only the target's own action, misclassifying every generated input as a source). New test decodes a real 'bazel aquery deps(//:gen2)' dump (two-genrule chain) to pin that the trimmed vendored analysis_v2.proto stays wire-compatible with real Bazel and L1 rebuilds the true DAG; plus aquery_query/aquery_script unit tests. Live run still needs a Bazel-containing image + network (the argv[0]/external-tree toolchain gap that in-container aquery closes).
Created by pmeunier on Aug 5, 2026, 4:59 AM
State:
3G5GT3ICZSGGO7N3S46TP2T36BHMNHJP3YEL2PLP24TUZTGS5TGQCeval-vm.md: roadmap sync — status = increments 1-7 landed & proven (both gRPC leaves + local_src); primitive table gets a landed/todo (✅/⬜) column + real split-effect signatures; migration increments rewritten as a 6-step checklist (1-3 done, 4-6 = finish effect table, port real lib, CLI-to-Rust)
Created by pmeunier on Aug 5, 2026, 4:49 AM
State:
KV7VIYJO5K6XHWWIJPUR5ORTIFSK6D7Q6KRCZLUDM5J6ON7GBD2QCdesign.org: VM OCaml roadmap — increment 7 (host_backend_stream, server-streaming effect leaf) landé & prouvé; les deux leaves gRPC ont leur prim hôte. Reste = réécrire grpc_call_unary/streaming + add_path/locks/solve dans la vraie lib.
Created by pmeunier on Aug 5, 2026, 4:46 AM
State:
7OSK3WCM4CN2RNPASYMIO4XJN5YSN4QVCPVQKSGFEDLTUAHGLGRQCeval-vm increment 7 fixup: rename Vm_prelude type effect->waiter (effect is an OCaml 5 keyword) and make the backend_stream demo callback synchronous (string->unit); demo builds and runs, streaming Derivation RPC round-trips (Stdout chunk + terminal Error, EOS resolves the Lwt thread)
Created by pmeunier on Aug 5, 2026, 4:45 AM
State:
YKYGG2R5AGBC7GYH3L3VOAA6JI3JVCWNCOTEJGPQ4EGU4AKSC7NACdefault.nix: add bazel_7 to the dev shell (propagatedBuildInputs) — unblocks the aquery-drive acquisition layer, lets us generate real 'bazel aquery --output=proto' ActionGraphContainer dumps to test bazel.ml layers 1/2 against and bootstrap aquery-in-container
Created by pmeunier on Aug 5, 2026, 4:44 AM
State:
TVDQPPQS5CCWXLZJJGMUSLLA76PJPMUHD3K5LTCV5CBQOXK2GWQACimage.ml rootfs merge: two-pass tar (symlinks without -p) + deterministic package order
Created by pmeunier on Aug 5, 2026, 4:43 AM
State:
XWMZ6BTYAPLASAQU252HRNNBYJFR3BGF3AWRRXA6TETESWQCRJ5ACeval-vm increment 7: host_backend_stream, the server-streaming effect leaf (twin of host_backend_call). Bridge carries chunk/last events (push_chunk/finish); tonic server_streaming pushes each decoded reply as a chunk and terminates at end-of-stream; Vm_prelude backend_stream feeds chunks to an Lwt callback (the grpc_call_streaming pattern) and resolves at EOS. Demo test streams a real Derivation RPC. Unblocks porting derivation.ml Derivation/UbuntuPackage.
Created by pmeunier on Aug 5, 2026, 4:40 AM
State:
JFRH7V3YMC47D6RGIFIBCOGBIDW4TVGWVCUMCG7MABDFGR5RTI7ACelpe frontend: Bazel aquery-drive layer 2 — one native derivation per action (execroot replay). replay_script stages inputs as symlinks at their exec paths, materializes param files, exports env, runs arguments verbatim cwd=execroot, harvests outputs to $DESTDIR; action_replay std_derivation wires source inputs from the workspace src tree and generated inputs from producer derivations' $DESTDIR; deriver memoizes one derivation per action keyed by primary_output_id (the DAG). Pure unit tests over the emitted replay bash + action naming. Toolchain/argv[0] provisioning (aquery-in-container) is the next acquisition layer.
Created by pmeunier on Aug 5, 2026, 4:33 AM
State:
Y2SAVBUT754WMEWDNSB34WCIL23VDCLMMJ66MZKHIMLOH533YU7QC