Unsolved edge-case inventory
This page tracks known unsolved behavior and policy gaps. Keep entries short, concrete, and actionable.
Entry template
Use this shape for every new inventory item:
- ID: stable slug, e.g.
dynamic-template-partial-prefix - Surface:
cli|json|docs|web|core - Status:
open|monitoring|planned - Impact: short user-facing impact statement
- Current behavior: what happens now
- Target behavior: what we want
- Workaround: if available
- Owner / phase: where it is tracked
Current inventory
extractor-prose-first-arg-filter
- ID:
extractor-prose-first-arg-filter - Surface:
core - Status:
monitoring - Impact: Rare false positives or false negatives on the first translation-call argument when it is not a normal JS expression.
- Current behavior:
findTranslationCallSitesskips calls whose trimmed first argument is two or more whitespace-separated tokens that are each ASCII[a-z]+only (Session C.1.3). This removes common prose junk (e.g.t(or vice versa)) including inside comments for dynamic scan. - Target behavior: Optionally tighten or relax rules with fixtures (numbers, punctuation, Unicode prose, single-word false positives) without breaking real call shapes.
- Workaround: Use string/template literal keys where possible; rename misleading identifiers near
t(if a false positive appears. - Owner / phase:
maintainer/phases/extractor.md(C.1.3); tests inpackages/core/src/extractor/shared/__tests__/calls.test.ts.
extractor-reassignment-alias
- ID:
extractor-reassignment-alias - Surface:
core - Status:
open - Impact: Translation calls made through a renamed local (
const tt = t; tt('key')) are not tied to configuredtwithout dataflow. - Current behavior: Regex + import-binding expansion enriches
functionsfrom imports and module patterns (i18n.t, aliases, etc.). It does not follow assignment or control flow, sottis not expanded fromt. - Target behavior: Optional future host hooks or scoped heuristics (high risk of false positives if done generically).
- Workaround: Call the helper under its imported/local name from config, or add the alias name to
functionsif it is stable project-wide. - Owner / phase:
maintainer/phases/extractor.md(known limits);docs/extractor/README.mdlimits.
extractor-hook-return-destructuring
- ID:
extractor-hook-return-destructuring - Surface:
core - Status:
planned - Impact: Framework patterns such as
const { t } = useTranslation()(runtime return) are not resolved from imports alone. - Current behavior: No model of hook return shapes;
tfrom destructuring is invisible unless listed infunctionsand the call site uses that binding name from an import binding we can see (still won’t connect hook-only locals without extra config). - Target behavior: Framework-specific presets or optional AST-backed assist after JS/TS extractor is stable; see init / extension phases.
- Workaround: Configure explicit
functionsentries for locals you use, or re-export a thin wrapperexport const t = …that import scan can see. - Owner / phase:
maintainer/phases/extractor.md;maintainer/phases/shipped-slices.md(init) / extension docs for presets.
Add entries as soon as an unresolved behavior is accepted as known, even if implementation is not scheduled.