@@ -530,6 +530,7 @@ def submit(
530530 except ValueError as error :
531531 self .output .error (str (error ))
532532 raise typer .Exit (2 ) from error
533+ semantic_intent = intent .semantic_intent ()
533534
534535 # MEV shielding: explicit flag > persistent config > the intent's own
535536 # default. `forced` distinguishes "the user asked for shielding" (hard
@@ -538,10 +539,10 @@ def submit(
538539 # `mev_shield_required` intents (collateral AMM buys) refuse the
539540 # unshielded opt-out entirely.
540541 configured_shield = cfg .get ("mev_shield" )
541- if intent .mev_shield_required :
542+ if semantic_intent .mev_shield_required :
542543 if self .mev_shield is False or configured_shield is False :
543544 self .output .error (
544- f"{ intent .op } must be submitted MEV-shielded" ,
545+ f"{ semantic_intent .op } must be submitted MEV-shielded" ,
545546 help = (
546547 "collateral / burned-registration AMM fills cannot run "
547548 "unshielded; omit --no-mev-shield"
@@ -557,17 +558,17 @@ def submit(
557558 shield = bool (configured_shield )
558559 shield_forced = shield
559560 else :
560- shield = intent .mev_shield_default
561+ shield = semantic_intent .mev_shield_default
561562 shield_forced = False
562563 if shield and (proxy_for is not None or self .uses_extension_signer ()):
563564 blocker = "a proxied call" if proxy_for is not None else "the extension signer"
564- if shield_forced or intent .mev_shield_required :
565+ if shield_forced or semantic_intent .mev_shield_required :
565566 self .output .error (
566567 f"MEV shielding cannot wrap { blocker } " ,
567568 help = (
568569 "collateral intents cannot fall back to unshielded; "
569570 "sign directly without a proxy/extension"
570- if intent .mev_shield_required
571+ if semantic_intent .mev_shield_required
571572 else "pass --no-mev-shield to submit unshielded"
572573 ),
573574 )
@@ -607,12 +608,12 @@ async def _shield_fee_preflight(client):
607608
608609 shortfall = self .run (_shield_fee_preflight )
609610 if shortfall is not None :
610- if shield_forced or intent .mev_shield_required :
611+ if shield_forced or semantic_intent .mev_shield_required :
611612 self .output .error (
612613 "MEV-shielded submission needs free TAO for the outer carrier fee" ,
613614 help = (
614- f"{ intent .op } cannot submit unshielded"
615- if intent .mev_shield_required
615+ f"{ semantic_intent .op } cannot submit unshielded"
616+ if semantic_intent .mev_shield_required
616617 else "pass --no-mev-shield to submit unshielded "
617618 "(alpha fees work on the bare call), or fund the "
618619 "signing account with free TAO"
@@ -816,13 +817,13 @@ async def _execute(client):
816817 # The MevShield pallet isn't active here (e.g. localnet). A
817818 # forced / required shield must fail loudly; the built-in
818819 # default degrades visibly so the command still works.
819- if shield_forced or intent .mev_shield_required :
820+ if shield_forced or semantic_intent .mev_shield_required :
820821 raise BittensorError (
821822 "MEV shield is not active on this network "
822823 "(MevShield.NextKey is unset); "
823824 + (
824- f"{ intent .op } cannot submit unshielded"
825- if intent .mev_shield_required
825+ f"{ semantic_intent .op } cannot submit unshielded"
826+ if semantic_intent .mev_shield_required
826827 else "pass --no-mev-shield to submit unshielded"
827828 )
828829 )
@@ -844,13 +845,13 @@ async def _execute(client):
844845 else None
845846 )
846847 if shortfall is not None :
847- if shield_forced or intent .mev_shield_required :
848+ if shield_forced or semantic_intent .mev_shield_required :
848849 raise BittensorError (
849850 "MEV-shielded submission needs free TAO for the outer "
850851 "carrier fee; "
851852 + (
852- f"{ intent .op } cannot submit unshielded"
853- if intent .mev_shield_required
853+ f"{ semantic_intent .op } cannot submit unshielded"
854+ if semantic_intent .mev_shield_required
854855 else "pass --no-mev-shield to submit unshielded "
855856 "(alpha fees work on the bare call)"
856857 )
0 commit comments