**Implemented in the CLI, opt-in.** Compare the frozen rc7 binary with the current release build using `--thin --standalone --template-factorization`, Native and Hybrid. The baseline already has optional legacy template factorization. The new option retains that complete incumbent whenever a candidate ties or loses.
Containers12/13 identify the new SHA-256/BLAKE3 composed representation. Older readers reject them explicitly; the new reader retains old formats1–11. The major candidate version records this archive capability change. No commit, push, tag, deployment or public binary release has been performed.
Actual CLI subprocess measurements include process launch and file I/O; exact-byte and independent SHA checks are outside timers. Alternate before/after order with two warmups and five measured rounds. Category times sum per-file medians; decoder times include archive checksum verification. These are shared-host observations on inspected sources, not isolated codec-kernel speed or machine-independent confidence intervals. The final capture runs after the source verification jobs finish.
| Workload | Engine | Before B | After B | Size reduction | Improved | Encode time change | Verified decode time change |
| correlated later window | native | 94,891 | 86,641 | 8.69% | 2/6 | +16.12% | +1.26% |
| correlated later window | hybrid | 84,667 | 79,194 | 6.46% | 2/6 | +5.72% | +1.60% |
| generated generic JSON sample | native | 26,758 | 26,758 | 0.00% | 0/4 | +1.85% | +1.02% |
| generated generic JSON sample | hybrid | 25,622 | 25,622 | 0.00% | 0/4 | +2.84% | +1.97% |
| generated project sample | native | 202,642 | 195,916 | 3.32% | 3/14 | +10.02% | -3.68% |
| generated project sample | hybrid | 197,453 | 190,423 | 3.56% | 4/14 | +4.31% | -2.57% |
| public development excerpt | native | 748,127 | 731,403 | 2.24% | 5/30 | +24.40% | +0.48% |
| public development excerpt | hybrid | 683,169 | 672,864 | 1.51% | 5/30 | +9.01% | +0.23% |
Positive time changes mean more elapsed time. Every no-gain/slower source remains below. A larger global model search is not enabled by default. The standard comparator presets do not silently include the optional template switch.
The common representation consumes record templates, value spans and chronological family IDs. No source filename, HTTP code, IP range, city name, log-product name or JSON field name selects a candidate. Logs retain the existing numeric/IP/token scanner. Validated JSON arrays of records and NDJSON provide exact scalar spans to the same representation, including nested values, duplicate keys and arbitrary key order. Quotes, escapes, number spelling, punctuation and whitespace restore exactly. A record above256 scalar spans is retained literally inside the model, rather than dropping it or rejecting all other records. Other unsupported inputs keep their ordinary archive.
Three log candidates: positional typed/numeric columns, family-plus-position delta columns and family-plus-position typed/numeric columns. Families with fewer than16 records pool by position. JSON compares positional columns, pooled-family columns and a shared lexical-value stream; the latter preserves possible reuse across changing schemas. Exact duplicate model bytes are coded once. This is deterministic complete-cost competition, not a claimed optimal model, trained semantic ontology or new entropy coder.
The four inspected GitHub windows and four additional API JSON fixtures currently retain their incumbents; generic support is not evidence of a measured JSON size gain on this panel. Single JSON objects with nested record arrays are not currently promoted as record batches by this adapter. Existing parsers/models remain available. CSV keeps its existing structured routes and the numeric-family scanner where eligible.
Raw and delta columns borrow encoded slices. Fixed-width packed integer columns use the shared numeric cursor without constructing synthetic NUMSTR frames or an allocation per packed scalar. Typed modes reuse the existing bounded column reader; some modes allocate decoded backing storage. This is bounded in-memory reconstruction, not a zero-allocation or20-GiB streaming claim.
Before final output allocation, validate catalog/ID/mapping references, expected value counts, checked fixed-template expansion and aggregate decoded lengths. The frame budgets are8MiB source,1,000,000 records/parameter occurrences,65,536 templates,4,096 columns and262,144 mapping entries, with source-derived backend limits. The JSON span adapter does not copy a field-path dictionary per scalar. The preceding rc7 literal-run representability guard remains in force.
The current suite passes **291 unit/integration tests**; **1536 actual CLI source restorations** match original bytes and SHA-256. **21 selected new-format archives** are explicitly rejected by the frozen old reader. **24 no-option controls** preserve archive bytes across default/fast/thin and both engines. Targeted tests cover SHA/BLAKE3, optional rANS4, lexical JSON, wide-record exceptions, capability downgrade, source-hash corruption, truncation, expansion and mutations. Source/binary hashes and exact replay snapshot are retained. Earlier interrupted runs are labeled partial and are not counted as passing final verification.
Reference archive sizes come from the same exact public inputs in the recorded6.0.0-rc1 panel. This table compares size only; it does not reuse reference timing for a speed claim.
| Engine | Reference | Before wins | After wins |
| native | Zstd_L9 | 16/30 | 17/30 |
| native | Brotli_Q9 | 16/30 | 17/30 |
| native | Gzip_L9 | 24/30 | 24/30 |
| hybrid | Zstd_L9 | 25/30 | 25/30 |
| hybrid | Brotli_Q9 | 20/30 | 20/30 |
| hybrid | Gzip_L9 | 25/30 | 25/30 |
Each size comparison is a complete self-contained archive. Times are medians in milliseconds; the JSON raw trials retain all repeats.
| Source | Engine | Before B | After B | Size reduction | Encode before/after ms | Verified decode before/after ms | Container |
| 01_loghub_hdfs.log | native | 42,835 | 33,947 | 20.75% | 93.29 / 119.21 | 10.70 / 10.89 | 13 |
| 01_loghub_hdfs.log | hybrid | 37,697 | 32,916 | 12.68% | 72.51 / 79.00 | 10.02 / 10.33 | 13 |
| 02_loghub_hadoop.log | native | 14,204 | 14,204 | 0.00% | 40.66 / 51.43 | 9.56 / 9.50 | 11 |
| 02_loghub_hadoop.log | hybrid | 12,908 | 12,908 | 0.00% | 37.09 / 40.35 | 9.61 / 9.51 | 11 |
| 03_loghub_spark.log | native | 16,349 | 16,349 | 0.00% | 60.08 / 74.56 | 11.34 / 11.43 | 11 |
| 03_loghub_spark.log | hybrid | 14,518 | 14,518 | 0.00% | 65.43 / 69.35 | 11.46 / 11.78 | 11 |
| 04_loghub_zookeeper.log | native | 6,310 | 6,310 | 0.00% | 56.42 / 63.16 | 12.16 / 12.37 | 11 |
| 04_loghub_zookeeper.log | hybrid | 5,451 | 5,451 | 0.00% | 47.13 / 49.81 | 11.99 / 11.87 | 11 |
| 05_loghub_openstack.log | native | 41,821 | 41,821 | 0.00% | 81.58 / 82.61 | 9.60 / 9.75 | 5 |
| 05_loghub_openstack.log | hybrid | 37,772 | 37,772 | 0.00% | 76.91 / 78.35 | 9.68 / 9.50 | 5 |
| 06_loghub_bgl.log | native | 11,518 | 11,518 | 0.00% | 62.30 / 68.53 | 10.85 / 11.10 | 7 |
| 06_loghub_bgl.log | hybrid | 10,852 | 10,852 | 0.00% | 55.06 / 56.34 | 10.62 / 10.85 | 7 |
| 07_loghub_hpc.log | native | 16,705 | 15,929 | 4.65% | 66.61 / 76.18 | 10.47 / 9.85 | 13 |
| 07_loghub_hpc.log | hybrid | 15,927 | 15,235 | 4.34% | 55.18 / 59.21 | 9.81 / 9.87 | 13 |
| 08_loghub_thunderbird.log | native | 39,015 | 39,015 | 0.00% | 90.45 / 118.33 | 12.30 / 12.88 | 11 |
| 08_loghub_thunderbird.log | hybrid | 35,166 | 35,166 | 0.00% | 72.04 / 81.19 | 12.50 / 12.66 | 11 |
| 09_loghub_windows.log | native | 10,770 | 10,770 | 0.00% | 57.11 / 74.49 | 12.08 / 11.95 | 11 |
| 09_loghub_windows.log | hybrid | 9,650 | 9,650 | 0.00% | 61.47 / 66.07 | 12.45 / 12.18 | 11 |
| 10_loghub_linux.log | native | 31,830 | 31,830 | 0.00% | 83.62 / 111.26 | 9.70 / 9.40 | 7 |
| 10_loghub_linux.log | hybrid | 26,071 | 26,071 | 0.00% | 62.23 / 83.07 | 9.53 / 9.05 | 5 |
| 11_loghub_mac.log | native | 22,240 | 22,240 | 0.00% | 66.61 / 82.78 | 9.07 / 9.07 | 7 |
| 11_loghub_mac.log | hybrid | 20,021 | 20,021 | 0.00% | 56.86 / 65.22 | 11.99 / 11.61 | 11 |
| 12_loghub_android.log | native | 40,960 | 40,960 | 0.00% | 78.27 / 79.82 | 10.31 / 10.03 | 7 |
| 12_loghub_android.log | hybrid | 38,974 | 38,974 | 0.00% | 65.99 / 66.47 | 9.64 / 9.75 | 7 |
| 13_loghub_healthapp.log | native | 20,545 | 16,659 | 18.91% | 78.72 / 89.00 | 12.97 / 13.67 | 13 |
| 13_loghub_healthapp.log | hybrid | 18,136 | 15,695 | 13.46% | 83.35 / 82.39 | 14.03 / 13.69 | 13 |
| 14_loghub_apache.log | native | 22,368 | 22,368 | 0.00% | 72.81 / 88.10 | 10.76 / 10.85 | 7 |
| 14_loghub_apache.log | hybrid | 21,152 | 21,152 | 0.00% | 60.22 / 66.19 | 10.25 / 10.67 | 7 |
| 15_loghub_openssh.log | native | 12,731 | 12,346 | 3.02% | 63.68 / 74.22 | 10.89 / 11.81 | 13 |
| 15_loghub_openssh.log | hybrid | 11,706 | 11,436 | 2.31% | 55.80 / 58.25 | 10.48 / 11.17 | 13 |
| 16_loghub_proxifier.log | native | 22,874 | 20,085 | 12.19% | 65.72 / 77.21 | 9.85 / 10.71 | 13 |
| 16_loghub_proxifier.log | hybrid | 21,566 | 19,445 | 9.83% | 56.32 / 62.58 | 9.64 / 10.77 | 13 |
| 17_beats_nginx_access.log | native | 774 | 774 | 0.00% | 15.18 / 16.32 | 8.11 / 7.52 | 5 |
| 17_beats_nginx_access.log | hybrid | 644 | 644 | 0.00% | 18.42 / 18.46 | 7.79 / 7.72 | 5 |
| 18_beats_nginx_error.log | native | 663 | 663 | 0.00% | 13.62 / 14.40 | 7.67 / 7.77 | 5 |
| 18_beats_nginx_error.log | hybrid | 561 | 561 | 0.00% | 17.59 / 17.92 | 7.73 / 7.95 | 5 |
| 19_beats_postgresql_log.log | native | 2,531 | 2,531 | 0.00% | 18.69 / 21.04 | 8.01 / 8.20 | 11 |
| 19_beats_postgresql_log.log | hybrid | 2,264 | 2,264 | 0.00% | 20.91 / 21.67 | 8.08 / 7.81 | 5 |
| 20_beats_mysql_slowlog.log | native | 2,494 | 2,494 | 0.00% | 16.61 / 17.56 | 8.12 / 8.03 | 11 |
| 20_beats_mysql_slowlog.log | hybrid | 2,228 | 2,228 | 0.00% | 19.51 / 19.94 | 7.99 / 8.04 | 11 |
| 21_beats_mongodb_log.log | native | 1,784 | 1,784 | 0.00% | 16.39 / 17.39 | 7.72 / 7.73 | 5 |
| 21_beats_mongodb_log.log | hybrid | 1,519 | 1,519 | 0.00% | 19.52 / 19.31 | 8.08 / 8.04 | 5 |
| 22_beats_redis_log.log | native | 1,078 | 1,078 | 0.00% | 47.73 / 60.52 | 10.63 / 10.40 | 7 |
| 22_beats_redis_log.log | hybrid | 899 | 899 | 0.00% | 44.20 / 53.88 | 10.45 / 10.35 | 7 |
| 23_beats_elasticsearch_audit.log | native | 1,633 | 1,633 | 0.00% | 14.33 / 15.60 | 7.73 / 7.65 | 5 |
| 23_beats_elasticsearch_audit.log | hybrid | 1,336 | 1,336 | 0.00% | 18.75 / 19.19 | 8.01 / 8.01 | 5 |
| 24_beats_traefik_access.log | native | 1,058 | 1,058 | 0.00% | 14.23 / 15.49 | 7.96 / 7.71 | 5 |
| 24_beats_traefik_access.log | hybrid | 926 | 926 | 0.00% | 18.37 / 17.90 | 7.98 / 7.81 | 5 |
| 25_nasa_http_jul95.log | native | 36,151 | 36,151 | 0.00% | 78.81 / 80.72 | 10.06 / 9.88 | 7 |
| 25_nasa_http_jul95.log | hybrid | 35,057 | 35,057 | 0.00% | 76.57 / 76.78 | 9.93 / 9.74 | 7 |
| 26_nasa_http_aug95.log | native | 37,283 | 37,283 | 0.00% | 76.01 / 78.30 | 9.89 / 9.84 | 7 |
| 26_nasa_http_aug95.log | hybrid | 35,956 | 35,956 | 0.00% | 73.21 / 74.69 | 9.47 / 9.48 | 7 |
| 27_github_events_20150101_00.jsonl | native | 76,935 | 76,935 | 0.00% | 81.15 / 129.07 | 10.03 / 9.76 | 5 |
| 27_github_events_20150101_00.jsonl | hybrid | 69,507 | 69,507 | 0.00% | 75.87 / 89.52 | 9.12 / 9.02 | 5 |
| 28_github_events_20150101_06.jsonl | native | 71,978 | 71,978 | 0.00% | 81.00 / 125.95 | 9.85 / 9.88 | 5 |
| 28_github_events_20150101_06.jsonl | hybrid | 65,775 | 65,775 | 0.00% | 76.60 / 88.71 | 9.35 / 9.14 | 5 |
| 29_github_events_20150101_12.jsonl | native | 68,120 | 68,120 | 0.00% | 74.77 / 121.83 | 9.98 / 10.18 | 7 |
| 29_github_events_20150101_12.jsonl | hybrid | 62,753 | 62,753 | 0.00% | 70.65 / 83.59 | 9.21 / 9.12 | 5 |
| 30_github_events_20150101_18.jsonl | native | 72,570 | 72,570 | 0.00% | 78.53 / 125.71 | 10.20 / 10.20 | 7 |
| 30_github_events_20150101_18.jsonl | hybrid | 66,177 | 66,177 | 0.00% | 73.33 / 86.57 | 9.00 / 9.07 | 5 |
| healthapp_1024k.log | native | 18,949 | 14,871 | 21.52% | 81.82 / 94.12 | 13.15 / 13.52 | 13 |
| healthapp_1024k.log | hybrid | 16,529 | 14,000 | 15.30% | 66.05 / 69.85 | 12.67 / 13.38 | 13 |
| healthapp_2048k.log | native | 19,362 | 15,190 | 21.55% | 81.52 / 92.06 | 12.83 / 13.52 | 13 |
| healthapp_2048k.log | hybrid | 17,214 | 14,270 | 17.10% | 65.09 / 67.87 | 12.90 / 13.76 | 13 |
| spark_1024k.log | native | 20,036 | 20,036 | 0.00% | 79.01 / 90.78 | 11.80 / 11.96 | 11 |
| spark_1024k.log | hybrid | 18,157 | 18,157 | 0.00% | 64.89 / 70.69 | 12.36 / 12.00 | 11 |
| spark_2048k.log | native | 19,784 | 19,784 | 0.00% | 76.51 / 91.20 | 11.87 / 11.86 | 11 |
| spark_2048k.log | hybrid | 17,943 | 17,943 | 0.00% | 64.60 / 67.68 | 12.24 / 12.07 | 11 |
| windows_1024k.log | native | 8,267 | 8,267 | 0.00% | 44.12 / 43.86 | 11.50 / 11.46 | 11 |
| windows_1024k.log | hybrid | 7,298 | 7,298 | 0.00% | 53.63 / 54.19 | 11.31 / 11.17 | 11 |
| windows_2048k.log | native | 8,493 | 8,493 | 0.00% | 56.69 / 75.31 | 11.72 / 11.47 | 11 |
| windows_2048k.log | hybrid | 7,526 | 7,526 | 0.00% | 60.53 / 65.95 | 11.31 / 11.57 | 11 |
| 01_nginx_access.log | native | 10,853 | 10,853 | 0.00% | 62.78 / 80.11 | 8.64 / 8.67 | 7 |
| 01_nginx_access.log | hybrid | 10,223 | 10,223 | 0.00% | 55.90 / 70.93 | 8.86 / 9.08 | 7 |
| 02_nginx_error.log | native | 11,437 | 9,451 | 17.36% | 57.89 / 62.11 | 9.93 / 9.52 | 13 |
| 02_nginx_error.log | hybrid | 11,282 | 9,363 | 17.01% | 50.11 / 52.67 | 10.18 / 9.86 | 13 |
| 03_app_json.log | native | 23,283 | 23,283 | 0.00% | 47.52 / 54.32 | 10.59 / 10.38 | 11 |
| 03_app_json.log | hybrid | 22,589 | 22,589 | 0.00% | 45.10 / 50.84 | 10.73 / 10.67 | 11 |
| 04_k8s_container.log | native | 16,773 | 16,773 | 0.00% | 41.32 / 41.98 | 10.40 / 10.34 | 11 |
| 04_k8s_container.log | hybrid | 15,921 | 15,921 | 0.00% | 43.20 / 44.52 | 8.86 / 8.50 | 7 |
| 05_syslog_systemd.log | native | 9,389 | 9,389 | 0.00% | 45.29 / 46.47 | 8.99 / 8.84 | 7 |
| 05_syslog_systemd.log | hybrid | 8,927 | 8,927 | 0.00% | 44.00 / 44.34 | 8.94 / 8.94 | 7 |
| 06_aws_cloudtrail.json | native | 9,320 | 9,320 | 0.00% | 35.39 / 35.87 | 9.02 / 8.94 | 7 |
| 06_aws_cloudtrail.json | hybrid | 9,039 | 9,039 | 0.00% | 38.37 / 39.26 | 9.47 / 9.42 | 7 |
| 07_aws_vpcflow.log | native | 33,648 | 33,648 | 0.00% | 101.53 / 115.63 | 9.72 / 9.56 | 7 |
| 07_aws_vpcflow.log | hybrid | 33,918 | 33,521 | 1.17% | 86.26 / 79.72 | 10.09 / 11.00 | 13 |
| 08_dns_queries.log | native | 20,924 | 17,524 | 16.25% | 63.20 / 73.89 | 9.51 / 9.42 | 13 |
| 08_dns_queries.log | hybrid | 20,239 | 17,080 | 15.61% | 53.94 / 56.12 | 9.34 / 9.57 | 13 |
| 09_postgres_slowquery.csv | native | 7,504 | 7,504 | 0.00% | 41.85 / 46.98 | 9.51 / 9.43 | 7 |
| 09_postgres_slowquery.csv | hybrid | 7,074 | 7,074 | 0.00% | 40.19 / 42.83 | 9.59 / 9.64 | 7 |
| 10_rest_api_batch.json | native | 5,762 | 5,762 | 0.00% | 27.88 / 28.59 | 9.47 / 9.37 | 7 |
| 10_rest_api_batch.json | hybrid | 5,473 | 5,473 | 0.00% | 33.24 / 33.75 | 9.46 / 9.50 | 7 |
| 11_opentelemetry_traces.json | native | 7,242 | 7,242 | 0.00% | 39.36 / 40.69 | 12.14 / 12.14 | 5 |
| 11_opentelemetry_traces.json | hybrid | 7,242 | 7,242 | 0.00% | 46.35 / 48.01 | 12.34 / 11.94 | 5 |
| 12_financial_ticks.csv | native | 21,889 | 20,549 | 6.12% | 75.94 / 82.77 | 13.67 / 9.90 | 13 |
| 12_financial_ticks.csv | hybrid | 21,507 | 19,952 | 7.23% | 60.70 / 61.67 | 13.87 / 9.97 | 13 |
| 13_stripe_webhooks.json | native | 9,412 | 9,412 | 0.00% | 32.16 / 33.10 | 9.37 / 9.05 | 7 |
| 13_stripe_webhooks.json | hybrid | 9,319 | 9,319 | 0.00% | 32.83 / 33.33 | 8.97 / 8.84 | 7 |
| 17_github_actions_ci.log | native | 15,206 | 15,206 | 0.00% | 46.48 / 48.11 | 10.27 / 10.45 | 11 |
| 17_github_actions_ci.log | hybrid | 14,700 | 14,700 | 0.00% | 46.21 / 47.54 | 10.46 / 10.62 | 11 |
| api_payload.json | native | 9,944 | 9,944 | 0.00% | 41.41 / 42.01 | 10.97 / 11.28 | 7 |
| api_payload.json | hybrid | 9,536 | 9,536 | 0.00% | 45.40 / 47.37 | 10.87 / 11.06 | 7 |
| api_batch1.json | native | 5,623 | 5,623 | 0.00% | 27.96 / 28.57 | 9.35 / 9.39 | 7 |
| api_batch1.json | hybrid | 5,374 | 5,374 | 0.00% | 33.00 / 34.17 | 9.43 / 9.63 | 7 |
| api_batch2.json | native | 5,579 | 5,579 | 0.00% | 28.19 / 29.07 | 9.40 / 9.30 | 7 |
| api_batch2.json | hybrid | 5,337 | 5,337 | 0.00% | 32.79 / 33.51 | 9.47 / 9.51 | 7 |
| api_batch3.json | native | 5,612 | 5,612 | 0.00% | 28.57 / 28.82 | 9.43 / 9.58 | 7 |
| api_batch3.json | hybrid | 5,375 | 5,375 | 0.00% | 32.89 / 33.13 | 9.45 / 9.80 | 7 |
Build the recorded source snapshot with `cargo build --release --bin pizd`. Keep the frozen rc7 reader at `target/composition-integration/pizd-rc7`; its source snapshot and binary identity are recorded in the preceding study. Run `python3 tools/verify_template_composition.py`, then `python3 tools/render_template_composition_integration.py`. Cached inputs are identified by exact source hashes; raw public logs and binaries are not added to Git.
`pizd compress input.log --offline --standalone --thin --template-factorization --engine native -o input.pizd`
Use `--engine hybrid` for the Zstd-backed variant. Use the current reader to restore archives produced with the new capability. Older reader rejection is intentional; ordinary retained archives keep their prior formats.
Broaden independent real structured workloads after freezing this policy. The generic JSON route still needs a measured density advantage on the current losing GitHub data. Deeper/shared schemas, generic key/value record adapters and actual stream-model reuse remain separate research; no gain is booked from those ideas.
The fresh maintained public30 panel has540 verified rows; the18-source standard panel records17/18 size,1/18 encode-speed and11/18 verified-decode-speed wins in its cross-profile best-reference summary. Those ordinary presets do not contain the optional template switch; these counts are not its isolated effect.
Against the earlier recorded public rc6 source, Hybrid fast HealthApp changes36,922 ->45,430 B, Apache27,102 ->35,284 B and the Traefik fixture941 ->938 B;537 other stored-size rows match. The earlier public source used a22-percent structural-benefit gate. The frozen rc7 baseline already used24 percent and a broader direct fallback. Three additional CLI controls prove the affected fast archives remain byte-identical between frozen rc7 and this integration, with exact restoration. Preserve the larger historical fast results and keep that source boundary separate from composition. Details: fast_policy_boundary.json and ordinary_panel_identity.json.