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).
42 lines
1.4 KiB
Markdown
42 lines
1.4 KiB
Markdown
---
|
|
id: review-key-field
|
|
name: Review key field implementation
|
|
status: pending
|
|
depends_on: [key-on-uelement, key-extraction-in-h]
|
|
created: 2026-05-18T16:22:57.125725833Z
|
|
modified: 2026-05-18T16:22:57.125726289Z
|
|
scope: narrow
|
|
risk: low
|
|
impact: phase
|
|
level: review
|
|
---
|
|
|
|
# Description
|
|
|
|
Review the implementation of the `key` field on `UElement` before proceeding to the fiber tree and reconciler phases. This is a critical checkpoint because every downstream task depends on `key` being correctly added to the schema and extracted by `h()`.
|
|
|
|
Verify schema/type consistency, backward compatibility, and that ADR-004's consequences are properly handled.
|
|
|
|
## Acceptance Criteria
|
|
|
|
- [ ] `UElement` TypeScript type matches TypeBox Module schema for `key` field
|
|
- [ ] `key` never appears in component function props
|
|
- [ ] Backward compatibility: unkeyed elements work identically to pre-key behavior
|
|
- [ ] TypeBox `Value.Check` passes for both keyed and unkeyed elements
|
|
- [ ] No unintended `key: undefined` serialization on unkeyed elements (verify JSON output)
|
|
- [ ] All existing + new tests pass
|
|
- [ ] `isUElement` guard still correctly discriminates from `URoot`
|
|
|
|
## References
|
|
|
|
- docs/architecture/schema.md
|
|
- docs/architecture/decisions/004-key-as-first-class-field.md
|
|
- docs/architecture/element-factory.md
|
|
|
|
## Notes
|
|
|
|
> To be filled on completion of review
|
|
|
|
## Summary
|
|
|
|
> To be filled on completion |