eebf25c262
ChatGPT Codex on PR #111, correct. improvise-pv3g's claim is that a finite input no longer aborts the process, and the two LIBRARY paths honoured the refusal while examples/fit_csv.rs turned it straight back into a panic with `expect`. A user with a 1e20 column still got a panic -- at a different site than before, but still a panic, from the entrypoint a person actually runs. Demonstrated first: a temporary test drove `run_fit` over an 8-row CSV at 1e20/4e20 and aborted at fit_csv.rs:399. `run_fit` now returns `Result<(), String>` and `main` prints the refusal and exits 1. Gotcha 37(a) read the right way round: the library returns data, the example owns every message, and that includes the refusals. `fit_and_report` is the split that makes it testable without a temp file, and the example carries `test = true` so its tests run under `cargo test --workspace`. A SECOND abort on the same path, found because the first "just under the overflow" fixture used 1e18 and blew up somewhere else: at that scale the map is finite, the fit lands, and `report_importance` dies with a capacity overflow in `"#".repeat((share / 5.0).round() as usize)`. The share is `inf` because `importance_ranking` computes `100.0 * imp[j] / total` -- multiplication first, so an importance over f32::MAX/100 overflows before the division that would have returned 100.0 (measured: imp=[3.7499995e36], total the same, share=inf). The bar width is clamped and the arithmetic is filed as improvise-k844 rather than fixed here: reordering it moves the bit patterns `misclass_rate_and_importance_are_bit_for_bit_what_they_were` pins, and this PR's headline evidence is that none moved. AGENTS.md's own rule -- a finding can be correct and still be wrong to fix in that PR. Three guards, each failing under its own injection: restoring the panic, refusing every map, and removing the clamp. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FC2jVn8Au7E9JPkw6bwXXH
19 lines
491 B
TOML
19 lines
491 B
TOML
[package]
|
|
name = "gp-tree"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
license = "Apache-2.0"
|
|
description = "Generic genetic-programming regression decision trees: evolve, simplify, and render human-readable trees over an arbitrary feature vector."
|
|
keywords = ["genetic-programming", "decision-tree", "regression", "evolution"]
|
|
categories = ["algorithms"]
|
|
|
|
[dependencies]
|
|
serde = { version = "1", features = ["derive"] }
|
|
|
|
[dev-dependencies]
|
|
serde_json = "1"
|
|
|
|
[[example]]
|
|
name = "fit_csv"
|
|
test = true
|