Skip to content

fix(core): punctuation-only rendered text no longer acts as a universal wildcard (6F.1, A14)#43

Merged
officialCodeWork merged 1 commit into
developmentfrom
build/phase-6f/step-6f.1-punctuation-matcher
Jul 15, 2026
Merged

fix(core): punctuation-only rendered text no longer acts as a universal wildcard (6F.1, A14)#43
officialCodeWork merged 1 commit into
developmentfrom
build/phase-6f/step-6f.1-punctuation-matcher

Conversation

@officialCodeWork

Copy link
Copy Markdown
Owner

Summary

Field validation of ui-lineage@0.3.0 on a production React/Redux codebase found the highest-impact defect in the matcher: rendered text that normalizes to empty (|, /, -) matched every queryneedle.includes("") is always true — so find_component returned the same ~20 punctuation-rendering components for any input (including gibberish), and resolve_context inherited false "high confidence" matches. A pure-* template entry collapsed to a match-everything regex the same way.

Fix

  • New hasMatchSignal guard in textMatches (packages/core/src/text.ts): a match target must carry ≥ 2 alphanumeric characters (wildcards/spaces excluded) to match at all.
  • With no surviving targets, gibberish falls through to the existing declined("no-signal") path — no separate decline branch needed; resolve_context inherits the fix through matchComponents.

Also in this PR

  • Phase 6F (field hardening) added to TRACKER.md — 8 steps derived from the 2026-07-15 validation feedback, prioritized ahead of 6.1–6.5; 6F.1 marked done.
  • Failure mode A14 (empty-normalizing rendered text) added to docs/failure-modes.md.
  • New eval fixture a14-punctuation-wildcard: gibberish → declined: no-signal; real term ranks the real component top-1 with no punctuation noise; gibberish mixed into a real query doesn't poison it.
  • 8 new core unit tests.

Verification

  • pnpm test: 199 tests green across 5 packages
  • pnpm eval: 271 pass · 0 fail, all honesty metrics 1.000, gate OK
  • pnpm typecheck: clean

🤖 Generated with Claude Code

…al wildcard (6F.1, A14)

Field validation of ui-lineage@0.3.0 found that rendered text normalizing to
empty ("|", "/", "-") matched every query — needle.includes("") is always
true — so find_component returned the same punctuation components for any
input, including gibberish, and resolve_context inherited false "high
confidence" matches. Pure-"*" templates collapsed to a match-everything regex
the same way.

New hasMatchSignal guard in textMatches: a target must carry at least 2
alphanumeric characters (wildcards/spaces excluded) to match at all. With no
surviving targets, gibberish falls through to the existing
declined("no-signal") path.

Also introduces Phase 6F (field hardening, 8 steps from the 2026-07-15
validation feedback) in TRACKER.md and failure mode A14 in the catalog.

New fixture a14-punctuation-wildcard + 8 core unit tests. Eval 271/0/0,
gate OK; all package tests and typecheck green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@officialCodeWork
officialCodeWork merged commit 8737a1d into development Jul 15, 2026
1 check passed
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.

2 participants