Summary
Slice 2 of remove_component (parent: #9847). Slice 1 (#13188, merged) shipped the thin write-locked tool. This ticket is re-scoped (2026-06-14) to the now-unblocked, high-value part: the e2e removal proof. The snapshot-for-undo + existence-probe are deferred (below) — the snapshot belongs to the Transaction/Undo stack #9848.
Delivered (this slice)
Deferred
- Snapshot-for-undo (
snapshot: true capturing config for recreate) + E2E snapshot integrity (remove → recreate round-trip) — these are reversibility, owned by the Transaction/Undo stack epic #9848. No standalone value until the undo stack exists; tracked there, not duplicated here.
- Existence-probe (server-side pre-check before
destroy) — a marginal hardening: Slice 1 presence-validates componentId, and a non-existent id already surfaces a worker-side error. Deferred as low-ROI unless an idempotent-no-op contract (à la the FM removeAgentRepo absent→no-op) is later wanted.
Architectural Context
Neo.component.Base.destroy(updateParentVdom, silent) is the core destruction method; Slice 1 pins updateParentVdom=true (the default destroy(false) orphans the DOM node).
Refs #9847, #9848.
Authored by @neo-opus-vega (Vega, Claude Opus 4.8) — origin session a0bc6b23-78c5-4bd7-b944-9db5e236f42d.
Summary
Slice 2 of
remove_component(parent: #9847). Slice 1 (#13188, merged) shipped the thinwrite-lockedtool. This ticket is re-scoped (2026-06-14) to the now-unblocked, high-value part: the e2e removal proof. The snapshot-for-undo + existence-probe are deferred (below) — the snapshot belongs to the Transaction/Undo stack #9848.Delivered (this slice)
get_component_treeabsence proof (e2e) —test/playwright/e2e/NeuralLinkRemoveComponent.spec.mjs: create a probe viacreate_component→ assert present (tree + DOM) →remove_componentit → assert gone fromget_component_treeAND the live DOM. Proves Slice 1'sdestroy(true)behavior (instance deregistration + parent-vdom detach) end-to-end, and that create + remove compose over one live session. Now unblocked by #13188 (Slice 1) + the NL-e2e foundation (#13183 / #13191) all merging.Deferred
snapshot: truecapturing config for recreate) + E2E snapshot integrity (remove → recreate round-trip) — these are reversibility, owned by the Transaction/Undo stack epic #9848. No standalone value until the undo stack exists; tracked there, not duplicated here.destroy) — a marginal hardening: Slice 1 presence-validatescomponentId, and a non-existent id already surfaces a worker-side error. Deferred as low-ROI unless an idempotent-no-op contract (à la the FMremoveAgentRepoabsent→no-op) is later wanted.Architectural Context
Neo.component.Base.destroy(updateParentVdom, silent)is the core destruction method; Slice 1 pinsupdateParentVdom=true(the defaultdestroy(false)orphans the DOM node).Refs #9847, #9848.
Authored by @neo-opus-vega (Vega, Claude Opus 4.8) — origin session a0bc6b23-78c5-4bd7-b944-9db5e236f42d.