[{"data":1,"prerenderedAt":108},["ShallowReactive",2],{"page-\u002Fv1\u002Fadapters\u002Fspiral\u002Ftooling":3},{"id":4,"title":5,"body":6,"description":100,"extension":101,"meta":102,"navigation":103,"path":104,"seo":105,"stem":106,"__hash__":107},"content\u002Fv1\u002Fadapters\u002Fspiral\u002Ftooling.md","Spiral tooling",{"type":7,"value":8,"toc":95},"minimark",[9,13,48,71,76],[10,11,5],"h1",{"id":12},"spiral-tooling",[14,15,16],"blockquote",{},[17,18,19,23,24,27,28,31,34,35,42,43],"p",{},[20,21,22],"strong",{},"Host:"," Spiral ",[20,25,26],{},"3.17.x"," (PHP ≥ 8.1) · Researched 2026-08",[29,30],"br",{},[20,32,33],{},"One-shot:"," ",[36,37,39],"a",{"href":38},"\u002Fapply\u002Fspiral.full.md",[40,41,38],"code",{}," · Short: ",[36,44,46],{"href":45},"\u002Fspiral",[40,47,45],{},[49,50,51,59,62,68],"ul",{},[52,53,54,55,58],"li",{},"PHPUnit (",[40,56,57],{},"spiral\u002Ftesting",")",[52,60,61],{},"Psalm\u002FPHPStan",[52,63,64,67],{},[40,65,66],{},"spiral"," CLI for cycle schema\u002Fmigrations — generated artifacts under Infra",[52,69,70],{},"RoadRunner config is host Ops, not Domain",[72,73,75],"h2",{"id":74},"related","Related",[49,77,78,84],{},[52,79,80],{},[36,81,83],{"href":82},"\u002Fv1\u002Fadapters\u002Fspiral","Spiral adapter overview",[52,85,86,90,91],{},[36,87,89],{"href":88},"\u002Fv1\u002Fcore","Core"," · ",[36,92,94],{"href":93},"\u002Fv1\u002Fadopt\u002Fapply","Apply index",{"title":96,"searchDepth":97,"depth":97,"links":98},"",2,[99],{"id":74,"depth":97,"text":75},"Tests, static analysis, and generators for Spiral.","md",{},true,"\u002Fv1\u002Fadapters\u002Fspiral\u002Ftooling",{"title":5,"description":100},"v1\u002Fadapters\u002Fspiral\u002Ftooling","P6E0qvhy9nFTW5SwpLTaV5NCxmTubGn3mB4nLXgqGzk",1786241416273]