Rust search-matrix analytics and EC2 launch reproducibility check
A std-only Rust analyzer plus bounded AWS launcher can express and reproduce a public-root depth x strata x leaf matrix without changing search semantics: every requested cell produces one canonical record with all legal sibling values and detailed scheduler analytics; the frozen named-weight leaf matches the current fair leaf bit-for-bit; worker count affects timing/work placement but not values/actions; and an EC2 plan for 192 x86 physical cores or vCPUs is parameterized, budget-bounded, latest-AMI-resolved, and safe to inspect without provisioning.
On this page
- Created
- Updated
No explanation has been written for this record yet.
Technical recordThe registered protocol
- Hypothesis
- A std-only Rust analyzer plus bounded AWS launcher can express and reproduce a public-root depth x strata x leaf matrix without changing search semantics: every requested cell produces one canonical record with all legal sibling values and detailed scheduler analytics; the frozen named-weight leaf matches the current fair leaf bit-for-bit; worker count affects timing/work placement but not values/actions; and an EC2 plan for 192 x86 physical cores or vCPUs is parameterized, budget-bounded, latest-AMI-resolved, and safe to inspect without provisioning. No instance is launched under this CHECK experiment.
- Arms
Arm Name Entry point Manifest Candidate rust-search-matrix approaches/fair-expectimax/rust-engine/src/bin/analyze.rs– Comparator manual local Rust invocations and current one-shot decide binary approaches/fair-expectimax/rust-engine/src/bin/decide.rs– - Classification
- infrastructure
- Information boundary
- public-policy
- Benchmark tier
- CHECK
- Lifecycle
- preregistered
- Theories tested
- Primary metric
- Exact matrix completeness and reproducibility: requested roots x leafs x depths x strata equals emitted records; every legal-column f64 value bit and chosen action matches a direct invocation of the same fixed-work Rust search.
- Secondary metrics
- per-cell work, nodes, leaf/move calls, cache hits, registered/completed tasks, split depth, planning/execution/reduction time, worker busy fraction and per-worker task distribution
- cross-depth action-change and column-value comparison keyed by identical root, leaf and strata
- weighted-frozen leaf bit parity with FairLeaf
- source, weights, roots, config, output and machine-profile SHA-256 references
- EC2 instance type vCPU/core/architecture preflight, capacity-reservation expiry, wall shutdown, memory bound, and caller-supplied cost ceiling
- Statistical unit
- root
- Uncertainty method
- Exact equality and record-count checks; performance fields are descriptive CHECK diagnostics and require three repeats on one retained machine profile before a speed claim.
- Data role
- no-gameplay
- Seed leases
- none recorded
- Whole-origin split
- yes
- Reuse disclosure
- No new seed is opened. Tests use seed-free constructed fixtures and the already-opened Rust gate roots from 0xa5276000-0xa5276fff. The EC2 path is syntax/plan tested only; no AWS resource or gameplay cohort is created.
- Pass criteria
- A two-root x two-depth x two-strata x two-leaf smoke matrix emits exactly 16 valid JSONL records, each with every legal sibling value and all required scheduler/resource fields.
- The frozen named-weight leaf matches FairLeaf value bits and root-column value bits on all Rust parity fixtures; a perturbed weight file is accepted as a distinct named leaf and remains deterministic across 1 and maximum local workers.
- For fixed root/leaf/strata, output directly identifies whether each deeper search changes the selected action and retains values needed to compare every legal column; rerunning produces identical semantic rows after timing/resource fields are excluded.
- The AWS scripts pass shell syntax and plan-mode tests, resolve the x86_64 AMI from the AWS public SSM parameter, verify the requested instance architecture/vCPU/core count before launch, use IMDSv2, encrypted EBS, instance-initiated termination, a fixed wall timeout, optional targeted reservation with a finite end date, and no inbound SSH rule.
- A 192-worker, 262144-entry-per-worker plan reports about 2.4 GiB of transposition tables and passes the configured 8 GiB guard; an intentionally oversized cache is rejected before allocation or AWS launch.
- Cargo release tests, npm test, and make test pass; existing research-validator failures caused by absent gitignored historical artifacts are disclosed and not attributed to this change.
- On pass
- Record valid + pass at mechanics-only tier and document the exact plan/package/launch/collect workflow. A later operator-authorized EC2 execution creates its own run record and machine profile; it does not inherit a performance claim.
- On fail
- Record valid + fail for the exact infrastructure configuration, launch no EC2 resource, and retain manual local commands as the fallback.
- Gate fixed before controlled data
- yes
- Resources
Wall seconds 7200 CPU threads 12 Max host bytes 8589934592 Max GPU bytes – GPU devices – - Stop conditions
- Stop on any rules, information-boundary, legality, determinism, reflection, matrix-completeness, leaf-parity, or value/action failure.
- Stop local checks at 2 hours wall or 8 GiB host memory; record partial rather than reducing depth/strata silently.
- Do not call an AWS mutation API under this experiment; only syntax, help, and plan-mode commands are authorized.
- A future cloud run must state region, availability zone, instance type, source/config/root/weight hashes, S3 artifact destination, hourly-price assertion, total cost cap, wall limit, and reservation choice before launch.
- Expected artifacts
approaches/fair-expectimax/rust-engine/src/bin/analyze.rsapproaches/fair-expectimax/rust-engine/cluster/{package-source.sh,provision-ec2.sh,run-instance.sh,README.md}approaches/fair-expectimax/rust-engine/experiments/example-matrix.envruns/<run-id>/search-matrix/{config.env,roots.txt,weights/,analytics.jsonl,summary.json,machine-profile.json,manifest.sha256}research/runs/<run-id>.jsonresearch/results/<result-id>.json
- Amendments
- none recorded
Technical recordResults recorded against this protocol
The reusable Rust analyzer emitted all 16 requested root x leaf x strata x depth decision rows, retaining every legal sibling's decimal and exact-f64 value, action changes across depths, task/work/cache counts, phase timings, memory projections, and per-worker load. Frozen named weights matched the compiled fair leaf exactly; frozen and perturbed leaves were worker-count independent. The D7/S7 allocation-free 192-worker plan selected one additional internal split ply, bounded the worst frontier at 2,401 tasks, and projected 2,418,377,728 bytes under an 8 GiB cap; the former 16,777,216-entry-per-worker cache was rejected at 154,618,822,656 bytes before allocation. Shell syntax and a fail-closed fake-AWS plan passed with only read-only describe, quota, and SSM operations accepted. No live AWS call, instance, Capacity Reservation, or 192-core execution occurred.
- ✓A 2 x 2 x 2 x 2 smoke matrix emits exactly 16 valid decision records with all sibling and scheduler fields. — observed: One manifest plus 16 parseable decision JSONL rows; analyzer stderr independently reported the same Cartesian count. Every row had one source-coordinate selected column matching selectedAction.
- ✓Frozen named weights match FairLeaf exactly and named perturbed weights remain deterministic across worker counts. — observed: Across 16 frozen/fair comparison rows and 8 perturbed comparison rows, selected actions and every legal-column f64 bit matched between 1 and 4 workers; 0 mismatches.
- ✓Cross-depth output retains actions and all legal-column values needed to identify changes. — observed: Each deeper row names previousDepth, previousAction, actionChangedFromPreviousDepth, selectedAction, and all legal sibling value bits.
- ✓AWS scripts are syntax-valid, inspect architecture/capacity/security/AMI/cost before mutation, and enforce termination and finite reservation safeguards. — observed: All four shell scripts passed bash -n. A fake CLI accepted only describe-instance-types, describe-instance-type-offerings, describe-security-groups, service-quotas list-service-quotas, and SSM get-parameter; --plan exited 0 without a mutation. Static launch arguments require a sufficient live regional vCPU quota, IMDSv2, encrypted delete-on-termination EBS, instance-initiated termination, egress-only security group, bounded caller price, a boot watchdog, runner cleanup shutdown, and a limited targeted reservation.
- ✓The safe 192-worker plan fits 8 GiB and an oversized cache is rejected before allocation or launch. — observed: Safe projected total 2,418,377,728 bytes; oversized worker tables 154,618,822,656 bytes and exit 2.
- –Release Cargo tests, npm test, and repository integration tests pass or pre-existing artifact failures are disclosed. — observed: Cargo release tests passed 22/22 and npm test passed 137 with 1 unrelated skip. `make test` is blocked at research validation by 72 pre-existing missing gitignored historical artifacts in this checkout; no new validation error remains after the run machine-profile path was completed.
Technical recordRecorded metrics
- roots
- 2
- leaves
- 2
- strataCounts
- 2
- depths
- 2
- expectedDecisionRecords
- 16
- observedDecisionRecords
- 16
- frozenLeafMismatches
- 0
- workerCountMismatches
- 0
- perturbedWorkerCountMismatches
- 0
- sourceColumnSelectionMismatches
- 0
- threads
- 192
- splitPlies
- 1
- worstCaseFrontierTasks
- 2,401
- tableEntriesPerWorker
- 262,144
- tableBytesPerWorker
- 12,582,912
- projectedTableBytes
- 2,415,919,104
- projectedPlanBytes
- 2,458,624
- projectedTotalBytes
- 2,418,377,728
- maxHostBytes
- 8,589,934,592
- tableEntriesPerWorker
- 16,777,216
- projectedTableBytes
- 154,618,822,656
- exitCode
- 2
- fakeArchitecture
- x86_64
- fakeVcpus
- 192
- fakePhysicalCores
- 192
- fakeThreadsPerCore
- 1
- fakeVcpuQuota
- 192
- insufficientQuotaRejected
- true
- projectedCostUsd
- 20
- mutatingCalls
- 0
- exitCode
- 0
- localOnly
- true
- sha256
- 14d104c0bd45034e61edecd0aa25280d9d94bc1aacd09893dc4c142e475a77d6
- No live AWS API was called and no instance was launched. The fake plan proves command routing and fail-closed plan behavior, not IAM, quota, Capacity Reservation availability, package availability, S3 access, or cloud-init behavior in a real account.
- The 192-worker result is an allocation-free memory/frontier plan, not an x86 throughput or CPU-saturation measurement.
- The smoke roots and perturbed weights are mechanics-only examples, not training data, teacher labels, or evidence that one leaf is stronger.
- The hourly price is deliberately a caller-asserted fail-closed input rather than a live price quote; the operator must refresh it immediately before a future authorized launch.
- An actual EC2 run requires a new registered run, retained machine profile, exact source/config/root/weight hashes, exclusive resource lease, and uploaded completion artifacts.
Agent contextHow to extend this record
To add a reader-facing explanation, write web/content/research/EX-20260825-rust-search-matrix-ec2-check-eb821565.mdx; it renders above this record on the next request. The registered protocol itself is in the technical record above.
Record file: research/experiments/EX-20260825-rust-search-matrix-ec2-check-eb821565.json, validated against research/schemas/experiment-v1.schema.json. Protocol hash: cf903c8e3034b053ef92f65e319976530eb9133e2f3d8f09901976e458f51c71.
Registered by Codex / unknown (root).