FAILURE MAP
← Case archive

FA-33371 / Menu interactions / Open access

Decorated menu label is substituted for its command identity · case 01

Decorated menu label is substituted for its command identity.

Verified by executionVariant 1 · 7 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The menu-row-decoration model applies `p['label']` at its label-command operation instead of the stipulated transformation.

VERIFIED REPAIR

Apply `p['command']` at label-command.

Unsuccessful approach: The attempted repair `p['label']+' '+p['badge']` still violates the label-command oracle.

Case contract

Menu decoration columns are measured from visible command rows; text, badges and submenu indicators remain separate from command identity.

Why this case matters

Cascading and context menus require coherent command and session state as content changes.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
import unicodedata
N = 1
observations = []
def solve(action, p):
    if action == 'indicator-column':
        return max((x['indicator_width'] for x in p if x['visible']),default=0)
    if action == 'badge':
        return None if p['count'] is None else str(p['count'])
    if action == 'label-command':
        return p['label']
    if action == 'suffix-order':
        return p['label']+(' '+p['suffix'] if p['suffix'] else '')
    if action == 'icon-space':
        return p['column_width'] if p['column_enabled'] else 0
    if action == 'separator-span':
        return sum(p['columns'])+p['gap']*(len(p['columns'])-1)
    return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('indicator-column contract', solve('indicator-column', [{'visible':False,'indicator_width':N+10},{'visible':True,'indicator_width':2}]), 2)
check('badge contract', solve('badge', {'count':0,'revision':N}), '0')
check('label-command contract', solve('label-command', {'command':'cmd'+str(N),'label':'Copy','badge':'2'}), 'cmd'+str(N))
check('suffix-order contract', solve('suffix-order', {'label':'Item '+str(N),'suffix':'(new)'}), 'Item '+str(N)+' (new)')
check('icon-space contract', solve('icon-space', {'column_width':N+4,'column_enabled':True,'own_width':0}), N+4)
check('separator-span contract', solve('separator-span', {'columns':[N,10,4],'gap':2}), N+18)
check('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
indicator-column contract22Passed
badge contract00Passed
label-command contractCopycmd1Failed
suffix-order contractItem 1 (new)Item 1 (new)Passed
icon-space contract55Passed
separator-span contract1919Passed
unknown operation{'error': 'unsupported menu operation'}{'error': 'unsupported menu operation'}Passed

SHA-256 / 41a6cc8b4c1e30c519341e92bb2d317194a1ca3d5eb90e3532aaa787a3166879

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
import unicodedata
N = 1
observations = []
def solve(action, p):
    if action == 'indicator-column':
        return max((x['indicator_width'] for x in p if x['visible']),default=0)
    if action == 'badge':
        return None if p['count'] is None else str(p['count'])
    if action == 'label-command':
        return p['label']+' '+p['badge']
    if action == 'suffix-order':
        return p['label']+(' '+p['suffix'] if p['suffix'] else '')
    if action == 'icon-space':
        return p['column_width'] if p['column_enabled'] else 0
    if action == 'separator-span':
        return sum(p['columns'])+p['gap']*(len(p['columns'])-1)
    return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('indicator-column contract', solve('indicator-column', [{'visible':False,'indicator_width':N+10},{'visible':True,'indicator_width':2}]), 2)
check('badge contract', solve('badge', {'count':0,'revision':N}), '0')
check('label-command contract', solve('label-command', {'command':'cmd'+str(N),'label':'Copy','badge':'2'}), 'cmd'+str(N))
check('suffix-order contract', solve('suffix-order', {'label':'Item '+str(N),'suffix':'(new)'}), 'Item '+str(N)+' (new)')
check('icon-space contract', solve('icon-space', {'column_width':N+4,'column_enabled':True,'own_width':0}), N+4)
check('separator-span contract', solve('separator-span', {'columns':[N,10,4],'gap':2}), N+18)
check('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
indicator-column contract22Passed
badge contract00Passed
label-command contractCopy 2cmd1Failed
suffix-order contractItem 1 (new)Item 1 (new)Passed
icon-space contract55Passed
separator-span contract1919Passed
unknown operation{'error': 'unsupported menu operation'}{'error': 'unsupported menu operation'}Passed

SHA-256 / 7f91199d8ffb51747fd5f994e44945245c74524951a8fa959cd15dc9f5282399

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import math
import unicodedata
N = 1
observations = []
def solve(action, p):
    if action == 'indicator-column':
        return max((x['indicator_width'] for x in p if x['visible']),default=0)
    if action == 'badge':
        return None if p['count'] is None else str(p['count'])
    if action == 'label-command':
        return p['command']
    if action == 'suffix-order':
        return p['label']+(' '+p['suffix'] if p['suffix'] else '')
    if action == 'icon-space':
        return p['column_width'] if p['column_enabled'] else 0
    if action == 'separator-span':
        return sum(p['columns'])+p['gap']*(len(p['columns'])-1)
    return {'error': 'unsupported menu operation'}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('indicator-column contract', solve('indicator-column', [{'visible':False,'indicator_width':N+10},{'visible':True,'indicator_width':2}]), 2)
check('badge contract', solve('badge', {'count':0,'revision':N}), '0')
check('label-command contract', solve('label-command', {'command':'cmd'+str(N),'label':'Copy','badge':'2'}), 'cmd'+str(N))
check('suffix-order contract', solve('suffix-order', {'label':'Item '+str(N),'suffix':'(new)'}), 'Item '+str(N)+' (new)')
check('icon-space contract', solve('icon-space', {'column_width':N+4,'column_enabled':True,'own_width':0}), N+4)
check('separator-span contract', solve('separator-span', {'columns':[N,10,4],'gap':2}), N+18)
check('unknown operation', solve('unknown', {}), {'error': 'unsupported menu operation'})
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
indicator-column contract22Passed
badge contract00Passed
label-command contractcmd1cmd1Passed
suffix-order contractItem 1 (new)Item 1 (new)Passed
icon-space contract55Passed
separator-span contract1919Passed
unknown operation{'error': 'unsupported menu operation'}{'error': 'unsupported menu operation'}Passed

SHA-256 / b25a4b2dbb7acabb0df2f8600c0094f4e65eff71c3b5dddb4702e3071755f959

Verification & scope

Offline supplied-valid-payload model; excludes DOM, keyboard, focus, selection, announcements and browser conformance. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.

Observations recorded using Python 3.12.14 at 2026-09-29T14:42:21.729894+00:00.

Case digest / 8ff6a8710bf35323b3e31267ce8026f131953eff09489985384d31f3b6ca7a63