From 376c758b1a999e666fe00e7686365de2000b91e9 Mon Sep 17 00:00:00 2001 From: BillWang Date: Tue, 18 Aug 2026 16:09:13 +0800 Subject: [PATCH] Polish GitHub project presentation --- CITATION.cff | 34 +- README.md | 1308 +++++++++++++++++++++--------------------- docs/assets/hero.png | Bin 78999 -> 67312 bytes docs/assets/hero.py | 237 +++++--- 4 files changed, 855 insertions(+), 724 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 20f8f02..4641a95 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -1,17 +1,17 @@ -cff-version: 1.2.0 -message: "If you use this software, please cite it as below." -authors: - - family-names: Wang - given-names: Bill - alias: BillWang -title: "denser: Behavior-Fidelity Audits for Version-Controlled LLM Context" -version: 0.2.0-alpha.1 -date-released: 2026-08-18 -url: "https://github.com/Evostructs/denser" -license: Apache-2.0 -keywords: - - large-language-models - - context-optimization - - regression-testing - - agents - - behavior-evaluation +cff-version: 1.2.0 +message: "If you use this software, please cite it as below." +authors: + - family-names: Wang + given-names: Bill + alias: BillWang +title: "denser: Behavior-Fidelity Audits for Version-Controlled LLM Context" +version: 0.2.0-alpha.3 +date-released: 2026-08-18 +url: "https://github.com/Evostructs/denser" +license: Apache-2.0 +keywords: + - large-language-models + - context-optimization + - regression-testing + - agents + - behavior-evaluation diff --git a/README.md b/README.md index c926872..ea15bf4 100644 --- a/README.md +++ b/README.md @@ -1,314 +1,45 @@ -# denser +

denser

-> Prove which LLM context can be removed or rewritten without changing required behavior. +

Behavior-validated context reduction for LLM agents

+

Remove unnecessary visible context. Preserve required behavior. Measure actual full-input savings.

-[![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) -[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) -[![CI](https://github.com/Evostructs/denser/actions/workflows/ci.yml/badge.svg)](https://github.com/Evostructs/denser/actions/workflows/ci.yml) -![Status: alpha](https://img.shields.io/badge/status-alpha-orange.svg) +

+ CI + Release v0.2.0-alpha.3 + Python 3.10+ + Apache 2.0 license +

-![Experimental density sweep across instruction roles](docs/assets/hero.png) +

+ Install · + Evidence · + Reproduce · + Evidence standard +

-> [!IMPORTANT] -> denser is an alpha research prototype. It does not replace a model provider's -> runtime compaction. It audits a baseline and a proposed context variant against -> asset-specific behavior cases, and requires a known-bad negative control before -> reporting observed preservation. Evidence applies only to the exact workload, -> execution model, and runtime configuration used. -> See [`docs/DESIGN.md`](docs/DESIGN.md) for the evidence standard and the active -> implementation plan. - ---- +![denser — behavior-validated context reduction](docs/assets/hero.png) -## Featured: automatic context pruning in a normal Codex tool workflow - -`denser minimize-context` takes a manifest of visible context components, -tries removing optional components one at a time, and keeps a removal only when -behavior remains identical and a known-bad control still fails. Errors, -improvements that change behavior, and insensitive tests all fail closed. +## Evidence at a glance -The first tool-using pilot used Codex CLI 0.147.0, `gpt-5.6-sol`, medium -reasoning, and the `standard` capability profile. Both tasks had to read a local -JSON file whose identifier and arbitrary policy code were absent from the -prompt, so the expected answers could not be recovered from a text-only input. +In the first committed tool-using pilot, denser automatically removed an +irrelevant 17,236-byte handbook while retaining the release and CI policies +required by local-file tasks. -| Workload | Complete context | Selected context | -|---|---:|---:| -| Local release-record decision | 3/3 | 3/3 | -| Local CI-record decision | 3/3 | 3/3 | - -The selector removed a 17,236-byte archived handbook but rejected attempts to -remove the release or CI policy because each caused a covered regression. The -final three-trial audit completed with zero operational errors: - -| Measurement | Complete context | Selected context | Reduction | +| Check | Complete context | Selected context | Observed result | |---|---:|---:|---:| -| Provider-reported full input, 6 calls | 277,871 | 243,210 | **12.47%** | -| Visible bundle estimate | 4,626 | 303 | 93.45% | - -Shell access, plugins, and skill search were not disabled. The benchmark's -standard profile did disable apps, memories, and multi-agent execution for -reproducibility, identically on both sides; the measured 12.47% delta comes -from the selected bundle, not from changing that runtime profile. This is one -synthetic two-task pilot, not proof that every repository can remove 12%. - -See the [component-selection case study](docs/CODEX_CONTEXT_SELECTION_CASE_STUDY.md), -the [manifest and tool fixtures](examples/context_bundles/tool_workflows/), and -the [complete final audit](examples/context_bundles/tool_workflows/selection.codex-standard.3x.2026-08-18.json). - -### Earlier result: text-only capability selection - -For pre-bundled decisions that need no files or tools, the explicit -`text-only/v1` profile reduced full input by 10.55% and 10.60% across two -synthetic workloads, with 42/42 expected decisions per profile. That remains a -narrow capability-selection result, not the main product claim. A -10.3%-shorter instruction rewrite had reduced complete Codex input by only -about 0.25%, which is why denser now targets whole visible context bundles. +| Required behavior | 6/6 | 6/6 | preserved on covered cases | +| Provider-reported full input | 277,871 | 243,210 | **12.47% fewer tokens** | +| Operational errors | 0 | 0 | none | +| Known-bad control | — | 0/6 | all regressions detected | -See the earlier [text-only case study](docs/CODEX_TEXT_ONLY_CASE_STUDY.md) and -[`paired three-trial audit`](examples/project_instructions/codex-text-only-profile-audit.paired-3x-final.2026-08-17.json). +This establishes behavior preservation only for the committed workload and +settings. It does not claim that every repository can remove 12% of its input. +The [case study](docs/CODEX_CONTEXT_SELECTION_CASE_STUDY.md), +[fixtures](examples/context_bundles/tool_workflows/), and +[complete audit](examples/context_bundles/tool_workflows/selection.codex-standard.3x.2026-08-18.json) +are all reviewable in this repository. -### Earlier public-project transfer check: Astral uv - -The same frozen profile was then tested against decision rules adapted from -public Astral uv agent prompts at commit -[`5cc226096`](https://github.com/astral-sh/uv/tree/5cc226096ea4424d021be17259bae51d761a827b). -The 14 cases were committed before execution, then run three times per profile: - -| Workload | Quality | Full input per call | Reduction | -|---|---:|---:|---:| -| uv issue-triage decisions | 24/24 in each profile | 20,335.25 -> 18,200.75 | 10.50% | -| uv workflow-failure decisions | 18/18 in each profile | 20,345.83 -> 18,160.83 | 10.74% | - -All 84 calls completed with zero operational errors and zero transport -fallbacks. This is an external-project corpus run by denser's maintainers, not -an independent reproduction or an endorsement by Astral. See the -[frozen corpus and boundaries](examples/project_instructions/03_uv_public_pilot/README.md) -and the [complete per-call report](examples/project_instructions/03_uv_public_pilot/codex-profile-audit.paired-3x.2026-08-18.json). - ---- - -## The problem - -In the agent era, the same text gets loaded into an LLM **every turn**: - -- Skills reloaded on each relevant request -- System prompts prefixed to every call -- Tool descriptions parsed thousands of times per session -- Memory entries competing for a finite context budget - -Codex and other agent runtimes can already compact growing conversation history. -That solves a capacity problem, but it does not prove which requirements, -permissions, decisions, or unfinished work survived a context change. For Codex, -automatic history compaction is an explicit runtime feature with a configurable -threshold; see the -[official configuration reference](https://learn.chatgpt.com/docs/config-file/config-reference). - -denser focuses on the missing evidence layer: compare a baseline with a rewritten, -selectively loaded, or externally compacted text snapshot; replay realistic -behavior cases; verify that a known-bad control is caught; and report actual -end-to-end input usage separately from asset-only length. - ---- - -## What denser does - -```bash -denser minimize-context context-bundle.json --suite replay.json \ - --backend codex-cli --codex-capability-profile standard \ - --selection-trials 1 --validation-trials 3 --parallelism 6 \ - --out selected-context.md --json-out selection-evidence.json - -denser audit AGENTS.md AGENTS.variant.md --type claude_md \ - --suite replay.holdout.json \ - --negative-control AGENTS.negative-control.md \ - --backend codex-cli --model gpt-5.6-sol --n-trials 3 - -denser inspect --type skill my_skill.md -denser optimize --type skill my_skill.md \ - --out my_skill.optimized.md \ - --evidence-out my_skill.evidence.json -denser compress --type skill my_skill.md -denser verify --type skill my_skill.md my_skill.dense.md -denser replay --type claude_md AGENTS.md --suite replay.json \ - --compare-to AGENTS.variant.md --backend codex-cli - -# Only for tasks that need no tools, files, network, plugins, skills, or memory -denser replay --type claude_md AGENTS.md --suite replay.json \ - --backend codex-cli --codex-capability-profile text-only -``` - -`minimize-context` is the automatic selective-loading interface. A versioned -manifest names the visible context components, marks non-removable components, -and declares which required component to drop for the known-bad control. The -selector tests optional components largest first, retains every uncertain or -behavior-changing component, then repeats a final audit. It operates on -user-supplied visible text; it does not inspect hidden provider prefixes or -compact conversation history. - -`audit` is the primary lower-level interface. It runs paired baseline/variant replay, -compares every covered case, checks whether a known-bad negative control causes -a regression, and reports both asset-only estimates and provider-reported full -input usage. Equal scores without a detected negative control are -`inconclusive`, not proof of preservation. - -`inspect` performs an offline scan and produces a source-linked -preservation contract: triggers, exclusions, hard constraints, safety and -permission rules, output obligations, failure paths, and protected literals. -It makes no model or network calls. `optimize` gives the contract to the -generator, samples multiple candidates, verifies each one, and recommends the -shortest passing option; the original always remains a candidate. It never -overwrites the source or an existing output file. `verify` rejects missing -metadata and protected literals, and leaves changed obligations at `review` -until they have deterministic or explicitly mapped behavior evidence. -`replay` is the lower-level runner. It executes realistic requests with the instruction asset in the backend's -system-instruction position, scores outputs with deterministic rules, and -randomizes paired original/candidate call order. The CLI reports each completed -call with total progress, asset side, case, and trial; use `--no-progress` for -quiet runs. `compress`, `optimize`, `eval`, and `curve` remain candidate-generation -or research tools. A shorter candidate is not a result until `audit` can produce -sensitive behavior evidence for it. - ---- - -## Three differentiators - -### 1. Sensitivity before certification - -A baseline and variant can receive identical scores because they behave the -same, or because the workload is too weak to notice the difference. `audit` -requires a known-bad negative control to regress before it returns -`preserved`. Without that control, the result remains `inconclusive`. - -### 2. Deterministic, reproducible behavior replay - -Replay suites exercise real triggers, near misses, permission boundaries, -failure paths, and adversarial requests. Outputs are checked with explicit -exact, contains, or regular-expression rules; operational errors remain -separate from content failures. Paired baseline/variant calls use a recorded, -randomized order. - -### 3. Honest end-to-end measurement - -Reports keep two denominators separate: - -- local asset estimates show how much the edited file changed; -- provider-reported input totals show what changed across the complete run. - -This prevents a 10% file reduction from being presented as a 10% runtime or -cost reduction when the edited file is only a small part of the full context. - -## Optional candidate generation - -### Role-aware rewriting - -Different instruction assets have different failure modes. denser currently -ships six rewrite profiles. Their density ranges are exploratory generation -defaults, not measured optima: - -| Task type | What to preserve | What to strip | Exploratory target | -|---|---|---|---| -| `skill` | trigger rules, hard constraints, 1-2 canonical examples | meta-commentary, redundant examples, hedging | 0.30 – 0.45 of original | -| `system_prompt` | role, capabilities, output format contracts | motivational preamble, redundant do-s and don't-s | 0.40 – 0.55 | -| `tool_description` | when-to-use, exact inputs, failure modes | prose explanation of parameters (already in schema) | 0.45 – 0.60 | -| `memory_entry` | the fact + the "why" (triggers judgment) | example scenarios, timestamps | 0.58 – 0.78 | -| `claude_md` | project conventions, non-obvious invariants | API docs, auto-discoverable structure | 0.35 – 0.50 | -| `one_shot_doc` | the actionable instruction | background context that's implicit | 0.40 – 0.60 | - -### Structural checks and lower-level replay - -Compare an original and candidate with a deterministic suite written for that -asset: - -```bash -denser replay --type claude_md AGENTS.md --suite replay.json \ - --compare-to AGENTS.dense.md --backend codex-cli \ - --model gpt-5.6-sol --codex-reasoning-effort medium \ - --n-trials 3 --seed 20260817 -``` - -- Built-in fixtures check for structural signals such as an explicit trigger or - hard constraint. -- Replay suites exercise real triggers, near misses, permission boundaries, - failure paths, and adversarial requests against the execution backend. -- Outputs are checked with exact, contains, or regular-expression rules; model - and service errors remain separate from content failures. -- The Codex CLI adapter uses an independent authenticated CLI, an ephemeral - read-only turn, and records sanitized per-call status, latency, and token - usage without copying local authentication or raw diagnostics into reports. -- Its optional `text-only` capability profile removes unused tool and extension - context for pre-bundled text tasks. It is not a substitute for `standard` - when the workload needs files, commands, network access, plugins, apps, - skills, or memory. -- Replay report `v3` introduced a sanitized top-level runtime configuration: - backend kind, model, Codex CLI version, reasoning effort, timeout, isolation - flags, system-proxy choice, and disabled features. Executable paths, account - details, credentials, thread identifiers, and raw diagnostics are excluded. -- Holdout suite `v2` binds the source and candidate hashes to a candidate-freeze - commit. Replay report `v4` carries that freeze and the non-sensitive authoring - record, and refuses changed assets before making a model call. -- Reports show observed pass rates. They do not yet compute a - confidence interval or automatically establish behavioral equivalence. - -See the synthetic redistributable -[`AGENTS.md` release-operations case](examples/project_instructions/01_codex_release_ops/README.md) -and the licensed upstream -[`openai-python` policy case](examples/project_instructions/02_openai_python_version_policy/README.md) -for complete sources, candidates, five-category workloads, provenance, and -reproduction commands. The second case freezes its candidate before an -independent process authors the holdout. - -Replay JSON contains raw model outputs. Store it with the same access controls -as the instruction asset and workload prompts. - -### Experimental density sweep - -`denser curve` samples candidates at several target densities and plots the -observed scores. The relationship is not assumed to be concave: it may be -monotone, flat, noisy, multi-peaked, or favor the original. - -``` -task pass-rate - ▲ -1.0 ┤ ╭────╮ - │ ╭─╯ ╰─╮ - │ ╱ ╲ - │ ╱ ╲ -0.5 ┤ ╱ ╲ - │╱ ╲___ - └────────────────────────▶ - 1.0 0.6 0.4 0.2 0.0 - compression ratio - (smaller = denser) -``` - -The current implementation also draws an optional quadratic fit. Treat it as a -visual aid, not proof of an optimum. - -```bash -denser curve --type skill my_skill.md --out curve.png -``` - -See [`docs/DESIGN.md`](docs/DESIGN.md) for the active evidence standard and -[`docs/WHITEPAPER.md`](docs/WHITEPAPER.md) for the original research hypothesis. - ---- - -## Why reviewable context snapshots - -Skills, system/developer instructions, tool descriptions, project rules, and -memory policies are reused and often version controlled. Exported before/after -history summaries can also become reviewable snapshots. These artifacts make -behavior changes reproducible in a way that an opaque runtime event is not. - ---- - -## Installation - -denser can be used as a regular CLI/library with any agent, or as an interactive -skill inside Codex or Claude Code. - -### Option 1 — CLI and Python library (agent-independent) +## Install in 60 seconds ```bash git clone https://github.com/Evostructs/denser.git @@ -317,346 +48,645 @@ python -m pip install . denser --version ``` -This is the general installation for scripts, CI, benchmarks, and Python use. -Commands that call a model still need the corresponding provider or authenticated -CLI; deterministic inspection commands do not. - -### Option 2 — OpenAI Codex skill (no separate API key or Python) - -If Codex is not installed, the official cross-platform npm option is: - -```bash -npm install -g @openai/codex -codex -``` - -On first launch, choose **Sign in with ChatGPT** or another available sign-in -method. See the [official Codex CLI installation -guide](https://learn.chatgpt.com/docs/codex/cli). - -Then ask Codex to install denser from this repository: - -> `$skill-installer install the denser-compress skill from https://github.com/Evostructs/denser/tree/main/denser/skills/denser-compress` - -Invoke it with `$denser-compress`, or describe a matching compression task. -Codex uses its existing authenticated session; denser needs no separate API key. - -### Option 3 — Claude Code skill (no separate API key or Python) - -If you use Claude Code, install the `denser-compress` skill: - -```bash -git clone https://github.com/Evostructs/denser.git -bash denser/denser/skills/install.sh # macOS / Linux -# or: denser\denser\skills\install.ps1 # Windows PowerShell -``` - -Restart Claude Code. Then in any session: - -> "compress this skill at `~/.claude/skills/my-skill/SKILL.md`" - -The skill runs inside Claude Code's authenticated session. For manual Codex and -Claude Code installation, verification, and removal, see -[`denser/skills/README.md`](denser/skills/README.md). - ---- - -## Quickstart - -### Audit a context variant - -```python -from denser import audit_context, load_replay_suite - -suite = load_replay_suite("replay.holdout.json") -report = audit_context( - baseline=baseline_text, - variant=variant_text, - negative_control=known_bad_text, - task_type="claude_md", - tasks=suite, - backend=execution_backend, - n_trials=3, - seed=20260817, -) - -print(report.decision.value) -print(report.observed_input_reduction_pct) -``` - -`preserved` means the variant matched every covered baseline case and the same -suite caught the known-bad control. `regressed` means the variant lost covered -behavior. Improvements are sent to `review`; missing or insensitive controls -and operational failures are `inconclusive`. - -### Inspect and verify offline - -```python -from denser import inspect, verify -from pathlib import Path - -original = Path("my_skill.md").read_text(encoding="utf-8") -candidate = Path("my_skill.dense.md").read_text(encoding="utf-8") - -contract = inspect(original, task_type="skill") -report = verify( - original, - candidate, - task_type="skill", - inspection=contract, -) - -print(report.decision.value) -print(report.missing_literals) -``` - -The offline verifier exits `0` for `pass`, `3` for `review`, and `2` for -`reject`. A changed semantic obligation remains at `review` unless it is -retained verbatim or covered by an explicitly mapped behavior task. Custom -`GoldenTask` objects map evidence with `covers=("C003", ...)`; service errors -are reported separately and never count as successful behavior evidence. - -For deterministic execution rather than judge-based scoring, load a replay -suite and pass it to `verify` with the same backend that will execute the asset: - -```python -from denser import load_replay_tasks, verify - -suite = load_replay_tasks("replay.json") -report = verify( - original, - candidate, - task_type="claude_md", - replay_tasks=suite, - execution_backend=my_backend, - replay_seed=20260817, -) -``` - -### Optimize with multiple candidates - -```python -from denser import optimize - -report = optimize( - original, - task_type="skill", - target_densities=(0.30, 0.40, 0.50), - source_name="my_skill.md", -) - -print(report.recommended_candidate_id) -print(report.recommendation_reason) -print(report.recommended.text) -``` - -The returned report uses the versioned -`denser.optimization-report/v1` schema and records source hash, candidates, -contract coverage, model identifiers, logical model calls, operational errors, -token-counting method, and timing. The default counter is the explicitly -approximate offline `heuristic-v1`. For provider-aware Anthropic counts, pass -`token_counter=AnthropicTokenCounter(model="...")`; it raises on failure rather -than silently substituting an estimate. CLI evidence JSON includes source and -candidate text; keep it with the same access controls as the instruction asset. -Without mapped behavior tasks, semantic rewrites remain at `review`, so a -conservative run may correctly recommend the original. +Use denser as a regular CLI/library with any agent, or install the bundled skill +for [OpenAI Codex](#option-2--openai-codex-skill-no-separate-api-key-or-python) +or [Claude Code](#option-3--claude-code-skill-no-separate-api-key-or-python). -### Compress a skill - -```python -from denser import compress - -with open("my_skill.md") as f: - result = compress(f.read(), task_type="skill") - -print(result.compressed) -print(f"Saved {result.savings_pct:.0%} tokens") -print(f"Rationale:\n{result.rationale}") -``` - -### Evaluate a compression - -```python -from denser import compare, compress -from pathlib import Path - -text = Path("my_skill.md").read_text(encoding="utf-8") -result = compress(text, task_type="skill") - -report = compare( - original=text, - compressed=result.compressed, - task_type="skill", - n_trials=3, -) - -print( - f"Observed structural-check pass rate: " - f"{report.original.overall_pass_rate:.2%} → " - f"{report.compressed.overall_pass_rate:.2%}" -) -``` - -### Plot the density curve - -```python -from denser import curve - -c = curve(text, task_type="skill", densities=(0.3, 0.5, 0.7, 1.0)) -c.plot(out="curve.png") -print(f"Best observed/fitted density: {c.peak_density:.2f}") -``` - ---- - -## Supported backends - -denser ships three generation backends and one replay-only local CLI adapter: - -```python -from denser.backends import ( - ClaudeBackend, - CodexCliBackend, - OpenAICompatibleBackend, - SiliconFlowBackend, -) - -# Anthropic adapter used by the current default -ClaudeBackend(model="claude-opus-4-6") - -# SiliconFlow preset for its OpenAI-compatible endpoint -SiliconFlowBackend(model="zai-org/GLM-4.6") - -# Generic Chat Completions-compatible endpoint -OpenAICompatibleBackend(base_url="https://api.openai.com/v1", model="gpt-4o") - -# Authenticated local Codex CLI; available to `denser audit` and `denser replay` -CodexCliBackend(model="gpt-5.6-sol", reasoning_effort="medium") -``` - -On Windows, install the official `@openai/codex` package independently. The -adapter discovers `%APPDATA%\\npm\\codex.cmd`, accepts `DENSER_CODEX_CLI` or -`--codex-cli-path`, and deliberately rejects the desktop app's private -WindowsApps executable. - -### Which backend to use - -Backend quality is asset- and workload-dependent. The observations in -[`docs/CROSS_MODEL_NOTES.md`](docs/CROSS_MODEL_NOTES.md) come from one source -asset with one generation per model plus a separate repeated behavior-replay -follow-up on two project-instruction cases. They are useful for reproducing -prompt-following differences, but they do not support general model rankings. -Validate the candidate on the model that will execute the instruction. - -For replay providers whose reasoning tokens share the output allowance, use -`--openai-thinking-mode disabled` for short exact-label tasks when the provider -supports the compatible `thinking` field. The default remains -`provider-default`; denser does not silently change provider behavior. - ---- - -## Benchmarks - -No general context-optimization benchmark is published yet. The repository -currently contains ten before/after examples, including two `AGENTS.md` cases. -The second uses a candidate-frozen, chronologically blind holdout and material -negative controls, but the public examples as a whole are not an independent -evaluation dataset. - -The runner in [`benchmarks/`](benchmarks/) can execute the current corpus with a -live backend. Results are publishable only when raw output, model/settings, -asset-specific behavior tasks, provenance, and a reproduction command are -committed together. - ---- - -## Integrations - -### Pre-commit hook - -Add an advisory size review for LLM-input files (skills, `CLAUDE.md`, system -prompts, memory entries) with a single copy: - -```bash -cp integrations/pre-commit-hook.sh .git/hooks/pre-commit -chmod +x .git/hooks/pre-commit -``` - -The hook uses a local estimate, makes no API call, and never blocks a commit on -length alone. The reference sizes are review prompts, not quality thresholds. -See [`integrations/README.md`](integrations/README.md). - -### Agent skill - -The portable `denser-compress` skill works in both OpenAI Codex and Claude Code -without a separate provider API key. See -[`denser/skills/README.md`](denser/skills/README.md) for tool-specific install -commands. - ---- - -## Roadmap - -- **Phase 0** — align claims, terminology, integrations, and metadata with the committed evidence -- **Phase 1** — preservation contract, source mapping, multi-candidate optimization, and evidence report -- **Phase 2** — deterministic replay and one candidate-frozen holdout are available; broader external workloads remain -- **Phase 3** — context audit with negative-control sensitivity and honest end-to-end token measurement is available -- **Phase 4** — audit real selective-loading and runtime-compaction snapshots across long-horizon tasks -- **Phase 5** — external pilot projects, reproducible releases, and evaluation adapters - -See [`docs/DESIGN.md`](docs/DESIGN.md) for scope, evidence rules, and delivery -gates. [`PROJECT_PLAN.md`](PROJECT_PLAN.md) is retained as the historical launch -plan. - ---- - -## Contributing - -Contributions welcome. See [`docs/CONTRIBUTING.md`](docs/CONTRIBUTING.md). - -Particularly useful: - -- Submit a realistic instruction asset with provenance and redistribution terms -- Add positive, negative, exceptional, or adversarial behavior cases -- Add a known-bad negative control that proves a replay suite is sensitive -- Capture a reproducible before/after context snapshot across runtime compaction -- Report a candidate that passed a structural check but failed in real use -- Reproduce an observation with committed model settings and raw results - ---- - -## Acknowledgements - -- **Bill Wang ([@Evostructs](https://github.com/Evostructs))** — project creator - and maintainer. -- [OpenAI Codex](https://openai.com/codex/) — development and validation support - for this release. -- [Claude](https://claude.com/product/overview) — development support for - earlier releases. - ---- - -## Citation - -If you use `denser` in research or writing, please cite: - -```bibtex -@software{wang2026denser, - author = {Wang, Bill}, - title = {denser: Behavior-Fidelity Audits for Version-Controlled LLM Context}, - year = {2026}, - url = {https://github.com/Evostructs/denser} -} -``` +> [!IMPORTANT] +> denser is an alpha research prototype. It does not replace a model provider's +> runtime compaction. It tests reviewable context variants against explicit +> behavior cases and requires a known-bad negative control before reporting +> observed preservation. Evidence applies only to the exact workload, execution +> model, and runtime configuration used. --- -## License - -Apache 2.0 — see [`LICENSE`](LICENSE). Redistributed upstream material and -modification notices are listed in [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md). - ---- +## How the featured pilot works -*denser is an independent open-source project and is not affiliated with -Anthropic or OpenAI.* +`denser minimize-context` takes a manifest of visible context components, +tries removing optional components one at a time, and keeps a removal only when +covered behavior remains identical and a known-bad control still fails. Errors, +behavior changes, and insensitive tests all fail closed. + +| Context component | Decision | Evidence | +|---|---|---| +| Archived handbook | Removed | both covered tasks preserved | +| Release policy | Kept | release task regressed without it | +| CI policy | Kept | CI task regressed without it | +| Execution contract | Required | used to construct the sensitivity control | + +The pilot used Codex CLI 0.147.0, `gpt-5.6-sol`, medium reasoning, three trials +per task and side, and zero operational errors. Both tasks had to read local +JSON records containing identifiers absent from the prompt. Shell access, +plugins, and skill search remained available on both sides. Apps, memories, and +multi-agent execution were disabled identically for reproducibility, so the +measured 12.47% difference came from context selection rather than a capability +change. + +See the [component-selection case study](docs/CODEX_CONTEXT_SELECTION_CASE_STUDY.md) +for the reproduction command, exact boundaries, and full evidence chain. + +### Earlier result: text-only capability selection + +For pre-bundled decisions that need no files or tools, the explicit +`text-only/v1` profile reduced full input by 10.55% and 10.60% across two +synthetic workloads, with 42/42 expected decisions per profile. That remains a +narrow capability-selection result, not the main product claim. A +10.3%-shorter instruction rewrite had reduced complete Codex input by only +about 0.25%, which is why denser now targets whole visible context bundles. + +See the earlier [text-only case study](docs/CODEX_TEXT_ONLY_CASE_STUDY.md) and +[`paired three-trial audit`](examples/project_instructions/codex-text-only-profile-audit.paired-3x-final.2026-08-17.json). + +### Earlier public-project transfer check: Astral uv + +The same frozen profile was then tested against decision rules adapted from +public Astral uv agent prompts at commit +[`5cc226096`](https://github.com/astral-sh/uv/tree/5cc226096ea4424d021be17259bae51d761a827b). +The 14 cases were committed before execution, then run three times per profile: + +| Workload | Quality | Full input per call | Reduction | +|---|---:|---:|---:| +| uv issue-triage decisions | 24/24 in each profile | 20,335.25 -> 18,200.75 | 10.50% | +| uv workflow-failure decisions | 18/18 in each profile | 20,345.83 -> 18,160.83 | 10.74% | + +All 84 calls completed with zero operational errors and zero transport +fallbacks. This is an external-project corpus run by denser's maintainers, not +an independent reproduction or an endorsement by Astral. See the +[frozen corpus and boundaries](examples/project_instructions/03_uv_public_pilot/README.md) +and the [complete per-call report](examples/project_instructions/03_uv_public_pilot/codex-profile-audit.paired-3x.2026-08-18.json). + +--- + +## The problem + +In the agent era, the same text gets loaded into an LLM **every turn**: + +- Skills reloaded on each relevant request +- System prompts prefixed to every call +- Tool descriptions parsed thousands of times per session +- Memory entries competing for a finite context budget + +Codex and other agent runtimes can already compact growing conversation history. +That solves a capacity problem, but it does not prove which requirements, +permissions, decisions, or unfinished work survived a context change. For Codex, +automatic history compaction is an explicit runtime feature with a configurable +threshold; see the +[official configuration reference](https://learn.chatgpt.com/docs/config-file/config-reference). + +denser focuses on the missing evidence layer: compare a baseline with a rewritten, +selectively loaded, or externally compacted text snapshot; replay realistic +behavior cases; verify that a known-bad control is caught; and report actual +end-to-end input usage separately from asset-only length. + +--- + +## What denser does + +```bash +denser minimize-context context-bundle.json --suite replay.json \ + --backend codex-cli --codex-capability-profile standard \ + --selection-trials 1 --validation-trials 3 --parallelism 6 \ + --out selected-context.md --json-out selection-evidence.json + +denser audit AGENTS.md AGENTS.variant.md --type claude_md \ + --suite replay.holdout.json \ + --negative-control AGENTS.negative-control.md \ + --backend codex-cli --model gpt-5.6-sol --n-trials 3 + +denser inspect --type skill my_skill.md +denser optimize --type skill my_skill.md \ + --out my_skill.optimized.md \ + --evidence-out my_skill.evidence.json +denser compress --type skill my_skill.md +denser verify --type skill my_skill.md my_skill.dense.md +denser replay --type claude_md AGENTS.md --suite replay.json \ + --compare-to AGENTS.variant.md --backend codex-cli + +# Only for tasks that need no tools, files, network, plugins, skills, or memory +denser replay --type claude_md AGENTS.md --suite replay.json \ + --backend codex-cli --codex-capability-profile text-only +``` + +`minimize-context` is the automatic selective-loading interface. A versioned +manifest names the visible context components, marks non-removable components, +and declares which required component to drop for the known-bad control. The +selector tests optional components largest first, retains every uncertain or +behavior-changing component, then repeats a final audit. It operates on +user-supplied visible text; it does not inspect hidden provider prefixes or +compact conversation history. + +`audit` is the primary lower-level interface. It runs paired baseline/variant replay, +compares every covered case, checks whether a known-bad negative control causes +a regression, and reports both asset-only estimates and provider-reported full +input usage. Equal scores without a detected negative control are +`inconclusive`, not proof of preservation. + +`inspect` performs an offline scan and produces a source-linked +preservation contract: triggers, exclusions, hard constraints, safety and +permission rules, output obligations, failure paths, and protected literals. +It makes no model or network calls. `optimize` gives the contract to the +generator, samples multiple candidates, verifies each one, and recommends the +shortest passing option; the original always remains a candidate. It never +overwrites the source or an existing output file. `verify` rejects missing +metadata and protected literals, and leaves changed obligations at `review` +until they have deterministic or explicitly mapped behavior evidence. +`replay` is the lower-level runner. It executes realistic requests with the instruction asset in the backend's +system-instruction position, scores outputs with deterministic rules, and +randomizes paired original/candidate call order. The CLI reports each completed +call with total progress, asset side, case, and trial; use `--no-progress` for +quiet runs. `compress`, `optimize`, `eval`, and `curve` remain candidate-generation +or research tools. A shorter candidate is not a result until `audit` can produce +sensitive behavior evidence for it. + +--- + +## Three differentiators + +### 1. Sensitivity before certification + +A baseline and variant can receive identical scores because they behave the +same, or because the workload is too weak to notice the difference. `audit` +requires a known-bad negative control to regress before it returns +`preserved`. Without that control, the result remains `inconclusive`. + +### 2. Deterministic, reproducible behavior replay + +Replay suites exercise real triggers, near misses, permission boundaries, +failure paths, and adversarial requests. Outputs are checked with explicit +exact, contains, or regular-expression rules; operational errors remain +separate from content failures. Paired baseline/variant calls use a recorded, +randomized order. + +### 3. Honest end-to-end measurement + +Reports keep two denominators separate: + +- local asset estimates show how much the edited file changed; +- provider-reported input totals show what changed across the complete run. + +This prevents a 10% file reduction from being presented as a 10% runtime or +cost reduction when the edited file is only a small part of the full context. + +## Optional candidate generation + +### Role-aware rewriting + +Different instruction assets have different failure modes. denser currently +ships six rewrite profiles. Their density ranges are exploratory generation +defaults, not measured optima: + +| Task type | What to preserve | What to strip | Exploratory target | +|---|---|---|---| +| `skill` | trigger rules, hard constraints, 1-2 canonical examples | meta-commentary, redundant examples, hedging | 0.30 – 0.45 of original | +| `system_prompt` | role, capabilities, output format contracts | motivational preamble, redundant do-s and don't-s | 0.40 – 0.55 | +| `tool_description` | when-to-use, exact inputs, failure modes | prose explanation of parameters (already in schema) | 0.45 – 0.60 | +| `memory_entry` | the fact + the "why" (triggers judgment) | example scenarios, timestamps | 0.58 – 0.78 | +| `claude_md` | project conventions, non-obvious invariants | API docs, auto-discoverable structure | 0.35 – 0.50 | +| `one_shot_doc` | the actionable instruction | background context that's implicit | 0.40 – 0.60 | + +### Structural checks and lower-level replay + +Compare an original and candidate with a deterministic suite written for that +asset: + +```bash +denser replay --type claude_md AGENTS.md --suite replay.json \ + --compare-to AGENTS.dense.md --backend codex-cli \ + --model gpt-5.6-sol --codex-reasoning-effort medium \ + --n-trials 3 --seed 20260817 +``` + +- Built-in fixtures check for structural signals such as an explicit trigger or + hard constraint. +- Replay suites exercise real triggers, near misses, permission boundaries, + failure paths, and adversarial requests against the execution backend. +- Outputs are checked with exact, contains, or regular-expression rules; model + and service errors remain separate from content failures. +- The Codex CLI adapter uses an independent authenticated CLI, an ephemeral + read-only turn, and records sanitized per-call status, latency, and token + usage without copying local authentication or raw diagnostics into reports. +- Its optional `text-only` capability profile removes unused tool and extension + context for pre-bundled text tasks. It is not a substitute for `standard` + when the workload needs files, commands, network access, plugins, apps, + skills, or memory. +- Replay report `v3` introduced a sanitized top-level runtime configuration: + backend kind, model, Codex CLI version, reasoning effort, timeout, isolation + flags, system-proxy choice, and disabled features. Executable paths, account + details, credentials, thread identifiers, and raw diagnostics are excluded. +- Holdout suite `v2` binds the source and candidate hashes to a candidate-freeze + commit. Replay report `v4` carries that freeze and the non-sensitive authoring + record, and refuses changed assets before making a model call. +- Reports show observed pass rates. They do not yet compute a + confidence interval or automatically establish behavioral equivalence. + +See the synthetic redistributable +[`AGENTS.md` release-operations case](examples/project_instructions/01_codex_release_ops/README.md) +and the licensed upstream +[`openai-python` policy case](examples/project_instructions/02_openai_python_version_policy/README.md) +for complete sources, candidates, five-category workloads, provenance, and +reproduction commands. The second case freezes its candidate before an +independent process authors the holdout. + +Replay JSON contains raw model outputs. Store it with the same access controls +as the instruction asset and workload prompts. + +### Experimental density sweep + +`denser curve` samples candidates at several target densities and plots the +observed scores. The relationship is not assumed to be concave: it may be +monotone, flat, noisy, multi-peaked, or favor the original. + +``` +task pass-rate + ▲ +1.0 ┤ ╭────╮ + │ ╭─╯ ╰─╮ + │ ╱ ╲ + │ ╱ ╲ +0.5 ┤ ╱ ╲ + │╱ ╲___ + └────────────────────────▶ + 1.0 0.6 0.4 0.2 0.0 + compression ratio + (smaller = denser) +``` + +The current implementation also draws an optional quadratic fit. Treat it as a +visual aid, not proof of an optimum. + +```bash +denser curve --type skill my_skill.md --out curve.png +``` + +See [`docs/DESIGN.md`](docs/DESIGN.md) for the active evidence standard and +[`docs/WHITEPAPER.md`](docs/WHITEPAPER.md) for the original research hypothesis. + +--- + +## Why reviewable context snapshots + +Skills, system/developer instructions, tool descriptions, project rules, and +memory policies are reused and often version controlled. Exported before/after +history summaries can also become reviewable snapshots. These artifacts make +behavior changes reproducible in a way that an opaque runtime event is not. + +--- + +## Installation + +denser can be used as a regular CLI/library with any agent, or as an interactive +skill inside Codex or Claude Code. + +### Option 1 — CLI and Python library (agent-independent) + +```bash +git clone https://github.com/Evostructs/denser.git +cd denser +python -m pip install . +denser --version +``` + +This is the general installation for scripts, CI, benchmarks, and Python use. +Commands that call a model still need the corresponding provider or authenticated +CLI; deterministic inspection commands do not. + +### Option 2 — OpenAI Codex skill (no separate API key or Python) + +If Codex is not installed, the official cross-platform npm option is: + +```bash +npm install -g @openai/codex +codex +``` + +On first launch, choose **Sign in with ChatGPT** or another available sign-in +method. See the [official Codex CLI installation +guide](https://learn.chatgpt.com/docs/codex/cli). + +Then ask Codex to install denser from this repository: + +> `$skill-installer install the denser-compress skill from https://github.com/Evostructs/denser/tree/main/denser/skills/denser-compress` + +Invoke it with `$denser-compress`, or describe a matching compression task. +Codex uses its existing authenticated session; denser needs no separate API key. + +### Option 3 — Claude Code skill (no separate API key or Python) + +If you use Claude Code, install the `denser-compress` skill: + +```bash +git clone https://github.com/Evostructs/denser.git +bash denser/denser/skills/install.sh # macOS / Linux +# or: denser\denser\skills\install.ps1 # Windows PowerShell +``` + +Restart Claude Code. Then in any session: + +> "compress this skill at `~/.claude/skills/my-skill/SKILL.md`" + +The skill runs inside Claude Code's authenticated session. For manual Codex and +Claude Code installation, verification, and removal, see +[`denser/skills/README.md`](denser/skills/README.md). + +--- + +## Quickstart + +### Audit a context variant + +```python +from denser import audit_context, load_replay_suite + +suite = load_replay_suite("replay.holdout.json") +report = audit_context( + baseline=baseline_text, + variant=variant_text, + negative_control=known_bad_text, + task_type="claude_md", + tasks=suite, + backend=execution_backend, + n_trials=3, + seed=20260817, +) + +print(report.decision.value) +print(report.observed_input_reduction_pct) +``` + +`preserved` means the variant matched every covered baseline case and the same +suite caught the known-bad control. `regressed` means the variant lost covered +behavior. Improvements are sent to `review`; missing or insensitive controls +and operational failures are `inconclusive`. + +### Inspect and verify offline + +```python +from denser import inspect, verify +from pathlib import Path + +original = Path("my_skill.md").read_text(encoding="utf-8") +candidate = Path("my_skill.dense.md").read_text(encoding="utf-8") + +contract = inspect(original, task_type="skill") +report = verify( + original, + candidate, + task_type="skill", + inspection=contract, +) + +print(report.decision.value) +print(report.missing_literals) +``` + +The offline verifier exits `0` for `pass`, `3` for `review`, and `2` for +`reject`. A changed semantic obligation remains at `review` unless it is +retained verbatim or covered by an explicitly mapped behavior task. Custom +`GoldenTask` objects map evidence with `covers=("C003", ...)`; service errors +are reported separately and never count as successful behavior evidence. + +For deterministic execution rather than judge-based scoring, load a replay +suite and pass it to `verify` with the same backend that will execute the asset: + +```python +from denser import load_replay_tasks, verify + +suite = load_replay_tasks("replay.json") +report = verify( + original, + candidate, + task_type="claude_md", + replay_tasks=suite, + execution_backend=my_backend, + replay_seed=20260817, +) +``` + +### Optimize with multiple candidates + +```python +from denser import optimize + +report = optimize( + original, + task_type="skill", + target_densities=(0.30, 0.40, 0.50), + source_name="my_skill.md", +) + +print(report.recommended_candidate_id) +print(report.recommendation_reason) +print(report.recommended.text) +``` + +The returned report uses the versioned +`denser.optimization-report/v1` schema and records source hash, candidates, +contract coverage, model identifiers, logical model calls, operational errors, +token-counting method, and timing. The default counter is the explicitly +approximate offline `heuristic-v1`. For provider-aware Anthropic counts, pass +`token_counter=AnthropicTokenCounter(model="...")`; it raises on failure rather +than silently substituting an estimate. CLI evidence JSON includes source and +candidate text; keep it with the same access controls as the instruction asset. +Without mapped behavior tasks, semantic rewrites remain at `review`, so a +conservative run may correctly recommend the original. + +### Compress a skill + +```python +from denser import compress + +with open("my_skill.md") as f: + result = compress(f.read(), task_type="skill") + +print(result.compressed) +print(f"Saved {result.savings_pct:.0%} tokens") +print(f"Rationale:\n{result.rationale}") +``` + +### Evaluate a compression + +```python +from denser import compare, compress +from pathlib import Path + +text = Path("my_skill.md").read_text(encoding="utf-8") +result = compress(text, task_type="skill") + +report = compare( + original=text, + compressed=result.compressed, + task_type="skill", + n_trials=3, +) + +print( + f"Observed structural-check pass rate: " + f"{report.original.overall_pass_rate:.2%} → " + f"{report.compressed.overall_pass_rate:.2%}" +) +``` + +### Plot the density curve + +```python +from denser import curve + +c = curve(text, task_type="skill", densities=(0.3, 0.5, 0.7, 1.0)) +c.plot(out="curve.png") +print(f"Best observed/fitted density: {c.peak_density:.2f}") +``` + +--- + +## Supported backends + +denser ships three generation backends and one replay-only local CLI adapter: + +```python +from denser.backends import ( + ClaudeBackend, + CodexCliBackend, + OpenAICompatibleBackend, + SiliconFlowBackend, +) + +# Anthropic adapter used by the current default +ClaudeBackend(model="claude-opus-4-6") + +# SiliconFlow preset for its OpenAI-compatible endpoint +SiliconFlowBackend(model="zai-org/GLM-4.6") + +# Generic Chat Completions-compatible endpoint +OpenAICompatibleBackend(base_url="https://api.openai.com/v1", model="gpt-4o") + +# Authenticated local Codex CLI; available to `denser audit` and `denser replay` +CodexCliBackend(model="gpt-5.6-sol", reasoning_effort="medium") +``` + +On Windows, install the official `@openai/codex` package independently. The +adapter discovers `%APPDATA%\\npm\\codex.cmd`, accepts `DENSER_CODEX_CLI` or +`--codex-cli-path`, and deliberately rejects the desktop app's private +WindowsApps executable. + +### Which backend to use + +Backend quality is asset- and workload-dependent. The observations in +[`docs/CROSS_MODEL_NOTES.md`](docs/CROSS_MODEL_NOTES.md) come from one source +asset with one generation per model plus a separate repeated behavior-replay +follow-up on two project-instruction cases. They are useful for reproducing +prompt-following differences, but they do not support general model rankings. +Validate the candidate on the model that will execute the instruction. + +For replay providers whose reasoning tokens share the output allowance, use +`--openai-thinking-mode disabled` for short exact-label tasks when the provider +supports the compatible `thinking` field. The default remains +`provider-default`; denser does not silently change provider behavior. + +--- + +## Benchmarks + +No general context-optimization benchmark is published yet. The repository +currently contains ten before/after examples, including two `AGENTS.md` cases. +The second uses a candidate-frozen, chronologically blind holdout and material +negative controls, but the public examples as a whole are not an independent +evaluation dataset. + +The runner in [`benchmarks/`](benchmarks/) can execute the current corpus with a +live backend. Results are publishable only when raw output, model/settings, +asset-specific behavior tasks, provenance, and a reproduction command are +committed together. + +--- + +## Integrations + +### Pre-commit hook + +Add an advisory size review for LLM-input files (skills, `CLAUDE.md`, system +prompts, memory entries) with a single copy: + +```bash +cp integrations/pre-commit-hook.sh .git/hooks/pre-commit +chmod +x .git/hooks/pre-commit +``` + +The hook uses a local estimate, makes no API call, and never blocks a commit on +length alone. The reference sizes are review prompts, not quality thresholds. +See [`integrations/README.md`](integrations/README.md). + +### Agent skill + +The portable `denser-compress` skill works in both OpenAI Codex and Claude Code +without a separate provider API key. See +[`denser/skills/README.md`](denser/skills/README.md) for tool-specific install +commands. + +--- + +## Roadmap + +- **Phase 0** — align claims, terminology, integrations, and metadata with the committed evidence +- **Phase 1** — preservation contract, source mapping, multi-candidate optimization, and evidence report +- **Phase 2** — deterministic replay and one candidate-frozen holdout are available; broader external workloads remain +- **Phase 3** — context audit with negative-control sensitivity and honest end-to-end token measurement is available +- **Phase 4** — audit real selective-loading and runtime-compaction snapshots across long-horizon tasks +- **Phase 5** — external pilot projects, reproducible releases, and evaluation adapters + +See [`docs/DESIGN.md`](docs/DESIGN.md) for scope, evidence rules, and delivery +gates. [`PROJECT_PLAN.md`](PROJECT_PLAN.md) is retained as the historical launch +plan. + +--- + +## Contributing + +Contributions welcome. See [`docs/CONTRIBUTING.md`](docs/CONTRIBUTING.md). + +Particularly useful: + +- Submit a realistic instruction asset with provenance and redistribution terms +- Add positive, negative, exceptional, or adversarial behavior cases +- Add a known-bad negative control that proves a replay suite is sensitive +- Capture a reproducible before/after context snapshot across runtime compaction +- Report a candidate that passed a structural check but failed in real use +- Reproduce an observation with committed model settings and raw results + +--- + +## Acknowledgements + +- **Bill Wang ([@Evostructs](https://github.com/Evostructs))** — project creator + and maintainer. +- [OpenAI Codex](https://openai.com/codex/) — development and validation support + for this release. +- [Claude](https://claude.com/product/overview) — development support for + earlier releases. + +--- + +## Citation + +If you use `denser` in research or writing, please cite: + +```bibtex +@software{wang2026denser, + author = {Wang, Bill}, + title = {denser: Behavior-Fidelity Audits for Version-Controlled LLM Context}, + year = {2026}, + url = {https://github.com/Evostructs/denser} +} +``` + +--- + +## License + +Apache 2.0 — see [`LICENSE`](LICENSE). Redistributed upstream material and +modification notices are listed in [`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md). + +--- + +*denser is an independent open-source project and is not affiliated with +Anthropic or OpenAI.* diff --git a/docs/assets/hero.png b/docs/assets/hero.png index a4504dfe845a2f1bcc5b9783332636a74b38d843..eb82f92eb7030d9ab4fdf0e3c4d1c16f6816c09f 100644 GIT binary patch literal 67312 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 qqP{p#Qt50=k-(7hHa&iDg?g9u2 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%0D*tmnzp>GI=zZ;;6rk;c$%s1B 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

*lWdd|8~Ti$~Di2I@2#V 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 diff --git a/docs/assets/hero.py b/docs/assets/hero.py index 4dd52ab..b7e31d4 100644 --- a/docs/assets/hero.py +++ b/docs/assets/hero.py @@ -1,7 +1,8 @@ -"""Generate the README hero image — an experimental density-sweep illustration. +"""Generate denser's reproducible README and social-preview hero image. -This script is reproducible (fixed seeds, deterministic output). It produces -`docs/assets/hero.png` which README.md references. +The image uses only measured results from the committed Codex tool-workflow +pilot. It produces `docs/assets/hero.png`, which README.md references and which +can also be uploaded as the repository social preview. Run: `python docs/assets/hero.py` Requires: `pip install denser[plot]` @@ -12,88 +13,188 @@ from pathlib import Path import matplotlib.pyplot as plt -import numpy as np +from matplotlib.patches import FancyBboxPatch, Rectangle OUT_PATH = Path(__file__).parent / "hero.png" -def _curve(x: np.ndarray, peak: float, height: float, width: float) -> np.ndarray: - """One possible non-universal shape used in the schematic.""" - return height * np.exp(-((x - peak) ** 2) / (2 * width**2)) +BG = "#07111F" +SURFACE = "#0D1C2E" +SURFACE_STRONG = "#10263B" +GRID = "#16324A" +TEXT = "#F5F8FC" +MUTED = "#8FA8C1" +CYAN = "#28D7C2" +BLUE = "#73A7FF" +AMBER = "#F5C76B" + + +def _rounded_box( + ax: plt.Axes, + x: float, + y: float, + width: float, + height: float, + *, + facecolor: str, + edgecolor: str, + linewidth: float = 1.0, + radius: float = 0.018, +) -> None: + ax.add_patch( + FancyBboxPatch( + (x, y), + width, + height, + boxstyle=f"round,pad=0.008,rounding_size={radius}", + facecolor=facecolor, + edgecolor=edgecolor, + linewidth=linewidth, + ) + ) def main() -> None: - """Render the schematic density-curve hero image.""" - x = np.linspace(0.05, 1.05, 300) - - # Three possible shapes. Values are schematic and deliberately not tied to - # task types or measured results. - curves = [ - { - "label": "interior best", - "values": _curve(x, 0.48, 0.96, 0.18), - "color": "#e04b4b", - }, - { - "label": "original best", - "values": 0.58 + 0.36 * np.clip(x, 0, 1), - "color": "#4b8ae0", - }, - { - "label": "flat / noisy", - "values": 0.78 + 0.035 * np.sin(25 * x) + 0.02 * x, - "color": "#3ba374", - }, - ] - - # 12.8 x 6.4 inches @ 100 dpi → 1280 x 640 pixels exactly, - # which is GitHub's recommended Social preview size (2:1 aspect). - fig, ax = plt.subplots(figsize=(12.8, 6.4)) - - for c in curves: - ax.plot(x, c["values"], linewidth=2.5, label=c["label"], color=c["color"]) + """Render the measured-results hero image.""" + fig = plt.figure(figsize=(12.8, 6.4), facecolor=BG) + ax = fig.add_axes((0, 0, 1, 1)) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + ax.axis("off") + + # Quiet instrument-panel grid: enough structure to feel technical without + # competing with the evidence. + for x in [i / 20 for i in range(1, 20)]: + ax.plot([x, x], [0, 1], color=GRID, linewidth=0.45, alpha=0.35) + for y in [i / 10 for i in range(1, 10)]: + ax.plot([0, 1], [y, y], color=GRID, linewidth=0.45, alpha=0.35) + ax.add_patch(Rectangle((0, 0), 0.012, 1, facecolor=CYAN, edgecolor="none")) - ax.set_xlabel("compression ratio ρ (compressed tokens / original)", fontsize=11) - ax.set_ylabel("observed check score", fontsize=11) - ax.set_title( - "Experimental Density Sweep — possible shapes, not measured results", - fontsize=13, - pad=14, + ax.text( + 0.065, + 0.875, + "OPEN-SOURCE RESEARCH TOOL / ALPHA", + color=CYAN, + fontsize=12, + fontweight="bold", + family="DejaVu Sans", + va="center", ) - ax.set_xlim(0, 1.08) - ax.set_ylim(0, 1.15) - ax.invert_xaxis() # denser → smaller ρ on the right - ax.grid(alpha=0.25) - ax.legend(title="illustrative shape", loc="upper right", frameon=True) - - # Subtle shading for the "danger zones" - ax.axvspan(0.0, 0.15, color="red", alpha=0.06, zorder=-1) - ax.axvspan(0.9, 1.08, color="orange", alpha=0.06, zorder=-1) ax.text( - 0.075, - 0.08, - "higher information-loss risk", - ha="center", + 0.06, + 0.705, + "DENSER", + color=TEXT, + fontsize=60, + fontweight="bold", + family="DejaVu Sans", va="center", - fontsize=8.5, - color="#c23030", - alpha=0.8, ) ax.text( - 0.99, - 0.08, - "original candidate", - ha="right", + 0.064, + 0.585, + "Behavior-validated context reduction", + color=BLUE, + fontsize=21, + fontweight="bold", + family="DejaVu Sans", + va="center", + ) + ax.text( + 0.064, + 0.515, + "Remove unnecessary context. Preserve required behavior.", + color=MUTED, + fontsize=14, + family="DejaVu Sans", va="center", + ) + + # Measured end-to-end flow from the committed six-call Codex pilot. + _rounded_box( + ax, + 0.585, + 0.625, + 0.16, + 0.16, + facecolor=SURFACE, + edgecolor=GRID, + linewidth=1.3, + ) + ax.text(0.665, 0.735, "COMPLETE", color=MUTED, fontsize=10, fontweight="bold", ha="center") + ax.text(0.665, 0.675, "277,871", color=TEXT, fontsize=22, fontweight="bold", ha="center") + ax.text(0.665, 0.64, "full input tokens", color=MUTED, fontsize=9, ha="center") + + ax.annotate( + "", + xy=(0.805, 0.705), + xytext=(0.755, 0.705), + arrowprops={"arrowstyle": "-|>", "color": CYAN, "lw": 2.2}, + ) + ax.text(0.78, 0.745, "SELECT", color=CYAN, fontsize=8, fontweight="bold", ha="center") + + _rounded_box( + ax, + 0.815, + 0.625, + 0.14, + 0.16, + facecolor=SURFACE_STRONG, + edgecolor=CYAN, + linewidth=1.6, + ) + ax.text(0.885, 0.735, "SELECTED", color=CYAN, fontsize=10, fontweight="bold", ha="center") + ax.text(0.885, 0.675, "243,210", color=TEXT, fontsize=22, fontweight="bold", ha="center") + ax.text(0.885, 0.64, "full input tokens", color=MUTED, fontsize=9, ha="center") + + ax.text( + 0.77, + 0.55, + "Required policies kept / archived handbook removed", + color=MUTED, + fontsize=9.5, + family="DejaVu Sans", + ha="center", + ) + + stats = [ + ("12.47%", "LESS FULL INPUT", CYAN), + ("6 / 6", "SELECTED RUNS PASSED", BLUE), + ("6 / 6", "REGRESSIONS DETECTED", AMBER), + ] + start_x = 0.06 + width = 0.28 + gap = 0.025 + for index, (value, label, accent) in enumerate(stats): + x = start_x + index * (width + gap) + _rounded_box( + ax, + x, + 0.16, + width, + 0.19, + facecolor=SURFACE, + edgecolor=GRID, + linewidth=1.1, + ) + ax.add_patch( + Rectangle((x + 0.018, 0.181), 0.006, 0.145, facecolor=accent, edgecolor="none") + ) + ax.text(x + 0.045, 0.275, value, color=TEXT, fontsize=24, fontweight="bold", va="center") + ax.text(x + 0.045, 0.215, label, color=accent, fontsize=9.5, fontweight="bold", va="center") + + ax.text( + 0.94, + 0.07, + "Measured on the committed Codex tool-workflow pilot", + color=MUTED, fontsize=8.5, - color="#c2800b", - alpha=0.8, + ha="right", ) - fig.tight_layout() - # Exactly 100 dpi + 12.8×6.4 figsize → 1280×640 pixels, GitHub social preview spec. - # Do NOT use bbox_inches="tight" here; that would crop and change dimensions. - fig.savefig(OUT_PATH, dpi=100) + # Exactly 1280 x 640 pixels. Do not crop: GitHub expects a 2:1 preview. + fig.savefig(OUT_PATH, dpi=100, facecolor=BG) + plt.close(fig) print(f"Wrote {OUT_PATH}")