Repository navigation
Backbone noise-level axis for score and every driver family (replaces the score refusal, #2509/#2517) - #214
Merged
Merged
Conversation
…509) The plain per-structure and fused multi-state score paths never forwarded backbone_noise to the scorer, so runner.score returned noise-free scores for a spec that asked for noise, with no warning. Only the averaged-feature path applies it. Refuse with a ValueError that names average_node_features as the fix, rather than invent a noise-level axis the plain result schema lacks. Tests: nonzero noise is refused before model load; a multi-level sweep is refused; backbone_noise=0 matches the default spec (weights-gated). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SGHJhq24fYihaMivnXNhro
…h has no wheel -- main fails the same way) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014bjCGQZgFEE6nR8cGTMFt7
#214 refusal; spec 261011_noise-level-axis) Stock score: every backbone_noise level is applied with design's per-structure key fold_in(_base_sampling_key(spec), structure_idx); encode once per (structure, level). One level -> (S, C) as before; two or more -> (S, C, D) (fused multistate (1, C, D)). noise_levels recorded in results and metadata; SCORING_SCHEMA_VERSION -> scoring_v2; shaping emits noise_index. Averaged path keeps fusing levels; its R3 check is hoisted out of the vmap so D>=2 no longer raises TracerBoolConversionError (#2517). Driver families (N-D5): pottsmpnn, lasermpnn and protonpottsmpnn take every level with one shared draw (level not folded into the key), so single-level runs are bit-identical. D>=2 adds D_noise after the candidate/sample axis; sample_rank ranks per level. ProtonPotts gets backbone noise for the first time (apply_potts_backbone_noise, fold 0x7070). Refused at D>=2 where no honest axis exists: ProtonPotts pH design, LASEr proofread, Potts emit_etab. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SGHJhq24fYihaMivnXNhro
…tate_position_map is (S, L) against max_length) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SGHJhq24fYihaMivnXNhro
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
This PR originally refused nonzero
backbone_noiseon plainscore(debt #2509). Per direction ("we need to have a noise-level axis available for both design and score"), it now applies every noise level instead. Spec:.praxia/docs/specs/261011_noise-level-axis.md.Stock family (
runner.score)spec.backbone_noiseis applied on the encode-once and fused multi-state paths. None is silently dropped any more.(S, C), as before;(S, C, D), candidates before noise, mirroringsample's(S, N, D, T, L);(1, C)/(1, C, D);fold_in(_base_sampling_key(spec), structure_idx). Scoring a design's output at the same spec and seed therefore sees the identical noised backbone. Decoding-order keys are unchanged.noise_levels.SCORING_SCHEMA_VERSION→scoring_v2.agent/shaping.pyemitsnoise_index.average_node_features) still fuses the levels. Its R3 check is hoisted out of the vmap, so D≥2 no longer raisesTracerBoolConversionError(#2517).Driver families
D_noiseafter the candidate/sample axis. Pottssample_rankranks per level.apply_potts_backbone_noise, key fold0x7070).emit_etab.Out of scope
Browser pages have no backbone noise yet, and noise there can only be graded distributionally against Python. The multi-state PoE campaign path is also out of scope.
Verification (titanix,
aminx-sprint-gitvenv, JAX_PLATFORMS=cpu)tests/agent tests/scoring tests/knob_semantics tests/families tests/protonpotts tests/host, filtered to score/noise/family): 717 passed, 20 skipped, 0 failed at 1df1580.sampleandscorematches at the same seed;(S, C, D)slice equals a single-level run;(1, C, D);state_position_mapwidth 76 vsmax_length128. It was fixed in ca90d70.Ledger
host/runner.py,scoring/score.pyand the family drivers are in every row's closure, so all 9 ledger rows go stale on merge. One re-wave (AMINX_WAVE_REF=<branch> bash -l scripts/redsox/launch_wave.sh 4) after #212 and this PR, ledger last.🤖 Generated with Claude Code
https://claude.ai/code/session_01SGHJhq24fYihaMivnXNhro