Tasks follow the architecture spec phases: - Phase 0: key field on UElement (2 tasks + review) - Phase 1: reactive-host bridge / fiber tree (4 tasks + review) - Phase 2: key-based children reconciliation (3 tasks + review) - Phase 3: unmount & dispose support (4 tasks) - Phase 4: TypeBox value optimizations (4 tasks) Validated with taskgraph CLI: no cycles, 15 parallel generations, 3 high-risk tasks identified (signal-driven-updates, commit-mutations, fiber-disposal).
46 lines
1.8 KiB
Markdown
46 lines
1.8 KiB
Markdown
---
|
|
id: review-reactive-host-bridge
|
|
name: Review reactive-host bridge
|
|
status: pending
|
|
depends_on: [signal-driven-updates, render-re-renderable]
|
|
created: 2026-05-18T16:22:57.199831873Z
|
|
modified: 2026-05-18T16:22:57.199832316Z
|
|
scope: narrow
|
|
risk: low
|
|
impact: phase
|
|
level: review
|
|
---
|
|
|
|
# Description
|
|
|
|
Review the reactive-host bridge implementation before proceeding to key-based children reconciliation. This checkpoint verifies that the fiber tree is correctly built during mount, signal changes correctly propagate to `prepareUpdate`/`commitUpdate`, and re-rendering works without duplicate instances.
|
|
|
|
This is critical because Phase 2 (key-based reconciliation) builds on top of the fiber tree structure and the reconciliation loop. Any bugs in the bridge will compound in the more complex reconciliation logic.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- [ ] Fiber tree structure matches the UNode tree after mount
|
|
- [ ] Signal-driven prop updates flow correctly through `prepareUpdate` → `commitUpdate`
|
|
- [ ] Multiple signals changing in one batch produce one reconciliation pass
|
|
- [ ] `render()` called twice produces one instance tree, not two
|
|
- [ ] `signalDisposers` are correctly populated for later cleanup
|
|
- [ ] Effect commit order is top-down (parent before child)
|
|
- [ ] Function components remain transparent in the fiber tree
|
|
- [ ] All existing + new tests pass
|
|
- [ ] No signal subscription leaks (verify effect disposers stored on fibers)
|
|
- [ ] HostConfig implementations that don't implement `prepareUpdate`/`commitUpdate` still work (no-op)
|
|
|
|
## References
|
|
|
|
- docs/architecture/reconciler.md — Steps 1-4
|
|
- docs/architecture/decisions/005-signal-driven-updates-over-tree-diffing.md
|
|
- docs/architecture/reactive-layer.md
|
|
- docs/architecture/host-config.md
|
|
|
|
## Notes
|
|
|
|
> To be filled on completion of review
|
|
|
|
## Summary
|
|
|
|
> To be filled on completion |