headroom/tests/parity/fixtures/code_aware_compressor/1e496ebaf89fab96.json
Ruben A. e530de5ad2
feat(rust): port CodeCompressor AST compressor to Rust (parity-only) (#1154)
Adds crates/headroom-core/src/transforms/code_compressor.rs (1,882 lines): the
AST-aware CodeCompressor ported to Rust on tree-sitter, with grammars for
Python, JavaScript, TypeScript, Go, Rust, Java, C and C++.

Parity-only, like #1153. Nothing calls it: the only references outside the
module are the pub mod / pub use declarations in transforms/mod.rs, and
live_zone.rs still routes SourceCode to a no-op. The pyo3 bridge is untouched
and no Python source changes, so the engine is unreachable from the shipped
package. #1155 wires it into live-zone dispatch.

Every grammar is pinned with '=' to the exact version of the corresponding
Python tree-sitter-<lang> PyPI wheel. Same version on crates.io and PyPI means
the same grammar.js, hence the same generated parser.c, hence node-for-node
identical ASTs — the precondition for byte-parity. A canary over 9 samples x 8
languages confirmed identical node-type and line-span trees at these pins;
bumping any pin requires re-running it and re-recording the fixtures.

Ships 30 recorded parity fixtures, a CodeCompressorComparator in
headroom-parity, and scripts/record_code_compressor_fixtures.py.

Verified byte-identical to the recorded Python output:

  [code_aware_compressor] total=30 matched=30 skipped=0 diffed=0

Full harness on the merge result: 227 fixtures, 182 matched, 45 skipped
(cache_aligner + ccr stubs), 0 diffed, exit 0 — with kompress at 21/21 under
ONNX Runtime 1.24.4 (see #2591).

Also verified cargo check -p headroom-core --no-default-features passes, so the
static-musl path stays intact.
2026-07-27 09:21:57 -07:00

42 lines
3.4 KiB
JSON

{
"config": {
"ccr_ttl": 300,
"compress_comments": true,
"docstring_mode": "remove",
"enable_ccr": false,
"fallback_to_kompress": false,
"language_hint": null,
"max_body_lines": 5,
"min_tokens_for_compression": 100,
"preserve_decorators": true,
"preserve_imports": true,
"preserve_signatures": true,
"preserve_type_annotations": true,
"semantic_analysis": true,
"target_compression_rate": 0.2
},
"input": "import os\nimport sys\nfrom typing import List, Optional\n\nGLOBAL_CONST = 42\n\n@dataclass\nclass Processor:\n \"\"\"Process a stream of items efficiently.\"\"\"\n name: str\n count: int = 0\n\n def process(self, items: List[str]) -> List[str]:\n \"\"\"Process a list of items and return cleaned results.\"\"\"\n results = []\n for item in items:\n if not item:\n continue\n processed = item.strip().lower()\n results.append(processed)\n self.count += 1\n return results\n\n def reset(self):\n self.count = 0\n\n\ndef standalone(x: int, y: int) -> int:\n total = 0\n for i in range(x):\n for j in range(y):\n total += i * j\n return total\n\n\nif __name__ == \"__main__\":\n p = Processor(\"main\")\n print(p.process([\"a\", \"b\"]))\n",
"input_sha256": "1e496ebaf89fab96ac4f3836146f87ea6830de66a27cbf4134068ad07be50b74",
"output": {
"cache_key": null,
"compressed": "import os\nimport sys\nfrom typing import List, Optional\n\n@dataclass\nclass Processor:\n \"\"\"Process a stream of items efficiently.\"\"\"\n name: str\n count: int = 0\n def process(self, items: List[str]) -> List[str]:\n results = []\n # [7 lines omitted]\n pass\n def reset(self):\n self.count = 0\n\ndef standalone(x: int, y: int) -> int:\n total = 0\n # [4 lines omitted]\n pass\n\nGLOBAL_CONST = 42\nif __name__ == \"__main__\":\n p = Processor(\"main\")\n print(p.process([\"a\", \"b\"]))",
"compressed_bodies": 0,
"compressed_tokens": 129,
"compression_ratio": 0.6292682926829268,
"language": "python",
"language_confidence": 1.0,
"original": "import os\nimport sys\nfrom typing import List, Optional\n\nGLOBAL_CONST = 42\n\n@dataclass\nclass Processor:\n \"\"\"Process a stream of items efficiently.\"\"\"\n name: str\n count: int = 0\n\n def process(self, items: List[str]) -> List[str]:\n \"\"\"Process a list of items and return cleaned results.\"\"\"\n results = []\n for item in items:\n if not item:\n continue\n processed = item.strip().lower()\n results.append(processed)\n self.count += 1\n return results\n\n def reset(self):\n self.count = 0\n\n\ndef standalone(x: int, y: int) -> int:\n total = 0\n for i in range(x):\n for j in range(y):\n total += i * j\n return total\n\n\nif __name__ == \"__main__\":\n p = Processor(\"main\")\n print(p.process([\"a\", \"b\"]))\n",
"original_tokens": 205,
"preserved_imports": 3,
"preserved_signatures": 1,
"symbol_scores": {
"Processor": 1.0,
"process": 0.5,
"reset": 0.0,
"standalone": 0.0
},
"syntax_valid": true
},
"recorded_at": "2026-06-19T00:15:16.358515+00:00",
"transform": "code_aware_compressor"
}