Small no-ops: tempo inverted {1} else {1}, measure() fa > 0 makes fault_rate always 0, Relabel only shuffles class labels 0-15 #20
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
How it was found
Code review of the omniastra repo (findings supplied by the user, 2026-10-06),
tempo.rs:200for the first item. Not re-verified by me in this session.Confidence it is a bug
High for the first two (tautological code), medium for the third (may be a deliberate limit).
Explanation
* if inverted {1} else {1}intempo.rs:200is a no-op, so the inverted variant is not inverted there.measure()hasfa > 0, which is always true, sofault_rateis always 0.Relabelonly shuffles class labels 0-15.Suggested fix
Fix the intended values, correct the fault_rate condition, and either extend or document the label range.
Fixed on local branch fix/review-findings in
0f85302(not pushed yet). The tempo no-op was at tempo.rs:70 in this tree (not :200): the inverted variant now pairs burn cost and damage inversely (damage + cost = 6) while keeping the rng draws identical across variants, so Normal games are unchanged. measure() now really reports fault_rate and rejects above a new max_fault_rate (default 0, same strictness as before). The class-label range is now an explicit CLASS_LABELS constant with a test. This is my reading of the intended inversion; say if you meant something else.Decision recorded: keep the inverted burn as damage = 6 - cost. It matches how the creature curve is already inverted (cheap is efficient), and Normal games are unchanged because both random draws still happen in every variant. Included in PR #25.