chore: overhaul slices S1+S2 — dependency hygiene, panic-free config CLI, contract-drift docs - #701
chore: overhaul slices S1+S2 — dependency hygiene, panic-free config CLI, contract-drift docs#701Kaden-Schutt wants to merge 8 commits into
Conversation
hw-gate sol prelimsummary: This PR centralizes dependency versions, removes declared-unused dependencies and duplicate workspace membership, replaces duplicated HIP error-mapping macros with one textually scoped macro, centralizes two ChatML token IDs, replaces the TUI's local Base64 encoder with base64 0.22, converts several config/HTTP invariant panics into returned errors or fallback responses, and updates documentation/Nix packaging to current binaries and contracts. Runtime behavior should remain unchanged except malformed or internally inconsistent config/HTTP states now fail without panicking. run_hardware: true routes:
unavailable_routes: (none) claim_assessment: The author claims no behavioral change except panic-to-error conversion in config commands. Clean hardware load, kernel execution, and coherent battery/chain output across dense, MoE, and recurrent fixtures would support the runtime-preservation portion. The specific malformed-config panic conversion is not directly exercised by these model routes and requires the no-GPU config/CLI tests or an explicit negative CLI scenario. |
hw-gate evidence — 2 lane(s) — verdict faillane hiptrx (unknown)hw-gate evidence
fixturesno fixtures kernelnot run lane hipx (gfx1100)hw-gate evidence
fixturesqwen3.6:27bsource: bucket sha256_ok: ✅ size_ok: ✅ status: pass reason: battery — exit 0 seconds 32.6 status pass
qwen3.6:27b battery turn 0qwen3.6:27b battery turn 1qwen3.6:27b battery turn 2qwen3.6:27b battery turn 3qwen3.6:27b battery turn 4chain — exit 0 seconds 18.9 status pass
qwen3.6:27b chain turn 0qwen3.6:27b chain turn 1qwen3.6:27b chain turn 2qwen3.6:27b chain turn 3qwen3.6:27b chain turn 4ornith-1.5:35b-a3b-mq4rsource: bucket sha256_ok: ✅ size_ok: ✅ status: pass reason: battery — exit 0 seconds 33.5 status pass
ornith-1.5:35b-a3b-mq4r battery turn 0ornith-1.5:35b-a3b-mq4r battery turn 1ornith-1.5:35b-a3b-mq4r battery turn 2ornith-1.5:35b-a3b-mq4r battery turn 3ornith-1.5:35b-a3b-mq4r battery turn 4chain — exit 0 seconds 24.0 status pass
ornith-1.5:35b-a3b-mq4r chain turn 0ornith-1.5:35b-a3b-mq4r chain turn 1ornith-1.5:35b-a3b-mq4r chain turn 2ornith-1.5:35b-a3b-mq4r chain turn 3ornith-1.5:35b-a3b-mq4r chain turn 4lfm2.5:1.2bsource: bucket sha256_ok: ✅ size_ok: ✅ status: pass reason: battery — exit 0 seconds 8.0 status pass
lfm2.5:1.2b battery turn 0lfm2.5:1.2b battery turn 1lfm2.5:1.2b battery turn 2lfm2.5:1.2b battery turn 3lfm2.5:1.2b battery turn 4chain — exit 0 seconds 14.0 status pass
lfm2.5:1.2b chain turn 0lfm2.5:1.2b chain turn 1lfm2.5:1.2b chain turn 2lfm2.5:1.2b chain turn 3lfm2.5:1.2b chain turn 4qwen3.8:27b-mq4-xtsource: bucket sha256_ok: ✅ size_ok: ✅ status: fail reason: battery: harness exit 1 battery — exit 1 seconds 19.8 status failreason: harness exit 1
qwen3.8:27b-mq4-xt battery turn 0qwen3.8:27b-mq4-xt battery turn 1qwen3.8:27b-mq4-xt battery turn 2qwen3.8:27b-mq4-xt battery turn 3qwen3.8:27b-mq4-xt battery turn 4chain — exit 0 seconds 23.3 status pass
qwen3.8:27b-mq4-xt chain turn 0qwen3.8:27b-mq4-xt chain turn 1qwen3.8:27b-mq4-xt chain turn 2qwen3.8:27b-mq4-xt chain turn 3qwen3.8:27b-mq4-xt chain turn 4kernelstatus: pass report pass: True |
hw-gate sol verdict{
"claim_verdict": "disproven",
"confidence": 0.98,
"coverage": {
"gaps": [
"The config panic-to-error behavior was not exercised by the hardware routes.",
"The TUI OSC 52 path and Nix package build/install path were not exercised.",
"The hiptrx lane timed out during its 1200-second build and produced no binaries.",
"The qwen3.8:27b-mq4-xt battery exited 1 despite five coherent decoded rows; the report gives only `harness exit 1`, so that fixture failure remains unresolved."
],
"surfaces_evidenced": [
"kernel",
"load",
"serve",
"dependencies"
],
"surfaces_touched": [
"kernel",
"load",
"serve",
"config",
"dependencies",
"build",
"docs"
]
},
"decision": "block",
"eyeball": [
"qwen3.8:27b-mq4-xt battery: all five decoded answers are coherent and satisfy their expected substrings, but the harness still returned exit 1; inspect the omitted harness diagnostic.",
"ornith-1.5:35b-a3b-mq4r chain turn 1 reached the 256-token limit while remaining coherent; it is not an attractor, but the report marks it runaway.",
"The qwen3.6:27b, ornith-1.5:35b-a3b-mq4r, and lfm2.5:1.2b decoded outputs are otherwise coherent, non-empty, responsive, and free of visible special-token leakage."
],
"phase": "verdict",
"rationale": "Blocking is mandatory because qwen3.8:27b-mq4-xt battery failed and the hiptrx build lane failed. The gfx1100 kernel route itself is strong: stable capture sequences, 16 AQL contracts, and bit-exact HIP/blob/PM4 parity passed, while qwen3.6:27b, ornith-1.5:35b-a3b-mq4r, and lfm2.5:1.2b loaded and served coherent battery and chain responses. However, the stated near-zero-behavior claim is disproven by the explicit removal of the public `saddle-quant/eval` feature at crates/saddle-quant/Cargo.toml:16, and the intended config error behavior was not directly exercised.",
"regressions": [
{
"beta_behavior": "The public `eval` feature and its optional dependencies are removed, so `cargo check -p saddle-quant --features eval` and downstream manifests selecting that feature fail feature resolution.",
"evidence": "The base-to-head manifest diff removes `eval = [\"dep:hipfire-runtime\", \"dep:hipfire-config\"]` and both optional dependencies.",
"file": "crates/saddle-quant/Cargo.toml",
"line": 16,
"master_behavior": "`saddle-quant` exposes an `eval` feature that enables the optional `hipfire-runtime` and `hipfire-config` dependencies.",
"severity": "medium"
}
]
}Floor: hard=['hw_run_result=failure', "evidence verdict='fail'"] soft=["coverage_gaps: ['The config panic-to-error behavior was not exercised by the hardware routes.', 'The TUI OSC 52 path and Nix package build/install path were not exercised.', 'The hiptrx lane timed out during its 1200-second build and produced no binaries.', 'The qwen3.8:27b-mq4-xt battery exited 1 despite five coherent decoded rows; the report gives only |
There was a problem hiding this comment.
hw-gate sol verdict block: Blocking is mandatory because qwen3.8:27b-mq4-xt battery failed and the hiptrx build lane failed. The gfx1100 kernel route itself is strong: stable capture sequences, 16 AQL contracts, and bit-exact HIP/blob/PM4 parity passed, while qwen3.6:27b, ornith-1.5:35b-a3b-mq4r, and lfm2.5:1.2b loaded and served coherent battery and chain responses. However, the stated near-zero-behavior claim is disproven by the explicit removal of the public saddle-quant/eval feature at crates/saddle-quant/Cargo.toml:16, and the intended config error behavior was not directly exercised.
…member cargo-machete pass over the workspace: hipfire-daemon (hipfire-dispatch, saddle-core, serde), hipfire-engine (hipfire-config, hipfire-dispatch, serde, tracing), hipfire-generate (hipfire-config, hipfire-dispatch, serde), saddle-quant (half, hipfire-config, hipfire-runtime, rayon), hipfire-pflash (serde, serde_json), hipfire-runtime (base64), hip-bridge/hsa-bridge (thiserror), hipfire-arch-toy (hip-bridge), serde in client/qwen35-vl/lfm2-vl/muse-glimmer/gemma4/saddle-core, memmap2 in deepseek4. Every removal verified by whole-crate grep and `cargo check -p <crate> --all-targets` (saddle-lab with --all-features: 56 examples). hipfire-daemon keeps dispatch/deltanet via hipfire-runtime (cargo tree -e features). crates/radiowave was listed twice in [workspace].members. Comment-only truth fixes in radiowave/Cargo.toml (workspace license is Apache-2.0) and hipfire-daemon/Cargo.toml (arches arrive via loader/generate). cargo machete: clean.
…ncoder base64 0.22.1 was already in the lock via other crates (zero new packages). The existing RFC 4648 vector test is retargeted to STANDARD.encode plus a 32-byte blob case; 153/153 tui tests pass. Refutes an audit claim while here: cargo tree shows ratatui 0.30 defaults do NOT pull termwiz/wezterm; termwiz and nix 0.29 are unreachable lock rows, and the live thiserror 1.x chain is sysctl <- gemm <- faer <- hipfire-quantize. ratatui is left untouched.
…local copies Body byte-identical (map_err into DispatchError::Hip(e.to_string())); `#[macro_use] mod macros;` precedes every other module so textual scoping covers all 283 call sites unchanged. cargo test -p hipfire-dispatch: 237 passed.
…n-id literals IM_END = 151645 and ENDOFTEXT = 151643 live in one place; the qwen2 default EOS, MAPLE_EOS_FALLBACK, the generate dense stop pair, and the three minimax example stop sets import them. Remaining 15164x literals are tests, fixtures, prose, or dots-ocr (which also owns 151673; left for its owner).
…f panicking `hipfire config list/get/set/explain/reset` (global and per-model) used expect() after schema/catalog lookups, so schema drift became a panic on a user command. They now return anyhow errors naming the key/id. serve/http.rs json_response and admission_error_response no longer unwrap the response builder / HeaderValue (500 fallback; RETRY_AFTER omitted on a bad value). hipfire-config ProcessConfig::validate maps a missing field to ConfigError::UnknownKey. `hipfire profile` now points at `scripts/kernel_atlas.py render-fit --row` instead of the transitional hipfire-atlas binary. cargo test -p hipfire-config: 65 passed.
nix/package.nix built the daemon as a hipfire-runtime example (pre-saddle) and licensed the package MIT: it now builds -p hipfire-daemon / -p hipfire-cli like the Containerfile, license [asl20 mit] per NOTICE (kernels.nix too). docs/CONTAINER.md carried the same stale build line. ARCHITECTURE.md and CLI.md state the exact force_local list from hipfire-cli/src/main.rs:1911-1918. VALIDATION.md names the required checks. CONTRIBUTING.md said 'Rust 1.75+', which has been false since is_none_or / LazyLock / edition 2024; now 'current stable, no MSRV declared'. Also: saddle-lab example run-lines, the caps.rs BatchEligibilityRequest overclaim, the reap README cohere2moe promise, and the reap map.md purpose line.
anyhow, clap, memmap2, minijinja, minijinja-contrib, serde, serde_json, sha2, thiserror join half/libloading/proptest/safetensors at the root as version-only pins; 31 crate manifests inherit with `workspace = true` and keep exactly the feature sets they declared (derive, env, preserve_order, ...). Textual drift (sha2 0.10 vs 0.10.9, thiserror 2 vs 2.0.17) collapses to one requirement. Cargo.lock is byte-identical: no resolved version changed. cargo tree -d shows one version of each; the remaining duplicates (equator, getrandom, hashbrown, syn, winnow) are pre-existing transitive.
The S1 machete pass removed it as unused, which was true when this branch was written. #719 (S4 FeatureFlags) then introduced hipfire_config readers in hipfire-generate -- vision.rs, qwen.rs, dense.rs and 76 more sites -- so after rebasing onto that, the workspace failed with 79 E0433s. The finding expired; the dependency is real again.
a85155a to
de46758
Compare
Summary
Slices S1 (mechanical hygiene) and S2 (docs/contract drift) of the 2026-09-04 audit (
.codeinsight+research/overhaul-2026-09-04/REPORT.md, local). Seven commits, each independently revertable. Zero behaviour change except the panic→error conversion inhipfire config …, which is the point of that commit. 69 files, +276/−361.chore(deps): drop declared-but-unused dependenciescrates/radiowavewas in[workspace].memberstwicecargo check -p --all-targets(saddle-lab--all-features, 56 examples);cargo machetecleanchore(tui): OSC 52 payload via base64 0.22refactor(dispatch): one hip! macromacro_rules! hip→src/macros.rsrefactor(runtime): chatml constshipfire_runtime::chatml::{IM_END, ENDOFTEXT}replace 151645/151643 literals in qwen2, maple, generate, minimax examplesfix(cli): config commands return errors instead of panickinghipfire config list/get/set/explain/resetusedexpect()after schema lookups; servejson_responseunwrapped the builder;ProcessConfig::validatepanicked on a missing field. Alsohipfire profilenow points atscripts/kernel_atlas.py render-fitinstead of the transitional atlas binaryexpectleft in the config-command regionsdocs: fix contract driftforce_locallist; VALIDATION names required checks; CONTRIBUTING's "Rust 1.75+" was false; saddle-lab run-lines; caps.rs overclaim; reap README/mapchore(deps): [workspace.dependencies]cargo tree -d: one version eachDeliberately not in this PR
byteorder→from_le_bytes: the audit said 9 sites; it is ~60 across the quant loaders (hessian/HFQM/gguf). Quant-path churn with no bit-identity fixture in this PR; byteorder is zero-dep and maintained. Dropped.assert!(matches!)→std::assert_matches!(238 sites): churn, no defect. Deferred.rust-version: pinned last, per the report.Which surface(s) does this touch?
crates/hipfire-cli,hipfire-config,hipfire-dispatch(macro only),hipfire-runtime(new leaf module), arch crates (literal→const), 31Cargo.tomlNo kernels, no dispatch runtime behaviour, no loader/serve paths.
Evidence
cargo check --workspace --all-targets: clean (pre-existing warnings only).cargo machete: clean.cargo test --lib --binson every touched crate: 1,256 passed, 0 failed (dispatch 237, runtime 597, tui 153, config 65, generate 127, maple 29, engine 15, daemon 14, saddle-core 11, qwen2 8).git diff Cargo.lockafter the workspace-deps commit: empty.