Skip to content

refactor: SlotRole replaces SlotPolicy (Debug slots P1) - #254

Merged
Yona-Appletree merged 3 commits into
mainfrom
claude/ephemeral-debug-slots-impl-210c61
Aug 2, 2026
Merged

refactor: SlotRole replaces SlotPolicy (Debug slots P1)#254
Yona-Appletree merged 3 commits into
mainfrom
claude/ephemeral-debug-slots-impl-210c61

Conversation

@Yona-Appletree

Copy link
Copy Markdown
Member

Plan: lp2025/2026-07-31-1736-ephemeral-slots
Path: /Users/yona/.photomancer/planning/lp2025/2026-07-31-1736-ephemeral-slots/plan.md

P1 of the Debug-slots plan — ships alone per the plan's JC1 (mechanical, self-contained; everything later rebases onto it). P2–P6 follow as a second PR.

What

Replace SlotPolicy { writable, persistence } with SlotRole::{ Setting, Fixed, Debug } (D10), and retire read_only_transient entirely — produced state is now protected by direction = Produced (D1):

  • lpc-model: slot_policy.rs/slot_policy_lookup.rsslot_role.rs/slot_role_lookup.rs; effective_writable(role, direction) and effective_persistence(role, direction) derive the old axes; writer omission seam keys off role == Debug (+ defensive produced-omission).
  • lpc-slot-macros: #[slot(role = "…")] / default_role replace the policy attributes; mut-access suppression keys off direction.
  • The 7 state records + button_def/control_radio_def drop their read_only_transient markings; TextureState now declares direction = "produced" and is safe by construction (retires W6/W7).
  • lpc-registry: retain_transient_editsretain_debug_edits.
  • lpa-studio-core: the view-build synthesis patch (slot_controller.rs:953) is deleted; DirtySummary still buckets via derived persistence (its removal is P2's job).
  • Shape dumps: "policy": {…}"role": "debug" | "fixed" (default setting omitted). Regenerated via just schema-gen.

No behavior change intended. No wire proto change (stays 4), no project format change — def files never carried policy.

Validation

  • just checkjust schema-check
  • just test: all green except lps-probe perf_4096_render_evals_under_10s_debug (wall-clock perf bound, untouched crate) — failed locally under load average 141 from concurrent sessions; CI is the arbiter.

Resume notes

Read plan.md at the path above, then p1-slot-role-refactor.md (this PR) and notes.md for the ratified design (D1–D10). Superseded PR #233 must never merge; it is harvested and closed at P5.

🤖 Generated with Claude Code

…, studio

Replace the two-axis SlotPolicy { writable, persistence } with a single
SlotRole::{ Setting, Fixed, Debug } enum (D10), and retire the
read_only_transient marking entirely: produced-state protection now
derives from direction=Produced (D1), which also fixes the previously
unmarked TextureState by construction and deletes the studio-side
view-build synthesis patch. Writer omission and overlay commit retention
key off role == Debug. Shape dumps carry "role" instead of "policy";
wire proto and project format unchanged.

No behavior change intended; schemas regenerated via just schema-gen.

Plan: lp2025/2026-07-31-1736-ephemeral-slots (P1)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

CI refreshed the story baselines on this branch

The validate-stories job detected drift and committed the fresh set: 1 changed
in 664e692.

Review every PNG in the PR's Files changed view (swipe / onion-skin).
Your local branch is now behind — git pull before pushing again.

Story Before After
exploration__node-ui__status-indicators__sm.png exploration__node-ui__status-indicators__sm.png@eec43b905d exploration__node-ui__status-indicators__sm.png@664e6926f5

@Yona-Appletree
Yona-Appletree marked this pull request as ready for review August 2, 2026 07:31
@Yona-Appletree
Yona-Appletree merged commit 3654caa into main Aug 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant