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
Blocks: wrightkit/wright#245
Related: #108, #110
Evidence: Wright #245 final real-project verification on pinned Bastion e1a0435d84f0fd1ae5192e5088e7321bcb547ab6
Goal
Make the canonical Workshop settings model preserve the real raw Workshop semantics of lobby Match Voice Chat across supported locales instead of rendering its enabled state through the generic On / Off boolean token family.
Context
The pinned Bastion workflow passes wright check in both zh-CN and en-US, but both locale compile workflows fail when the emitted Workshop artifact is parsed again. The current path receives enableMatchVoiceChat: true and emits Match Voice Chat: On / 比赛语音聊天: 开启.
Upstream executable evidence shows that this is one setting represented differently across layers, not two independent lobby settings:
current OverPy settings schema exposes lobby.enableMatchVoiceChat as a boolean;
an OverPy compile fixture with enableMatchVoiceChat: true emits raw Workshop Match Voice Chat: Enabled;
the matching decompiler fixture maps raw Workshop Match Voice Chat: Enabled back to enableMatchVoiceChat: true;
the reviewed Workshop locale corpus maps the raw Enabled token used by customGameSettings.lobby.values.enableMatchVoiceChat to zh-CN 启用.
workshop-rs currently carries both a lobby.matchVoiceChat enum projection and a generated lobby.enableMatchVoiceChat boolean projection. Their coexistence is not evidence of two semantic settings. The failure occurs because the generated boolean projection uses the generic Bool renderer, whose raw tokens are On / Off, while this Workshop setting uses the Enabled value family.
This is a canonical Workshop settings identity/value-presentation defect. It is not evidence that matchVoiceChat is an obsolete setting that should simply be removed, and it should not be worked around in Wright.
Scope
Reconcile the Match Voice Chat projections into one effective canonical setting identity/value contract.
Preserve the evidenced enabled-state semantics while emitting and parsing the raw Workshop value token used by Match Voice Chat rather than the generic boolean On token.
Preserve locale-specific raw Workshop presentation, including the evidenced zh-CN 启用 token.
Establish the disabled-state raw representation from reviewed Workshop/upstream evidence before encoding it as a stable contract.
Ensure parser and emitter resolve the same semantic setting without relying on projection ordering.
Add focused regression evidence covering the motivating enabled state and any independently evidenced disabled state.
Rerun the pinned Bastion en-US and zh-CN compile/reparse workflows.
Treating enableMatchVoiceChat and matchVoiceChat as two different user-facing lobby settings without evidence.
Deleting the enum projection solely because it appears older than the generated boolean projection.
Accepting Match Voice Chat: On / 比赛语音聊天: 开启 as valid raw Workshop syntax without independent evidence.
Adding a Bastion-specific exception.
Changing OverPy source syntax or Wright provider behavior.
Broad cleanup of unrelated settings-table duplication.
Weakening unknown-settings diagnostics for genuinely invalid values.
Acceptance criteria
The effective canonical settings model represents Match Voice Chat as one semantic lobby setting rather than two unrelated settings inferred from internal keys.
The evidenced enabled state emits as raw Workshop Match Voice Chat: Enabled in en-US and the corresponding 比赛语音聊天: 启用 form in zh-CN, and both forms parse back successfully.
Generic Bool rendering does not turn the Match Voice Chat enabled state into On / 开启 unless future Workshop evidence explicitly supports that form.
Any disabled-state mapping is backed by reviewed Workshop/upstream evidence rather than inferred only from naming symmetry.
Parser/emitter behavior does not depend on whether the hand-written or generated projection is encountered first.
A focused regression fails under the current generic-Bool behavior and passes after the fix.
Pinned Bastion src/main.opy compile/reparse no longer fails on Match Voice Chat in either zh-CN or en-US when consumed through the fixed workshop-rs implementation.
No Wright/Bastion-specific semantic workaround is introduced, and existing settings/parser/emitter regressions remain green.
Independent implementation ablation restoring the generic-Bool Match Voice Chat rendering makes the focused regression fail again.
Blocks: wrightkit/wright#245
Related: #108, #110
Evidence: Wright #245 final real-project verification on pinned Bastion
e1a0435d84f0fd1ae5192e5088e7321bcb547ab6Goal
Make the canonical Workshop settings model preserve the real raw Workshop semantics of lobby Match Voice Chat across supported locales instead of rendering its enabled state through the generic
On/Offboolean token family.Context
The pinned Bastion workflow passes
wright checkin both zh-CN and en-US, but both locale compile workflows fail when the emitted Workshop artifact is parsed again. The current path receivesenableMatchVoiceChat: trueand emitsMatch Voice Chat: On/比赛语音聊天: 开启.Upstream executable evidence shows that this is one setting represented differently across layers, not two independent lobby settings:
lobby.enableMatchVoiceChatas a boolean;enableMatchVoiceChat: trueemits raw WorkshopMatch Voice Chat: Enabled;Match Voice Chat: Enabledback toenableMatchVoiceChat: true;Enabledtoken used bycustomGameSettings.lobby.values.enableMatchVoiceChatto zh-CN启用.workshop-rscurrently carries both alobby.matchVoiceChatenum projection and a generatedlobby.enableMatchVoiceChatboolean projection. Their coexistence is not evidence of two semantic settings. The failure occurs because the generated boolean projection uses the genericBoolrenderer, whose raw tokens areOn/Off, while this Workshop setting uses theEnabledvalue family.This is a canonical Workshop settings identity/value-presentation defect. It is not evidence that
matchVoiceChatis an obsolete setting that should simply be removed, and it should not be worked around in Wright.Scope
Ontoken.启用token.Non-goals
enableMatchVoiceChatandmatchVoiceChatas two different user-facing lobby settings without evidence.Match Voice Chat: On/比赛语音聊天: 开启as valid raw Workshop syntax without independent evidence.unknown-settingsdiagnostics for genuinely invalid values.Acceptance criteria
Match Voice Chat: Enabledin en-US and the corresponding比赛语音聊天: 启用form in zh-CN, and both forms parse back successfully.On/开启unless future Workshop evidence explicitly supports that form.src/main.opycompile/reparse no longer fails on Match Voice Chat in either zh-CN or en-US when consumed through the fixedworkshop-rsimplementation.