Changelog
0.1.0.dev0 — 2026-04-20
Initial pre-alpha. Full 11-primitive battery shipped.
Primitives
- Adherence
delta_kl— mean JS/KL divergence between base and fine-tuned next-token distributionsadapter_revert— reversion under adversarial paraphrase (needssway-eval[semsim])prompt_collapse— exponential-decay fit of divergence over context length
- Attribution
section_internalization(flagship) — per-sectioneffective_siswith leak checkparaphrase_invariance— memorization vs. generalization, intent-awarepreference_flip— DPO/ORPO chosen/rejected margin inversion
- Calibration
style_fingerprint— 6-dim numpy-only stylistic shift vs. documentcalibration_drift— general-knowledge regression on a packaged 30-item packleakage— greedy LCS recall + perturbation fragility
- Ablation
adapter_ablation(signature primitive) — λ-scaled divergence curve with linearity, saturation, overshoot metrics
- Baseline
null_adapter— stats scaffolding for z-score calibration (implementation pending)
Infrastructure
DifferentialBackend+ScalableDifferentialBackendprotocols- HuggingFace + PEFT backend with
disable_adapter/set_adaptertoggling and LoRA-scale mutation - Dummy backend for unit tests (canned responses + linear-blend scalable mode)
- YAML spec loader, composite score (four-category weighted), rich terminal + JSON + JUnit + Markdown reports
- Typer CLI:
run,gate,check,diff,autogen,doctor,report .dlmbridge (dlm-sway[dlm]): resolver + full-battery autogen- Matplotlib visualizations (
dlm-sway[viz]): SIS bar chart, ablation curve, KL histogram
Known gaps
- Null-adapter baseline is scaffolded but its HF-level materialization (building random-init LoRAs at matched rank) is not yet wired — probes fall back to fixed thresholds until the next milestone.
- Custom backend entry-point dispatch (
kind: custom) is stubbed but not implemented. - MLX backend is registered as a future-milestone target; all MLX paths raise
BackendNotAvailableError. - PyPI publication of the
dlm-swaywheel is pending a clean CI release workflow.
View source
| 1 | # Changelog |
| 2 | |
| 3 | ## 0.1.0.dev0 — 2026-04-20 |
| 4 | |
| 5 | Initial pre-alpha. Full 11-primitive battery shipped. |
| 6 | |
| 7 | ### Primitives |
| 8 | |
| 9 | - **Adherence** |
| 10 | - `delta_kl` — mean JS/KL divergence between base and fine-tuned next-token distributions |
| 11 | - `adapter_revert` — reversion under adversarial paraphrase (needs `sway-eval[semsim]`) |
| 12 | - `prompt_collapse` — exponential-decay fit of divergence over context length |
| 13 | - **Attribution** |
| 14 | - `section_internalization` *(flagship)* — per-section `effective_sis` with leak check |
| 15 | - `paraphrase_invariance` — memorization vs. generalization, intent-aware |
| 16 | - `preference_flip` — DPO/ORPO chosen/rejected margin inversion |
| 17 | - **Calibration** |
| 18 | - `style_fingerprint` — 6-dim numpy-only stylistic shift vs. document |
| 19 | - `calibration_drift` — general-knowledge regression on a packaged 30-item pack |
| 20 | - `leakage` — greedy LCS recall + perturbation fragility |
| 21 | - **Ablation** |
| 22 | - `adapter_ablation` *(signature primitive)* — λ-scaled divergence curve with linearity, saturation, overshoot metrics |
| 23 | - **Baseline** |
| 24 | - `null_adapter` — stats scaffolding for z-score calibration (implementation pending) |
| 25 | |
| 26 | ### Infrastructure |
| 27 | |
| 28 | - `DifferentialBackend` + `ScalableDifferentialBackend` protocols |
| 29 | - HuggingFace + PEFT backend with `disable_adapter` / `set_adapter` toggling and LoRA-scale mutation |
| 30 | - Dummy backend for unit tests (canned responses + linear-blend scalable mode) |
| 31 | - YAML spec loader, composite score (four-category weighted), rich terminal + JSON + JUnit + Markdown reports |
| 32 | - Typer CLI: `run`, `gate`, `check`, `diff`, `autogen`, `doctor`, `report` |
| 33 | - `.dlm` bridge (`dlm-sway[dlm]`): resolver + full-battery autogen |
| 34 | - Matplotlib visualizations (`dlm-sway[viz]`): SIS bar chart, ablation curve, KL histogram |
| 35 | |
| 36 | ### Known gaps |
| 37 | |
| 38 | - Null-adapter baseline is scaffolded but its HF-level materialization (building random-init LoRAs at matched rank) is not yet wired — probes fall back to fixed thresholds until the next milestone. |
| 39 | - Custom backend entry-point dispatch (`kind: custom`) is stubbed but not implemented. |
| 40 | - MLX backend is registered as a future-milestone target; all MLX paths raise `BackendNotAvailableError`. |
| 41 | - PyPI publication of the `dlm-sway` wheel is pending a clean CI release workflow. |