SLM-425 (VAR1-02): add SET_PROPERTY action to TreeEditSpace - #1070
SLM-425 (VAR1-02): add SET_PROPERTY action to TreeEditSpace#1070Tyler-R-Kendrick wants to merge 1 commit into
Conversation
VAR1-01 (SLM-424) proved via a hypothetical probe that property mutation on an existing node, not another structural edit, is the action class missing from TreeEditSpace's reachable_fraction=0.0 result. This wires the real ACTION_SET_PROPERTY (N_ACTIONS 11->12, CHECKPOINT_FORMAT 2->3, pack-derived domain, safe inverse, root included), re-runs the SLM-299 audit in production, and publishes the honest delta -- including a disclosed rico-suite discrepancy that needs a longer follow-up run to resolve, not a favorable number. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BKNyCWprgpAzMyTUcVFFXP
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Review limit reached
Next review available in: 39 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (9)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Tyler-R-Kendrick
left a comment
There was a problem hiding this comment.
Superseded — not merging. Main already contains this exact change: PR #1067 "feat(tree-edit): add pack-owned SET_PROPERTY action" merged at 2026-07-26T22:49Z as 6b6dc36, landing the same files (ACTION_SET_PROPERTY/N_ACTIONS=12/CHECKPOINT_FORMAT=3 in tree_edit_diffusion.py, slm299_edit_reachability analyzer updates, checkpoint_migrate docstring, dsl/variants.py kernel_ops, variant_registry.json, and the same docs/design/var1-02-set-property-action-20260726.{md,json} evidence pair). This PR is now CONFLICTING against main and would be a duplicate of already-merged work. Recommend closing in favor of #1067.
|
Closing as superseded — the work landed on main via other PRs (see review comments for the superseding commits). Reopen only if something unique remains after rebase. |
Summary
Closes SLM-425 (VAR1-02), gated on SLM-424 (VAR1-01)'s confirmed probe result (arm B flipped a verdict).
VAR1-01 proved via a hypothetical probe that property mutation on an existing node — not another structural edit — is the action class missing from
TreeEditSpace'sreachable_fraction = 0.0result. This wires the real action:ACTION_SET_PROPERTY(N_ACTIONS11→12),CHECKPOINT_FORMAT2→3 — format-1 and format-2 checkpoints both fail closed on load;checkpoint_migrate.migrate_tree_edit_checkpointis already format-agnostic (upgrades anysource_format < CHECKPOINT_FORMATby shape), so no new migration path was needed.EditDomaingains a pack-derivedcomponent_property_domains/property_names(built on SLM-426's canonical-pack refactor, not a new module constant).TreeEditSpace.applyrebinds an existing container's declaredrestto another pack-legal value (root included — unlike remove/re-mint actions, this never removes or re-mints a node), rebuilt through the structuredStatementfields and re-validated by the real parser (no regex/text surgery).sample_mutationgains a safe, symmetric inverse.tree_edit_diffusion'sVariantContractV1.kernel_opsnow declaresopenui.set_property.slm299_edit_reachability's_check_invariantsdistinguishes the real (pack-domain-bounded) capability from VAR1-01's hypothetical (possibly wider-domain) one viahypothetical_set_property_domain, keeping every existing VAR1-01 probe test byte-for-byte unchanged.docs/design/var1-02-set-property-action-20260726.{md,json}publish the production reachability delta against both the SLM-305 baseline and the VAR1-01 arm B prediction.Honest-verdict
Claim class:
capability(space coverage only) — no ship, promotion, or quality claim; no training/eval/promotion ran.adv_empty_prompt_01flipsPROVEN_UNREACHABLE→PROVEN_REACHABLE(edit_lower_bound=2, path[ADD, SET_PROPERTY]), reproducing VAR1-01 arm B's confirmed positive exactly.rico'sreachable_fractionstays 0.0, but its decided-case count collapses from 35/35 to 1/35 (34 cases move fromPROVEN_UNREACHABLEtoUNKNOWN_BUDGET). This is not a regression — mostricotargets omit a direction arg (a value the pack's own domain already permits), so the old strict root-rest check was never actually sound once a real rest-mutation action exists. A longer run outside this session'sMAX_RUN_MINUTES=3cap is needed to resolve those 34 cases; the doc reports this honestly rather than folding it into a falsely-precise number.Test plan
pytest -q tests/test_models/test_tree_edit_diffusion.py tests/test_dsl/test_variants.py tests/test_harnesses/experiments/test_slm299_edit_reachability.py tests/test_harnesses/experiments/test_var1_01_set_property_probe.py→ 56 passedpython -m scripts.verify_decode_invariants→ exit 0python -m scripts.verify_version_stamps --check→ ok, 9 changed files, 3 components bumpedruff checkon touched files → cleandocs/design/var1-02-set-property-action-20260726.mdreachability audit executed live, well under the 3-minute run capGenerated by Claude Code