[{"data":1,"prerenderedAt":576},["ShallowReactive",2],{"navigation":3,"\u002Fextensions":222,"\u002Fextensions-surround":571},[4,8,168,206,210,214,218],{"title":5,"path":6,"stem":7},"Quickstart","\u002Fquickstart","01.quickstart",{"title":9,"path":10,"stem":11,"children":12},"Concepts","\u002Fconcepts","20.concepts",[13,15,19,23,84,88,92,96,100],{"title":9,"path":10,"stem":14},"20.concepts\u002Findex",{"title":16,"path":17,"stem":18},"Preprocessing Graph","\u002Fconcepts\u002Fppg","20.concepts\u002F2.ppg",{"title":20,"path":21,"stem":22},"Plane decomposition","\u002Fconcepts\u002Fplanes","20.concepts\u002F3.planes",{"title":24,"path":25,"stem":26,"children":27},"Codecs","\u002Fconcepts\u002Fcodecs","20.concepts\u002F4.codecs",[28,32,36,40,44,48,52,56,60,64,68,72,76,80],{"title":29,"path":30,"stem":31},"Arithmetic","\u002Fconcepts\u002Fcodecs\u002Farithmetic","20.concepts\u002Fcodecs\u002Farithmetic",{"title":33,"path":34,"stem":35},"Context Mixing Lite","\u002Fconcepts\u002Fcodecs\u002Fcontext-mixing-lite","20.concepts\u002Fcodecs\u002Fcontext-mixing-lite",{"title":37,"path":38,"stem":39},"FPC","\u002Fconcepts\u002Fcodecs\u002Ffpc","20.concepts\u002Fcodecs\u002Ffpc",{"title":41,"path":42,"stem":43},"Huffman LLM 5-Bit","\u002Fconcepts\u002Fcodecs\u002Fhuff-llm","20.concepts\u002Fcodecs\u002Fhuff-llm",{"title":45,"path":46,"stem":47},"Huffman","\u002Fconcepts\u002Fcodecs\u002Fhuffman","20.concepts\u002Fcodecs\u002Fhuffman",{"title":49,"path":50,"stem":51},"Identity","\u002Fconcepts\u002Fcodecs\u002Fidentity","20.concepts\u002Fcodecs\u002Fidentity",{"title":53,"path":54,"stem":55},"Neural Predictor","\u002Fconcepts\u002Fcodecs\u002Fneural-predictor","20.concepts\u002Fcodecs\u002Fneural-predictor",{"title":57,"path":58,"stem":59},"Order-1 Arithmetic","\u002Fconcepts\u002Fcodecs\u002Forder1-arithmetic","20.concepts\u002Fcodecs\u002Forder1-arithmetic",{"title":61,"path":62,"stem":63},"Order-1 Scale AC","\u002Fconcepts\u002Fcodecs\u002Forder1-scale-ac","20.concepts\u002Fcodecs\u002Forder1-scale-ac",{"title":65,"path":66,"stem":67},"Per-Group Codebook","\u002Fconcepts\u002Fcodecs\u002Fper-group-codebook","20.concepts\u002Fcodecs\u002Fper-group-codebook",{"title":69,"path":70,"stem":71},"rANS","\u002Fconcepts\u002Fcodecs\u002Frans","20.concepts\u002Fcodecs\u002Frans",{"title":73,"path":74,"stem":75},"tANS","\u002Fconcepts\u002Fcodecs\u002Ftans","20.concepts\u002Fcodecs\u002Ftans",{"title":77,"path":78,"stem":79},"Zstd","\u002Fconcepts\u002Fcodecs\u002Fzstd","20.concepts\u002Fcodecs\u002Fzstd",{"title":81,"path":82,"stem":83},"Zstd Dictionary","\u002Fconcepts\u002Fcodecs\u002Fzstd-dict","20.concepts\u002Fcodecs\u002Fzstd-dict",{"title":85,"path":86,"stem":87},"Container format","\u002Fconcepts\u002Fcontainer","20.concepts\u002F5.container",{"title":89,"path":90,"stem":91},"Delta compression","\u002Fconcepts\u002Fdelta","20.concepts\u002F6.delta",{"title":93,"path":94,"stem":95},"Extensibility","\u002Fconcepts\u002Fextensibility","20.concepts\u002F7.extensibility",{"title":24,"path":25,"stem":97,"children":98},"20.concepts\u002Fcodecs\u002Findex",[99],{"title":24,"path":25,"stem":97},{"title":101,"path":102,"stem":103,"children":104},"Transforms","\u002Fconcepts\u002Ftransforms","20.concepts\u002Ftransforms\u002Findex",[105,106,110,114,118,122,126,130,134,140,144,148,152,156,160,164],{"title":101,"path":102,"stem":103},{"title":107,"path":108,"stem":109},"Alpha-Stable Normalize","\u002Fconcepts\u002Ftransforms\u002Falpha-stable-normalize","20.concepts\u002Ftransforms\u002Falpha-stable-normalize",{"title":111,"path":112,"stem":113},"Bit Reorder","\u002Fconcepts\u002Ftransforms\u002Fbit-reorder","20.concepts\u002Ftransforms\u002Fbit-reorder",{"title":115,"path":116,"stem":117},"Block Microscaling Repack","\u002Fconcepts\u002Ftransforms\u002Fblock-microscaling-repack","20.concepts\u002Ftransforms\u002Fblock-microscaling-repack",{"title":119,"path":120,"stem":121},"Burrows-Wheeler","\u002Fconcepts\u002Ftransforms\u002Fburrows-wheeler","20.concepts\u002Ftransforms\u002Fburrows-wheeler",{"title":123,"path":124,"stem":125},"Byte Split & Nibble Split","\u002Fconcepts\u002Ftransforms\u002Fbyte-split","20.concepts\u002Ftransforms\u002Fbyte-split",{"title":127,"path":128,"stem":129},"Concat","\u002Fconcepts\u002Ftransforms\u002Fconcat","20.concepts\u002Ftransforms\u002Fconcat",{"title":131,"path":132,"stem":133},"Delta","\u002Fconcepts\u002Ftransforms\u002Fdelta","20.concepts\u002Ftransforms\u002Fdelta",{"title":135,"path":136,"stem":137,"children":138},"Index Bitwidth Pack","\u002Fconcepts\u002Ftransforms\u002Findex-bitwidth-pack","20.concepts\u002Ftransforms\u002Findex-bitwidth-pack",[139],{"title":135,"path":136,"stem":137},{"title":141,"path":142,"stem":143},"IntDelta","\u002Fconcepts\u002Ftransforms\u002Fint-delta","20.concepts\u002Ftransforms\u002Fint-delta",{"title":145,"path":146,"stem":147},"Mantissa Zero Strip","\u002Fconcepts\u002Ftransforms\u002Fmantissa-zero-strip","20.concepts\u002Ftransforms\u002Fmantissa-zero-strip",{"title":149,"path":150,"stem":151},"Move to Front","\u002Fconcepts\u002Ftransforms\u002Fmove-to-front","20.concepts\u002Ftransforms\u002Fmove-to-front",{"title":153,"path":154,"stem":155},"MxFp4 Deinterleave","\u002Fconcepts\u002Ftransforms\u002Fmxfp4-deinterleave","20.concepts\u002Ftransforms\u002Fmxfp4-deinterleave",{"title":157,"path":158,"stem":159},"Predictor XOR","\u002Fconcepts\u002Ftransforms\u002Fpredictor-xor","20.concepts\u002Ftransforms\u002Fpredictor-xor",{"title":161,"path":162,"stem":163},"Reshape","\u002Fconcepts\u002Ftransforms\u002Freshape","20.concepts\u002Ftransforms\u002Freshape",{"title":165,"path":166,"stem":167},"Spherical Normalize","\u002Fconcepts\u002Ftransforms\u002Fspherical-normalize","20.concepts\u002Ftransforms\u002Fspherical-normalize",{"title":169,"path":170,"stem":171,"children":172},"Guides","\u002Fguides","30.guides\u002F00.index",[173,174,178,182,186,190,194,198,202],{"title":169,"path":170,"stem":171},{"title":175,"path":176,"stem":177},"CLI usage","\u002Fguides\u002Fcli","30.guides\u002F01.cli",{"title":179,"path":180,"stem":181},"Python API","\u002Fguides\u002Fpython-api","30.guides\u002F02.python-api",{"title":183,"path":184,"stem":185},"Writing your first extension","\u002Fguides\u002Fextension-authoring","30.guides\u002F03.extension-authoring",{"title":187,"path":188,"stem":189},"Trust and security","\u002Fguides\u002Ftrust-and-security","30.guides\u002F04.trust-and-security",{"title":191,"path":192,"stem":193},"Random access","\u002Fguides\u002Frandom-access","30.guides\u002F10.random-access",{"title":195,"path":196,"stem":197},"Tuning","\u002Fguides\u002Ftuning","30.guides\u002F11.tuning",{"title":199,"path":200,"stem":201},"Safetensors","\u002Fguides\u002Fsafetensors","30.guides\u002F50.safetensors",{"title":203,"path":204,"stem":205},"Transformers","\u002Fguides\u002Ftransformers","30.guides\u002F51.transformers",{"title":207,"path":208,"stem":209},"API reference","\u002Fapi","40.api",{"title":211,"path":212,"stem":213},"Benchmarks","\u002Fbenchmarks","50.benchmarks",{"title":215,"path":216,"stem":217},"Extensions","\u002Fextensions","60.extensions",{"title":219,"path":220,"stem":221},"Contributing","\u002Fcontributing","90.contributing",{"id":223,"title":215,"body":224,"description":565,"extension":566,"kind":567,"language":567,"links":567,"meta":568,"navigation":567,"path":216,"seo":569,"stem":217,"summary":567,"__hash__":570},"docs\u002F60.extensions.md",{"type":225,"value":226,"toc":560},"minimark",[227,244,247,272,277,280,379,405,409,412,460,467,471,474,550,556],[228,229,230,231,235,236,239,240,243],"p",{},"PTWM has a native multi-language extension system. New codecs,\npreprocessing transforms, classifiers, scoring functions, and more can\nbe added as separate signed bundles in ",[232,233,234],"strong",{},"WASM",", ",[232,237,238],{},"native cdylib",", or\n",[232,241,242],{},"Python host"," form, without modifying PTWM core.",[228,245,246],{},"Full design and ABI reference:",[248,249,250,260],"ul",{},[251,252,253],"li",{},[254,255,259],"a",{"href":256,"rel":257},"https:\u002F\u002Fgithub.com\u002Fkhwstolle\u002Fptwm\u002Fblob\u002Fmaster\u002Fdocs\u002Farchitecture\u002Fextension-system.md",[258],"nofollow","Extension system design",[251,261,262],{},[254,263,266,267,271],{"href":264,"rel":265},"https:\u002F\u002Fgithub.com\u002Fkhwstolle\u002Fptwm\u002Ftree\u002Fmaster\u002Fextensions",[258],"Reference contributions (",[268,269,270],"code",{},"extensions\u002F",")",[273,274,276],"h2",{"id":275},"for-researchers","For researchers",[228,278,279],{},"Install the extension-development extras and scaffold a new contribution:",[281,282,287],"pre",{"className":283,"code":284,"language":285,"meta":286,"style":286},"language-sh shiki shiki-themes material-theme-lighter github-light github-dark","pip install ptwm[ext-dev]\nptwm ext init my-codec --lang rust --kind plane_codec\ncd my-codec\nptwm ext build\nptwm ext sign --key ~\u002F.ptwm\u002Fkeys\u002Fmykey.priv\nptwm ext pack\n","sh","",[268,288,289,305,333,343,353,369],{"__ignoreMap":286},[290,291,294,298,302],"span",{"class":292,"line":293},"line",1,[290,295,297],{"class":296},"sbgvK","pip",[290,299,301],{"class":300},"s_sjI"," install",[290,303,304],{"class":300}," ptwm[ext-dev]\n",[290,306,308,311,314,317,320,324,327,330],{"class":292,"line":307},2,[290,309,310],{"class":296},"ptwm",[290,312,313],{"class":300}," ext",[290,315,316],{"class":300}," init",[290,318,319],{"class":300}," my-codec",[290,321,323],{"class":322},"stzsN"," --lang",[290,325,326],{"class":300}," rust",[290,328,329],{"class":322}," --kind",[290,331,332],{"class":300}," plane_codec\n",[290,334,336,340],{"class":292,"line":335},3,[290,337,339],{"class":338},"sptTA","cd",[290,341,342],{"class":300}," my-codec\n",[290,344,346,348,350],{"class":292,"line":345},4,[290,347,310],{"class":296},[290,349,313],{"class":300},[290,351,352],{"class":300}," build\n",[290,354,356,358,360,363,366],{"class":292,"line":355},5,[290,357,310],{"class":296},[290,359,313],{"class":300},[290,361,362],{"class":300}," sign",[290,364,365],{"class":322}," --key",[290,367,368],{"class":300}," ~\u002F.ptwm\u002Fkeys\u002Fmykey.priv\n",[290,370,372,374,376],{"class":292,"line":371},6,[290,373,310],{"class":296},[290,375,313],{"class":300},[290,377,378],{"class":300}," pack\n",[228,380,381,384,385,388,389,392,393,396,397,400,401,404],{},[268,382,383],{},"ptwm ext init"," generates a Rust (or Python) skeleton with the correct\nABI stubs, a ",[268,386,387],{},"ptwm-ext.toml"," manifest, and a test harness. ",[268,390,391],{},"ptwm ext build"," compiles to WASM and native cdylib; ",[268,394,395],{},"ptwm ext sign"," attaches an\nEd25519 signature; ",[268,398,399],{},"ptwm ext pack"," produces a ",[268,402,403],{},".tar.zst"," bundle ready\nfor distribution.",[273,406,408],{"id":407},"for-operators","For operators",[228,410,411],{},"Install an extension and verify it is active:",[281,413,415],{"className":283,"code":414,"language":285,"meta":286,"style":286},"ptwm trust add --bundled                   # one-time consent to the bundled keyring\nptwm ext install .\u002Fmy-codec-0.1.0.tar.zst  # or https:\u002F\u002F, oci:\u002F\u002F, git+SHA, or pip name\nptwm ext list                              # confirm\n",[268,416,417,434,448],{"__ignoreMap":286},[290,418,419,421,424,427,430],{"class":292,"line":293},[290,420,310],{"class":296},[290,422,423],{"class":300}," trust",[290,425,426],{"class":300}," add",[290,428,429],{"class":322}," --bundled",[290,431,433],{"class":432},"sutJx","                   # one-time consent to the bundled keyring\n",[290,435,436,438,440,442,445],{"class":292,"line":307},[290,437,310],{"class":296},[290,439,313],{"class":300},[290,441,301],{"class":300},[290,443,444],{"class":300}," .\u002Fmy-codec-0.1.0.tar.zst",[290,446,447],{"class":432},"  # or https:\u002F\u002F, oci:\u002F\u002F, git+SHA, or pip name\n",[290,449,450,452,454,457],{"class":292,"line":335},[290,451,310],{"class":296},[290,453,313],{"class":300},[290,455,456],{"class":300}," list",[290,458,459],{"class":432},"                              # confirm\n",[228,461,462,463,466],{},"Only contributions whose signatures chain to a trusted key are loaded.\nThe ",[268,464,465],{},"ptwm trust"," sub-commands manage the user's accepted keyring.",[273,468,470],{"id":469},"ablation","Ablation",[228,472,473],{},"The extension system integrates with the benchmark tooling so that\nindividual contributions can be isolated and attributed:",[281,475,477],{"className":283,"code":476,"language":285,"meta":286,"style":286},"ptwm bench compress model.bin \\\n    --baseline policies\u002Fbaseline.toml \\\n    --variant policies\u002Fno-huffman.toml \\\n    --trials 3 --out bench-out\u002F\nptwm bench attribute model.bin --leave-one-out --out attr-out\u002F\n",[268,478,479,496,506,516,531],{"__ignoreMap":286},[290,480,481,483,486,489,492],{"class":292,"line":293},[290,482,310],{"class":296},[290,484,485],{"class":300}," bench",[290,487,488],{"class":300}," compress",[290,490,491],{"class":300}," model.bin",[290,493,495],{"class":494},"s_hVV"," \\\n",[290,497,498,501,504],{"class":292,"line":307},[290,499,500],{"class":322},"    --baseline",[290,502,503],{"class":300}," policies\u002Fbaseline.toml",[290,505,495],{"class":494},[290,507,508,511,514],{"class":292,"line":335},[290,509,510],{"class":322},"    --variant",[290,512,513],{"class":300}," policies\u002Fno-huffman.toml",[290,515,495],{"class":494},[290,517,518,521,525,528],{"class":292,"line":345},[290,519,520],{"class":322},"    --trials",[290,522,524],{"class":523},"srdBf"," 3",[290,526,527],{"class":322}," --out",[290,529,530],{"class":300}," bench-out\u002F\n",[290,532,533,535,537,540,542,545,547],{"class":292,"line":355},[290,534,310],{"class":296},[290,536,485],{"class":300},[290,538,539],{"class":300}," attribute",[290,541,491],{"class":300},[290,543,544],{"class":322}," --leave-one-out",[290,546,527],{"class":322},[290,548,549],{"class":300}," attr-out\u002F\n",[228,551,552,555],{},[268,553,554],{},"--leave-one-out"," runs N+1 compressions (one full, one per active\ncontribution disabled) and reports the marginal ratio contribution of\neach extension.",[557,558,559],"style",{},"html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":286,"searchDepth":335,"depth":335,"links":561},[562,563,564],{"id":275,"depth":307,"text":276},{"id":407,"depth":307,"text":408},{"id":469,"depth":307,"text":470},"Add new codecs, transforms, classifiers, and more as signed bundles — without modifying PTWM core.","md",null,{},{"title":215,"description":565},"Hxg01HR9jqkMozjOJqKuXiTijUS6c1GAGAfn8EbZwaY",[572,574],{"title":211,"path":212,"stem":213,"description":573,"children":-1},"Compression ratios and throughput on real-world models, plus per-feature benchmark tables.",{"title":219,"path":220,"stem":221,"description":575,"children":-1},"Development setup, pre-commit hooks, and PR conventions for PTWM.",1784796352943]