You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Rules - Unable to apply multi level tags via command #103932
Version Number: 9.5.8-3 Reproducible in staging?: Yes Reproducible in production?: N/A - new feature, doesn't exist in prod If this was caught during regression testing, add the test name, ID and link from BrowserStack:#99624 Email or phone of affected tester (no customers):[email protected] Issue reported by: Applause Internal Team Bug source: Exploratory - Significant User Experience Deterioration Device used: Mac 26.5 / Chrome App Component: Workspace Settings
👋 Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open `StagingDeployCash` deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:
Identify the pull request that introduced this issue and revert it.
Root cause (medium confidence): The App sends only the description. The backend works out the rule, including which tag level "Region" means. The App copies the result into the form unchanged. The Region row stays blank unless the backend returns the tag at the second level (":Asia"). The fix for the missing tag most likely belongs in the backend. This appears to be a backend/internal issue. A separate internal investigation is needed.
Why no error appears (App): The modal shows an error only when generation fails. A rule with an unmatched tag counts as success, so the modal closes quietly.
Investigation details
generateRule sends only {policyID, generationID, ruleType, prompt} (Rules.ts:417-444).
All tag levels share one colon-separated tag string. Each row splits it by position (MerchantRulePageBase.tsx:566-576). A row shows a value only if it's in that level's list (tag.ts:93-103). A returned tag: "Asia" lands on level 1, doesn't match, and leaves the Region row blank.
The modal sets an error only when the state isn't a rule (DescribeRuleModal.tsx:83-94). It checks the category against the workspace's categories (withPolicyCategory, DescribeRuleModal.tsx:50-58), but doesn't check tags.
Optional App follow-ups:
Check generated tags against each tag level, as withPolicyCategory does for categories.
Warn in the modal when part of the description couldn't be applied.
I couldn't see what the backend returned for this request. That limits confidence in the backend/App split.
Activity
applause-bot commentedon Oct 13, 2026
While Applause doesn't embed attachments for this bug, here are the links for quick view:
https://platform.applause.com/services/links/v1/external/7e0cb0887b3f5fc31194b61e79701a77e8adc4ca9ce56e7dd287b05b727cbd35
melvin-bot commentedon Oct 13, 2026
You have been assigned to this deploy blocker because you recently merged this PR: #99624
github-actions commentedon Oct 13, 2026
👋 Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open `StagingDeployCash` deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:
melvin-bot commentedon Oct 13, 2026
@luacmartins @JS00001 @Krishna2323 you have been assigned to this deploy blocker because you reviewed the offending PR: #99624
melvin-bot commentedon Oct 13, 2026
@rushatgabhane you have been assigned to this deploy blocker because you authored the offending PR: #99624
melvin-bot commentedon Oct 13, 2026
💬 A slack conversation has been started in #expensify-open-source
JS00001 commentedon Oct 13, 2026
this is be hind a beta, adding to a list of blockers
MelvinBot commentedon Oct 13, 2026
Deploy Blocker Investigation
Causing PR: AI-assisted rule creation. It added the whole Describe feature. It merged 2026-10-12 and first shipped in 9.5.8-0.
Recommendation: Demote, don't revert. The Describe button renders only when the
describeRulebeta is on (DescribeRuleButton.tsx:45-47), so production users can't reach it. The admin can still set the Region tag by hand before saving. Track the fix under [Rules Revamp] Release 5: AI-assisted rule creation and unsupported-request capture.Root cause (medium confidence): The App sends only the description. The backend works out the rule, including which tag level "Region" means. The App copies the result into the form unchanged. The Region row stays blank unless the backend returns the tag at the second level (
":Asia"). The fix for the missing tag most likely belongs in the backend. This appears to be a backend/internal issue. A separate internal investigation is needed.Why no error appears (App): The modal shows an error only when generation fails. A rule with an unmatched tag counts as success, so the modal closes quietly.
Investigation details
generateRulesends only{policyID, generationID, ruleType, prompt}(Rules.ts:417-444).applyGeneratedRulecopies the generated values straight into the draft (MerchantRulePageBase.tsx:681-683).tagstring. Each row splits it by position (MerchantRulePageBase.tsx:566-576). A row shows a value only if it's in that level's list (tag.ts:93-103). A returnedtag: "Asia"lands on level 1, doesn't match, and leaves the Region row blank.DescribeRuleModal.tsx:83-94). It checks the category against the workspace's categories (withPolicyCategory,DescribeRuleModal.tsx:50-58), but doesn't check tags.Optional App follow-ups:
withPolicyCategorydoes for categories.I couldn't see what the backend returned for this request. That limits confidence in the backend/App split.
view run