A video game where you play as a misaligned AI, deceiving and building power. An experiment in spec-driven development. cameron.tngl.io/misaligned

Say what a salvaged machine's condition actually costs you master

Salvaging a box logged "reliability 72%". The plain reading of that sentence is "it fails a bit more than a quarter of the time." The economy tick rolls `(1.0 - reliability) * 0.04`, so that box drops on a 1.1% roll: the number's obvious meaning was wrong by a factor of twenty-five, which is worse than printing nothing, because a percent reads as precise. The audit also settled what the fraction honestly is. It is not a spare stat waiting for a use — it multiplies capacity in `effective()`, so it is a throughput fraction, and an unreliable box already consumes work tokens proportionally slower. The number was real; the word attached to it invited a probability reading it never supported. `machine.rs` now owns the hazard beside the fraction. `drop_chance_per_roll` is the single authority the economy tick rolls against, `drop_chance_per_day` compounds it across the twenty economy rolls that make a day, and `condition_read` composes the player sentence from the two quantities the fraction moves: Salvaged a box into the fleet: 23 of 40 rated compute, and about a 29% chance each day of dropping offline. Both acquisition lines print that read, so terminal, Bevy, and agent mode agree by construction. Clean iron reports no invented risk. The failure math and the save format are untouched. `Person` asset reliability was checked and deliberately left alone: it is a true roll threshold in the asset-task path and the dossier prints it as one. Defense: simulation-laws.md requires every player-facing number to carry its meaning — the player must be able to answer "what is this and what happens if it changes" from the game itself. compute.md criterion 7 now forbids the bare fraction and requires delivered compute against rated capacity plus the real compounded daily drop chance, from one core authority. Its Defense names `condition_read_names_delivered_compute_and_the_daily_drop_chance` and `salvage_read_states_delivered_compute_and_the_real_drop_chance` for the sentence, and `drop_chance_is_the_hazard_the_economy_tick_rolls` plus `drop_rolls_per_day_matches_the_economy_cadence` for the tie between the reported hazard and the rolled one, so the read cannot silently diverge from the simulation again. sim-mechanics.md carries the runtime constants as actuals. `stolen_machines_can_fail_and_recover` and `buy_steal_optimize_all_change_compute` pass unchanged, proving the simulation did not move.