Skip to content

Style merge hardening: cache safety and deterministic coverage#75

Merged
RtlZeroMemory merged 2 commits into
mainfrom
style-merge-hardening
Feb 18, 2026
Merged

Style merge hardening: cache safety and deterministic coverage#75
RtlZeroMemory merged 2 commits into
mainfrom
style-merge-hardening

Conversation

@RtlZeroMemory

Copy link
Copy Markdown
Owner

Summary

  • hardened the mergeTextStyle() default-base boolean cache by freezing cached entries before storage/return, preventing shared-cache mutation poisoning
  • added deterministic cache audit coverage in packages/core/src/renderer/__tests__/style.merge-cache.test.ts (13 tests) for key uniqueness, churn/staleness resistance, tri-state separation, new attrs, and cache hit-rate behavior
  • added deterministic fuzz coverage in packages/core/src/widgets/__tests__/style.merge-fuzz.test.ts (11 tests, 1024+ iterations per test, seeded RNG only)
  • added inheritance-chain coverage in packages/core/src/widgets/__tests__/style.inheritance.test.ts (16 tests) covering Root->Box->Row->Text precedence, deep chains, and recompute-after-unset behavior
  • added utility coverage in packages/core/src/widgets/__tests__/style.utils.test.ts (6 tests) for mergeStyles/styleWhen contracts
  • updated docs/guide/text-style-internals.md with cache audit notes and baseline lock metadata

Why

This hardens style merge correctness on the renderer hot path while increasing deterministic regression coverage for cache behavior, merge correctness, and inheritance semantics without adding new style features.

Validation

  • npm run lint
  • npm run build
  • npm run typecheck
  • node scripts/run-tests.mjs (2534 passing, 0 failing)

@RtlZeroMemory
RtlZeroMemory merged commit 9748762 into main Feb 18, 2026
18 checks passed
@RtlZeroMemory
RtlZeroMemory deleted the style-merge-hardening branch February 19, 2026 17:45
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