Severity
High — the flagship production safeguard can be bypassed by taking a different route to the same screen.
What happens
The advanced/push route renders DataPushScreen without the context prop, so props.context?.environment is undefined and pushConfirmationPhrase returns null for insert/update/upsert. A production-org write from that screen gets the plain one-click ConfirmModal instead of the typed INSERT N Account phrase — the exact same push from the Import route would be gated. Production warning banners also never render there.
Evidence
src/ui/app/AppRoot.tsx:468-478 (no context prop)
src/ui/utils/pushGuards.ts:25
Suggested fix
Pass context={context ?? undefined} to the advanced/push DataPushScreen exactly as the import route does; add a regression test asserting the typed gate on both routes.
Environment
Commit 74cf21b (main), WaveLink 0.6.0. Found in the 2026-08-31 adversarial audit (code-verified).
Severity
High — the flagship production safeguard can be bypassed by taking a different route to the same screen.
What happens
The
advanced/pushroute rendersDataPushScreenwithout thecontextprop, soprops.context?.environmentis undefined andpushConfirmationPhrasereturns null for insert/update/upsert. A production-org write from that screen gets the plain one-clickConfirmModalinstead of the typedINSERT N Accountphrase — the exact same push from the Import route would be gated. Production warning banners also never render there.Evidence
src/ui/app/AppRoot.tsx:468-478(nocontextprop)src/ui/utils/pushGuards.ts:25Suggested fix
Pass
context={context ?? undefined}to theadvanced/pushDataPushScreenexactly as the import route does; add a regression test asserting the typed gate on both routes.Environment
Commit
74cf21b(main), WaveLink 0.6.0. Found in the 2026-08-31 adversarial audit (code-verified).