Releases: rlippmann/context-compiler
v0.6.19
Release Summary
v0.6.19 completes terminology cleanup for the experimental preprocessor surface ahead of TypeScript porting. This release removes legacy precompiler/precompile naming from current public surfaces and establishes a single preprocessor/preprocess vocabulary.
What Changed
1) Public naming cleanup
Removed legacy compatibility/public names:
parse_precompiler_outputvalidate_precompiler_outputPRECOMPILER_NO_DIRECTIVE_SENTINEL--with-precompilerexperimental/preprocessor/heuristic_precompiler.py
Canonical naming now exposed:
parse_preprocessor_outputvalidate_preprocessor_outputPREPROCESSOR_NO_DIRECTIVE_SENTINEL--with-preprocessorexperimental/preprocessor/heuristic_preprocessor.py
2) Preprocess terminology normalization
Renamed remaining canonical precompile vocabulary to preprocess across current code/docs/tests/contracts, including:
- heuristic API naming (
preprocess_heuristic) - outcome constants (
PREPROCESS_OUTCOME_*) - helper names in integration examples and associated tests
- experimental preprocessor public API fixture contract
3) Fixture and contract alignment
Updated preprocessor API contract fixture to canonical terminology only, matching the cleaned export surface for cross-port consumption.
4) REPL surface cleanup
REPL now accepts only --with-preprocessor for this path; legacy --with-precompiler alias removed.
Why This Release
The TypeScript preprocessor port is beginning, and this release intentionally removes transitional naming before harness/contract consumption to avoid carrying obsolete terminology into the first non-Python implementation.
Scope and Compatibility Notes
- No core engine behavior changes.
- No deterministic engine conformance behavior changes.
- Changes are naming/API surface cleanup only for the experimental preprocessor path.
Validation
uv run pytestuv run pre-commit run --all-files
Both passed.
v0.6.18
Release Summary
v0.6.18 expands the portable conformance surface for cross-language parity by adding deterministic fixture coverage for core engine serialization and checkpoint import behavior, and by extending pending-confirmation token normalization coverage.
This release is focused on contract promotion, not engine logic changes.
What Is New
1) New portable conformance fixture categories
tests/fixtures/conformance/state-json/tests/fixtures/conformance/checkpoint/
These categories move high-risk deterministic behavior from Python-local tests into portable fixtures that TypeScript (and future ports) can consume directly.
2) State JSON fixture coverage added
Portable fixtures now cover:
- canonical
export_json()output shape (sorted, compact JSON) import_json(...)invalid JSON rejection- non-object payload rejection
- unsupported state version rejection
- atomic rejection when normalized policy keys become invalid
- acceptance and canonicalization of valid normalized policy keys
3) Checkpoint import fixture coverage added
Portable fixtures now cover:
- non-object checkpoint payload rejection
- unsupported checkpoint version rejection
- invalid pending payload shape rejection
- invalid replacement payload shape rejection
- atomic rejection when
authoritative_stateis invalid - pending clear semantics when
pendingisnull - pending clear semantics when
pendingis absent
4) Pending confirmation normalization expanded in step fixtures
Added two step fixtures under conformance/step for punctuation-normalized tokens:
- affirmative with punctuation accepted
- negative with punctuation accepted
Harness and Contract Updates
tests/test_fixtures.pynow executes the newstate-jsonandcheckpointfixture suites.- Existing step/transcript fixture semantics remain unchanged.
- Fixture docs were updated to clarify portable serialization/checkpoint contracts vs Python-local property/fuzz tests.
Why This Matters
This release reduces parity risk for non-Python ports by making previously local serialization/checkpoint edge cases portable and deterministic. It strengthens contract-first development for TS 0.6 parity without broadening scope into non-deterministic or implementation-specific behavior.
Scope and Compatibility Notes
- No core engine behavior changes were introduced in this release.
- No preprocessor behavior changes were introduced.
- No apply-transcript fixture category was added in this release (intentionally deferred).
- Property/fuzz invariants and local test-infrastructure behaviors remain Python-local by design.
Validation Performed
uv run pytestuv run pre-commit run --all-files
Both passed before merge.
v0.6.17
What's Changed
- test: add api contract fixture coverage by @rlippmann in #128
Full Changelog: v0.6.16...v0.6.17
v0.6.16
Full Changelog: v0.6.15...v0.6.16
What's Changed
- 0.6.16 — preprocessor naming and fixture taxonomy cleanup by @rlippmann in #127
Full Changelog: v0.6.15...v0.6.16
v0.6.15
What's Changed
- fix: append OpenWebUI trace to streamed responses by @rlippmann in #122
- test: harden demo oracles and clarify results docs by @rlippmann in #124
- fix: harden openwebui trace and update routing by @rlippmann in #125
- chore: release 0.6.15 by @rlippmann in #126
Full Changelog: v0.6.14...v0.6.15
0.6.14
Highlights
- Fix OpenWebUI preprocessor valve handling and debug behavior
- Add optional trace output to example integrations (off by default)
Changes
- fix: correct OpenWebUI preprocessor valve handling and debug paths
- feat: expose optional trace output in OpenWebUI and LiteLLM examples
- test: expand coverage for host_support helpers and integration edge cases
- docs: add minimal repository meta files
- chore: bump version to 0.6.14 and update example requirements
Notes
No core engine changes
No API changes
LiteLLM proxy trace deferred to future work
v0.6.13
Highlights
- Hardened example integration behavior across LiteLLM and OpenWebUI examples.
- Deterministic update acknowledgments improved:
- replacement updates now summarize as
State updated: Use <new>. - policy item acknowledgment casing normalized consistently
clear premisenow returnsPremise cleared.
- replacement updates now summarize as
- Preprocessor example variants now skip fallback LLM calls for directive-shaped malformed inputs, preserving deterministic clarify behavior.
- Added focused regression coverage for replacement acknowledgments, casing consistency, fallback suppression, clear-premise acknowledgments, and near-miss directive clarify behavior.
- Release metadata finalized:
- package version bumped to
0.6.13 - OpenWebUI pipe frontmatter versions bumped to
0.7 uv.lockupdated
- package version bumped to
v0.6.12 — example integration consistency and host_support API exposure
What's Changed
- Make OpenWebUI example updates deterministic and clarify docs
- Make LiteLLM example updates deterministic
- Expose host_support public API via all and align example imports
- Bump version to 0.6.12
Notes
- Example integrations now render
Decision.updatedeterministically (no downstream LLM call) - Engine behavior and semantics are unchanged
Full Changelog: v0.6.11...v0.6.12
v0.6.11
What's Changed
Improvements
- Suppress confirmation-only turns from calling the downstream model
- Add deterministic confirmation summaries (e.g., “State updated”, “State unchanged”)
Open WebUI
- Improved BASE_MODEL_ID setup clarity
- Clearer model-not-found error messaging with actionable guidance
Internal
- Added host_support coverage
- Enforced pytest in pre-commit
Full Changelog: v0.6.10...v0.6.11
v0.6.10: OpenWebUI 0.9 compatibility patch
Highlights
- Fixed OpenWebUI example compatibility with OpenWebUI 0.9.x async user lookup
- Preserved compatibility with OpenWebUI 0.8.x sync user lookup
- Bumped OpenWebUI example frontmatter versions to 0.4
- Updated OpenWebUI integration README compatibility/install guidance
Notes
- Compatibility patch only; no engine, precompiler, or CLI behavior changes
Full Changelog: v0.6.9...v0.6.10