app
Fusion - the Fusion 360 Bridge
Public Made by Adomby adom
Drive Autodesk Fusion 360 from the cloud via Adom Bridge: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling.
master
Drew Owens
Share frozen native Rust mechanical development checkpoint and qualification scope
b2d7cdb
26d ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116
{
"schemaVersion": 1,
"asOf": "2026-10-14",
"scope": "r7 starting parity ledger, frozen r6 qualification baseline; in-progress r7 implementations require later source-bound evidence promotion",
"independence": "Verifier previously authored native document identity and Windows storage hardening; not r7 mechanical or HTTP effect implementation. Reused structural role, no fresh-context/model-diversity claim.",
"sourceRoots": {
"legacy": "/home/adom/project/research/fusion-roadmap-build-2026-10-02/exploded-preview-preparation/runtime-dev9-build-r1/source",
"rust": "/home/adom/project/research/fusion-roadmap-build-2026-10-02/rust-native-migration-r7",
"baseline": "/home/adom/project/research/fusion-roadmap-build-2026-10-02/rust-native-migration-r6"
},
"inputs": {
"rustSchema": {
"path": "mechanical/schema.json",
"sha256": "6f704e05de031fa8ef329dc7be0b02d3a2b167eeb2fbc44ec6c2d933af4f7b48",
"bytes": 185782
},
"legacySchema": {
"path": "addin/AdomBridge/commands/mechanical/schema.json",
"sha256": "6f704e05de031fa8ef329dc7be0b02d3a2b167eeb2fbc44ec6c2d933af4f7b48",
"bytes": 185782
},
"legacyDispatcher": {
"path": "addin/AdomBridge/commands/mechanical/__init__.py",
"sha256": "79c9b3b0ae2e73ce6149b17242c60d68a0ed34d03e4eb04caddeeb85e71b325a",
"bytes": 10874
},
"legacyHostCatalog": {
"path": "contracts/describe.json",
"sha256": "70f3e2d8f2d4ffb6603c8a62478f149593f6ca19aa9a910dc26a02b607d0b7ba",
"bytes": 665236
},
"r6Status": {
"path": "RUST-STATUS.md",
"sha256": "2faa6ee5d056b4f269bdf3d358a483dbcde1f68bfabcfdc6bf15acd11ab709be",
"bytes": 9463
},
"operationMap": {
"path": "verification/native-operations/operation-map.tsv",
"sha256": "7966bbe24b4889df724e2359d5fefbc045795a059488c42aa72079d21bccc45d",
"bytes": 9128
},
"hostRetirementMap": {
"path": "verification/native-operations/host-retirement.json",
"sha256": "8a1067f97ceba8fc549dffe6106baf3abdc8892fcebe4730c9ddc6742bb16377",
"bytes": 6969
}
},
"counts": {
"mechanicalContracts": 61,
"unconditionalWrites": 46,
"reads": 14,
"conditionalHealth": 1,
"pythonFiles": 60,
"currentPythonAddinFiles": 47,
"embeddedPythonRuntimeFiles": 10,
"retiredHostReferenceFiles": 1,
"pythonAuthoringPackagingFiles": 2,
"retiredMissingHostImports": 9,
"pythonCategories": {
"addin_runtime_lifecycle": 2,
"contract_authoring_tool": 1,
"development_packaging": 1,
"dynamic_python_execution": 1,
"embedded_runtime_python": 10,
"mechanical_runtime": 23,
"mechanical_runtime_backend": 1,
"nonmechanical_addin_runtime": 20,
"retired_host_reference_optional_fallback": 1
},
"addinDispatcherEntries": 65,
"hostPythonDispatcherEntries": 50,
"hostCatalogVerbs": 179,
"mechanicalNativeHandlersQualifiedAtR6": 0,
"publicNativeReleases": 0
},
"statusRules": [
"Schema/contract validation does not implement or authorize a handler.",
"Source handler presence does not prove legacy runtime or SDK behavior was reexecuted in this audit.",
"Group-level contract tests do not prove each handler or every variant.",
"Native unit, external protocol, Windows SDK build, actual Fusion and public release are separate gates.",
"r6 live document inventory/status delivery does not qualify mechanical inspect or CAD effects.",
"A narrower supported subset must remain explicit; never promote entire schema from one successful variant.",
"No Python-free claim while dynamic code, embedded templates, optional sidecar/dependencies or installer/bootstrap paths remain."
],
"mechanicalOperations": [
{
"name": "assembly_properties",
"family": "assembly",
"access": "read",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/assemblies.py",
"function": "assembly_properties",
"line": 395,
"sha256": "a9097aefea289eb7748269e47158b80e70eeacbb9b5a155c2b4d7f016c747876",
"behavior": "Assembly physical properties and native units/readback."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/assembly_properties",
"required": [
"op",
"target"
],
"properties": [
"entity"
],
"description": "High-accuracy physical properties of whole root assembly (default) or an exact Component/Occurrence/BRepBody. Returns mass kg, volume mm3, area mm2, center of mass mm, mean density kg/mm3 and definition/instance coordinate scope.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "bom",
"family": "purchased_bom",
"access": "read",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/bill_of_materials.py",
"function": "bom",
"line": 98,
"sha256": "960c010226ab1ce21515b59c18528abe34146119be5383600d7d1d6076a0d7b0",
"behavior": "Definition identity, nested instance quantities, configuration suppression and purchased collapse; physical totals remain independent of purchasing exclusions."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/bom",
"required": [
"op",
"target"
],
"properties": [
"explodePurchased"
],
"description": "Structured component-definition and instance BOM; quantities by actual identity, root bodies plus nested children; purchased metadata collapses subtrees unless exploded. Physical mass includes all unsuppressed bodies exactly once per instance. Includes exact current active configuration provenance; incomplete configuration scope refuses. Visibility does not remove quantity.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "bom_export",
"family": "purchased_bom",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/bill_of_materials.py",
"function": "bom_export",
"line": 103,
"sha256": "960c010226ab1ce21515b59c18528abe34146119be5383600d7d1d6076a0d7b0",
"behavior": "Flat or structured CSV, configuration provenance, spreadsheet formula neutralization and staged publication; file effect is not model rollback."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/bom_export",
"required": [
"op",
"sessionId",
"operationId",
"target",
"filename"
],
"properties": [
"filename",
"overwrite",
"explodePurchased",
"mode"
],
"description": "Export flat grouped purchasing rows or structured parent/path/depth instance rows and supplier provenance to CSV with exclusive/atomic publication. This external effect is separate from model transactions. Both CSV modes include document/revision and current active configuration table/row provenance.",
"enumVariants": [
{
"path": "/properties/mode",
"values": [
"flat",
"structured"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "cad_import",
"family": "purchased_bom",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/purchased.py",
"function": "cad_import",
"line": 40,
"sha256": "c2acd7624409ba69e9fbd63c3b17672c1a3ff41c5af5a56669d70e792dcc12d1",
"behavior": "Bounded local STEP/SAT import into a wrapper component, hash/provenance validation, body and document-set readback; no download or cloud upload."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/cad_import",
"required": [
"op",
"sessionId",
"operationId",
"target",
"filename",
"provenance"
],
"properties": [
"filename",
"sha256",
"name",
"parent",
"transform",
"provenance",
"asPurchased"
],
"description": "Import a pre-downloaded local STEP/SAT into a new wrapper component in Hybrid design. Validate optional expected SHA-256, record actual source/hash/supplier metadata, preserve camera, measure model recovery. Does not fetch URLs or create cloud documents. Returns a representative root-context occurrence and all affectedOccurrences when the parent definition is reused.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "component_create",
"family": "assembly",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/assemblies.py",
"function": "component_create",
"line": 131,
"sha256": "a9097aefea289eb7748269e47158b80e70eeacbb9b5a155c2b4d7f016c747876",
"behavior": "Create component occurrence with metadata and verified placement/context."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/component_create",
"required": [
"op",
"sessionId",
"operationId",
"target",
"name"
],
"properties": [
"parent",
"name",
"transform",
"metadata"
],
"description": "Create a native internal component and its first occurrence in a Hybrid design. parent is a component definition; edits to it affect every instance. Returns a representative root-context occurrence and all affectedOccurrences when the parent definition is reused.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "component_metadata",
"family": "assembly",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/assemblies.py",
"function": "component_metadata",
"line": 204,
"sha256": "a9097aefea289eb7748269e47158b80e70eeacbb9b5a155c2b4d7f016c747876",
"behavior": "Edit component definition purchasing/identity metadata with readback."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/component_metadata",
"required": [
"op",
"sessionId",
"operationId",
"target",
"changes"
],
"properties": [
"component",
"changes"
],
"description": "Update component-definition name/part number/description and persistent supplier or BOM attributes. Shared occurrences all see this metadata.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "configuration_inspect",
"family": "configuration",
"access": "read",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/configurations.py",
"function": "inspect",
"line": 320,
"sha256": "f99276ad97639d5540beb642bb3d4416fb77cf24c9345594d3437e7e2ebe70d0",
"behavior": "Read configuration table, active row, typed cells, source links and explicit completeness; no configuration activation or editing."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/configuration_inspect",
"required": [
"op",
"target"
],
"properties": [],
"description": "Read the loaded Design configuration graph without activation or recompute: ordinary rows, the separate native reserved test row, all supported typed cells including inactive/test cells, exact controlled-source links and current ordinary row. Unreadable fields and unknown/theme/hierarchical/inserted scopes remain explicit incomplete diagnostics. Configuration lifecycle and configured-design model mutations remain disabled pending native recovery/archive gates.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "construction_axis",
"family": "geometry",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/geometry.py",
"function": "construction_axis",
"line": 250,
"sha256": "6759f684f847cddcd4853d20579743ddbb5c19500b96491f2798b6346cfec939",
"behavior": "Create supported construction axis with guarded source geometry and readback."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/construction_axis",
"required": [
"op",
"target",
"sessionId",
"operationId",
"type",
"entities"
],
"properties": [
"component",
"type",
"entities",
"creationOccurrence",
"name"
],
"description": "Create a parametric axis from native references (edge/circular face/two intersecting planes/two distinct points). Root-space external geometry requires exact occurrence context. For cross-component geometry into a non-root target component, creationOccurrence must identify a root-context instance of that target. Returns component-space native axis geometry/health. No direct-only infinite-line or preview snap APIs.",
"enumVariants": [
{
"path": "/properties/type",
"values": [
"edge",
"circular_face",
"two_planes",
"two_points"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "entity_delete",
"family": "geometry",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/features.py",
"function": "entity_delete",
"line": 198,
"sha256": "e05b4cb1f9892700ab74e625d9c3b5c1a69545d3d58cc7c73637e7d0d5285e0d",
"behavior": "Delete an allowed sketch/curve/point/plane/feature reference with transaction handling; not arbitrary object deletion."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/entity_delete",
"required": [
"op",
"sessionId",
"operationId",
"target",
"entity"
],
"properties": [
"entity"
],
"description": "Delete sketch geometry or independently deletable timeline features. Model transaction and semantic recovery cover downstream failures; document and external file deletion are excluded.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "exploded_preview_create",
"family": "presentation",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/exploded_preview.py",
"function": "create",
"line": 463,
"sha256": "a85a26e5dba4e3107155410723791a50a4f9c63e1c3928770325f0cfe37b6ade",
"behavior": "Reserve finite session-owned custom graphics in an owned blank presentation design from a source-bound plan and durable creation proof."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/exploded_preview_create",
"required": [
"op",
"sessionId",
"operationId",
"target",
"sourceTarget",
"creationOperationId",
"expectedPlanId",
"planner"
],
"properties": [
"sessionId",
"target",
"sourceTarget",
"creationOperationId",
"expectedPlanId",
"planner"
],
"description": "Create finite copied solid-BRep presentation graphics in the exact active blank unsaved Design proven by a committed current-session new_design result. Regenerates the guarded source plan; leaves source active. Exclusive session lease, no source moves/visibility writes, no model transaction, automatic document close, render or capture. Live capability and native backend qualification are separate from durable operation receipts.",
"enumVariants": [
{
"path": "/properties/planner/properties/unit",
"values": [
"mm"
]
},
{
"path": "/properties/planner/properties/steps/items/properties/moves/items/properties/frame",
"values": [
"world",
"parent",
"local"
]
},
{
"path": "/properties/planner/properties/playback",
"values": [
"explode",
"assemble"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "exploded_preview_dispose",
"family": "presentation",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/exploded_preview.py",
"function": "dispose",
"line": 475,
"sha256": "a85a26e5dba4e3107155410723791a50a4f9c63e1c3928770325f0cfe37b6ade",
"behavior": "Dispose only the controller's owned graphics/lease; history does not authorize adopting live resources after restart."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/exploded_preview_dispose",
"required": [
"op",
"sessionId",
"operationId",
"target",
"previewId",
"expectedGeneration"
],
"properties": [
"sessionId",
"target",
"previewId",
"expectedGeneration"
],
"description": "Delete only the exact retained graphics tree and leave the blank document open for caller. Supports a narrowly proven cleanup after unresolved terminal storage without rewriting that history; no global Undo or close. Requires the current controller capability, presentation target, generation and a durable operation ID. Old-session native resources are never rebound.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "exploded_preview_inspect",
"family": "presentation",
"access": "read",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/exploded_preview.py",
"function": "inspect",
"line": 479,
"sha256": "a85a26e5dba4e3107155410723791a50a4f9c63e1c3928770325f0cfe37b6ade",
"behavior": "Inspect the current controller capability, ownership and live resources; not reconstructed from terminal history."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/exploded_preview_inspect",
"required": [
"op",
"sessionId",
"previewId"
],
"properties": [
"sessionId",
"previewId"
],
"description": "Main-thread live preview ownership/geometry/history observation. Cached operation receipts do not establish current graphics liveness. Old-session history remains separately readable through mech_operation_status; no native reference adoption or lifecycle repair is provided here.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "exploded_preview_sample",
"family": "presentation",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/exploded_preview.py",
"function": "sample",
"line": 467,
"sha256": "a85a26e5dba4e3107155410723791a50a4f9c63e1c3928770325f0cfe37b6ade",
"behavior": "Apply a finite sampled pose to owned presentation graphics; source model is not moved."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/exploded_preview_sample",
"required": [
"op",
"sessionId",
"operationId",
"target",
"previewId",
"expectedGeneration",
"sampleIndex"
],
"properties": [
"sessionId",
"target",
"previewId",
"expectedGeneration",
"sampleIndex"
],
"description": "Apply one server-stored absolute sample to exact-owned graphics; preserve active document. Source must remain unchanged. Requires the current controller capability, presentation target, generation and a durable operation ID. Old-session native resources are never rebound.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "exploded_preview_show",
"family": "presentation",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/exploded_preview.py",
"function": "show",
"line": 471,
"sha256": "a85a26e5dba4e3107155410723791a50a4f9c63e1c3928770325f0cfe37b6ade",
"behavior": "Show owned presentation resources with controller ownership checks; no unbounded playback timer."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/exploded_preview_show",
"required": [
"op",
"sessionId",
"operationId",
"target",
"previewId",
"expectedGeneration"
],
"properties": [
"sessionId",
"target",
"previewId",
"expectedGeneration"
],
"description": "Explicitly activate the exact-owned presentation in Fusion; refuse an intervening foreign active document. No OS foreground, camera change or capture. Requires the current controller capability, presentation target, generation and a durable operation ID. Old-session native resources are never rebound.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "exploded_view_plan",
"family": "presentation",
"access": "read",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/exploded_view.py",
"function": "exploded_view_plan",
"line": 184,
"sha256": "a4f857fc2123cd7c21655ff36aec37a30dba36404a79a6d2aab0863b37ef571f",
"behavior": "Read-only bounded translation plan with exact instance hierarchy, local/parent/world frames and source/configuration binding; no native object movement."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/exploded_view_plan",
"required": [
"op",
"sessionId",
"target",
"unit",
"steps"
],
"properties": [
"sessionId",
"target",
"unit",
"steps",
"sampleTimes",
"playback"
],
"description": "Read-only source-bound exploded assembly plan. Normalized translation directions in immutable home world/parent/local axes; simultaneous moves within ordered steps. Descendants inherit ancestor translations once, plus own moves. Bounded deterministic sample matrices and exact home reverse endpoint. No native moves, graphics, BOM quantity changes, render/video or storyboard creation. Complete configuration identity required.",
"enumVariants": [
{
"path": "/properties/unit",
"values": [
"mm"
]
},
{
"path": "/properties/steps/items/properties/moves/items/properties/frame",
"values": [
"world",
"parent",
"local"
]
},
{
"path": "/properties/playback",
"values": [
"explode",
"assemble"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "export",
"family": "export",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/operations.py",
"function": "export",
"line": 226,
"sha256": "e3d124bd0ef4aa67b5653af72b0ecacc2e1dbc420e48e05855e60d75816c94cd",
"behavior": "Guarded model export delegated to exporting.py with staged file publication and explicit format support."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/export",
"required": [
"op",
"sessionId",
"operationId",
"target",
"outputPath"
],
"properties": [
"format",
"outputPath",
"overwrite",
"refinement"
],
"description": "Export entire design using runtime-checked API. Preflight and unique same-filesystem staging preserve the destination on failure; publish only nonempty verified output. Availability differs by Fusion build. STL numeric coordinates use mm.",
"enumVariants": [
{
"path": "/properties/format",
"values": [
"step",
"stl",
"3mf",
"f3d",
"iges",
"sat",
"smt",
"usdz",
"fbx",
"skp"
]
},
{
"path": "/properties/refinement",
"values": [
"low",
"medium",
"high"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "feature_create",
"family": "features",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/features.py",
"function": "feature_create",
"line": 43,
"sha256": "e05b4cb1f9892700ab74e625d9c3b5c1a69545d3d58cc7c73637e7d0d5285e0d",
"behavior": "Extrude, revolve, fillet, chamfer, shell, hole, loft, sweep, combine, split, move, mirror, rectangular/circular pattern, draft and thread variants."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/feature_create",
"required": [
"op",
"sessionId",
"operationId",
"target",
"type"
],
"properties": [
"type",
"component",
"name",
"profiles",
"distance",
"direction",
"taper",
"bodies",
"operation",
"axis",
"angle",
"edges",
"radius",
"tangentChain",
"faces",
"thickness",
"points",
"diameter",
"depth",
"path",
"body",
"tools",
"keepTools",
"plane",
"extend",
"translation",
"origin",
"count",
"spacing",
"axis2",
"count2",
"spacing2",
"internal",
"threadType",
"designation",
"threadClass",
"modeled"
],
"description": "Create a typed native solid feature. All length quantities are mm (or expressions), angles deg. Cut/intersect require explicit participant bodies. Join needs a single existing component body; combine selects multiple bodies explicitly. Feature availability is runtime-checked; missing APIs fail before commit.",
"enumVariants": [
{
"path": "/properties/type",
"values": [
"extrude",
"revolve",
"fillet",
"chamfer",
"shell",
"hole",
"loft",
"sweep",
"combine",
"split",
"move",
"mirror",
"rectangular_pattern",
"circular_pattern",
"draft",
"thread"
]
},
{
"path": "/oneOf/0/properties/type",
"values": [
"extrude"
]
},
{
"path": "/oneOf/0/properties/direction",
"values": [
"positive",
"negative",
"symmetric"
]
},
{
"path": "/oneOf/0/properties/operation",
"values": [
"new_body",
"join",
"cut",
"intersect"
]
},
{
"path": "/oneOf/1/properties/type",
"values": [
"revolve"
]
},
{
"path": "/oneOf/1/properties/axis/oneOf/0",
"values": [
"x",
"y",
"z"
]
},
{
"path": "/oneOf/1/properties/operation",
"values": [
"new_body",
"join",
"cut",
"intersect"
]
},
{
"path": "/oneOf/2/properties/type",
"values": [
"fillet"
]
},
{
"path": "/oneOf/3/properties/type",
"values": [
"chamfer"
]
},
{
"path": "/oneOf/4/properties/type",
"values": [
"shell"
]
},
{
"path": "/oneOf/5/properties/type",
"values": [
"hole"
]
},
{
"path": "/oneOf/6/properties/type",
"values": [
"loft"
]
},
{
"path": "/oneOf/6/properties/operation",
"values": [
"new_body",
"join",
"cut",
"intersect"
]
},
{
"path": "/oneOf/7/properties/type",
"values": [
"sweep"
]
},
{
"path": "/oneOf/7/properties/operation",
"values": [
"new_body",
"join",
"cut",
"intersect"
]
},
{
"path": "/oneOf/8/properties/type",
"values": [
"combine"
]
},
{
"path": "/oneOf/8/properties/operation",
"values": [
"join",
"cut",
"intersect"
]
},
{
"path": "/oneOf/9/properties/type",
"values": [
"split"
]
},
{
"path": "/oneOf/9/properties/plane/oneOf/0",
"values": [
"xy",
"xz",
"yz"
]
},
{
"path": "/oneOf/10/properties/type",
"values": [
"move"
]
},
{
"path": "/oneOf/11/properties/type",
"values": [
"mirror"
]
},
{
"path": "/oneOf/11/properties/plane/oneOf/0",
"values": [
"xy",
"xz",
"yz"
]
},
{
"path": "/oneOf/12/properties/type",
"values": [
"rectangular_pattern"
]
},
{
"path": "/oneOf/12/properties/axis/oneOf/0",
"values": [
"x",
"y",
"z"
]
},
{
"path": "/oneOf/12/properties/axis2/oneOf/0",
"values": [
"x",
"y",
"z"
]
},
{
"path": "/oneOf/13/properties/type",
"values": [
"circular_pattern"
]
},
{
"path": "/oneOf/13/properties/axis/oneOf/0",
"values": [
"x",
"y",
"z"
]
},
{
"path": "/oneOf/14/properties/type",
"values": [
"draft"
]
},
{
"path": "/oneOf/14/properties/plane/oneOf/0",
"values": [
"xy",
"xz",
"yz"
]
},
{
"path": "/oneOf/15/properties/type",
"values": [
"thread"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "feature_edit",
"family": "features",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/features.py",
"function": "feature_edit",
"line": 181,
"sha256": "e05b4cb1f9892700ab74e625d9c3b5c1a69545d3d58cc7c73637e7d0d5285e0d",
"behavior": "Edit supported existing feature parameters/properties and verify health/readback."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/feature_edit",
"required": [
"op",
"sessionId",
"operationId",
"target",
"feature"
],
"properties": [
"feature",
"name",
"suppressed",
"parameters"
],
"description": "Rename/suppress a feature or change expressions of model parameters whose createdBy is that exact feature; read health and abort on downstream errors.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "geometry_query",
"family": "geometry",
"access": "read",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/geometry.py",
"function": "geometry_query",
"line": 195,
"sha256": "6759f684f847cddcd4853d20579743ddbb5c19500b96491f2798b6346cfec939",
"behavior": "Query faces/edges/vertices using typed filters and explicit coordinate contexts; no guessed name targeting."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/geometry_query",
"required": [
"op",
"target",
"body",
"kind",
"space"
],
"properties": [
"body",
"kind",
"space",
"selection",
"filters",
"maxResults"
],
"description": "Complete body-scoped topology query, no arbitrary first-match selection. selection one (default) refuses zero/multiple matches; many may return empty. Geometry types are exact native types; size ranges inclusive in mm/mm2, near is minimum distance in the explicit frame; direction is outward planar face normal or linear edge tangent. Returned refs retain instance context even for component-space filters. Exceeding maxResults fails rather than truncating.",
"enumVariants": [
{
"path": "/properties/kind",
"values": [
"faces",
"edges",
"vertices"
]
},
{
"path": "/properties/space",
"values": [
"root",
"component"
]
},
{
"path": "/properties/selection",
"values": [
"one",
"many"
]
},
{
"path": "/properties/filters/properties/type",
"values": [
"Plane",
"Cylinder",
"Cone",
"Sphere",
"Torus",
"NurbsSurface",
"Line3D",
"Arc3D",
"Circle3D",
"Ellipse3D",
"EllipticalArc3D",
"NurbsCurve3D",
"Point3D",
"degenerate"
]
},
{
"path": "/properties/filters/properties/direction/properties/orientation",
"values": [
"same",
"parallel"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "health",
"family": "foundation",
"access": "read_or_recompute_write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/operations.py",
"function": "check_health",
"line": 220,
"sha256": "e3d124bd0ef4aa67b5653af72b0ecacc2e1dbc420e48e05855e60d75816c94cd",
"behavior": "Read feature health; recompute:true is a journaled write and requires current target/session/operation identity."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/health",
"required": [
"op",
"target"
],
"properties": [
"recompute"
],
"description": "Read timeline warnings/errors. recompute:true also requires current target revision, sessionId and operationId.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "inspect",
"family": "foundation",
"access": "read",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/operations.py",
"function": "inspect",
"line": 13,
"sha256": "e3d124bd0ef4aa67b5653af72b0ecacc2e1dbc420e48e05855e60d75816c94cd",
"behavior": "Inspect active Design entities, parameters, transforms, health, joints and configuration; r6 document-list inventory is not this operation."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/inspect",
"required": [
"op"
],
"properties": [],
"description": "Inspect the active Design without mutation. Returns target identity/revision, native component-space bodies and occurrence transforms, parameters and feature health.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "first_slice_in_progress_unqualified",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "inspect_entity",
"family": "geometry",
"access": "read",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/operations.py",
"function": "inspect_entity",
"line": 58,
"sha256": "e3d124bd0ef4aa67b5653af72b0ecacc2e1dbc420e48e05855e60d75816c94cd",
"behavior": "Exact guarded entity resolution with type-specific readback."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/inspect_entity",
"required": [
"op",
"target",
"entity"
],
"properties": [
"entity"
],
"description": null,
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "interference",
"family": "assembly",
"access": "read",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/assemblies.py",
"function": "interference",
"line": 410,
"sha256": "a9097aefea289eb7748269e47158b80e70eeacbb9b5a155c2b4d7f016c747876",
"behavior": "Native assembly interference query with validated entity context."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/interference",
"required": [
"op",
"target",
"entities"
],
"properties": [
"entities",
"includeTouching",
"volumeTolerance"
],
"description": "Analyze root-context occurrences/body proxies; returns overlap volume mm3 or touching. Does not create interference bodies.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "joint_create",
"family": "joints",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/assemblies.py",
"function": "joint_create",
"line": 320,
"sha256": "a9097aefea289eb7748269e47158b80e70eeacbb9b5a155c2b4d7f016c747876",
"behavior": "Create supported as-built joint, motion/limits and attachment readback."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/joint_create",
"required": [
"op",
"sessionId",
"operationId",
"target",
"type",
"occurrenceOne",
"occurrenceTwo"
],
"properties": [
"type",
"occurrenceOne",
"occurrenceTwo",
"geometry",
"axis",
"name",
"suppressed",
"rotationLimits",
"slideLimits",
"rotationValue",
"slideValue",
"primarySlideLimits",
"primarySlideValue",
"secondarySlideLimits",
"secondarySlideValue",
"pitchLimits",
"pitchValue",
"rollLimits",
"rollValue",
"yawLimits",
"yawValue",
"slideAxis"
],
"description": "Create an as-built joint without moving occurrences. Non-rigid motion requires explicit joint geometry; x/y/z are joint-coordinate directions. Limits and drive values use mm/deg. Seven native motion types; ball uses joint Z pitch/X yaw; planar uses native primary slide direction reported on readback. Use regular_joint_create for geometry-solving placement.",
"enumVariants": [
{
"path": "/properties/type",
"values": [
"rigid",
"revolute",
"slider",
"cylindrical",
"pin_slot",
"planar",
"ball"
]
},
{
"path": "/properties/geometry/properties/keyPoint",
"values": [
"center",
"start",
"middle",
"end"
]
},
{
"path": "/properties/axis",
"values": [
"x",
"y",
"z"
]
},
{
"path": "/properties/slideAxis",
"values": [
"x",
"y",
"z"
]
},
{
"path": "/oneOf/0/properties/type",
"values": [
"rigid"
]
},
{
"path": "/oneOf/1/properties/type",
"values": [
"revolute"
]
},
{
"path": "/oneOf/1/properties/geometry/properties/keyPoint",
"values": [
"center",
"start",
"middle",
"end"
]
},
{
"path": "/oneOf/1/properties/axis",
"values": [
"x",
"y",
"z"
]
},
{
"path": "/oneOf/2/properties/type",
"values": [
"slider"
]
},
{
"path": "/oneOf/2/properties/geometry/properties/keyPoint",
"values": [
"center",
"start",
"middle",
"end"
]
},
{
"path": "/oneOf/2/properties/axis",
"values": [
"x",
"y",
"z"
]
},
{
"path": "/oneOf/3/properties/type",
"values": [
"cylindrical"
]
},
{
"path": "/oneOf/3/properties/geometry/properties/keyPoint",
"values": [
"center",
"start",
"middle",
"end"
]
},
{
"path": "/oneOf/3/properties/axis",
"values": [
"x",
"y",
"z"
]
},
{
"path": "/oneOf/4/properties/type",
"values": [
"pin_slot"
]
},
{
"path": "/oneOf/4/properties/geometry/properties/keyPoint",
"values": [
"center",
"start",
"middle",
"end"
]
},
{
"path": "/oneOf/4/properties/axis",
"values": [
"x",
"y",
"z"
]
},
{
"path": "/oneOf/4/properties/slideAxis",
"values": [
"x",
"y",
"z"
]
},
{
"path": "/oneOf/5/properties/type",
"values": [
"planar"
]
},
{
"path": "/oneOf/5/properties/geometry/properties/keyPoint",
"values": [
"center",
"start",
"middle",
"end"
]
},
{
"path": "/oneOf/5/properties/axis",
"values": [
"x",
"y",
"z"
]
},
{
"path": "/oneOf/6/properties/type",
"values": [
"ball"
]
},
{
"path": "/oneOf/6/properties/geometry/properties/keyPoint",
"values": [
"center",
"start",
"middle",
"end"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "joint_delete",
"family": "joints",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/assemblies.py",
"function": "joint_delete",
"line": 357,
"sha256": "a9097aefea289eb7748269e47158b80e70eeacbb9b5a155c2b4d7f016c747876",
"behavior": "Delete exact joint reference with transaction handling."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/joint_delete",
"required": [
"op",
"sessionId",
"operationId",
"target",
"joint"
],
"properties": [
"joint"
],
"description": "Delete one selected Joint or AsBuiltJoint with recovery verification.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "joint_edit",
"family": "joints",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/assemblies.py",
"function": "joint_edit",
"line": 346,
"sha256": "a9097aefea289eb7748269e47158b80e70eeacbb9b5a155c2b4d7f016c747876",
"behavior": "Edit as-built joint motion/limits and verify resulting state."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/joint_edit",
"required": [
"op",
"sessionId",
"operationId",
"target",
"joint"
],
"properties": [
"joint",
"name",
"suppressed",
"rotationLimits",
"slideLimits",
"rotationValue",
"slideValue",
"primarySlideLimits",
"primarySlideValue",
"secondarySlideLimits",
"secondarySlideValue",
"pitchLimits",
"pitchValue",
"rollLimits",
"rollValue",
"yawLimits",
"yawValue"
],
"description": "Edit joint name/suppression, enabled limits, rest and drive values; wrong motion type or out-of-limit values fail with recovery. For driven root joints, active motion links must preserve their settings and their partner motion must follow the native ratio; a coupling mismatch aborts.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "joint_origin_create",
"family": "joints",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/regular_joints.py",
"function": "joint_origin_create",
"line": 438,
"sha256": "22f358233a9d755bfb9af5a3c6649bbfa113bfab8a771202c1908e7e42063434",
"behavior": "Create joint origin with guarded attachment/frame selectors and parameter readback."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/joint_origin_create",
"required": [
"op",
"sessionId",
"operationId",
"target",
"geometry"
],
"properties": [
"component",
"name",
"geometry",
"flipped",
"xAxisEntity",
"zAxisEntity",
"angle",
"offsetX",
"offsetY",
"offsetZ"
],
"description": "Create a native component-definition joint origin from guarded native geometry, with mm offsets/deg angle and optional straight axis references. Child occurrence origin references are exposed by inspect_entity(occurrence).",
"enumVariants": [
{
"path": "/properties/geometry/properties/keyPoint",
"values": [
"center",
"start",
"middle",
"end"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "joint_origin_delete",
"family": "joints",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/regular_joints.py",
"function": "joint_origin_delete",
"line": 480,
"sha256": "22f358233a9d755bfb9af5a3c6649bbfa113bfab8a771202c1908e7e42063434",
"behavior": "Delete exact joint-origin reference."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/joint_origin_delete",
"required": [
"op",
"sessionId",
"operationId",
"target",
"origin"
],
"properties": [
"origin"
],
"description": "Delete a native joint origin; unhealthy downstream joints cause transaction rollback.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "joint_origin_edit",
"family": "joints",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/regular_joints.py",
"function": "joint_origin_edit",
"line": 457,
"sha256": "22f358233a9d755bfb9af5a3c6649bbfa113bfab8a771202c1908e7e42063434",
"behavior": "Edit joint-origin attachment/axes/parameters and verify."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/joint_origin_edit",
"required": [
"op",
"sessionId",
"operationId",
"target",
"origin"
],
"properties": [
"origin",
"name",
"geometry",
"flipped",
"xAxisEntity",
"zAxisEntity",
"angle",
"offsetX",
"offsetY",
"offsetZ"
],
"description": "Edit a native joint origin definition; rolls before its timeline item and restores the original marker in finally. Recomputes and verifies attachment, axes, offsets, angle, name and flip.",
"enumVariants": [
{
"path": "/properties/geometry/properties/keyPoint",
"values": [
"center",
"start",
"middle",
"end"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "material_assign",
"family": "purchased_bom",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/purchased.py",
"function": "material_assign",
"line": 116,
"sha256": "c2acd7624409ba69e9fbd63c3b17672c1a3ff41c5af5a56669d70e792dcc12d1",
"behavior": "Assign exact material ID from selected library/design to native component/body definition; verify ID, not display name."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/material_assign",
"required": [
"op",
"sessionId",
"operationId",
"target",
"entity",
"materialId"
],
"properties": [
"entity",
"libraryId",
"materialId"
],
"description": "Assign a loaded library or document material to an exact native Component/BRepBody; verify material ID readback with model transaction recovery. Query assembly_properties for resulting mass.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "material_list",
"family": "purchased_bom",
"access": "read",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/purchased.py",
"function": "material_list",
"line": 101,
"sha256": "c2acd7624409ba69e9fbd63c3b17672c1a3ff41c5af5a56669d70e792dcc12d1",
"behavior": "Bounded material/library discovery with query, matching count and completeness."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/material_list",
"required": [
"op",
"target"
],
"properties": [
"libraryId",
"query",
"limit"
],
"description": "List loaded material libraries and matching materials by stable library/material IDs. Omit libraryId for document materials.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "mcmaster_discover",
"family": "purchased_bom",
"access": "read",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/purchased.py",
"function": "mcmaster_discover",
"line": 81,
"sha256": "c2acd7624409ba69e9fbd63c3b17672c1a3ff41c5af5a56669d70e792dcc12d1",
"behavior": "Discover Fusion's InsertMcMasterCarrComponentCommand and requirements; not supplier search or purchasing."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/mcmaster_discover",
"required": [
"op"
],
"properties": [],
"description": "Discover Fusion native Insert McMaster-Carr command and requirements in the active design.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "mcmaster_open",
"family": "purchased_bom",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/purchased.py",
"function": "mcmaster_open",
"line": 90,
"sha256": "c2acd7624409ba69e9fbd63c3b17672c1a3ff41c5af5a56669d70e792dcc12d1",
"behavior": "Launch native interactive McMaster command in a guarded hybrid design; launch acknowledgment is not insertion completion, transaction or unattended download."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/mcmaster_open",
"required": [
"op",
"sessionId",
"operationId",
"target"
],
"properties": [],
"description": "Invoke Fusion native McMaster UI in the targeted Hybrid design. Interactive external operation: completion/insert/cancel stays with Fusion; inspect afterward. Idempotency records launch only.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "measure",
"family": "geometry",
"access": "read",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/geometry.py",
"function": "measure",
"line": 107,
"sha256": "6759f684f847cddcd4853d20579743ddbb5c19500b96491f2798b6346cfec939",
"behavior": "Native distance/angle measurement with supported geometry and witness points/contexts."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/measure",
"required": [
"op",
"target",
"type",
"space",
"entities"
],
"properties": [
"type",
"space",
"entities"
],
"description": "Native engineering minimum distance or angle in root assembly space. Non-root definition refs require an occurrence context. Distance needs2 entities; angle needs2 lines/planes or3 points (second apex). Returns mm/deg and native witness positions in root mm. witnessValidation identifies native points or native geometry directions used for valid parallel angles with degenerate native points; degenerate point angles and unavailable/inconsistent witnesses fail.",
"enumVariants": [
{
"path": "/properties/type",
"values": [
"distance",
"angle"
]
},
{
"path": "/properties/space",
"values": [
"root"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "motion_link_create",
"family": "joints",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/motion_links.py",
"function": "motion_link_create",
"line": 98,
"sha256": "2d0ddafcd4cf97f6eb0be65e1ffd3e3ec43d897bb0d34838f281a670241cbe99",
"behavior": "Create native motion link between guarded supported joint motions."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/motion_link_create",
"required": [
"op",
"sessionId",
"operationId",
"target",
"jointOne",
"motionOne",
"motionTwo",
"valueOne",
"valueTwo"
],
"properties": [
"jointOne",
"jointTwo",
"name",
"motionOne",
"motionTwo",
"valueOne",
"valueTwo",
"reversed"
],
"description": "Create a native motion link between two root-owned joints, or two different motions of jointOne when jointTwo is omitted. Positive ratio magnitudes use mm for translation and deg for rotation; reversed selects opposite direction. Requires the November 2025+ API; no script fallback.",
"enumVariants": [
{
"path": "/properties/motionOne",
"values": [
"rotation",
"slide",
"primarySlide",
"secondarySlide",
"pitch",
"roll",
"yaw"
]
},
{
"path": "/properties/motionTwo",
"values": [
"rotation",
"slide",
"primarySlide",
"secondarySlide",
"pitch",
"roll",
"yaw"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "motion_link_delete",
"family": "joints",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/motion_links.py",
"function": "motion_link_delete",
"line": 148,
"sha256": "2d0ddafcd4cf97f6eb0be65e1ffd3e3ec43d897bb0d34838f281a670241cbe99",
"behavior": "Delete exact motion-link reference."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/motion_link_delete",
"required": [
"op",
"sessionId",
"operationId",
"target",
"link"
],
"properties": [
"link"
],
"description": "Delete a root-owned motion link under the same transaction/recovery contract.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "motion_link_edit",
"family": "joints",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/motion_links.py",
"function": "motion_link_edit",
"line": 117,
"sha256": "2d0ddafcd4cf97f6eb0be65e1ffd3e3ec43d897bb0d34838f281a670241cbe99",
"behavior": "Edit motion-link parameters and verify exact native readback."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/motion_link_edit",
"required": [
"op",
"sessionId",
"operationId",
"target",
"link"
],
"properties": [
"link",
"suppressed",
"name",
"motionOne",
"motionTwo",
"valueOne",
"valueTwo",
"reversed"
],
"description": "Edit a root-owned motion link ratio, degree-of-freedom pair, direction, name or suppression. Joint membership is immutable; recreate the link to change members. Verify exact joint identities, ratio, flags and health.",
"enumVariants": [
{
"path": "/properties/motionOne",
"values": [
"rotation",
"slide",
"primarySlide",
"secondarySlide",
"pitch",
"roll",
"yaw"
]
},
{
"path": "/properties/motionTwo",
"values": [
"rotation",
"slide",
"primarySlide",
"secondarySlide",
"pitch",
"roll",
"yaw"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "new_design",
"family": "foundation",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/operations.py",
"function": "new_design",
"line": 97,
"sha256": "e3d124bd0ef4aa67b5653af72b0ecacc2e1dbc420e48e05855e60d75816c94cd",
"behavior": "Create unnamed unsaved parametric hybrid Design, optional parameter-driven box; requested name is metadata. Failure cleanup discards only the newly created unsaved document."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/new_design",
"required": [
"op",
"sessionId",
"operationId"
],
"properties": [
"name",
"box"
],
"description": "Create an unnamed unsaved parametric hybrid Design; name is retained as requestedName metadata to keep failure recovery free of save dialogs. Optional box dimensions in mm create a driving-parameter fixture. Never edits an existing document.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "first_slice_in_progress_unqualified",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "occurrence_delete",
"family": "assembly",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/assemblies.py",
"function": "occurrence_delete",
"line": 188,
"sha256": "a9097aefea289eb7748269e47158b80e70eeacbb9b5a155c2b4d7f016c747876",
"behavior": "Delete an exact occurrence without conflating component definitions or sibling instances."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/occurrence_delete",
"required": [
"op",
"sessionId",
"operationId",
"target",
"occurrence"
],
"properties": [
"occurrence"
],
"description": "Delete one selected occurrence through the shared transaction executor.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "occurrence_insert",
"family": "assembly",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/assemblies.py",
"function": "occurrence_insert",
"line": 144,
"sha256": "a9097aefea289eb7748269e47158b80e70eeacbb9b5a155c2b4d7f016c747876",
"behavior": "Insert another instance of an existing component with verified transform/context."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/occurrence_insert",
"required": [
"op",
"sessionId",
"operationId",
"target",
"component"
],
"properties": [
"component",
"parent",
"transform",
"independentCopy"
],
"description": "Insert another occurrence of an existing definition; independentCopy:true uses Paste New to create a separate definition. Nested placement is in parent component coordinates. Returns a representative root-context occurrence and all affectedOccurrences when the parent definition is reused.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "occurrence_update",
"family": "assembly",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/assemblies.py",
"function": "occurrence_update",
"line": 160,
"sha256": "a9097aefea289eb7748269e47158b80e70eeacbb9b5a155c2b4d7f016c747876",
"behavior": "Update occurrence placement/visibility/grounding with state and transform checks."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/occurrence_update",
"required": [
"op",
"sessionId",
"operationId",
"target",
"occurrence"
],
"properties": [
"occurrence",
"transform",
"grounded",
"groundedToParent"
],
"description": "Set occurrence pose in its assembly context and capture position; explicit grounding/ungrounding. Grounded or constrained transforms fail with recovery.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "parameter_batch",
"family": "foundation",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/features.py",
"function": "parameter_batch",
"line": 213,
"sha256": "e05b4cb1f9892700ab74e625d9c3b5c1a69545d3d58cc7c73637e7d0d5285e0d",
"behavior": "Grouped parameter create/set/delete variants with transaction/recompute/readback; deletion is limited to deletable user parameters. No generic atomic-batch claim for all operations."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/parameter_batch",
"required": [
"op",
"sessionId",
"operationId",
"target",
"changes"
],
"properties": [
"changes"
],
"description": "Atomic sequential create/set/delete parameter edits with one recompute+health gate; delete supports user parameters only. Any failure aborts all edits and reports semantic recovery.",
"enumVariants": [
{
"path": "/properties/changes/items/oneOf/0/properties/action",
"values": [
"create"
]
},
{
"path": "/properties/changes/items/oneOf/0/properties/unit",
"values": [
"mm",
"deg",
"kg",
""
]
},
{
"path": "/properties/changes/items/oneOf/1/properties/action",
"values": [
"set"
]
},
{
"path": "/properties/changes/items/oneOf/2/properties/action",
"values": [
"delete"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "first_slice_in_progress_unqualified",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "parameter_create",
"family": "foundation",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/operations.py",
"function": "parameter_create",
"line": 192,
"sha256": "e3d124bd0ef4aa67b5653af72b0ecacc2e1dbc420e48e05855e60d75816c94cd",
"behavior": "Create a typed user parameter, recompute, verify health and compensate failure with a recovery witness."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/parameter_create",
"required": [
"op",
"sessionId",
"operationId",
"target",
"name",
"expression",
"unit"
],
"properties": [
"name",
"expression",
"unit",
"comment"
],
"description": null,
"enumVariants": [
{
"path": "/properties/unit",
"values": [
"mm",
"deg",
"kg",
""
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "first_slice_in_progress_unqualified",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "parameter_set",
"family": "foundation",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/operations.py",
"function": "parameter_set",
"line": 166,
"sha256": "e3d124bd0ef4aa67b5653af72b0ecacc2e1dbc420e48e05855e60d75816c94cd",
"behavior": "Set parameter expression, recompute, verify health and restore old expression on failure with semantic recovery readback."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/parameter_set",
"required": [
"op",
"sessionId",
"operationId",
"target",
"name",
"expression"
],
"properties": [
"name",
"expression"
],
"description": "Set an expression, recompute and inspect health. Failure restores old expression and reports a semantic recovery witness; not an atomic transaction.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "first_slice_in_progress_unqualified",
"parity": "unqualified",
"evidence": [],
"note": "Root reports first r7 slice initially has no legacy compensation/recovery parity; do not infer it from success-only readback."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "plane_create",
"family": "sketch",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/sketches.py",
"function": "plane_create",
"line": 219,
"sha256": "1117e1e18d12ce3b4a92a20da43e4283d717f041ec4b05afdc64b5bb0984fe0c",
"behavior": "Create supported construction plane from guarded selector and offset."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/plane_create",
"required": [
"op",
"sessionId",
"operationId",
"target",
"type"
],
"properties": [
"type",
"plane",
"component",
"offset",
"axis",
"angle",
"name"
],
"description": "Create offset plane (offset in mm) or angled plane around axis (angle in deg).",
"enumVariants": [
{
"path": "/properties/type",
"values": [
"offset",
"angle"
]
},
{
"path": "/properties/plane/oneOf/0",
"values": [
"xy",
"xz",
"yz"
]
},
{
"path": "/properties/axis/oneOf/0",
"values": [
"x",
"y",
"z"
]
},
{
"path": "/oneOf/0/properties/plane/oneOf/0",
"values": [
"xy",
"xz",
"yz"
]
},
{
"path": "/oneOf/0/properties/type",
"values": [
"offset"
]
},
{
"path": "/oneOf/1/properties/plane/oneOf/0",
"values": [
"xy",
"xz",
"yz"
]
},
{
"path": "/oneOf/1/properties/type",
"values": [
"angle"
]
},
{
"path": "/oneOf/1/properties/axis/oneOf/0",
"values": [
"x",
"y",
"z"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "regular_joint_create",
"family": "joints",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/regular_joints.py",
"function": "regular_joint_create",
"line": 349,
"sha256": "22f358233a9d755bfb9af5a3c6649bbfa113bfab8a771202c1908e7e42063434",
"behavior": "Create regular joint from exact attachments, alignment/motion/lock settings; verify frames and placements."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/regular_joint_create",
"required": [
"op",
"sessionId",
"operationId",
"target",
"type",
"geometryOne",
"geometryTwo"
],
"properties": [
"type",
"axis",
"name",
"rotationLimits",
"slideLimits",
"rotationValue",
"slideValue",
"primarySlideLimits",
"primarySlideValue",
"secondarySlideLimits",
"secondarySlideValue",
"pitchLimits",
"pitchValue",
"rollLimits",
"rollValue",
"yawLimits",
"yawValue",
"slideAxis",
"geometryOne",
"geometryTwo",
"angle",
"offset",
"flipped",
"locked"
],
"description": "Create a geometry-solving regular joint in the root component using two distinct instance-context attachments or joint origins. All seven native motion families; offsets mm, angle and angular limits deg. Read back freshly resolved attachment graph, native parameters and root-space occurrence placement. Root/non-root sides must be unambiguous; both grounded and ancestor/descendant pairs are refused. Inferred joints are unsupported. Existing pending positions must be captured or reverted first. Before applying drive values, checks native joint-transform anchor offset magnitude/axiality and zero-angle axis collinearity. Native joint matrices have explicit provenance; physical angle/flip sense requires independent occurrence-geometry acceptance.",
"enumVariants": [
{
"path": "/properties/type",
"values": [
"rigid",
"revolute",
"slider",
"cylindrical",
"pin_slot",
"planar",
"ball"
]
},
{
"path": "/properties/axis",
"values": [
"x",
"y",
"z"
]
},
{
"path": "/properties/slideAxis",
"values": [
"x",
"y",
"z"
]
},
{
"path": "/properties/geometryOne/oneOf/0/properties/keyPoint",
"values": [
"center",
"start",
"middle",
"end"
]
},
{
"path": "/properties/geometryTwo/oneOf/0/properties/keyPoint",
"values": [
"center",
"start",
"middle",
"end"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "regular_joint_edit",
"family": "joints",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/regular_joints.py",
"function": "regular_joint_edit",
"line": 377,
"sha256": "22f358233a9d755bfb9af5a3c6649bbfa113bfab8a771202c1908e7e42063434",
"behavior": "Edit regular joint parameters/motion/lock with attachment and pose validation."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/regular_joint_edit",
"required": [
"op",
"sessionId",
"operationId",
"target",
"joint"
],
"properties": [
"joint",
"geometryOne",
"geometryTwo",
"type",
"axis",
"slideAxis",
"angle",
"offset",
"offsetX",
"offsetY",
"flipped",
"locked"
],
"description": "Redefine root-owned regular joint geometry, motion family, offsets, angle, flip or lock. Restore timeline in finally and verify after recompute. Use joint_edit for name, suppression, limits and drive values; joint_delete for deletion.",
"enumVariants": [
{
"path": "/properties/geometryOne/oneOf/0/properties/keyPoint",
"values": [
"center",
"start",
"middle",
"end"
]
},
{
"path": "/properties/geometryTwo/oneOf/0/properties/keyPoint",
"values": [
"center",
"start",
"middle",
"end"
]
},
{
"path": "/properties/type",
"values": [
"rigid",
"revolute",
"slider",
"cylindrical",
"pin_slot",
"planar",
"ball"
]
},
{
"path": "/properties/axis",
"values": [
"x",
"y",
"z"
]
},
{
"path": "/properties/slideAxis",
"values": [
"x",
"y",
"z"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "render_scene_inspect",
"family": "presentation",
"access": "read",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/render_scene.py",
"function": "render_scene_inspect",
"line": 318,
"sha256": "92a06fdb1d4489ae1ff2f9a2ac1819ebc6c2c7bf54ecc6eb11d2665f19196d55",
"behavior": "Bounded scene/environment observation and detached camera preparation; never starts render, writes scene settings or proves complete revision-to-pixels identity."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/render_scene_inspect",
"required": [
"op",
"sessionId",
"target"
],
"properties": [
"sessionId",
"target",
"maxEnvironments",
"camera"
],
"description": "Guarded main-thread read of current viewport camera, render settings and up to 32 environments. Optional detached world-mm camera is constructed and read back without viewport assignment. Missing fields return PARTIAL; observationComplete covers only bounded available scope. sceneWitnessComplete and renderQualified remain false. No rendering, workspace activation or scene writes.",
"enumVariants": [
{
"path": "/properties/camera/oneOf/0/properties/type",
"values": [
"orthographic"
]
},
{
"path": "/properties/camera/oneOf/0/properties/space",
"values": [
"world"
]
},
{
"path": "/properties/camera/oneOf/0/properties/unit",
"values": [
"mm"
]
},
{
"path": "/properties/camera/oneOf/1/properties/type",
"values": [
"perspective"
]
},
{
"path": "/properties/camera/oneOf/1/properties/space",
"values": [
"world"
]
},
{
"path": "/properties/camera/oneOf/1/properties/unit",
"values": [
"mm"
]
},
{
"path": "/properties/camera/oneOf/1/properties/angleUnit",
"values": [
"deg"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "rigid_group_create",
"family": "joints",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/assemblies.py",
"function": "rigid_group_create",
"line": 364,
"sha256": "a9097aefea289eb7748269e47158b80e70eeacbb9b5a155c2b4d7f016c747876",
"behavior": "Create rigid group over exact occurrences with native membership readback."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/rigid_group_create",
"required": [
"op",
"target",
"sessionId",
"operationId",
"occurrences"
],
"properties": [
"occurrences",
"includeChildren",
"name"
],
"description": "Create a native rigid group from exact occurrence instances; includeChildren defaults true.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "rigid_group_delete",
"family": "joints",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/assemblies.py",
"function": "rigid_group_delete",
"line": 388,
"sha256": "a9097aefea289eb7748269e47158b80e70eeacbb9b5a155c2b4d7f016c747876",
"behavior": "Delete an exact rigid-group reference."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/rigid_group_delete",
"required": [
"op",
"target",
"sessionId",
"operationId",
"group"
],
"properties": [
"group"
],
"description": "Delete an exact rigid group with transaction recovery.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "rigid_group_edit",
"family": "joints",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/assemblies.py",
"function": "rigid_group_edit",
"line": 374,
"sha256": "a9097aefea289eb7748269e47158b80e70eeacbb9b5a155c2b4d7f016c747876",
"behavior": "Edit rigid group membership/settings with native readback."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/rigid_group_edit",
"required": [
"op",
"target",
"sessionId",
"operationId",
"group"
],
"properties": [
"group",
"name",
"suppressed"
],
"description": "Rename or suppress an exact rigid group with transaction recovery.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "sketch_constraint",
"family": "sketch",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/sketches.py",
"function": "sketch_constraint",
"line": 146,
"sha256": "1117e1e18d12ce3b4a92a20da43e4283d717f041ec4b05afdc64b5bb0984fe0c",
"behavior": "Create supported geometric constraint on exact sketch entities."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/sketch_constraint",
"required": [
"op",
"sessionId",
"operationId",
"target",
"sketch",
"type",
"entities"
],
"properties": [
"sketch",
"type",
"entities"
],
"description": "Constrain entities in one sketch. midpoint order is point,line; symmetry order entity1,entity2,symmetryLine. fix sets one entity fixed.",
"enumVariants": [
{
"path": "/properties/type",
"values": [
"horizontal",
"vertical",
"coincident",
"parallel",
"perpendicular",
"tangent",
"equal",
"concentric",
"collinear",
"midpoint",
"symmetry",
"fix"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "sketch_create",
"family": "sketch",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/sketches.py",
"function": "sketch_create",
"line": 75,
"sha256": "1117e1e18d12ce3b4a92a20da43e4283d717f041ec4b05afdc64b5bb0984fe0c",
"behavior": "Create sketch on guarded plane/component selector."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/sketch_create",
"required": [
"op",
"sessionId",
"operationId",
"target"
],
"properties": [
"plane",
"component",
"name"
],
"description": "Create a native component-definition sketch on an origin/construction plane or planar face. Coordinates in subsequent geometry are sketch-space mm.",
"enumVariants": [
{
"path": "/properties/plane/oneOf/0",
"values": [
"xy",
"xz",
"yz"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "sketch_curve_edit",
"family": "sketch",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/sketch_edits.py",
"function": "sketch_curve_edit",
"line": 30,
"sha256": "5c1be0a81c69ac23c89585bbe133caf0168b7152c056930f3dd1ecfecbdc6981",
"behavior": "Guarded trim/extend/break/split support with native topology/readback checks; full trim deletion needs explicit permission."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/sketch_curve_edit",
"required": [
"op",
"target",
"sessionId",
"operationId",
"sketch",
"curve",
"action",
"pick"
],
"properties": [
"sketch",
"curve",
"action",
"pick",
"createConstraints",
"allowDelete"
],
"description": "Edit one native sketch curve with sketch-space mm pick. trim removes the nearest segment; extend chooses nearest endpoint; split requires an interior on-curve point; break uses neighboring intersections. Fresh replacement refs are returned; original may be deleted. In-place extend returns the original with a fresh ref only after its geometry change survives recompute. No change or empty break/split fails. Full trim deletion requires allowDelete true. Linked/derived/deferred-compute geometry refused.",
"enumVariants": [
{
"path": "/properties/action",
"values": [
"trim",
"extend",
"split",
"break"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "sketch_diagnostics",
"family": "sketch",
"access": "read",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/sketch_edits.py",
"function": "sketch_diagnostics",
"line": 130,
"sha256": "5c1be0a81c69ac23c89585bbe133caf0168b7152c056930f3dd1ecfecbdc6981",
"behavior": "Inspect sketch constraint/degree-of-freedom and profile diagnostics without mutation."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/sketch_diagnostics",
"required": [
"op",
"target",
"sketch"
],
"properties": [
"sketch"
],
"description": "Read native sketch health/message, fully-constrained/fixed/linked/reference flags, geometric constraints and driving dimensions. Reports no solver DOF count or conflict-set explanation; no recompute/mutation.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "sketch_dimension",
"family": "sketch",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/sketches.py",
"function": "sketch_dimension",
"line": 166,
"sha256": "1117e1e18d12ce3b4a92a20da43e4283d717f041ec4b05afdc64b5bb0984fe0c",
"behavior": "Create distance/horizontal/vertical/angle/radius/diameter dimensions with expression/unit validation."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/sketch_dimension",
"required": [
"op",
"sessionId",
"operationId",
"target",
"sketch",
"type",
"entities",
"expression",
"position"
],
"properties": [
"sketch",
"type",
"entities",
"expression",
"position",
"parameterName"
],
"description": "Add driving dimensions. Distance uses two point references; radius/diameter one curve; angle two lines. Numeric expressions use mm or deg.",
"enumVariants": [
{
"path": "/properties/type",
"values": [
"distance",
"horizontal",
"vertical",
"radius",
"diameter",
"angle"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "sketch_edit",
"family": "sketch",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/sketches.py",
"function": "sketch_edit",
"line": 200,
"sha256": "1117e1e18d12ce3b4a92a20da43e4283d717f041ec4b05afdc64b5bb0984fe0c",
"behavior": "Edit supported sketch state/geometry selection with transaction/recovery behavior."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/sketch_edit",
"required": [
"op",
"sessionId",
"operationId",
"target",
"sketch",
"entity",
"changes"
],
"properties": [
"sketch",
"entity",
"changes"
],
"description": "Move sketch points/endpoints/centers in sketch-space mm, change radius or construction/fixed flags; solver failure aborts the operation.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "sketch_geometry",
"family": "sketch",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/sketches.py",
"function": "sketch_geometry",
"line": 82,
"sha256": "1117e1e18d12ce3b4a92a20da43e4283d717f041ec4b05afdc64b5bb0984fe0c",
"behavior": "Point, line, rectangle, circle, arc, polygon, slot and fitted spline primitives with input/unit checks."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/sketch_geometry",
"required": [
"op",
"sessionId",
"operationId",
"target",
"sketch",
"items"
],
"properties": [
"sketch",
"items"
],
"description": "Create a transactionally grouped set of sketch primitives. Numeric geometry uses mm and arc sweeps/polygon angles use deg.",
"enumVariants": [
{
"path": "/properties/items/items/oneOf/0/properties/type",
"values": [
"point"
]
},
{
"path": "/properties/items/items/oneOf/1/properties/type",
"values": [
"line"
]
},
{
"path": "/properties/items/items/oneOf/2/properties/type",
"values": [
"rectangle"
]
},
{
"path": "/properties/items/items/oneOf/3/properties/type",
"values": [
"circle"
]
},
{
"path": "/properties/items/items/oneOf/4/properties/type",
"values": [
"arc"
]
},
{
"path": "/properties/items/items/oneOf/5/properties/type",
"values": [
"polygon"
]
},
{
"path": "/properties/items/items/oneOf/6/properties/type",
"values": [
"slot"
]
},
{
"path": "/properties/items/items/oneOf/7/properties/type",
"values": [
"spline"
]
}
]
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "sketch_offset",
"family": "sketch",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/sketch_edits.py",
"function": "sketch_offset",
"line": 94,
"sha256": "5c1be0a81c69ac23c89585bbe133caf0168b7152c056930f3dd1ecfecbdc6981",
"behavior": "Offset guarded sketch curves using native operation and verify resulting entities."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/sketch_offset",
"required": [
"op",
"target",
"sessionId",
"operationId",
"sketch",
"curves",
"distance"
],
"properties": [
"sketch",
"curves",
"distance",
"topologyMatched"
],
"description": "Modern createOffsetInput/addOffset2. Curves must be native 2D, unique, in connected flow order (never reordered). Nonzero signed mm number/expression: positive right, negative left; a single circle/ellipse positive outside. Topology matched defaults true. Read back native signed distance, parent/child refs and controlling parameter after recompute. No retired Sketch.offset fallback.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "sketch_project",
"family": "sketch",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/sketches.py",
"function": "sketch_project",
"line": 190,
"sha256": "1117e1e18d12ce3b4a92a20da43e4283d717f041ec4b05afdc64b5bb0984fe0c",
"behavior": "Project exact supported source entities into a guarded sketch and return references."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/sketch_project",
"required": [
"op",
"sessionId",
"operationId",
"target",
"sketch",
"entities"
],
"properties": [
"sketch",
"entities"
],
"description": "Project selected topology into a sketch with Fusion associative projection.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
},
{
"name": "transaction_probe",
"family": "foundation",
"access": "write",
"legacy": {
"status": "source_handler_present_not_reexecuted",
"path": "addin/AdomBridge/commands/mechanical/transactions.py",
"function": "probe",
"line": 41,
"sha256": "4fcb0f1a5138bbcc7739390e38a81ec24efcc0e5e4476b45252511e5a2d2ab4f",
"behavior": "Qualify available native transaction behavior; does not promise generic batch atomicity."
},
"rustContract": {
"status": "present",
"path": "mechanical/schema.json",
"pointer": "/transaction_probe",
"required": [
"op",
"sessionId",
"operationId",
"target"
],
"properties": [],
"description": "Verify runtime PTransaction abort+commit using temporary user parameters, remove probe data and compare semantic restoration. Required once per running add-in session before feature/sketch/atomic-batch writes. Returns fresh target; inspect again for current references.",
"enumVariants": []
},
"rustImplementation": {
"frozenR6": "absent",
"r7Status": "not_ported_in_r7_baseline",
"parity": "unqualified",
"evidence": [],
"note": "In-progress source does not earn implemented or verified parity until scope and receipts are independently reviewed."
},
"verification": {
"linux": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"windows": {
"contractInventory": "r6_pass_group_level",
"nativeHandlerUnit": "not_qualified",
"externalHandler": "not_qualified"
},
"fusion": {
"handler": "not_qualified",
"evidence": []
}
},
"publicRelease": {
"status": "not_released",
"evidence": []
}
}
],
"addinDispatch": [
{
"name": "mechanical",
"line": 71,
"dispatchExpression": "handle_mechanical",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/mechanical/__init__.py",
"line": 170
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "mech_capabilities",
"line": 72,
"dispatchExpression": "capabilities",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/mechanical/__init__.py",
"line": 99
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "mech_operation_status",
"line": 73,
"dispatchExpression": "operation_status",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/mechanical/__init__.py",
"line": 111
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "activity_banner",
"line": 74,
"dispatchExpression": "handle_activity_banner",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/activity_palette.py",
"line": 202
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "get_app_state",
"line": 76,
"dispatchExpression": "handle_get_app_state",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/app_state.py",
"line": 6
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "document_info",
"line": 77,
"dispatchExpression": "handle_document_info",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/document_info.py",
"line": 28
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "activate_document",
"line": 78,
"dispatchExpression": "handle_activate_document",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/document_info.py",
"line": 176
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "import_file",
"line": 80,
"dispatchExpression": "handle_import_file",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/import_file.py",
"line": 21
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_step",
"line": 81,
"dispatchExpression": "handle_export_step",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/export.py",
"line": 37
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_stl",
"line": 82,
"dispatchExpression": "handle_export_stl",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/export.py",
"line": 38
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_3mf",
"line": 83,
"dispatchExpression": "handle_export_3mf",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/export.py",
"line": 39
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_f3d",
"line": 84,
"dispatchExpression": "handle_export_f3d",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/export.py",
"line": 40
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_usdz",
"line": 85,
"dispatchExpression": "handle_export_usdz",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/export.py",
"line": 41
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_fbx",
"line": 86,
"dispatchExpression": "handle_export_fbx",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/export.py",
"line": 42
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_dxf",
"line": 87,
"dispatchExpression": "handle_export_dxf",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/export.py",
"line": 43
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_dwg",
"line": 88,
"dispatchExpression": "handle_export_dwg",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/export.py",
"line": 44
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_iges",
"line": 89,
"dispatchExpression": "handle_export_iges",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/export.py",
"line": 45
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_obj",
"line": 90,
"dispatchExpression": "handle_export_obj",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/export.py",
"line": 46
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_sat",
"line": 91,
"dispatchExpression": "handle_export_sat",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/export.py",
"line": 47
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_skp",
"line": 92,
"dispatchExpression": "handle_export_skp",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/export.py",
"line": 48
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "get_design_info",
"line": 93,
"dispatchExpression": "handle_get_design_info",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/design_info.py",
"line": 7
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "assembly_bom",
"line": 94,
"dispatchExpression": "handle_assembly_bom",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/assembly_bom.py",
"line": 28
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "physical_properties",
"line": 95,
"dispatchExpression": "handle_physical_properties",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/physical_properties.py",
"line": 28
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "get_parameters",
"line": 96,
"dispatchExpression": "handle_get_parameters",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/parameters.py",
"line": 7
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "set_parameter",
"line": 97,
"dispatchExpression": "handle_set_parameter",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/parameters.py",
"line": 70
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "take_screenshot",
"line": 98,
"dispatchExpression": "handle_take_screenshot",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/screenshot.py",
"line": 38
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "electron_run",
"line": 100,
"dispatchExpression": "handle_electron_run",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/electronics.py",
"line": 320
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "electron_zoom",
"line": 101,
"dispatchExpression": "handle_electron_zoom",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/electron_view.py",
"line": 60
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "electron_pan",
"line": 102,
"dispatchExpression": "handle_electron_pan",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/electron_view.py",
"line": 91
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "electron_select",
"line": 103,
"dispatchExpression": "handle_electron_select",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/electron_view.py",
"line": 159
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "execute_text_command",
"line": 104,
"dispatchExpression": "handle_execute_text_command",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/electronics.py",
"line": 903
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "open_electronics",
"line": 105,
"dispatchExpression": "handle_open_electronics",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/electronics.py",
"line": 588
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "list_text_commands",
"line": 106,
"dispatchExpression": "handle_list_text_commands",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/electronics.py",
"line": 953
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "board_info",
"line": 107,
"dispatchExpression": "handle_board_info",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/electronics.py",
"line": 988
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_source",
"line": 108,
"dispatchExpression": "handle_export_source",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/electronics.py",
"line": 633
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_eagle_source",
"line": 109,
"dispatchExpression": "handle_export_eagle_source",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/electronics.py",
"line": 747
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "open_lbr",
"line": 111,
"dispatchExpression": "handle_open_lbr",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/open_lbr.py",
"line": 23
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_lbr",
"line": 112,
"dispatchExpression": "handle_export_lbr",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/open_lbr.py",
"line": 114
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "close_document",
"line": 114,
"dispatchExpression": "handle_close_document",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/close_document.py",
"line": 56
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "close_all_documents",
"line": 115,
"dispatchExpression": "handle_close_all_documents",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/close_document.py",
"line": 159
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "open_schematic",
"line": 117,
"dispatchExpression": "handle_open_schematic",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/open_electronics_file.py",
"line": 242
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "open_board",
"line": 118,
"dispatchExpression": "handle_open_board",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/open_electronics_file.py",
"line": 257
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "show_3d_board",
"line": 119,
"dispatchExpression": "handle_show_3d_board",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/open_electronics_file.py",
"line": 273
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "show_2d_board",
"line": 120,
"dispatchExpression": "handle_show_2d_board",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/open_electronics_file.py",
"line": 531
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "show_schematic",
"line": 121,
"dispatchExpression": "handle_show_schematic",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/open_electronics_file.py",
"line": 580
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "import_electronics",
"line": 122,
"dispatchExpression": "handle_import_electronics",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/open_electronics_file.py",
"line": 397
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "save_to_cloud",
"line": 124,
"dispatchExpression": "handle_save_to_cloud",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/cloud_documents.py",
"line": 161
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "list_cloud_projects",
"line": 125,
"dispatchExpression": "handle_list_cloud_projects",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/cloud_documents.py",
"line": 246
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "list_cloud_files",
"line": 126,
"dispatchExpression": "handle_list_cloud_files",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/cloud_documents.py",
"line": 372
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "delete_cloud_file",
"line": 127,
"dispatchExpression": "handle_delete_cloud_file",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/cloud_documents.py",
"line": 523
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "create_cloud_folder",
"line": 128,
"dispatchExpression": "handle_create_cloud_folder",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/cloud_documents.py",
"line": 626
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "open_cloud_file",
"line": 129,
"dispatchExpression": "handle_open_cloud_file",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/cloud_documents.py",
"line": 891
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "open_by_urn",
"line": 130,
"dispatchExpression": "handle_open_by_urn",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/cloud_documents.py",
"line": 1731
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "check_recovery",
"line": 131,
"dispatchExpression": "handle_check_recovery",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/cloud_documents.py",
"line": 796
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "search_cloud_files",
"line": 132,
"dispatchExpression": "handle_search_cloud_files",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/cloud_documents.py",
"line": 1033
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "walk_cloud_tree",
"line": 133,
"dispatchExpression": "handle_walk_cloud_tree",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/cloud_documents.py",
"line": 1497
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_cloud_file",
"line": 134,
"dispatchExpression": "handle_export_cloud_file",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/cloud_documents.py",
"line": 1486
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_bom",
"line": 136,
"dispatchExpression": "handle_export_bom",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/manufacturing.py",
"line": 157
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_cpl",
"line": 137,
"dispatchExpression": "handle_export_cpl",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/manufacturing.py",
"line": 316
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_gerbers",
"line": 138,
"dispatchExpression": "handle_export_gerbers",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/manufacturing.py",
"line": 586
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "set_design_rules",
"line": 139,
"dispatchExpression": "handle_set_design_rules",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/manufacturing.py",
"line": 771
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "export_board_image",
"line": 140,
"dispatchExpression": "handle_export_board_image",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/manufacturing.py",
"line": 984
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "detect_layers",
"line": 141,
"dispatchExpression": "handle_detect_layers",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/manufacturing.py",
"line": 539
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "take_silkscreen_screenshot",
"line": 143,
"dispatchExpression": "handle_take_silkscreen_screenshot",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/silkscreen_capture.py",
"line": 200
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
},
{
"name": "run_modeling_script",
"line": 145,
"dispatchExpression": "handle_run_modeling_script",
"source": "addin/AdomBridge/commands/__init__.py",
"handlerLocations": [
{
"path": "addin/AdomBridge/commands/modeling.py",
"line": 69
}
],
"r7Parity": "unqualified",
"fusionVerification": "not_qualified",
"release": "not_released"
}
],
"historicalPythonHostDispatch": [
{
"name": "describe",
"line": 2819,
"dispatchExpression": "lambda fi, args: describe.handle_describe(args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "readiness",
"line": 2820,
"dispatchExpression": "_handle_fusion_readiness",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "set_preference",
"line": 2821,
"dispatchExpression": "_handle_set_preference",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "get_preferences",
"line": 2822,
"dispatchExpression": "_handle_get_preferences",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "install_fusion",
"line": 2823,
"dispatchExpression": "_handle_install_fusion",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "open_design",
"line": 2824,
"dispatchExpression": "handle_open_design",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "close",
"line": 2825,
"dispatchExpression": "handle_close_fusion, # deprecated alias - use stop (graceful) / kill (force)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "stop",
"line": 2826,
"dispatchExpression": "handle_fusion_stop, # graceful: close docs + WM_CLOSE, NO force-kill",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "kill",
"line": 2827,
"dispatchExpression": "handle_fusion_kill, # force: taskkill /F (the desperate path)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "launch",
"line": 2828,
"dispatchExpression": "_handle_launch",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "start",
"line": 2829,
"dispatchExpression": "_handle_launch, # alias — CLI's fusion_start delegates here on Docker",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "dismiss_recovery",
"line": 2830,
"dispatchExpression": "_handle_dismiss_recovery",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "relocate_recovery",
"line": 2831,
"dispatchExpression": "_handle_relocate_recovery",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "open_cloud_file",
"line": 2832,
"dispatchExpression": "_handle_open_cloud_file",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "new_electronics_from_eagle",
"line": 2837,
"dispatchExpression": "lambda fi, args: _handle_new_electronics_from_eagle(args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "screenshot_fusion",
"line": 2838,
"dispatchExpression": "_handle_screenshot_fusion",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "click_fusion",
"line": 2839,
"dispatchExpression": "_handle_click_fusion",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "send_key",
"line": 2840,
"dispatchExpression": "_handle_send_key",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "close_window",
"line": 2841,
"dispatchExpression": "_handle_close_window",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "window_info",
"line": 2842,
"dispatchExpression": "_handle_window_info",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "screenshot_all",
"line": 2843,
"dispatchExpression": "_handle_screenshot_all_fusion",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "check_dialogs",
"line": 2848,
"dispatchExpression": "lambda fi, args: _with_fusion_alerts(",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "managed_library_create",
"line": 2853,
"dispatchExpression": "lambda fi, args: _handle_managed_library_create(fi, args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "web_signin",
"line": 2854,
"dispatchExpression": "lambda fi, args: _handle_web_signin(fi, args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "managed_library_push",
"line": 2855,
"dispatchExpression": "lambda fi, args: _handle_managed_library_push(fi, args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "managed_library_pull",
"line": 2856,
"dispatchExpression": "lambda fi, args: _handle_managed_library_pull(fi, args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "managed_library_link",
"line": 2857,
"dispatchExpression": "lambda fi, args: _handle_managed_library_link(fi, args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "managed_library_unlink",
"line": 2858,
"dispatchExpression": "lambda fi, args: _handle_managed_library_unlink(fi, args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "library_manager",
"line": 2859,
"dispatchExpression": "lambda fi, args: _handle_library_manager(fi, args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "alerts",
"line": 2860,
"dispatchExpression": "lambda fi, args: {",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "addin_status",
"line": 2870,
"dispatchExpression": "lambda fi, args: _handle_addin_status()",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "notify_owner",
"line": 2876,
"dispatchExpression": "lambda fi, args: _handle_notify_owner(args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "aps_status",
"line": 2879,
"dispatchExpression": "lambda fi, args: aps.handle_status(args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "aps_set_client_id",
"line": 2880,
"dispatchExpression": "lambda fi, args: aps.handle_set_client_id(args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "aps_signin",
"line": 2881,
"dispatchExpression": "lambda fi, args: aps.handle_signin(args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "aps_set_browser",
"line": 2882,
"dispatchExpression": "lambda fi, args: aps.handle_set_browser(args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "aps_get_browser",
"line": 2883,
"dispatchExpression": "lambda fi, args: aps.handle_get_browser(args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "aps_forget_browser",
"line": 2884,
"dispatchExpression": "lambda fi, args: aps.handle_forget_browser(args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "aps_search",
"line": 2887,
"dispatchExpression": "lambda fi, args: _aps_guarded(aps.handle_search, args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "aps_browse",
"line": 2888,
"dispatchExpression": "lambda fi, args: _aps_guarded(aps.handle_browse, args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "aps_recent",
"line": 2889,
"dispatchExpression": "lambda fi, args: _aps_guarded(aps.handle_recent, args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "aps_file_info",
"line": 2890,
"dispatchExpression": "lambda fi, args: _aps_guarded(aps.handle_file_info, args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "aps_versions",
"line": 2891,
"dispatchExpression": "lambda fi, args: _aps_guarded(aps.handle_versions, args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "aps_download",
"line": 2892,
"dispatchExpression": "lambda fi, args: _aps_guarded(aps.handle_download, args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "aps_create_folder",
"line": 2893,
"dispatchExpression": "lambda fi, args: _aps_guarded(aps.handle_create_folder, args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "aps_upload",
"line": 2894,
"dispatchExpression": "lambda fi, args: _aps_guarded(aps.handle_upload, args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "aps_open",
"line": 2895,
"dispatchExpression": "lambda fi, args: _aps_guarded(lambda a: _handle_aps_open(fi, a), args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "aps_get",
"line": 2896,
"dispatchExpression": "lambda fi, args: aps.handle_get(args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "search_cloud_files",
"line": 2899,
"dispatchExpression": "lambda fi, args: _handle_deprecated_cloud_search(\"search_cloud_files\", args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
},
{
"name": "walk_cloud_tree",
"line": 2900,
"dispatchExpression": "lambda fi, args: _handle_deprecated_cloud_search(\"walk_cloud_tree\", args)",
"source": "server.py",
"existingRust": "default_host_already_rust; historical_server_entry_not_a_current_runtime_requirement; native_addin_and_residual_branch_coverage_separate",
"r7Parity": "unqualified"
}
],
"hostCatalog": [
{
"name": "fusion_account",
"summary": "WHO Fusion is signed in as on this machine, and whether this machine currently holds the Autodesk SEAT. One subscription runs ONE active Fusion at a time, so the seat moves between machines; this is the read. Returns the signed-in account (email, name, hub), Autodesk's own licence blob (authorized, trial, expiry, reauthorize time, from Application.LicenseInformation) and holdsSeat. Read-only: never starts Fusion, never signs anybody in or out.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_action_ledger",
"summary": "Read the append-only record of what the bridge did in the BACKGROUND on this machine - dialogs it answered, Untitled scratch docs it swept, Fusion auto-starts, add-in restarts. Survives bridge respawns (~/.adom/fusion-bridge/actions.jsonl). This is the audit trail for why something changed on the user screen.",
"timeoutSeconds": 15,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_activate_document",
"summary": "Make a named open document the ACTIVE one before driving it. EDIT and most modelling verbs act on whatever is active, so in a batch with several documents open this is how you stop a verb landing in the wrong file (page issue #47). Prefer passing expectDocument on the verb itself, which fails closed instead of merely re-targeting. An electronics design's schematic, board and 3D view are separate tabs with ONE name (type unknown): the reply says so in sameNameDocuments, and fusion_show_schematic / fusion_show_2d_board / fusion_show_3d_board {documentName} reach a specific view.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_addin_status",
"summary": "Is the AdomBridge add-in loaded and answering inside Fusion? Reports addinReady, port and version, plus busy when a long command holds the main thread. If Fusion is running but this says not ready, the add-in was installed while Fusion was open - Fusion loads add-ins only at launch - so call fusion_restart_for_addin (ask the user first when one is present).",
"timeoutSeconds": 15,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_alerts",
"summary": "Fusion's OWN alert toasts, read from its log. Fusion draws error/warning toasts in CEF: they are invisible to Win32 enumeration AND to UIA, so a verb can look successful while Fusion is visibly complaining. This reads them, newest last.",
"timeoutSeconds": 30,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_apply_fusion_update",
"summary": "Readiness EXECUTOR (Rust port, Phase 3): click Fusion's update offer IN THE BACKGROUND when auto-update is on (sticky pref; fusion_set_auto_update). Never the exit-class buttons while a host op is active. Answers {applied, button, why}.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_apply_pours",
"summary": "Draw copper pours from a plan: POLYGON per pour (net, layer 1 or 16, outline points, isolate, rank 1..6, width, thermals, orphans), skipping any already on the board with the same net, layer and outline, then RATSNEST fills them. The reply carries Fusion's own fill per pour (filledMm2, islands) and per layer. Removing a pour is not done here.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_aps_browse",
"summary": "Browse hubs/projects/folders without launching Fusion.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_aps_create_folder",
"summary": "Create a subfolder in a project (free; needs data:create scope). Use this to make an 'Adom AI Workspace' folder + per-task subfolders so the bridge never dumps loose files in the shared project root. See fusion-cloud-hygiene.",
"timeoutSeconds": 50,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_aps_download",
"summary": "Download a cloud file to the local machine (no Fusion needed).",
"timeoutSeconds": 90,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_aps_file_info",
"summary": "Version history + who/when/size for a file (tip + recent versions).",
"timeoutSeconds": 40,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_aps_forget_browser",
"summary": "Forget the remembered Autodesk sign-in browser (re-detect next time).",
"timeoutSeconds": 10,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_aps_get",
"summary": "Raw authenticated GET against a free APS path (dev/verify helper).",
"timeoutSeconds": 40,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_aps_get_browser",
"summary": "Show the remembered Autodesk sign-in browser (None until set).",
"timeoutSeconds": 10,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_aps_open",
"summary": "Find a cloud design by name and open it in Fusion (any folder depth). Fire-and-poll.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_aps_recent",
"summary": "Most-recently-modified designs across the team hub, newest first.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_aps_search",
"summary": "Server-indexed search across the whole team hub: about 20-30 s hub-wide, a few seconds with projectId (not a 30-min folder walk). Budget 120 s. A ZERO from the server index is not absence: the reply then carries data.fallback (a name scan of the newest 400 items), data.completeness, and a hint to fusion_aps_browse a known sibling's folder (issue #85).",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_aps_set_browser",
"summary": "Remember the browser+profile that authed to Autodesk so every later sign-in reuses it (power users have many browsers/profiles; the OS default is usually the wrong one). Call after a driven sign-in succeeds.",
"timeoutSeconds": 10,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_aps_set_client_id",
"summary": "Set the org's APS (PKCE) client id used for cloud search. Get it from your org's members-only wiki settings: adom-wiki settings get <org> autodesk-aps (never from another machine's config file). When the org has none yet, the reply's hint gives the adom-wiki settings set command that shares it, so every other box adopts it in two calls (fusion-aps-org-setup skill). Public identifier, no secret.",
"timeoutSeconds": 20,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_aps_signin",
"summary": "Open the Autodesk sign-in in the REMEMBERED browser+profile (not the OS default); a background listener captures the token. Pass {exe,profileDir,name} to use+remember a specific browser, or {allowDefaultBrowser:true} to fall back to the OS default. If nothing is remembered, returns needsExtensionOpen so the caller opens authUrl in the user's real browser via nbrowser_open_window.",
"timeoutSeconds": 30,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_aps_status",
"summary": "APS state: configured, signed in, token live, never-charge meter. When configured:false the hint sends you to your org's shared app ID on the wiki (adom-wiki settings get <org> autodesk-aps) before anything else; the fusion-aps-org-setup skill covers new boxes and first-time orgs.",
"timeoutSeconds": 20,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_aps_upload",
"summary": "Upload a local file as a NEW cloud file (free Data Management; needs data:write scope). â›” FOLDER HYGIENE: NEVER pass a project ROOT folderId - the bridge REFUSES it (refused_root_upload). Loose files in a shared root clutter the team's cloud. Create/choose a real subfolder first (fusion_aps_create_folder under an 'Adom AI Workspace' folder), or just use fusion_make_3d_package / fusion_build_library_3d which auto-target a non-root workspace. To RELOCATE an existing file, MOVE it (preserves its urn) - do NOT delete + re-upload (mints a new urn, breaks 3D bindings). See the fusion-cloud-hygiene skill.",
"timeoutSeconds": 90,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_aps_versions",
"summary": "Full (uncapped) version history of a file.",
"timeoutSeconds": 40,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_assembly_bom",
"summary": "Structured, kit-aware MECHANICAL bill of materials for the active Design assembly (the counterpart to the electronics-only fusion_export_bom). Recurses organizational subassemblies but counts a physical part or a purchased kit/unit ONCE, so hardware modeled inside a kit (a '... with fasteners' bracket, a bearing/pulley) is NOT double-counted the way a flat allOccurrences walk counts it. Matches Fusion's Manage -> BOM quantities. Optionally writes a CSV.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_attach_3d_package",
"summary": "LOW-LEVEL primitive: attaches ONE model to ONE package. Prefer fusion_create_library with parts[]. Attach a real 3D chip model to a library package, end to end: opens the .lbr (library active), runs Electron.Create3DPackage to enter the Package3DEnvironment showing the footprint, imports the STEP + auto-orients it flat on the footprint, then executes Package3DStop (FINISH). This BINDS the 3D onto the deviceset (Content Manager shows the 3D nested under the package; the Packages 'Package' column flips Placeholder->part-name). ONE desktop-side step remains: Fusion pops a modal Save dialog (an OWNED popup) - the response _hint gives the exact desktop_ui_click to confirm it. AFTER: re-grab desktop_screenshot_window and check ownedPopupCount for errors; the 3D preview LAGS a beat before showing the real chip. Both paths (filePath/modelPath) are WINDOWS paths - stage from the container first.",
"timeoutSeconds": 240,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_bind_library_3d",
"summary": "LOW-LEVEL primitive: binds ONE STEP onto one deviceset. Prefer fusion_create_library with parts[] (which handles one part or many through a single path); reach for this only when you are driving a single bind deliberately. The CORRECT library in ONE call (the Library button's real bar: the 3D chip renders in the Content Manager preview): mints the part's 3D as a cloud f3d (make_3d_package), injects the wip_urn binding into the .lbr ON DISK (packages3d + package3dinstances), and reopens the library. Needs a signed-in Fusion session - the one cloud-dependent step in the wiki-to-EE circle. Autodesk's thumbnail preview lags ~2-3 min behind a fresh mint. NOTE: distinct from the older fusion_build_library_3d (multi-part batch pipeline).",
"timeoutSeconds": 480,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_board_bom",
"summary": "The bill of materials from the live board's own part attributes: one line per MPN with designators, quantity, value, package, manufacturer and the Mouser, DigiKey and LCSC numbers, plus the JLCPCB form (Comment, Designator, Footprint, LCSC). Board-only parts (test pads) are listed as such, and any part missing a distributor number is named. Read-only; with outputDir it also writes bom.csv and bom-jlcpcb.csv there.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_board_info",
"summary": "Raw board geometry XML (copper/arcs/lines) for the open board.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_board_seed",
"summary": "Write the design a new board starts from, as EAGLE source on this machine: the board outline, the fab's design rules (Fusion's own rules block with your clearance, edge distance, minimum width and drill, hole-to-hole, pad and via restring and copper weight; Fusion's defaults are 0.35 mm drill, 1 mm to the edge and a 25 % pad restring, wrong for most fabs), the fixed parts at their places with their nets, and the library they come from. Then fusion_new_electronics_from_eagle imports it as a linked schematic and board.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_board_source",
"summary": "Read the live board as EAGLE XML from a fresh export: parts, copper, vias, pours with Fusion's own computed fill, and the outline. Read-only. Feed it to adom-fields (it reads .brd) for current and heat, or to adom-aiflow, which converts it for its offline checks.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_board_stackup",
"summary": "Read a board's PHYSICAL fabrication stackup (see the pcb-stackup skill): copper layer count + copper/dielectric thicknesses from the EAGLE design rules (layerSetup/mtCopper/mtIsolate) plus the measured FR4 extent. A PCB is Cu/prepreg/Cu/core/.../Cu - the FR4 is NOT one slab. Use to build the stackup table + real-thickness exploded 3D view, and put a stackup table on every exported board's wiki page.",
"timeoutSeconds": 200,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_build_library_3d",
"summary": "Build a RENDERING multi-part 3D library in ONE call - the whole programmatic pipeline. For each part it makes the footprint+chip f3d package (no GUI dialogs, optional before/after screenshots) and collects the wip_urn, then injects ALL bindings into the combined .lbr in one pass (no hand XML surgery) and opens the finished library once. This is the verb for a basic-parts sampler / any many-part library; it replaces the per-part make_3d_package loop + manual binding. projectId/folderId default to the MAIN-project upload folder. Each part is independent, so re-run just the failed parts if Fusion resets mid-run.",
"timeoutSeconds": 1800,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_cancel_run",
"summary": "STOP a library import that is in flight (fusion_install_library_bundle / fusion_create_library) - the user's escape hatch from a long run, wired to a Cancel button in web control. Cooperative, not a kill: the run finishes the part it is on (a STEP import cannot be interrupted mid-command without leaving a half-made design, up to ~60s), keeps every 3D package already minted and binds them into the library, closes its scratch documents, and leaves the library open in Fusion (not saved to the cloud). The run then reports stage:cancelled, verdict:cancelled, errorCode cancelled_by_user, cancelledAt (which stage) and how many parts were done, on the same fusion_prove_result poll the caller already makes; cancelRequested:true shows on the very next poll before the boundary is reached. Omit runId to cancel the latest run still in flight. Idempotent; a run that already ended answers alreadyFinished.",
"timeoutSeconds": 10,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_capture_library_views",
"summary": "Capture the LIBRARY-EDITOR views EEs trust: the schematic SYMBOL (full pinout), the FOOTPRINT (pads + layer stack), and the COMPONENT/device view (Content Manager: symbol + the package table with the footprint<->package Mapped check + pin/pad counts). The 3D before/after shots don't show these. Requires the .lbr OPEN in the Electronics Library workspace (fusion_open_lbr first). Runs EDIT <pkg>.sym/.pac/.dev + WINDOW FIT + a background hwnd screenshot per view; returns the PNG paths on the box (C:/tmp/conduit-screenshots - pull with desktop_pull_file). EDIT uses the DEVICESET name (e.g. ESP32-S3FN8).",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_change_pours",
"summary": "Change existing pours in place: the pen width (the narrowest copper the fill can reach; a pen wider than a throat leaves it empty) and the isolation. Each pour is named by net, layer and outline, picked on the midpoint of its longest edge, then RATSNEST refills. The readback proves each pour took its new width/isolate and that no track or via changed, and reports the filled area before and after.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_check_recovery",
"summary": "Ask whether a cloud file has a crash-recovery document waiting, which would raise Fusion's recovery modal on open. BEST-EFFORT: Fusion's Python API does not reliably expose this (apiReliable reports whether the property existed), so a false negative is possible; the dependable signal is an open that times out, and fusion_dismiss_blocking_dialogs clears the modal. Finds the file by exact name in one project folder.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_claim_seat",
"summary": "Make THIS machine the active Fusion seat, the first-class way to move a licence between boxes while testing. Starts Fusion if needed, then answers Autodesk's 'Active Sessions Exceeded' modal in the BACKGROUND (Continue): this box takes the seat and the other machine's Fusion suspends RESUMABLY, keeping its documents. Answers needs_signin (never a credential prompt) when the box is not signed in: run fusion_signin first. Confirms with fusion_account and reports the account and licence it ended up with.",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_cleanup_cloud_files",
"summary": "PRECISELY delete a list of cloud files by lineage urn - SAFE cleanup of AI-created clutter. Deletes ONLY the exact fileIds given (never name-guessing), so it can't touch a teammate's file in a shared folder. Loops server-side. Get the ids from fusion_aps_browse (item .id). Use this to remove f3d files the bridge created. A big list takes minutes (relay may time out at ~60s while deletes continue server-side - re-browse to confirm).",
"timeoutSeconds": 1800,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_close_all_documents",
"summary": "Close ALL open documents without save dialogs. DESTRUCTIVE to unsaved user work - confirm with the human before calling on a box you do not own. By default it SKIPS scratch 'Untitled' docs; pass closeUntitled:true to close the UNMODIFIED ones too (page issue #59: the library/bind flow left ~5 per import, 16 after three, and no caller could clear them), and force:true to also discard MODIFIED Untitled docs, which may hold real unsaved work.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_close_document",
"summary": "Close ONE document WITHOUT the modal save dialog (save:false discards silently - the automation-safe close). Omit name to close the active document.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_close_window",
"summary": "Close a DIALOG window by hwnd (WM_CLOSE, like clicking X) - for dialogs without Cancel/Escape handling (e.g. Recovered Documents). NOT a document closer; refuses without hwnd. Get the hwnd from a screenshot's dialogs array or desktop_list_windows. (Doc drift caught by the verb test suite 2026-08-14: this was described as 'close the active document' while the handler required hwnd.)",
"timeoutSeconds": 30,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_create_cloud_folder",
"summary": "Create a subfolder in a cloud project through the signed-in Fusion session's Data API (no APS needed). Idempotent: an existing folder of that name is returned with alreadyExisted:true instead of a duplicate. Folder names are matched case-insensitively. For an APS-side create without Fusion running, use fusion_aps_create_folder.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_create_library",
"summary": "ONE-CALL library creation for web-control (one call = one consent). EVERY LIBRARY IS MULTI-PART - a single-part library is simply parts:[one entry], and there is no separate single-part verb to choose. Pass parts:[{package, lbrPath, modelPath}] for any number of parts; the older {libraryPath, stepPath} shape still works and is normalised into a one-element parts list, so both run the identical code path and the ETA scales with the part count either way. TWO entry shapes: A) {libraryPath, stepPath} - a ready .lbr plus the 3D; B) {kicadSymbolPath, kicadFootprintPath, stepPath, pinMap?} - KiCad sources; needs adom-lbr, which is Linux-container-only by platform rule, so on Windows/Mac boxes shape B refuses IMMEDIATELY (adom_lbr_unavailable, before any staging or Fusion launch - fusion_readiness reports kicadIngest up front). Convert at AUTHORING time in a container and use shape A. pinMap = explicit {pinName: padName} for when pin numbers do not match pad names (BGA-style). Chains convert -> bind 3D -> prove (four evidence frames + verdict) in the BACKGROUND and returns immediately; poll fusion_prove_result (stage narrates; top-level `verdict` proven/not_proven is the score - `stage:done` only means the chain finished). EVERY PART IS PROVED, not just the first: a 10-component library streams 40 evidence frames, FOUR per component (symbol, footprint, 3d, ganged) in assembly order, each tagged with `part` so a front end can group them as they arrive, and `provedParts[]` reports per-part pass/fail. The library is proven only if EVERY part is - one good part does not vouch for nine unchecked ones. On the FINAL fetch pass {inlineFrames:true} to get each evidence frame as a base64 thumbnailDataUrl a browser can render (plain polls return box paths only). The chain closes its library document on success AND failure - batches need no between-part sweeping. stepPath is required for a PROVEN library - no real 3D body without it.",
"timeoutSeconds": 30,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_delete_cloud_file",
"summary": "DESTRUCTIVE: delete ONE cloud file through the signed-in Fusion session's Data API. Looks in exactly one folder (projectName + folderPath, no recursion) for an exact case-insensitive name match, or for the lineage urn when fileId is given (the precise form; prefer it in shared folders). Refuses without fileName or fileId. Large folders time out on the scan; give a precise folderPath. Use fusion_cleanup_cloud_files to delete a LIST of urns with dryRun support.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_demo",
"summary": "FIRST-TIME-USER DEMO in one verb - the thing to run when someone new wants to SEE what this bridge does (HD's installer calls this). Takes them from nothing to a real board: launches Fusion, FINISHES the Autodesk sign-in - it OPENS the sign-in in the user's NATIVE browser IN THE BACKGROUND (never interrupting their work) and returns signinWhere/signinProfile/signinSession so you can tell them exactly where it is waiting, then offer three paths: they finish it, you foreground it, or (with their OK) you drive it. Native browser via ABE/nbrowser_* because that profile is already signed into Autodesk - never pup, which is anonymous, sets up APS cloud search (or explains it if declined) and runs a LIVE sample search so they see 2-second results, then opens an electronics PROJECT and walks SCHEMATIC -> 2D BOARD -> 3D BOARD, screenshotting each view to show them. STAGED + RESUMABLE: every call advances as far as it safely can and returns stage/done/narrate/screenshots plus a _hint with the exact next action; keep calling it until done:true. NEVER leave a first-time user parked on the sign-in screen - that is the failure this verb exists to prevent. See the 'fusion-demo' skill. TOUR MODE: pass {mode:'tour'} for the ASYNC guided ELECTRONICS tour (John, 2026-09-04: Adom is an electronics prototyping company, so the tour shows electronics, never a mechanical part): eight beats over the bundled sample part - the library, the symbol, the footprint, the 3D chip minted from its STEP and bound into the user's hub, then a REAL board from the user's hub (BQ25792, the Adom charger; args.board or args.boardUrn override) in schematic, 2D board and 3D board, falling back to a generated solo board only when the hub has none, and a cloud search; multipart libraries are mentioned in the narration, never shown (a bind is minutes per part). Captions are 32px on one line so they never cover the remote. ab's glass remote (desktop_demo_panel id fusion-tour) drives it: play, pause, next, back, mute, unmute, X = stop, with an instant loopback callback plus a poll backstop, one FIFO for the panel and fusion_demo_control, an ack caption per press; captions narrate every beat and pre-rendered narration audio plays locally (mute is session-only, unmute replays the beat). Every beat is measured before it moves (front, title, painted, stable) and then moves (2D zoom through the add-in, 3D orbit and zoom through Fusion's camera, verified by capture). Returns {demoId, estimatedSec, steps} at once; fusion_demo_progress {demoId} carries step, beatIndex/beatCount, percent, paused, muted, stopping, panel, presses[], captions[], per-step verified/placed/foregrounded/motion, shots[] (one evidence frame per beat), windowsRestored and tourDocsClosed. Fusion is placed on 80% of the primary work area for the show and restored at the end. Pass legacy:true for the previous step-list tour.",
"timeoutSeconds": 240,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_demo_progress",
"summary": "Poll a running fusion_demo tour: {percent, elapsedSec, estimatedSec, step, stepLabel, done, failed, shots, shotCount, stepShot}. Poll ~1-2.5s and render a REAL progress bar. LIVE EVIDENCE (issue #30): each frame MAY carry stepShot {step, title, image} - a ~640px base64 capture the BRIDGE took at that step's completion, one per step, riding the first frame after it completes (render these during the run; the page should not guess-snap). shots[] streams too: mid-run it carries paths for every completed step; pass imagesAs:base64 + sinceShot:<count you have> to receive only NEW shots fully encoded. done:true = the full gallery (base64 by default). Finished tours are DISK-SNAPSHOTTED, so the final frame stays pollable even across a bridge respawn.",
"timeoutSeconds": 15,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_describe",
"summary": "Self-describe every verb the bridge exposes (this list) for ab's Verbs tab + runner. The reply carries `contribute` (source, mirror, issue and PR commands, the fusion-contributing skill); every failing reply carries `_contribute` with the same pointer.",
"timeoutSeconds": 20,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_detect_layers",
"summary": "Detect 2-layer vs 4-layer board (ULP + CAM comparison).",
"timeoutSeconds": 90,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_dismiss_blocking_dialogs",
"summary": "Detect + classify (and optionally dismiss) blocking Fusion dialogs. Answers every one with the safe button (No/Cancel via WM_CLOSE, never Yes, never focus-stolen). {categories:[...]} narrows the sweep to those categories (e.g. [\"crash_report\"], the launch janitor's scope).",
"timeoutSeconds": 30,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_document_info",
"summary": "Metadata for the ACTIVE document: name, product type, save state, version, parent project.",
"timeoutSeconds": 30,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_eagle_import_status",
"summary": "The run record of a background fusion_new_electronics_from_eagle import: stage (started | done | failed), documentName, partsExpected (elements in the .brd), partsPlaced (read back from the board), placed[], and the final result. Poll it every few seconds after the import returned its runId.",
"timeoutSeconds": 20,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_electron_pan",
"summary": "Smoothly PAN + zoom the view to frame a board-coordinate box (mm; get part positions from fusion_board_info). Animates from where the view last was.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_electron_run",
"summary": "Run an EAGLE/Electron command in the open board (the generic extension point, e.g. RUN <ulp>).",
"timeoutSeconds": 90,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_electron_select",
"summary": "SELECT a part (by reference designator, or x/y board mm) and surface its properties - the way clicking a part reveals the properties panel. Great for showing life in a recording.",
"timeoutSeconds": 30,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_electron_zoom",
"summary": "Smoothly ZOOM the schematic/2D board for a recording (the whole motion is one call). factor>1 zooms in, <1 out; or fit:true. The loop runs in the add-in with a repaint per frame.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_electronics_query",
"summary": "TYPED electronics read model: rows for one of Autodesk's 49 electronics entity classes (Element, Signal, Net, Layer, Via, Smd, Wire, Pad, Part, Instance, Pin, Sheet, Package, Library, Error, Variant...) over the ACTIVE electronics document, with filters, field projection and pagination. Served by Autodesk's own MCP electronics_read when its server answers (fusion_mcp_enable turns it on), else by the board_info geometry export for Board/Element/Library/Package/Layer/Signal/Wire/Error (coordinates in mm). `source` names which. Replaces reading board_info XML by hand.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_execute_text_command",
"summary": "Run a raw Fusion TEXT COMMAND (app.executeTextCommand) - the escape hatch to Fusion internals (Electron.* electronics commands included). Electron.* commands need an ELECTRONICS document context (schematic/board view active). Guard risky calls with expectDocument.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_3mf",
"summary": "Export to 3MF mesh.",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_board_image",
"summary": "Render the OPEN board (or schematic) to a PNG via EAGLE's EXPORT IMAGE with a layer preset: all, top_copper, bottom_copper, top_silkscreen, bottom_silkscreen, top_soldermask, bottom_soldermask, top_paste, bottom_paste, board_outline, drill, assembly_top, assembly_bottom, fabrication (or explicit EAGLE layer numbers). Requires an electronics editor to be active (fusion_show_2d_board or fusion_open_board first). Silkscreen presets fit the view to the board outline so the PNG maps onto the board bbox. Layer visibility is restored (DISPLAY ALL) afterwards. listPresets:true returns the preset table instead of exporting.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_bom",
"summary": "Export a Bill of Materials CSV (grouped by value+package) from the open board.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_cloud_file",
"summary": "Export the ACTIVE Fusion Design document to a local file on the Fusion machine in one of step, stl, f3d, iges, sat or smt (despite the name it does not fetch a cloud file by name; open the document first with fusion_open_cloud_file). Requires a Design document to be active. For the per-format verbs with their own timeouts see fusion_export_step and friends; this is the one-verb form with a format switch. Pull the file back with pull_file.",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_cpl",
"summary": "Export the Component Placement List (pick-and-place) CSV.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_dwg",
"summary": "Export 2D DWG.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_dxf",
"summary": "Export 2D DXF.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_eagle_source",
"summary": "Export the ACTIVE electronics document as plain EAGLE XML (.sch or .brd; the outputPath extension picks the format). Fusion's .fsch/.fbrd are ZIP containers with the EAGLE XML inside; this exports the container via Document.CopyToDesktop, extracts the inner XML, writes it to outputPath and deletes the intermediate file. The result opens in standalone EAGLE, imports into KiCad, and parses with any XML tool. The container holds whichever editor is ACTIVE, so since 1.10.35 the bridge switches to it first (Schematic Editor for .sch, PCB Editor for .brd; reply carries switchedView) instead of answering 'No .sch file found inside .fsch ZIP container' (page issue #95).",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_f3d",
"summary": "Export the active design as a Fusion archive (.f3d).",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_fbx",
"summary": "Export to FBX mesh.",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_gerbers",
"summary": "Run the bundled JLCPCB CAM job (auto 2/4-layer) to produce the gerber + drill ZIP.",
"timeoutSeconds": 180,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_iges",
"summary": "Export to IGES.",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_lbr",
"summary": "Export the electronics LIBRARY in front as an EAGLE .scr script via Electron.run EXPORT SCRIPT: a text dump of every symbol, package and device, the round-trip check that a library loaded correctly. Requires an electronics editor to be active (fusion_open_lbr puts the library in front). Returns the path, size and the first 2000 characters as a preview; pull the file to read the rest.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_obj",
"summary": "Export to OBJ mesh.",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_optimized_glb",
"summary": "Fusion board -> wiki-grade optimized GLB. Exports STEP (+ optional silkscreen) and submits it to service-step2glb molecule mode (anchor to MP pins + silk bake + gold pins + join/weld/prune + Draco): ~465KB/~31 draw calls vs a raw ~16MB/~25000 that halts the viewer. Bounded-waits `wait`s (default 90); small boards return complete, big boards return {pending, jobId} - finish with fusion_fetch_optimized_glb. Use for a component page's component.parts.model_3d. STACKUP RULE (John 2026-07-15, see pcb-stackup skill): board bbox = the FR4 body, NEVER the whole assembly (components overhang edges + tower above); each overlay goes at ITS layer's z (copper at FR4-top, silk above mask); copper traces are REAL 35um 3D bodies colored like the FR4 - recolor them + translucent mask in the RAW GLB before optimizing to make routing visible; put the measured stackup table on the board's wiki page. PUBLISH EVERYTHING: a board's wiki page repo must carry EVERY exportable design file (.f3d/.step/.usdz/EAGLE .brd+.sch/Fusion .fbrd+.fsch/gerbers/BOM/CPL/GLBs/renders), not just the 3D - the page exists to share the design.",
"timeoutSeconds": 200,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_sat",
"summary": "Export to SAT (ACIS solid).",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_skp",
"summary": "Export to SketchUp (.skp).",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_source",
"summary": "Export the ACTIVE electronics document in Fusion's native source format via Document.CopyToDesktop: .fbrd (board), .fsch (schematic) or .flbr (library); the outputPath extension picks the format. The container holds whichever editor is ACTIVE, so since 1.10.35 the bridge switches to it first: the Schematic Editor for a .fsch, the PCB Editor for a .fbrd (reply carries switchedView). A .flbr still needs the library open (fusion_open_lbr). For plain EAGLE XML use fusion_export_eagle_source.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_step",
"summary": "Export the active design to STEP (needs the 3D view).",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_stl",
"summary": "Export to STL mesh.",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_export_usdz",
"summary": "Export to USDZ (AR / Hydrogen 3D).",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_fetch_optimized_glb",
"summary": "Finish a fusion_export_optimized_glb job: bounded-poll the optimizer by jobId and write the GLB to outputPath when complete. Re-call until status=complete (big boards tessellate a few minutes). No Fusion needed.",
"timeoutSeconds": 150,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_generate_package",
"summary": "Generate an IPC-7351-compliant parametric 3D package via Fusion's BUILT-IN ElectronicsPackageGenerator (EPG) - ~50 package families (chip/soic/qfn/qfp/bga/sot23/dfn/melf/ecap/crystal/headers/...), each a few seconds, ZERO GUI. Optionally LASER-ETCH a marking (MPN / '103') into the body top as REAL cut geometry (survives STEP), and export STEP in the same call - the royalty-free, license-clean path to a whole component library (our own generated output, not vendor models). Proven live: 0603 + '103' etch + STEP in ~2s.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_get_app_state",
"summary": "Current app state: running, active document, workspace, isElectronics. The poll/status verb for long-running calls.",
"timeoutSeconds": 20,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_get_design_info",
"summary": "Design-level summary of the active design: components, bodies, sketches, units, root name.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_get_parameters",
"summary": "All user + model parameters of the active design (name, expression, value, unit).",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_get_preferences",
"summary": "Read current Fusion appearance/navigation preferences (theme, activeTheme, invertScrollZoom, orbitScheme, modelingOrientation, gestureNav, cameraPivot, lengthUnit) as friendly values - the same keys fusion_set_preference accepts.",
"timeoutSeconds": 20,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_import_electronics",
"summary": "Import a Fusion-NATIVE electronics file (.fsch schematic, .fbrd board, .flbr library; NOT legacy EAGLE .sch/.brd/.lbr) from the Fusion machine as a NEW local document via Document.newDesignFromLocal. The document is unsaved: fusion_save_to_cloud persists it, fusion_close_document discards it. The bridge captures a post-open screenshot because Fusion can raise a blocking dialog the API cannot see.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_import_step",
"summary": "Import a STEP/.stp (or other native-importable) file into a NEW Fusion design via the native import API. The open-electronics hints redirect .step here. (Was implemented but missing from this catalog until the verb suite's reverse-drift check caught it, 2026-08-14.)",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_inspect_bodies",
"summary": "GEOMETRY READ-BACK: what actually got built, in MILLIMETRES. Per body: bbox, sizeMm, volumeMm3, areaMm2, faceCount, cylindricalFaceCount, appearance, material, isVisible. Use this to VERIFY your own modelling - a body at the wrong Z (a double-applied offset, a part buried inside another) renders perfectly and is INVISIBLE in a screenshot, and this work is often matte-black parts on a dark canvas where pixels are a weak check. cylindricalFaceCount is the cheap way to confirm holes were actually cut: a symmetric cut that reaches nothing fails SILENTLY with no exception. Pass worldSpace:true to resolve bodies through their occurrence transforms (assembly placement); optionally filter with occurrence. Fusion's API is centimetres - this converts for you.",
"timeoutSeconds": 130,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_install_fusion",
"summary": "Install Fusion 360 FOR the user - downloads Autodesk's official Client Downloader and streams the free trial silently, with NO shell_execute and NO ab approval gate (runs inside the trusted bridge). Elevation-aware: --globalinstall when admin, PER-USER otherwise (a non-elevated globalinstall dies silently on UAC - learned live). Returns promptly; poll fusion_readiness (reports installing:true) until installed:true, then fusion_start. Declared as detect.installVerb so ab's bridge_readiness recommends it.",
"timeoutSeconds": 90,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_install_library_bundle",
"summary": "COMPOSITE, the Fusion twin of kicad_install_library_bundle (#68): ONE call takes a staged Cloud Library bundle (zip of <Lib>.lbr + <Part>.step models, or a bare lbrPath with STEPs beside it), unpacks it safely, places it under ~/Documents/Adom Libraries/<name>/, pairs EVERY deviceset with its STEP by name (deviceset, package, normalised, prefix; a one-part library pairs its single model regardless), lints part numbers (partMetadata: MPN, manufacturer, Mouser/DigiKey/LCSC - reported, never blocking), pre-flights Fusion state (fusion{status}), and starts the same bind -> prove chain fusion_create_library runs. ASYNC BY CONTRACT: returns IMMEDIATELY with runId + statusVerb because a STEP bind is 3-15 minutes and cannot fit a relay window; poll fusion_prove_result (measured percent, four streamed proof frames per part, provedParts[], and an addin_restart_required payload the CALLER turns into the ask). PARTIAL SHIPS: a deviceset with no model is a NAMED skip in unbound[], the rest still bind; partsBound < partsTotal is the signal. Each part is minted on its own single-deviceset library (the Package3D generator loads the FIRST package of the open library, so a merged library would put every chip on part one's footprint), with the STEP placed exactly as published (orient:false, origin trusted), then all urns are bound into the merged library, and after prove the bound library is SAVED TO THE CLOUD under <project>/Adom Libraries so it appears in Fusion's Library Manager (cloudLibrary{saved, fileId, duplicatesBefore} in fusion_prove_result). Per-part scaffolding is deleted; the user is left with one library plus its per-package f3d folder. capture:false only places the files and returns. This is the one contract the wiki CLI (`library install --format fusion`) and the Export button both read; the recipe has one owner.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_interactive",
"summary": "Is Fusion taking input RIGHT NOW? Reads the add-in's busy flag (a long bridge command in flight), Fusion's own hasActiveJobs, and the main thread's latency on a trivial script (probeMainThread:false skips that and costs nothing). interactive:true means drive it; false means a load, a cloud open, or a bind is still running. The guided tour's narrator polls this every 1.5s and stamps fusion-busy / fusion-interactive transitions into the tour record, so a recording can be cut or sped up on them.",
"timeoutSeconds": 20,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_kill",
"summary": "Force-KILL Fusion 360 (taskkill /F) - the desperate path for when fusion_stop cannot close it (stuck modal / wedged process). Closes docs cleanly first when reachable.",
"timeoutSeconds": 30,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_library_manager",
"summary": "Open Fusion's Library Manager and switch to one of its three tabs. Hub Libraries = libraries saved in the Fusion hub (what our bind chain produces, and what Autodesk recommends for sharing). Private Libraries = library.io managed libraries in folders THIS account belongs to. Public Libraries = library.io's public catalogue. PITFALL: the library TABLE is CEF-drawn and exposes NOTHING to UIA, so libraries[] is normally empty and that is not a failure - screenshot the returned hwnd to read the rows.",
"timeoutSeconds": 240,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_library_parts",
"summary": "Every ORDERABLE variant in a .lbr with its part numbers - offline, no Fusion needed. For an EE this is the point of the library: two variants can share ONE symbol, ONE footprint and ONE 3D body and still be different products (an AEC-Q100 automotive part vs the baseline one), and that difference lives ENTIRELY in the metadata. EAGLE spells the orderable identity as deviceset + device + technology: <device> carries the PACKAGE variant, <technology> carries the GRADE/temperature variant, and attributes hang off <technology>. Reports per-variant MPN / MANUFACTURER / MOUSER_PN / DIGIKEY_PN / LCSC_PN (the exact names this bridge's own BOM export reads), plus warnings when variants are indistinguishable, share an MPN, or a deviceset has no description. These warnings never block the library from opening - they say whether an EE could actually order from it.",
"timeoutSeconds": 15,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_list_cloud_files",
"summary": "List files/folders in a cloud project (optionally a subfolder).",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_list_cloud_projects",
"summary": "List the cloud PROJECTS visible to the signed-in Fusion session (hub walk - slow on big teams; prefer fusion_aps_search for finding files).",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_list_text_commands",
"summary": "List Fusion's internal TEXT COMMANDS (TextCommands.List) whose name contains filter, case-insensitive; the discovery tool for fusion_execute_text_command. Returns the first 50 matches plus the total count. Works best with an electronics editor active (the Electron.* family is what the default filter finds).",
"timeoutSeconds": 30,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_live_feed",
"summary": "A ~1 fps look INTO Fusion while the bridge drives it, kept as a BOX-SIDE ring buffer (~10 min). Each tick records the Fusion main window (kind:main - the video) and every owned popup over it (kind:popup - dialogs, Browser/tool panels, the Adom banner; Fusion draws these as separate windows a main capture omits), each a path on this machine tied to its tick. Drain from the container with {action:frames, since:<tick>}, read_file each path, and publish where a human looks - tools/live_feed_drain.py does exactly that into shotlog. Proof frames are NOT here: fusion_prove_result evidence[] carries kind:proof with step labels, so the three kinds are distinguishable at the source. Exists so a human can see open tabs and dialogs during boot or a restart instead of guessing.",
"timeoutSeconds": 15,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_make_3d_package",
"summary": "Create a RENDERING component 3D package (FOOTPRINT + chip, aligned) for ONE part, fully programmatically with ZERO GUI dialogs. Opens the .lbr, runs Electron.Create3DPackage to load the package's footprint into a generator doc, imports the STEP onto it, orients it flat, saveAs an .f3d (skips the FINISH Save dialog + the two unbeatable 'Fusion360' CEF modals), uploads the f3d via APS, and returns an fs.file:vf wip_urn to hand-write into the library's <packages3d>. projectId/folderId default to the MAIN-project upload folder. Pass captureLabel to also get a BEFORE (footprint) + AFTER (chip placed) screenshot. PITFALL: a RAW STEP upload binds but renders NOTHING ('Thumbnail download failed') - this verb makes an f3d, which renders. Prefer fusion_build_library_3d for many parts.",
"timeoutSeconds": 200,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_make_showcase_project",
"summary": "Put a library's parts on a NEW schematic and board to SHOW THEM OFF: every deviceset in the .lbr (or the ones in devicesets[]) placed in a row on a fresh sheet and a fresh board, no nets, with the library's bound 3D urns carried across so the 3D PCB shows the real bodies. Generated as EAGLE source on the box and opened dialog-free (Document.newDesignFromLocal), so nothing touches the user's screen. This is THE verb for 'make a board with these new parts on it'; fusion_make_test_project is the one-part circuit variant. After it: fusion_show_2d_board / fusion_show_3d_board {capture:true}, fusion_schematic {action:\"show\"}, fusion_save_to_cloud. The name of each part is written on the top silkscreen under its footprint (silkLabels:false turns it off); fusion_make_test_project does the same.",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_make_test_project",
"summary": "Create a NEW electronics test project FROM SCRATCH around a library part - the Web Control demo's PROJECT button, and the answer to 'a customer only has a component page'. Generates a minimal test circuit server-side (the part + a generated 330R series resistor with VCC/GND stubs on a small board) as real EAGLE .sch/.brd, then imports the pair as a new electronics design. NO cloud, NO sign-in, no pre-existing content. After it, fusion_show_schematic / fusion_show_2d_board / fusion_show_3d_board all work on the result. Wiring uses the deviceset's own connects (first two pins), so 2-terminal parts get a real circuit and big ICs get a structurally-valid integration proof.",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_managed_library_create",
"summary": "Create a NEW managed library on library.io FROM the library in front (which must already be saved in a Fusion Hub). Drives MANAGE > LIBRARY.IO > Push, then completes Fusion's Create Managed Library dialog. PITFALL: a managed library created under one Autodesk account is NOT visible to another account until its managed FOLDER is shared on library.io - proven live, so do not assume hub membership shares it.",
"timeoutSeconds": 240,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_managed_library_link",
"summary": "Link the library IN FRONT to an existing managed library on library.io. With no name, opens Fusion's Select Managed Library picker, returns its rows as records (name/type/version/managedFolder/description) and CANCELS - a safe read-only listing of what this Autodesk account can reach. With name, selects that row and confirms. SAFETY: after linking, Fusion offers to force-update your library FROM the managed one; 'Replace Local Library' would destroy your parts, so this verb answers CANCEL by default - pass onUpdatePrompt to choose deliberately. A managed library owned by ANOTHER Autodesk account does NOT appear until its managed FOLDER is shared with this account on library.io; being in the same Fusion hub is not enough.",
"timeoutSeconds": 180,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_managed_library_pull",
"summary": "Pull the newest version FROM library.io into the linked library in front. A pull ends in ONE of two CEF dialogs and BOTH block the add-in until answered: the force-update prompt when content differs (answered MERGE by default, since pull is an explicit request for the managed content - pass onUpdatePrompt:'replace' to overwrite local parts entirely, or 'cancel' to back out), or 'Up to Date' when already current. If neither appears, nothing was pulled and this reports failure rather than a false pass - Fusion greys Pull out on a library that was never linked.",
"timeoutSeconds": 240,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_managed_library_push",
"summary": "Push a NEW VERSION of the library in front up to its linked managed library on library.io. Clicking the menu item alone does NOT push: Fusion raises a CEF 'Create New Version' confirmation and THAT is what creates the version, so this verb completes it and fails with confirm_missing rather than reporting a false pass. On a library that is not linked yet, Fusion offers Create Managed Library instead and this reports not_linked_yet - use fusion_managed_library_create. NOTE: Library Manager keeps showing the IMPORTED version number after a push, so the row gains an update-available badge instead of incrementing.",
"timeoutSeconds": 240,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_managed_library_unlink",
"summary": "Unlink the library in front from its managed library on library.io. Fusion greys this out on a library that was never linked, so a silent no-op there is expected.",
"timeoutSeconds": 180,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_mcp_call",
"summary": "Call any tool on Autodesk's Fusion MCP server (fusion_mcp_read, fusion_mcp_update, fusion_mcp_execute, fusion_mcp_electronics_read). The bridge handles the MCP streamable-HTTP handshake for you (initialize -> MCP-Session-Id -> notifications/initialized) and re-establishes a dropped session automatically. MCP acts on the ACTIVE Fusion document, so open one first. PREFER a native fusion_* verb when one exists - they are tested here and return richer hints - and reach for MCP for Autodesk's text-to-CAD surface.",
"timeoutSeconds": 150,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_mcp_enable",
"summary": "Turn Autodesk's Fusion MCP server ON by driving Fusion's Preferences dialog for the user. Autodesk exposes NO API for this toggle, so the UI is the only route: this opens Preferences (Commands.Start PreferencesCommand), expands General, selects API, ticks 'Fusion MCP Server (runs locally on this device)', then clicks Apply and OK. Needs Fusion running; briefly uses the foreground and announces why with an on-screen caption. NEVER ask the user to do this by hand first - do it for them, then tell them it is handled. Note the setting is DISCARDED if Fusion is killed or restarted before Apply is clicked.",
"timeoutSeconds": 180,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_mcp_resources",
"summary": "List Autodesk MCP resources, or read one by uri. These are mostly the Electronics entity schemas (resource://mcp.electronics_schema_*) that describe what fusion_mcp_electronics_read can return.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_mcp_status",
"summary": "Is Autodesk's Fusion MCP server up, and what does it expose? Autodesk + Anthropic ship a LOCAL MCP server at http://127.0.0.1:27182/mcp exposing Fusion's own text-to-CAD surface (read geometry, execute/update features, read Electronics design data). It binds LOOPBACK on the user's machine and was built for Claude Desktop running there, so a CLOUD AI cannot reach it at all - this bridge runs on that machine and proxies it for you. Returns enabled, serverInfo and the live tool list. OFF by default: if it reports enabled:false, call fusion_mcp_enable and the bridge turns it on for the user.",
"timeoutSeconds": 45,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_mcp_tools",
"summary": "Full tool list from Autodesk's Fusion MCP server INCLUDING input schemas, so you can construct a valid fusion_mcp_call. These are Autodesk's tools, not this bridge's.",
"timeoutSeconds": 45,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_mech_capabilities",
"summary": "Discover typed mechanical operations, exact input schemas, units, recovery limitations and current add-in session ID.",
"timeoutSeconds": 30,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_mech_operation_status",
"summary": "Read durable typed-operation history by recorded sessionId and operationId, including after HTTP timeout or add-in restart. Returns the recorded request digest, source version, target identity, phase/timestamps and terminal result. Historical nonterminal work is interrupted/unknown and never replayed. Admission without a durable dispatch claim or uncertain persistence requires reconciliation. Missing history never proves no execution. This observational route bypasses lifecycle repair, window etiquette and the CAD queue; it never starts/restarts Fusion or dismisses dialogs. An unavailable add-in returns operation_status_unavailable with unknown outcome. SQLite recovery may repair only the app-owned journal. A native call monopolizing Python's GIL can still delay responses.",
"timeoutSeconds": 30,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_mechanical",
"summary": "Guarded main-thread parametric parts and assemblies: sketches, solid features, atomic parameter edits, component definitions/copies/placement, seven as-built joint motions and limits, rigid groups, interference, materials and assembly mass/center of mass, local supplier STEP/SAT import with SHA/provenance, native McMaster command, structured/flat BOM CSV, topology readback, health and safe exports. Geometry queries refuse ambiguous selections; root-space distance/angle measurements return witness points. Typed sketch trim/extend/split/break and signed modern offsets, reference-defined construction axes and native sketch constraint diagnostics are available through exact operation schemas. Regular geometry-solving joints, joint origins and native motion links have guarded typed operations, exact attachment/parameter readback and timeline restoration. Read-only configuration inspection and active-row BOM provenance are available; configuration lifecycle and configured-design model writes remain disabled pending native recovery/archive gates. Incomplete configuration scope also blocks complete BOM output. Typed model mutations use runtime-proven PTransaction recovery; transaction_probe verifies the backend (new_design does this automatically). Writes require sessionId,operationId and current target {documentId,revision}. Durable admission must commit before dispatch. Retry exact args with the same ID; query durable status after timeout. Old-session history is readable but never replayed. Storage failure after execution returns reconciliation-required, preserving available evidence without claiming rollback. References expire on model changes. Files/document lifecycle are outside model transactions.",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_move_parts",
"summary": "Place parts on the live board: one MOVE (absolute, mm) and ROTATE per part, each its own undo step, then a fresh export reads every element back. The layout half of the AI flow's Fusion lane (adom-aiflow place land). Coordinates are Fusion's (y up).",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_narrate",
"summary": "Play one bundled narration clip on the box now (the guided tour's voice): dock, dashboard, or any <beat>[-a|-b] clip in resources/demo-audio. A driver speaks the dock bar and dashboard lines with it before the tour starts. Returns startedAt (epoch seconds) so a recording can be cut on it; the tour's own narration stops it when a beat begins.",
"timeoutSeconds": 15,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_new_electronics_from_eagle",
"summary": "Import a legacy EAGLE .sch (+ paired .brd) into a NEW Fusion electronics design so the parts INSTANTIATE (schematic + populated board, lands in the PCB editor). The ONLY way to author a board from EAGLE source: Document.newDesignFromLocal opens the schematic editor but does NOT instantiate parts, and the Fusion-native .fsch/.fbrd container is opaque binary you can't build offline. This fires Fusion's own ImportSCHAndBRDCmd and drives BOTH native Open dialogs (the .sch then the .brd) in the BACKGROUND via desktop_ui_click by accessible name (no foreground). Stage both files to Windows first (send_files). After: fusion_show_2d_board, RATSNEST + 'AUTO ;' to autoroute, fusion_show_3d_board for 3D. PREFLIGHT (1.10.20): refuses with eagle_files_missing before touching any dialog when either file is not on the Fusion machine; if the Open dialog does not accept the file the bridge cancels the dialog itself (open_dialog_stuck), so nothing is ever left on the user's screen. Prefer fusion_schematic {action:\"open\"}, which picks this route only when a .brd exists next to the .sch. ASYNC by contract (1.10.22): returns {started:true, runId, statusVerb} at once and runs the dialog-driven import on the exe; poll fusion_eagle_import_status {runId}. The record and the final reply carry documentName, partsExpected (elements in the .brd) and partsPlaced (read back from the board); success needs parts on the board (nothing_instantiated otherwise). Pass wait:true only from inside the exe.",
"timeoutSeconds": 200,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_notify_owner",
"summary": "LAST-RESORT human escalation: toast the user's MAIN computer (fans out cross-ab to every peer on the relay, so it reaches them even when this bridge runs on an unattended VM). ONLY for true human walls - password/2FA entry, UAC elevation, a physical step. Exhaust programmatic options first (UIA background clicks, seat auto-resolve, warm-SSO sign-in). After sending, WAIT and poll fusion_readiness; do not re-toast within a few minutes.",
"timeoutSeconds": 20,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_open_board",
"summary": "Open a LOCAL legacy EAGLE .brd in Fusion's 2D board editor (dialog-free Document.newDesignFromLocal; a background open). NAV RULE: the schematic, 2D board and 3D board are VIEWS of ONE electronics design, not standalone files. For a team design open the DESIGN document (fusion_open_cloud_file / fusion_open_by_urn) and switch views with fusion_show_2d_board; this verb is for a .brd that exists on the Fusion machine (push it there first). Elements with an embedded library are instantiated as placed parts; embed <packages3d> + per-element package3d_urn for real 3D bodies, then fusion_show_3d_board. The bridge captures a post-open screenshot because Fusion can raise a blocking dialog the API cannot see.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_open_by_urn",
"summary": "Open a cloud ELECTRONICS DESIGN by URN. PCB/ELECTRONICS NAV RULE: a board is NOT a standalone file - the schematic, 2D board and 3D board are VIEWS inside ONE electronics DESIGN. Open the DESIGN document first (fusion_open_cloud_file or fusion_open_by_urn), THEN switch to its schematic and its 2D board (fusion_show_2d_board) and 3D board (fusion_show_3d_board). A Select-Electronics-Design-File picker IS that design list of its schematic + board. An EMPTY 2D board usually means you opened a derivative or the wrong file, or it is out of sync - reopen the parent electronics DESIGN and switch to its board view; do NOT open a .brd or .sch as a standalone file.",
"timeoutSeconds": 240,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_open_by_urn_note",
"summary": "(see fusion_open_by_urn)",
"timeoutSeconds": 30,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_open_cloud_file",
"summary": "Open a CLOUD file by name (the front door to every design flow). PCB/ELECTRONICS NAV RULE: open the electronics DESIGN document (EcadDesignProductType), never a child .brd/.sch/3D directly - then switch views with fusion_show_schematic / fusion_show_2d_board / fusion_show_3d_board. LONG-RUNNING: fire it, then poll fusion_get_app_state until activeDocument matches (cloud opens on electronics designs take 1-3 min). A crash-recovery modal can block the open - fusion_dismiss_blocking_dialogs.",
"timeoutSeconds": 240,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_open_design",
"summary": "Open a LOCAL design file (routes through the add-in import). Prefer cloud flows (fusion_open_cloud_file) for team designs; this is for local .f3d/.step style files.",
"timeoutSeconds": 240,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_open_electronics",
"summary": "Read whether an ELECTRONICS editor (schematic, board or library) is the active workspace, so you know if Electron.* text commands and fusion_electron_run will work. With filePath, and ONLY when an electronics editor is already active, it also issues Electron.run EDIT on that file; otherwise it just reports the workspace. Prefer fusion_open_schematic / fusion_open_board / fusion_open_lbr to open files. The schematic, 2D board and 3D board are views of one electronics design.",
"timeoutSeconds": 30,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_open_lbr",
"summary": "Import an EAGLE .lbr library into Fusion's Electronics LIBRARY editor (Content Manager / Electronics Library workspace), not a PCB design. PITFALL: filePath MUST be a WINDOWS-local path (C:/...). The chip-fetcher/adom-lbr pipeline runs in the cloud container, and there is NO container-to-Windows push verb, so STAGE the .lbr onto Windows first (serve it on a proxied port + Invoke-WebRequest via shell_execute), then pass the C:/ path. PITFALL: an adom-lbr .lbr is 2D ONLY - symbol + footprint + a PLACEHOLDER 3D package; the real 3D chip is NOT attached (that needs a Fusion cloud URN). To attach the 3D, see the 'fusion-libraries' skill. Pass verify:true to round-trip-confirm Fusion parsed the deviceset, then check fusion_get_app_state (activeWorkspace 'Electronics Library').",
"timeoutSeconds": 50,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_open_schematic",
"summary": "Open a LOCAL legacy EAGLE .sch in Fusion's Schematic Editor (dialog-free Document.newDesignFromLocal; a background open). NAV RULE: the schematic, 2D board and 3D board are VIEWS of ONE electronics design, not standalone files. For a team design open the DESIGN document (fusion_open_cloud_file / fusion_open_by_urn) and switch views with fusion_show_schematic; this verb is for a .sch that exists on the Fusion machine (push it there first). Drive the opened sheet with fusion_electron_run (WINDOW FIT, DISPLAY ALL). The bridge captures a post-open screenshot because Fusion can raise a blocking dialog the API cannot see.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_physical_properties",
"summary": "Per-component physical properties (volume cm3, mass kg, density, area, center of mass) for the active design. Reads them directly so BOM/costing tools no longer have to run getPhysicalProperties inside a modeling script. Pass names to scope to specific components.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_place_vias",
"summary": "Add vias at exact points (stitching, thermal, escape): VIA per via with its drill and diameter, then read back.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_plan_library_import",
"summary": "PRE-FLIGHT for a library import: does NO work and changes nothing. Reports whether Fusion is installed, running, or needs its add-in loaded (with a plain-language message you can show the user), plus a per-stage plan with MEASURED per-machine time estimates scaled to the number of parts you are sending - a multi-part library does one STEP import per part, which is the slowest stage, so the estimate grows with the library. Call this FIRST so the wiki can render the summary and the progress bar's steps, then run the import and poll fusion_prove_result, which reports the SAME stage names.",
"timeoutSeconds": 20,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_plan_route",
"summary": "Calculate a read-only, bounded orthogonal A* path between two pads on a live two-layer board. Uses existing copper and the shared conservative clearance model. Returns explicit route args for route_net; native DRC is still required after mutation.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_pour_state",
"summary": "Read every pour on the live board with Fusion's own computed fill: filled area per pour, per layer and per net, and which pours were never filled (no RATSNEST since they were drawn). The measure step of the AI flow's Fusion lane.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_preflight_lbr",
"summary": "PRE-ANALYZE a .lbr: will Fusion open it? Offline and instant - no Fusion needed, nothing launched. Runs the named checks the bridge learned from real Fusion rejections: file-readable, size-sane (truncated-transfer corpse detection), xml-parses, root-is-eagle, packages-nonempty (Fusion's silent 'No Components'), symbols-present, devicesets-present (missing ones make EDIT raise Create-new prompts), connects-resolve (dead wiring renders fine and connects nothing). fusion_open_lbr and fusion_create_library run the same gate automatically; call this directly to gate a batch BEFORE staging.",
"timeoutSeconds": 10,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_prefs_close",
"summary": "Apply+OK (save:true, the default) or Cancel Fusion's Preferences dialog. Settings changed via fusion_prefs_open are NOT persisted until this is called with save:true.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_prefs_open",
"summary": "Open Fusion's Preferences dialog and optionally jump to a section, then hand back a SCREENSHOT + shotId you can click in. This is how you reach ANY Fusion preference: the Python API exposes only a thin slice (theme/orbit/units, debuggingPort, developer tools) and everything else, including the MCP server toggle, is UI-only. Sections: general, api, design, manufacture, electronics, render, drawing, material, graphics, network, preview features. Child sections under General are lazily rendered by Qt and never appear in the UIA tree, which is why this returns an image to click rather than control names. ALWAYS finish with fusion_prefs_close {save:true} - nothing is saved otherwise, and killing/restarting Fusion first discards the change.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_prewarm",
"summary": "Warm the bridge ahead of the first real call, WITHOUT starting Fusion: confirms the add-in is synced into every Fusion add-in folder, readies the space-free staging folder, and caches the PCB design-rules catalog from adom/pcb-design-rules. Adom Bridge calls it once per installed version in the background (bridge.json prewarm.verb); safe to call again any time. Launching Fusion is never part of it.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_prove_result",
"summary": "POLL a background run started by fusion_create_library or the detached fusion_build_library_3d. Returns stage + stageLabel, plan[] with measured per-stage estimates, stagesDone, percent, etaSec, confidence, and evidence[] filling in AS EACH ARTIFACT LANDS (symbol -> footprint -> 3d -> ganged). For a 3D build it carries per-part progress (minting X (3/7)), partsDone/partsTotal and parts[] with each wip_urn. stage:done only means the chain FINISHED - the top-level verdict (proven/not_proven) is the score, and a run that captured zero frames lands stage:failed with blocked_by_dialog (carrying the dialog text) or no_evidence_captured rather than reporting done. Pass inlineFrames:true on the final fetch for base64 thumbnails a browser can render. restarts[] {at, why, kind} lists any restart the chain performed (only with allowRestart). prove.planned / prove.skipped say whether evidence frames were captured and why (AI threads bind only by default).",
"timeoutSeconds": 20,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_readiness",
"summary": "FAST readiness check (does NOT launch Fusion): is the Fusion host app installed + running + the bridge ready to drive? ab DETECTS Fusion (never installs it) via bridge.json 'detect', and auto-installs Python if missing (ab >=1.9.47). Call this before driving Fusion; if installed-but-not-running, fusion_start. SELF-HEALS the seat/licensing dialog (background UIA + screenshot-verify) whenever it detects one. Pairs with ab's bridge_readiness.",
"timeoutSeconds": 15,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_release_seat",
"summary": "Give up the Autodesk seat from THIS machine so another box can claim it with no modal at all: closes Fusion cleanly (documents are NOT discarded; an unsaved one refuses and says so) and leaves the account signed in, so this box can claim the seat straight back. The counterpart of fusion_claim_seat.",
"timeoutSeconds": 180,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_remove_pours",
"summary": "Delete pours (all of them, or the ones named by net, layer and outline) so a board can be poured again after a refine. Each DELETE picks the outline point farthest from every pad (refused if none is 1 mm clear), and the readback undoes everything if a part or a track changed.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_reset_workspace",
"summary": "Bring Fusion back to a clean slate between runs: closes named documents AND the Untitled scratch the library/bind flow leaves behind (page issue #59). Fusion always keeps ONE blank document alive, so a single remaining Untitled is correct rather than a failure. MODIFIED Untitled docs are left untouched unless force:true, because those can hold real unsaved work.",
"timeoutSeconds": 90,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_resolve_seat_dialog",
"summary": "Readiness EXECUTOR (Rust port, Phase 3): detect + resolve the Autodesk seat/licensing modal ('Active Sessions Exceeded' / 'Suspend Remote Session') in the background, at most 3 UIA clicks per call, screenshot-verified. Idempotent: nothing up answers clicks:0. fusion_readiness calls this itself when it sees the dialog; call it directly only when you are driving the launch by hand.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_restart_for_addin",
"summary": "ASYNC: returns immediately (started:true) and restarts Fusion in the background, SAVING the user's open documents first; poll fusion_readiness until ready with the new addinVersion (a restart takes 60-120s, longer than the relay budget; pass wait:true for the old blocking form). Finish add-in setup by restarting Fusion. Call this when any verb returns errorCode addin_restart_required (the add-in was installed/updated while Fusion was already open, and Fusion only loads add-ins at launch). ASK THE USER FIRST when a human is present - the failing verb's payload carries userMessage plus openDocuments/unsavedDocuments so you can show them what is open. Refuses with unsaved_named_document rather than discarding a never-saved document.",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_ripup_nets",
"summary": "Take whole nets' tracks and vias back up (RIPUP per net, one undo step each) so they can be routed again, wider or another way. Their pours stay. Readback proves no track or via is left on those nets and no pour was lost.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_route_net",
"summary": "Create explicit net copper in the live Fusion canvas. Conservative clearance preflight, board/revision guards and exact copper readback. One or several trace segments per call; no general autorouting. Use routing_drc for native DRC.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_routing_drc",
"summary": "Run fresh native Autodesk DRC and read UL_BOARD.errors, including approved errors, warnings and airwires. Does not accept or clear any violation.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_routing_state",
"summary": "Read the live board's identity, geometry revision, pads, copper and per-net airwires from a fresh Fusion export.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_run_modeling_script",
"summary": "Run an adsk.fusion modeling script in the live session (sketches/extrudes/params). Free programmatic CAD.",
"timeoutSeconds": 180,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_save_to_cloud",
"summary": "Save the ACTIVE document to Autodesk cloud storage with an explicit name and destination. Dialog-free precisely because you supply what the Save box would ask for - use it before closing or restarting when a document has never been saved (fusion_close_all_documents refuses such a document with unsaved_named_document rather than discarding it).",
"timeoutSeconds": 180,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_schematic",
"summary": "START HERE for a schematic. ONE verb, three actions. action:\"open\" lands in the schematic editor from whatever names the design: fileName (+projectName) or urn or query for a CLOUD design (opens it, then switches to the schematic view), schPath for a local EAGLE .sch (its sibling .brd is imported with it so parts instantiate, unless withBoard:false; a .sch alone opens dialog-free), or filePath for a Fusion-native .fsch. action:\"create\" writes a blank EAGLE schematic on the box and opens it as a NEW local electronics design with the schematic editor active, no dialog anywhere. action:\"show\" switches the already-open design to its schematic view. Every reply says which underlying verb it used (via). Remember: a schematic is a VIEW of an electronics design, not a file of its own, which is why there is no verb called open_a_schematic_file. To put a library's parts on a NEW schematic and board for showing them off, use fusion_make_showcase_project instead.",
"timeoutSeconds": 240,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_schematic_plan",
"summary": "Plan a grouped schematic from a netlist: one labelled frame per block, the block's parts in a row, every connected pin given a short stub named for its net and a label. Returns the command groups for fusion_schematic_run (one call per group, so the sheet grows block by block on camera). Pins may be named by pad (U1.3) or pin (U1.VIN). Pure computation from the .lbr; nothing in Fusion changes.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_schematic_run",
"summary": "Build a schematic live: a list of complete, non-interactive EAGLE commands run one at a time on the active schematic (ADD 'dev@lib' 'NAME' R0 (x y), VALUE, NET 'name' (pts), LABEL, WIRE, TEXT, LAYER, CHANGE STYLE/SIZE/WIDTH/RATIO, WINDOW FIT), with an optional pause between them so a viewer sees it grow. Anything else is refused before the first command runs. ADD is proven against libraryPath on disk first (the deviceset must be there; the library is USEd by the bridge), so the component picker can never open. Readback: the parts and nets on the sheet from a fresh export.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_screenshot_fusion",
"summary": "Background PrintWindow capture of Fusion's MAIN window (largest same-title window; works occluded/bottom-of-z-order, never raises anything) or a specific dialog by hwnd. Returns fullPath/safePath (ab auto-pulls them to the caller as localPath, 1.10.37) plus the older savedTo. (Live since early versions but undescribed until 2026-08-15 - it was invisible to callers AND to the drift check.)",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_search_cloud_files",
"summary": "⛔ DISABLED (returns an error): the in-app add-in search took 30+ min and CRASHED Fusion (WinError 10054). It is hard-blocked in the bridge. Use fusion_aps_search {query} — server-indexed, seconds, no Fusion. See the 'fusion-aps-search' skill.",
"timeoutSeconds": 15,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_set_auto_update",
"summary": "Turn AUTOMATIC Fusion updating on/off for this user. ON BY DEFAULT, and deliberately INVISIBLE: Fusion ships updates constantly and nags with an 'Update Now / Update Later' panel plus a '14 days until Fusion must update' countdown. Every fusion_readiness call checks for that offer and, if present, the bridge clicks it IN THE BACKGROUND (UIA, no foreground, no caption) so the download starts and the newer build comes up on the next launch. The user should never have to click it. Call with no args to read the current setting; {enabled:false} opts out and the choice is STICKY (~/.adom/fusion-bridge/prefs.json) - once a user opts out, NEVER click their update prompts again. Tell the user this is handled for them rather than asking them to update.",
"timeoutSeconds": 30,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_set_design_rules",
"summary": "Load a FAB's design rules (DRC) into the open board. The rule packs live on the wiki page adom/pcb-design-rules (JLCPCB, PCBWay, OSH Park, Seeed, Eurocircuits, Aisler, Elecrow, Advanced Circuits, Sierra, MacroFab, NextPCB, ALLPCB and 3rd party fab; one .edru per vendor/process/layer count, every number citing the vendor's own capabilities page): the bridge fetches the pack, stages it on the box, and the add-in runs `drc load`. {action:'list'} answers with every (fab, process, layers) row so you can offer the user a real choice; no fab means the bundled 3rd party fab rules for the board's layer count (what ab's removed fusion_apply_3rdpartyfab_rules did); druPath loads an .edru already on the Fusion machine; druText/druBase64 loads one that exists only on your side. Layers auto-detects from the open board. ALWAYS confirm with fusion_alerts afterwards: a refused file is an in-canvas toast, never a dialog.",
"timeoutSeconds": 90,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_set_driving_badge",
"summary": "Read/toggle the 'Adom is driving Fusion' TASKBAR OVERLAY BADGE (STICKY per user, default ON). While the bridge drives Fusion, its Windows taskbar button wears a small Adom mark so the user knows at a glance who is in control; it sheds automatically after 5 minutes of driving-verb idle. No args = read. Turning it off clears any badge immediately.",
"timeoutSeconds": 15,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_set_parameter",
"summary": "Set one parameter's expression by name in the ACTIVE 3D Design document (user parameters first, then model parameters). MUTATES the design: the model regenerates and the result carries the post-op dialog array. Requires a Design document to be active (a 2D board or library editor refuses). Read names and current expressions with fusion_get_parameters; units must match the parameter (\"10 mm\", \"5 deg\").",
"timeoutSeconds": 30,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_set_preference",
"summary": "Set Fusion appearance/navigation preferences in the LIVE session - applies immediately, NO restart. Keys: theme (light/darkblue/darkgray/classic/device/dark; some builds only ship LightGray/DarkBlue/Device, failures reported per-key), invertScrollZoom (bool - mouse scroll/zoom direction), orbitScheme (fusion360/alias/inventor/solidworks/tinkercad/powermill), modelingOrientation (yup/zup), gestureNav (bool), cameraPivot (bool), lengthUnit (mm/cm/m/in/ft - active design). Per-key outcome in `applied`, resulting state in `current`.",
"timeoutSeconds": 30,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_set_seat_takeover",
"summary": "Read/toggle the mid-session Autodesk seat-takeover sweep (STICKY per user, default ON). When Autodesk pops 'Active Sessions Exceeded' mid-session, the bridge clicks Continue through BOTH dialogs in the background: this machine takes the seat, the other machine's Fusion suspends RESUMABLY, the user gets one toast. No args = read current value. Gates only the passive sweep - a verb-driven fusion_start still grabs the seat (the user asked for Fusion, so the seat is implied).",
"timeoutSeconds": 15,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_set_window_sizing",
"summary": "Read/toggle auto-sizing Fusion's WINDOW after launch (STICKY, default ON). Fusion opens at whatever geometry it last had, which after an automated launch is often a small default; the bridge grows it to ~92% of the monitor work area, centered, using SetWindowPos with NOACTIVATE (never ShowWindow/maximize) so focus is never stolen. A window the user maximized, or already sized to >=60% of the work area, is left alone. No args = read.",
"timeoutSeconds": 15,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_show_2d_board",
"summary": "Switch the OPEN electronics design to its 2D PCB Editor (board layout) view. This is a VIEW of the project, not a file to open standalone - if the board is empty, you opened a child/derivative instead of the EcadDesignProductType PROJECT; reopen the project. Drive the view with fusion_electron_run WINDOW commands.",
"timeoutSeconds": 70,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_show_3d_board",
"summary": "Switch the OPEN electronics design to its 3D PCB view (populated board). A VIEW of the project, not a standalone file. Orbit it for demos via fusion_run_modeling_script (app.activeViewport.camera + vp.refresh()).",
"timeoutSeconds": 70,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_show_3d_package",
"summary": "Open the 3D CHIP view (Package3DEnvironment) for a library package - and the RELIABLE way to get a 3D model into a library: pass stepPath and it is attached AFTER the library opens (embedded <packages3d> in hand-built .lbr files is the Fusion quirk that fails; attach-after-open works). stepPath with no library/packageXml auto-generates a minimal 2-pad carrier footprint. Without stepPath it just enters the 3D view of the named package.",
"timeoutSeconds": 300,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_show_attributes",
"summary": "Show a component's METADATA, as data and on screen. Returns the attributes of a deviceset (MPN, MANUFACTURER, MOUSER_PN, DIGIKEY_PN, LCSC_PN, DATASHEET, ADOM_WIKI, per variant) read from the library file with full values, in BOTH dialects: EAGLE <technology><attribute> and Fusion's layered <att_values>/<att_set> (1.10.34; Fusion-authored libraries used to read as empty). Opens the DEVICE editor (EDIT <name>.dev: symbol, Packages table with the Mapped check, footprint and 3D previews) with a capture, then opens Fusion's own Variant Attributes table with EAGLE's ATTRIBUTE command (no positioned clicks), reads it through UI Automation, captures the dialog window and Cancels it. Nothing is left on screen. dialog:false skips the table.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_show_footprint",
"summary": "Open a FOOTPRINT (package) in Fusion's library editor. Same contract as fusion_show_symbol: name + libraryPath, or a bare <package> fragment as packageXml (wrapper library generated).",
"timeoutSeconds": 180,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_show_library",
"summary": "Eight-surfaces contract: the LIBRARY surface. libraryPath (WINDOWS .lbr) opens it; name alone handles the already-open case (symmetric with kicad_show_library). Background; returns a screenshot path.",
"timeoutSeconds": 240,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_show_project",
"summary": "Eight-surfaces contract: bring the PROJECT/design to its top level. No args = activate this session's generated test project (fusion_make_test_project). query = cloud design name (already-open match wins, else fire-and-poll open). urn = open_by_urn passthrough. Background; returns a screenshot path.",
"timeoutSeconds": 240,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_show_schematic",
"summary": "Switch the OPEN electronics design to its SCHEMATIC view (the symmetric partner of fusion_show_2d_board / fusion_show_3d_board, via Fusion's SwitchSchDocCmd). A VIEW of the project, not a standalone file. Drive it for demos with fusion_electron_zoom / _pan / _select.",
"timeoutSeconds": 70,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_show_symbol",
"summary": "Open a schematic SYMBOL in Fusion's library editor - first-class, no hand-built EDIT strings. Pass name + libraryPath (.lbr, opened first; omit libraryPath if a library is already open), OR pass a BARE <symbol> XML fragment as symbolXml and the bridge generates a minimal wrapper library around it (deviceset + gate synthesized) so it shows in the Library Manager. Background-safe: never steals the foreground.",
"timeoutSeconds": 180,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_signin",
"summary": "SELF-DRIVING as of 1.9.32: launches Fusion if needed, clicks Sign In, opens the OAuth in the right profile, TYPES THE EMAIL and advances to the exact remaining wall (password/2FA/handoff), toasting the user at that step only - see signinWall + _hint in the response, and the fusion-autodesk-signin skill. Sign Fusion in through the CORRECT browser profile - the fix for Fusion's dumb OAuth that fires at the OS-DEFAULT browser and lands in the wrong Autodesk account. Fusion opens its sign-in in whatever browser is default (e.g. a personal Chrome), but a user's Autodesk seat often lives in a different profile (work). This verb reads the FULL authorize URL (client_id/PKCE/state/request_id) that Fusion wrote into that wrong browser's HISTORY and re-opens it in the RIGHT profile IN THE BACKGROUND; the URL completes back to the running Fusion via the idmgr/callback + autodesk:// handoff, so the browser no longer has to be the OS default. Pass {profile:'chrome:[email protected]'} to fix + remember your Autodesk profile; else it probes each profile for a live Autodesk session (or asks). Staged: if Fusion hasn't opened the browser yet it returns stage:'click_signin' so you click Fusion's Sign In first. BEST: pass {auto:true} to run the WHOLE chain in ONE server-side call - it clicks Fusion's Sign In, polls the browser history on-box for the fresh authorize URL, and re-opens it in the target profile, all without extra remote round-trips, so it fits inside Fusion's ~2-min OAuth request expiry even on a slow/flaky relay (the manual staged path is the fallback). Fusion's request EXPIRES in ~2 min, so a stale captured URL returns stage:'stale' - restart Fusion (fusion_stop/start) for a fresh request and retry auto PROMPTLY. See the 'fusion-multiprofile-signin' skill.",
"timeoutSeconds": 120,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_signin_2fa",
"summary": "Submit Autodesk's emailed 6-DIGIT verification code to finish a Fusion sign-in, typed IN THE BACKGROUND (UIA SetValue + Invoke - never steals the user's foreground or moves their cursor). Exists so you can finish a login END TO END for the user instead of parking them on a 2FA screen: if `adom-google` is available in your container, read the code out of their Gmail (`adom-google gmail search 'from:autodesk verification code' --limit 1`), pull the 6 digits, and call this. If adom-google is NOT installed, tell the user that installing it would let you automate logins like this, then let them type it. NEVER ask the user for a code you could read yourself. The bridge ALSO toasts the user's desktop whenever it hits a human wall, so you do not need to ask it to.",
"timeoutSeconds": 90,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_start",
"summary": "Launch Fusion 360 (if needed) and wait for the AdomBridge add-in to be ready.",
"timeoutSeconds": 150,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_state",
"summary": "The RENDER-ME verb (kicad_state parity, issues #28/#30): running + window + dialog + busy state PLUS a fresh background screenshot of whatever Fusion is showing - the one verb that makes every background fusion_show_* result visible. SERVER-SIDE ONLY by design: it answers even while the add-in main thread is busy or wedged (activeDocument is best-effort with a short budget and skipped when busy). blockingDialogs carries the CLASSIFIED modal list (cause + resolution). imageAs:base64 inlines the PNG (auto-refused over 4MB - pull the screenshot path via pull_file instead).",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_stop",
"summary": "Gracefully STOP Fusion 360: close docs cleanly + WM_CLOSE, then wait. NO force-kill - the clean opposite of fusion_start. If a window will not close it returns failure; use fusion_kill then.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_take_screenshot",
"summary": "Screenshot the Fusion window in the BACKGROUND (no focus steal, reads through occlusion). Use it to VERIFY your own work: geometry at the wrong Z, an empty view, or a Placeholder 3D body all render successfully and only a look at the pixels catches them.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_uninstall",
"summary": "CASCADE CLEANUP, called by ab's bridge_uninstall BEFORE this bridge's cache is deleted (ab 2.0.35+). Removes the artifacts this bridge planted OUTSIDE its cache: the Fusion ADD-IN in Autodesk's AddIns directories (all three historical locations), plus this bridge's prefs (~/.adom/fusion-bridge) and APS OAuth tokens (~/.adom/fusion-aps). This matters more here than for most bridges: a stale AdomBridge add-in keeps loading on every Fusion launch and binding its port long after the bridge is gone. Fusion itself is never touched. Pass dryRun:true to see exactly what would be removed. If Fusion is RUNNING it holds the add-in files open, so removal may fail - the response says so and names the remedy.",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_verb_times",
"summary": "This machine MEASURED timings per verb/stage - the same store that paces every progress bar and ETA. Read it to see whether an estimate is measured (this box has run it) or typical (still the seeded literal), and to explain a slow run.",
"timeoutSeconds": 15,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_view",
"summary": "FIRST-CLASS camera motion. 3D (the active Design viewport, through Fusion's own camera): fit | home | iso | top | front | right | back | left | bottom | orbit {degrees} | zoom {factor, >1 zooms in} | pan {dx,dy} | style {shaded|shaded-edges|wireframe|hidden-edges|wireframe-hidden}; smooth transitions by default. 2D (space:'2d', the active schematic, board or library editor, through Fusion's WINDOW commands): fit | zoom {factor, steps} | pan {x1,y1,x2,y2 in board mm}. The guided tour's motion runs through this verb. Verify by capture (desktop_screenshot_window before and after).",
"timeoutSeconds": 60,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_walk_cloud_tree",
"summary": "â›” DISABLED (returns an error): the in-app add-in walk took 30+ min and CRASHED Fusion (WinError 10054). It is hard-blocked in the bridge. Use fusion_aps_search / fusion_aps_open. See the 'fusion-aps-search' skill.",
"timeoutSeconds": 15,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
},
{
"name": "fusion_web_signin",
"summary": "Sign a pup browser window into an Autodesk WEB surface (library.io, the hub portal at <hub>.autodesk360.com, Autodesk Account) via Google SSO. Fusion's DESKTOP app being signed in does NOT sign these in - they are separate web sessions. NEVER guesses a credential: a missing password or a 2FA challenge comes back as a typed stop (human_credential_required / second_factor_required / google_sso_unavailable) naming the one-time command the USER runs. The password never passes through this bridge or the AI - it is stored once with ab's credential_set and filled by pup in the background.",
"timeoutSeconds": 240,
"source": "contracts/describe.json",
"existingHost": "Rust executable dispatch/orchestration; SDK routes still call the Python add-in",
"r7Parity": "unqualified",
"linuxWindowsNativeVerification": "not_reaudited",
"fusionVerification": "not_reaudited",
"release": "no_new_r7_release"
}
],
"pythonFiles": [
{
"path": "addin/AdomBridge/AdomBridge.py",
"sha256": "1b25ef32ed61ea699cc4c44aff2d5971d4e73bf0e2660560b86315cb1814eeee",
"bytes": 10058,
"lines": 219,
"category": "addin_runtime_lifecycle",
"runtimeRole": "current_python_addin",
"migrationAction": "Complete native bootstrap/transport/event/lifecycle replacement; r6 infrastructure is a qualified subset, not installed replacement.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/__init__.py",
"sha256": "7821ab9a0a716eecbf65c426d88b87187bb610e073eb959e563dbb6a2fca80df",
"bytes": 7072,
"lines": 165,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/activity_palette.py",
"sha256": "894c5966df2442ba36f8a8e10d9d1480ede4296fe59aa8da68cf27f447a191e5",
"bytes": 21382,
"lines": 333,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/app_state.py",
"sha256": "1899be6a92bd173cce430c38015b1d6a3e0669fd353309d3c510b286bd0ebc21",
"bytes": 4059,
"lines": 127,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/assembly_bom.py",
"sha256": "46a17e23ce5cad9d2ca51fa7351529a22ed40d0182a197506c39d4e19d04fcd5",
"bytes": 7371,
"lines": 142,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/close_document.py",
"sha256": "b36530d09384e76cdb8f27c0897a134a57edbc6fa25263562415404723b41ceb",
"bytes": 14254,
"lines": 296,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/cloud_documents.py",
"sha256": "e585650dd307cf0d76d18f9b58a04b489f7f9bf665f0b9c4d90ac4bbc06b544d",
"bytes": 75393,
"lines": 1829,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/design_info.py",
"sha256": "9665ee56c73f72a37f66f975abd2f411674fc4f2c3ddf545b5983a1dcad0843b",
"bytes": 2990,
"lines": 98,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/document_hygiene.py",
"sha256": "e5491a77d9715a6194bacd3ccd33dcd197810ab863c298bb8c5f6d6c388d9e29",
"bytes": 2911,
"lines": 60,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/document_info.py",
"sha256": "9ed183f7691606fe8634fe834af1c446bf15fd6683833fa77f0e381ca363ef2c",
"bytes": 12982,
"lines": 345,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/electron_view.py",
"sha256": "46ed462b54ee0bdf693d671ade553d7f4f684c56fed716cc1a86f21b449eaef6",
"bytes": 7648,
"lines": 191,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/electronics.py",
"sha256": "f0fc92b6d0398b13ea10ef5350eed53c5c8b2dcfa084e3b9035c7f9ac0153eeb",
"bytes": 47300,
"lines": 1108,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/export.py",
"sha256": "faba021cec8bfce6f17262f75fdd530179c47b0fac9944bf25d726968b3645d2",
"bytes": 2178,
"lines": 48,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/import_file.py",
"sha256": "3c49c3f78294d68770e8abb2b0e266aeb8ccf2de7a177cd5b6c7095cd018c753",
"bytes": 4033,
"lines": 107,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/manufacturing.py",
"sha256": "b03c37d64cbf87e4decfbff1672edc17efc372c725718fe99629580f1f474fb0",
"bytes": 48111,
"lines": 1193,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/__init__.py",
"sha256": "79c9b3b0ae2e73ce6149b17242c60d68a0ed34d03e4eb04caddeeb85e71b325a",
"bytes": 10874,
"lines": 201,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/assemblies.py",
"sha256": "a9097aefea289eb7748269e47158b80e70eeacbb9b5a155c2b4d7f016c747876",
"bytes": 27491,
"lines": 458,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/assembly_state.py",
"sha256": "eb53be1b5011873719e3e9d1e382696f5e4401441962b88c4486de2d3d251d1e",
"bytes": 5489,
"lines": 108,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/bill_of_materials.py",
"sha256": "960c010226ab1ce21515b59c18528abe34146119be5383600d7d1d6076a0d7b0",
"bytes": 8624,
"lines": 141,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/configurations.py",
"sha256": "f99276ad97639d5540beb642bb3d4416fb77cf24c9345594d3437e7e2ebe70d0",
"bytes": 20259,
"lines": 326,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/core.py",
"sha256": "4f4a4acd2c1e1a35d5e933f708d9360ad00e70e83325cb36acdb9ff106de0950",
"bytes": 21108,
"lines": 387,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/exploded_preview.py",
"sha256": "a85a26e5dba4e3107155410723791a50a4f9c63e1c3928770325f0cfe37b6ade",
"bytes": 28746,
"lines": 485,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/exploded_preview_prototype.py",
"sha256": "ee1d0086cb674353b0278227b942da06f7cf630db3c869724bd363383b2e02ee",
"bytes": 34018,
"lines": 580,
"category": "mechanical_runtime_backend",
"runtimeRole": "current_python_addin",
"migrationAction": "Port active custom-graphics ownership/backend; despite prototype filename it is imported by the public preview controller.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/exploded_view.py",
"sha256": "a4f857fc2123cd7c21655ff36aec37a30dba36404a79a6d2aab0863b37ef571f",
"bytes": 14948,
"lines": 220,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/exporting.py",
"sha256": "cf3468aadfee8b765d6bb1305e6b2aaf8c4e84aef50bd6d3421370dc10d73868",
"bytes": 5184,
"lines": 93,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/features.py",
"sha256": "e05b4cb1f9892700ab74e625d9c3b5c1a69545d3d58cc7c73637e7d0d5285e0d",
"bytes": 15042,
"lines": 238,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/geometry.py",
"sha256": "6759f684f847cddcd4853d20579743ddbb5c19500b96491f2798b6346cfec939",
"bytes": 16171,
"lines": 279,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/joint_state.py",
"sha256": "a02659931d99861018749a0d31a809f5ebe9417d48df02a631436b4f449d61ba",
"bytes": 10676,
"lines": 196,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/journal.py",
"sha256": "3d0f64f83abd1a60fb64d285e484977df97bb1b71e62150fbcadda5e0620ab15",
"bytes": 18252,
"lines": 325,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/motion_links.py",
"sha256": "2d0ddafcd4cf97f6eb0be65e1ffd3e3ec43d897bb0d34838f281a670241cbe99",
"bytes": 9168,
"lines": 157,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/operation_history.py",
"sha256": "83f775dafe11a105af7be545e7db3d2cda500b7c2bbf62ac9a35fac58414a27c",
"bytes": 14925,
"lines": 234,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/operations.py",
"sha256": "e3d124bd0ef4aa67b5653af72b0ecacc2e1dbc420e48e05855e60d75816c94cd",
"bytes": 13927,
"lines": 237,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/purchased.py",
"sha256": "c2acd7624409ba69e9fbd63c3b17672c1a3ff41c5af5a56669d70e792dcc12d1",
"bytes": 8253,
"lines": 137,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/readback.py",
"sha256": "56eb07b64c36ad365fc1768de6ac613eb054c9a2f7c3a5c977f1c000cd32384e",
"bytes": 12935,
"lines": 252,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/regular_joints.py",
"sha256": "22f358233a9d755bfb9af5a3c6649bbfa113bfab8a771202c1908e7e42063434",
"bytes": 28788,
"lines": 488,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/render_scene.py",
"sha256": "92a06fdb1d4489ae1ff2f9a2ac1819ebc6c2c7bf54ecc6eb11d2665f19196d55",
"bytes": 23619,
"lines": 345,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/sketch_edits.py",
"sha256": "5c1be0a81c69ac23c89585bbe133caf0168b7152c056930f3dd1ecfecbdc6981",
"bytes": 10093,
"lines": 148,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/sketches.py",
"sha256": "1117e1e18d12ce3b4a92a20da43e4283d717f041ec4b05afdc64b5bb0984fe0c",
"bytes": 13288,
"lines": 234,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/mechanical/transactions.py",
"sha256": "4fcb0f1a5138bbcc7739390e38a81ec24efcc0e5e4476b45252511e5a2d2ab4f",
"bytes": 7526,
"lines": 144,
"category": "mechanical_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port handler/helper policy and thin SDK bindings, preserving guards, units, ownership, readback and truthful recovery; qualify operation variants independently.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/modeling.py",
"sha256": "328d5240e2db8d694fb7aa7c90d76b4c758634e463cc6cd5b4bd26d88aa98356",
"bytes": 8669,
"lines": 159,
"category": "dynamic_python_execution",
"runtimeRole": "current_python_addin",
"migrationAction": "Define a typed Rust operation/script replacement or explicitly approved compatibility break; arbitrary Python execution cannot silently remain in a Python-free product.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/open_electronics_file.py",
"sha256": "26aca7b13302a70aea6db560081d9a5e424034c67488c028995c7edccf3311cd",
"bytes": 27119,
"lines": 658,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/open_lbr.py",
"sha256": "acea94edf09620685136a2e069d79de02e8755b898fe37ca77274984ca45ac94",
"bytes": 7340,
"lines": 189,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/parameters.py",
"sha256": "d4c5be59e329b42ab0a66efc477bf6b732befa5726a3f195fbdb92a2e9b0f471",
"bytes": 4829,
"lines": 144,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/physical_properties.py",
"sha256": "126248f52172f0062678f2992ae3deae8def33d031f15f7f123fd2ffede86c29",
"bytes": 2541,
"lines": 52,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/screenshot.py",
"sha256": "3a3930cb368823f3749a39a8b1c88068b03b01264af380ba17756c4e1f64ff86",
"bytes": 5031,
"lines": 136,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/commands/silkscreen_capture.py",
"sha256": "71978bbce24ab3907d9dbf75c28533bb0540285f6504498bbcb073536c7be9b1",
"bytes": 10707,
"lines": 308,
"category": "nonmechanical_addin_runtime",
"runtimeRole": "current_python_addin",
"migrationAction": "Port or explicitly retire the mapped nonmechanical command under documented compatibility policy; use exact ownership and independent readback.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "addin/AdomBridge/http_server.py",
"sha256": "018efd4c1201b9f9d234ca70f88e35b8dd063360d953bd5cb1915b6f3bdda285",
"bytes": 26804,
"lines": 622,
"category": "addin_runtime_lifecycle",
"runtimeRole": "current_python_addin",
"migrationAction": "Complete native bootstrap/transport/event/lifecycle replacement; r6 infrastructure is a qualified subset, not installed replacement.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "describe.py",
"sha256": "d03c128566455226bca6b7535a2690577f39c2ac851cc71982f7afae8e1fcc35",
"bytes": 144469,
"lines": 515,
"category": "contract_authoring_tool",
"runtimeRole": "authoring_or_packaging_tool",
"migrationAction": "Runtime catalog is already embedded JSON in Rust. Port catalog generation/validation tooling and preserve the contract; no interpreter is needed by the existing runtime catalog path.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "rust/bridge/src/attach_orient_block.py",
"sha256": "e6fd837dad1b266f999202224665c6d9ea602b8afea13bd759c9cdd735446cbc",
"bytes": 199,
"lines": 5,
"category": "embedded_runtime_python",
"runtimeRole": "embedded_runtime_python",
"migrationAction": "Replace emitted/executed Python with typed Rust SDK/host operations; moving string generation into Rust is not elimination.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "rust/bridge/src/attach_template.py",
"sha256": "c402f7ec4a928280e38feea2c5a864d8e93496840473832db73908de76f35c38",
"bytes": 1688,
"lines": 39,
"category": "embedded_runtime_python",
"runtimeRole": "embedded_runtime_python",
"migrationAction": "Replace emitted/executed Python with typed Rust SDK/host operations; moving string generation into Rust is not elimination.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "rust/bridge/src/epg_template.py",
"sha256": "b9bfeeb270e8505d04625d41f69d7a4a48646478c1c64e1c9e171c2ed7db40a1",
"bytes": 10595,
"lines": 207,
"category": "embedded_runtime_python",
"runtimeRole": "embedded_runtime_python",
"migrationAction": "Replace emitted/executed Python with typed Rust SDK/host operations; moving string generation into Rust is not elimination.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "rust/bridge/src/inspect_bodies_script.py",
"sha256": "5e1cf1a6516b3fc4fc705d1dcf7eb4dacc23bef9124a2e0cd6f13dd977cb7dea",
"bytes": 2005,
"lines": 61,
"category": "embedded_runtime_python",
"runtimeRole": "embedded_runtime_python",
"migrationAction": "Replace emitted/executed Python with typed Rust SDK/host operations; moving string generation into Rust is not elimination.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "rust/bridge/src/make3d_orient_block.py",
"sha256": "8bcd3f2b86602ea74229a6fd686db5b306d49085d0bf4920b7e37c1fa4b186e1",
"bytes": 412,
"lines": 10,
"category": "embedded_runtime_python",
"runtimeRole": "embedded_runtime_python",
"migrationAction": "Replace emitted/executed Python with typed Rust SDK/host operations; moving string generation into Rust is not elimination.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "rust/bridge/src/make3d_placement_block.py",
"sha256": "9aa001d7eae80edb8a8c23da55ea60f5af8917c7e705896099c35b5ac4b9d879",
"bytes": 1190,
"lines": 16,
"category": "embedded_runtime_python",
"runtimeRole": "embedded_runtime_python",
"migrationAction": "Replace emitted/executed Python with typed Rust SDK/host operations; moving string generation into Rust is not elimination.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "rust/bridge/src/make3d_template.py",
"sha256": "ee5506673f832002796f227c71d693e4879867c7edcdd24b80abd22602d89bc5",
"bytes": 5661,
"lines": 149,
"category": "embedded_runtime_python",
"runtimeRole": "embedded_runtime_python",
"migrationAction": "Replace emitted/executed Python with typed Rust SDK/host operations; moving string generation into Rust is not elimination.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "rust/bridge/src/pref_script.py",
"sha256": "d057d8240103313483bb8627a4a980553e8cc5901dd62249e87d97fd70935f19",
"bytes": 4262,
"lines": 80,
"category": "embedded_runtime_python",
"runtimeRole": "embedded_runtime_python",
"migrationAction": "Replace emitted/executed Python with typed Rust SDK/host operations; moving string generation into Rust is not elimination.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "rust/bridge/src/routing_planner.py",
"sha256": "d901c4bad9bad8571e07a35af0afc4a3f74845b0e3dccc56f00b8451846abc2a",
"bytes": 6149,
"lines": 106,
"category": "embedded_runtime_python",
"runtimeRole": "embedded_runtime_python",
"migrationAction": "Replace emitted/executed Python with typed Rust SDK/host operations; moving string generation into Rust is not elimination.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "rust/bridge/src/routing_script.py",
"sha256": "9ce0e7ee1ddab0cec7b90a9ee84c918f1914b41c507b575719e6910b5fdf4a69",
"bytes": 63180,
"lines": 917,
"category": "embedded_runtime_python",
"runtimeRole": "embedded_runtime_python",
"migrationAction": "Replace emitted/executed Python with typed Rust SDK/host operations; moving string generation into Rust is not elimination.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "server.py",
"sha256": "149ff9dbb29a0a4c8a092625ceb2ca0b525a0b8488278a9b54183ad8a86f4fa2",
"bytes": 997532,
"lines": 17817,
"category": "retired_host_reference_optional_fallback",
"runtimeRole": "retired_default_host_optional_compatibility_artifact",
"migrationAction": "Default host is already Rust. Preserve behavior evidence, retire this development/reference copy and optional rollback branch; do not recreate its missing historical Python imports.",
"r7Parity": "unqualified",
"standaloneTest": false
},
{
"path": "tools/package-mechanical-dev.py",
"sha256": "d8522a4fa8c9b48a93f6c50ebeb84e90fb840eed5d3c8e706fb5951a9aec6f3d",
"bytes": 2376,
"lines": 44,
"category": "development_packaging",
"runtimeRole": "authoring_or_packaging_tool",
"migrationAction": "Replace package assembly, embedded-contract validation and manifest hashing with Rust tooling; separately qualify installer/signing/release.",
"r7Parity": "unqualified",
"standaloneTest": false
}
],
"hostRetirementAudit": {
"scope": "Source audit of the existing host executable, not a new host behavior test or a claim that the Python add-in is ported.",
"contributingSkill": "/home/adom/.codex/skills/fusion-contributing/SKILL.md",
"architecture": [
{
"path": "bridge.json",
"anchor": "\"kind\": \"exe\"",
"finding": "The manifest launches adom-fusion-bridge.exe and explicitly says the Python host bridge left the package in Phase 4. Its older languages/macOS descriptive fields are not executable runtime selection.",
"line": 11,
"sha256": "6c7d4e063ab4078d610f22d80e0d39b8dac55959f398558a2ff00257174fe11a"
},
{
"path": "rust/bridge/src/main.rs",
"anchor": "fn owner_is_exe",
"finding": "Readiness, chains and add-in orchestration default to the Rust executable unless an owner preference explicitly requests sidecar.",
"line": 1251,
"sha256": "4c1a7cfd3ab1928327f96e870817cd945c973c3593b4e5a433501ff11b80118a"
},
{
"path": "rust/bridge/src/main.rs",
"anchor": "fn sidecar_wanted",
"finding": "Python sidecar is an explicit compatibility/rollback branch, enabled by owner preference or ADOM_FUSION_SIDECAR=1; spawn also requires server.py beside the executable.",
"line": 1256,
"sha256": "4c1a7cfd3ab1928327f96e870817cd945c973c3593b4e5a433501ff11b80118a"
},
{
"path": "rust/core/src/contract.rs",
"anchor": "pub const FROZEN",
"finding": "The Rust host embeds contracts/describe.json. describe.py is catalog authoring/legacy reference, not required by this runtime catalog path.",
"line": 15,
"sha256": "69ca49c4469c323887efecb10333b51ad9f6813fc450422c155f9983238acd26"
},
{
"path": "rust/bridge/src/addin.rs",
"anchor": "pub fn addin_http",
"finding": "Native Rust host transport still invokes the separate Python add-in at 127.0.0.1:8774. Host retirement does not retire in-app Python.",
"line": 149,
"sha256": "1c047f60ff494524886c3042accc6c8466363dde9ccfc7f0cea7f639eba5a38a"
},
{
"path": "tools/package-mechanical-dev.py",
"anchor": "\"describe.py\", \"server.py\"",
"finding": "This development packaging helper still copies retired server.py and describe.py. Distinguish this development artifact from the manifest's default production host architecture; remove or explicitly exclude compatibility artifacts in the final Python-free package.",
"line": 25,
"sha256": "d8522a4fa8c9b48a93f6c50ebeb84e90fb840eed5d3c8e706fb5951a9aec6f3d"
}
],
"retiredImports": [
{
"path": "fusion_detect.py",
"replacement": "Rust host process/path discovery, readiness and launch",
"rustEvidence": [
{
"path": "rust/os-win/src/lib.rs",
"anchor": "impl HostProcess for WindowsHost",
"line": 205,
"sha256": "4461931dbe8899dfc8ccc1e80e557cdb7eefbc4e584d4dbe743a31b507f1682b"
},
{
"path": "rust/os-mac/src/lib.rs",
"anchor": "impl HostProcess for MacHost",
"line": 10,
"sha256": "d0840cfd26262792ed9318b73df071eb523f7d19ffb72277ccc3ba1ba47263a4"
},
{
"path": "rust/core/src/windows_facts.rs",
"anchor": "fusion_detect.family_windows",
"line": 3,
"sha256": "12a76a7a56ff7b28cd229bf93628e836deb6d804177b2d65c3545e8793c28013"
},
{
"path": "rust/bridge/src/launch.rs",
"anchor": "pub fn start(",
"line": 122,
"sha256": "76054e794a63abf15defc89166703f0d3da87531a4ea7c9bf2123e1e279dac14"
}
],
"limitation": "Platform source exists; no fresh Windows/macOS discovery test in this audit. Residual readiness sidecar calls are tracked separately.",
"presentInSnapshot": false,
"defaultRuntimeRequirement": false,
"classification": "retired_host_python_with_existing_rust_replacement"
},
{
"path": "handlers/open_design.py",
"replacement": "Rust design opening orchestration",
"rustEvidence": [
{
"path": "rust/bridge/src/orchestrations.rs",
"anchor": "pub fn open_design(",
"line": 995,
"sha256": "e26e61c2132fe272231af9e4825cd527d20772209e2aa9d6d9ae3ffb2b978b96"
},
{
"path": "rust/bridge/src/main.rs",
"anchor": "\"fusion_open_design\" | \"open_design\"",
"line": 446,
"sha256": "4c1a7cfd3ab1928327f96e870817cd945c973c3593b4e5a433501ff11b80118a"
}
],
"limitation": "Orchestration still uses the current add-in for SDK operations; native add-in parity remains to port.",
"presentInSnapshot": false,
"defaultRuntimeRequirement": false,
"classification": "retired_host_python_with_existing_rust_replacement"
},
{
"path": "handlers/close_fusion.py",
"replacement": "Rust lifecycle stop/kill",
"rustEvidence": [
{
"path": "rust/bridge/src/lifecycle.rs",
"anchor": "pub fn stop(",
"line": 112,
"sha256": "7a909d100de6cd57779ab9bb9dcd786293b6d531ce1aeff2e7555a85908b5057"
},
{
"path": "rust/bridge/src/lifecycle.rs",
"anchor": "pub fn kill(",
"line": 133,
"sha256": "7a909d100de6cd57779ab9bb9dcd786293b6d531ce1aeff2e7555a85908b5057"
}
],
"limitation": "Historical deprecated aliases are not promises of current parity; closing documents still involves the add-in.",
"presentInSnapshot": false,
"defaultRuntimeRequirement": false,
"classification": "retired_host_python_with_existing_rust_replacement"
},
{
"path": "handlers/dismiss_recovery.py",
"replacement": "Rust recovery handling",
"rustEvidence": [
{
"path": "rust/bridge/src/readiness_exec.rs",
"anchor": "pub fn dismiss_recovery_dialog(",
"line": 106,
"sha256": "f6653592d7ec05ebbf6eb548b7484fc4e99a14970e87fc486de6810ca810ef14"
},
{
"path": "rust/bridge/src/readiness_exec.rs",
"anchor": "pub fn relocate_recovery_files(",
"line": 56,
"sha256": "f6653592d7ec05ebbf6eb548b7484fc4e99a14970e87fc486de6810ca810ef14"
}
],
"limitation": "No desktop/dialog action executed during source audit.",
"presentInSnapshot": false,
"defaultRuntimeRequirement": false,
"classification": "retired_host_python_with_existing_rust_replacement"
},
{
"path": "handlers/fusion_ui.py",
"replacement": "Rust host window/dialog operations and explicit retired-verb redirects",
"rustEvidence": [
{
"path": "rust/bridge/src/small_verbs.rs",
"anchor": "pub fn close_window(",
"line": 283,
"sha256": "a05053ce098062498e7f9b912d12e5998b93b8903f7bec4db243cf22c4a0c526"
},
{
"path": "rust/bridge/src/small_verbs.rs",
"anchor": "pub fn screenshot_fusion(",
"line": 304,
"sha256": "a05053ce098062498e7f9b912d12e5998b93b8903f7bec4db243cf22c4a0c526"
},
{
"path": "rust/bridge/src/main.rs",
"anchor": "fn retired_verb(",
"line": 612,
"sha256": "4c1a7cfd3ab1928327f96e870817cd945c973c3593b4e5a433501ff11b80118a"
}
],
"limitation": "Some legacy click/key/window aliases intentionally redirect or refuse. Captures remain disabled for the migration campaign.",
"presentInSnapshot": false,
"defaultRuntimeRequirement": false,
"classification": "retired_host_python_with_existing_rust_replacement"
},
{
"path": "handlers/dialog_classify.py",
"replacement": "Rust dialog rule table and classifier",
"rustEvidence": [
{
"path": "rust/core/src/dialogs.rs",
"anchor": "pub const RULES_JSON",
"line": 8,
"sha256": "f956a82345726bc2e50e8b11780a36326f86ae7e930aa79869314fe5b9282d46"
},
{
"path": "rust/core/src/dialog_rules.json",
"anchor": "\"rules\"",
"line": 2,
"sha256": "05c015e80ee38b68d3a0330d34327cacd294d8f0e235dba1a21d2999c6091784"
},
{
"path": "rust/core/tests/dialogs_golden.rs",
"anchor": "fn title_classifier_matches_python()",
"line": 4,
"sha256": "15247100daca1c2cb70d0d434998934191e0fa0d317d92ab3ef53593a011c850"
}
],
"limitation": "fusion-contributing explicitly says this retired Python module needs no matching rule entry. Golden test source exists; not rerun here.",
"presentInSnapshot": false,
"defaultRuntimeRequirement": false,
"classification": "retired_host_python_with_existing_rust_replacement"
},
{
"path": "install_addin.py",
"replacement": "Rust add-in installer/synchronization",
"rustEvidence": [
{
"path": "rust/bridge/src/addin_install.rs",
"anchor": "pub fn install(",
"line": 64,
"sha256": "aa75349181977f7985210c56688621b62744a23f3083d69ec9e4e544fb706092"
}
],
"limitation": "The existing Rust installer installs the Python add-in. A native DLL installer still requires independent qualification.",
"presentInSnapshot": false,
"defaultRuntimeRequirement": false,
"classification": "retired_host_python_with_existing_rust_replacement"
},
{
"path": "aps.py",
"replacement": "Rust APS storage/client, host routes and sign-in",
"rustEvidence": [
{
"path": "rust/core/src/aps.rs",
"anchor": "Ported from `aps.py`",
"line": 4,
"sha256": "a5bb2860aa8a2b155f41280e8abb1cb8a01fcc50379b1c964f032816d3a2c4fa"
},
{
"path": "rust/bridge/src/main.rs",
"anchor": "fn native_aps_search(",
"line": 949,
"sha256": "4c1a7cfd3ab1928327f96e870817cd945c973c3593b4e5a433501ff11b80118a"
},
{
"path": "rust/bridge/src/aps_signin.rs",
"anchor": "pub fn signin(",
"line": 185,
"sha256": "21d01ee554dd95e61d550860b1d3d090d15e1ceaf99c5a965d16a712ebc67686"
}
],
"limitation": "Rust source implementation credited; no cloud calls, sign-in, uploads or fresh behavior qualification performed.",
"presentInSnapshot": false,
"defaultRuntimeRequirement": false,
"classification": "retired_host_python_with_existing_rust_replacement"
},
{
"path": "ab_client.py",
"replacement": "Rust authenticated host client",
"rustEvidence": [
{
"path": "rust/core/src/ab.rs",
"anchor": "pub trait AbClient",
"line": 36,
"sha256": "f71893214420b66fa75abce0c1ebaeb763fa26b191c6d420abae6201acd0c943"
}
],
"limitation": "No AB calls performed; source interface/transport replacement only.",
"presentInSnapshot": false,
"defaultRuntimeRequirement": false,
"classification": "retired_host_python_with_existing_rust_replacement"
}
],
"remainingCoverage": [
{
"path": "rust/bridge/src/main.rs",
"anchor": "fn owned_readiness(",
"finding": "Readiness recovery branches still call proxy directly for seat/dialog/relaunch work. proxy_with_timeout goes to the optional sidecar or returns sidecar_absent. Audit and connect these branches to existing Rust implementations; do not reintroduce retired Python merely to satisfy imports.",
"line": 1312,
"sha256": "4c1a7cfd3ab1928327f96e870817cd945c973c3593b4e5a433501ff11b80118a"
},
{
"path": "rust/bridge/src/main.rs",
"anchor": "fn ensure_fusion_user_async(",
"finding": "This helper still builds an inline Python modeling script and calls proxy. Its reachability/behavior requires a Rust-path audit; inline scripts are not counted in the ten .py template files.",
"line": 1264,
"sha256": "4c1a7cfd3ab1928327f96e870817cd945c973c3593b4e5a433501ff11b80118a"
},
{
"path": "rust/bridge/src/addin.rs",
"anchor": "Install it with: python plugins/fusion360/install_addin.py",
"finding": "A connection-refused hint names the retired Python installer despite existing Rust installation code. Migrate stale guidance with the new native installer; do not count the missing installer as a live dependency.",
"line": 173,
"sha256": "1c047f60ff494524886c3042accc6c8466363dde9ccfc7f0cea7f639eba5a38a"
},
{
"path": "tools/freeze-contract.py",
"presentInSnapshot": false,
"finding": "The contributing skill names this Python contract generation tool. Its source is absent from this snapshot; locate/port or explicitly retire it as tooling, not a host runtime dependency."
},
{
"path": "tests/run_verb_tests.py",
"presentInSnapshot": false,
"finding": "The contributing skill names this Python daily verb test. Its source is absent from this snapshot; qualify a Rust replacement or deliberate retirement separately from runtime migration."
}
],
"skillSha256": "68cc910b2f4b9d3f68e127565f3c826a677cec08bb175474d1470d6d49f1e038"
},
"runtimeCaveats": [
{
"path": "bridge.json; rust/bridge/src/main.rs",
"detail": "The default host is already Rust and the manifest says the Python host left the production package. Optional sidecar provisioning/spawn remains behind explicit rollback preferences/environment and a local server.py; retire this compatibility branch without recreating missing Python modules."
},
{
"path": "rust/bridge/src/{mint,routing,epg,orchestrations,fusion_prefs}.rs",
"detail": "Ten .py files are included as runtime script/templates. Audit inline script strings and run_modeling_script transport too; extension counts alone cannot establish Python elimination."
},
{
"path": "addin/AdomBridge/commands/mechanical/exploded_preview.py",
"detail": "Imports exploded_preview_prototype.py as backend. The prototype filename does not make this an unused test file."
},
{
"path": "addin/AdomBridge/commands/modeling.py",
"detail": "Arbitrary Python execution is an explicit legacy capability. Replacement needs typed Rust capability design or an explicit compatibility decision, not silent omission."
},
{
"path": "server.py; rust/bridge/src/main.rs",
"detail": "Historical search_cloud_files/walk_cloud_tree and retired UI aliases intentionally refuse/redirect in the Rust host; do not revive retired behavior merely for nominal parity."
},
{
"path": "tools/package-mechanical-dev.py",
"detail": "Development packaging still copies retired server.py/describe.py as well as the active add-in. Its artifact must be distinguished from the default production host. No standalone Python tests were found in this snapshot; the skill names external test/generation tools whose sources still need locating."
}
],
"qualifiedInfrastructureBaseline": [
{
"component": "61 schema contracts/canonical request preparation",
"evidence": "../rust-native-migration-r6/RUST-STATUS.md",
"scope": "Contract validation only; zero native mechanical handlers."
},
{
"component": "Private journal, bounded observed result retention and status",
"evidence": "../rust-native-migration-r6/RUST-STATUS.md",
"scope": "Linux/Windows unit and external retention tests; Fusion authenticated status of synthetic lifecycle rows and reload. No CAD transaction recovery claim."
},
{
"component": "Native queue/wake/deadlines, HTTP auth and retained document registry",
"evidence": "../rust-native-migration-r6/RUST-STATUS.md",
"scope": "Source-bound Windows build, read-only document inventory and clean stop/unload; no CAD revision or mutation claims."
}
],
"promotionRequirements": [
"Bind exact source/build hashes and advertise only the implemented subset.",
"Match legacy units, selectors, side effects, error/recovery semantics or document an accepted narrower contract.",
"Pass meaningful Rust unit/fault and independent external behavior tests on Linux and Windows.",
"Build against the actual Autodesk SDK and run bounded owned-fixture Fusion flows with exact readback, replay/conflict/stale/no-second-effect tests.",
"Preserve failure/unknown receipts and refuse automatic effect retry; clean only exact owned fixtures.",
"Qualify Python-free installer/bootstrap, signing, packaging, existing bridge regressions and public release separately."
]
}