Document server-side name cap and hidden-rune rejection

This commit is contained in:
Lars Nolden
2026-09-14 12:31:03 +02:00
parent b7e5bf26cc
commit 16daa01647
+9 -2
View File
@@ -172,7 +172,12 @@ response records high, medium or low confidence. Imports never auto-apply a
low-confidence category: the row keeps the kind-specific unclassified
category with merchant and confidence recorded. Analyse previews show the
low-confidence suggestion unselected for review. Transactions exposes a
Needs review filter for low-confidence or fallback rows.
Needs review filter for low-confidence or fallback rows. A model-proposed
merchant name is dropped (the row keeps its validated category and tags)
when it is identifier-shaped, longer than 100 characters, or contains
control or format code points such as bidirectional overrides and
zero-width characters, which could visually spoof the review UI; proposed
taxonomy names are rejected under the same hidden-rune rule.
Categories and tags have editable hints. Categories -> Propose taxonomy sends
up to 300 grouped, redacted transaction samples, then shows proposed
@@ -701,7 +706,9 @@ The grammar is version-one strict: extension/split fields are not accepted yet.
Future format extensions require an explicit parser migration.
Stable category IDs survive renaming and moving; assigned categories must remain
leaves. Built-in roots and fallback leaves are protected. Move assigned records
leaves. Registry display names (category, tag, merchant, instrument) are
capped at 200 characters server-side, matching every UI form. Built-in roots
and fallback leaves are protected. Move assigned records
to another leaf before adding children to their former category. Category
merges migrate referenced transactions/defaults; tag merges deduplicate links;
tag deletion removes all affected links after UI confirmation. Merchant merging