Latest Results
fix(interactive): upstream edits re-derive untouched defaults again (#133)
In 0.9.1, interact() froze a default that depends on an upstream choice.
With hidden = hp.int(384 if size == "small" else 768, name="hidden_size"),
setting size="base" kept hidden_size=384 in the session while
instantiate(values={"size": "base"}) gave 768. A preset select that seeds
nested defaults changed nothing below it.
Root cause: the session could not tell a value the user set from a default
it had displayed. Re-derivation carried every current draft value forward,
defaults and option-narrowing fallbacks included, and Branch Choice Memory
remembered every displayed value too. That contradicts CONTEXT.md, where
memory is created only from seed values and user actions.
The session now keeps user values (set_value actions plus reachable
values= seeds) apart from the draft. Re-derivation takes exact-context
memory, then the compatible user value, then the default as the current
run computes it. Memory records only user choices and seeds, and reset
forgets user values other than the seed. BranchChoiceMemory.remember_many
had no remaining callers and is removed.
Tests: six new interact tests (flat and two-level hp.nest: a dependent
default follows its upstream choice; a user edit survives while untouched
siblings re-derive; a forced value is not carried as the user's; reset
keeps seeds only). All six fail on 0.9.1; four fail on 0.9.0. Suite
206 -> 212 passed; ruff, mypy and the React protocol fixture check pass.
Co-authored-by: gilad-rubin <6134299+gilad-rubin@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> fix(interactive): upstream edits re-derive untouched defaults again
In 0.9.1, interact() froze a default that depends on an upstream choice.
With hidden = hp.int(384 if size == "small" else 768, name="hidden_size"),
setting size="base" kept hidden_size=384 in the session while
instantiate(values={"size": "base"}) gave 768. A preset select that seeds
nested defaults changed nothing below it.
Root cause: the session could not tell a value the user set from a default
it had displayed. Re-derivation carried every current draft value forward,
defaults and option-narrowing fallbacks included, and Branch Choice Memory
remembered every displayed value too. That contradicts CONTEXT.md, where
memory is created only from seed values and user actions.
The session now keeps user values (set_value actions plus reachable
values= seeds) apart from the draft. Re-derivation takes exact-context
memory, then the compatible user value, then the default as the current
run computes it. Memory records only user choices and seeds, and reset
forgets user values other than the seed. BranchChoiceMemory.remember_many
had no remaining callers and is removed.
Tests: six new interact tests (flat and two-level hp.nest: a dependent
default follows its upstream choice; a user edit survives while untouched
siblings re-derive; a forced value is not carried as the user's; reset
keeps seeds only). All six fail on 0.9.1; four fail on 0.9.0. Suite
206 -> 212 passed; ruff, mypy and the React protocol fixture check pass.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>fix/interactive-rederive-untouched-defaults Latest Branches
0%
dependabot/uv/tests/jupyterlab_host/jupyterlab-4.5.11 0%
dependabot/uv/tests/jupyterlab_host/tornado-6.5.9 0%
dependabot/uv/virtualenv-21.7.13 © 2026 CodSpeed Technology