diff --git a/CHANGELOG.md b/CHANGELOG.md index e62e5e1..312d2e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,6 @@ # Changelog -## 0.5.0 - Unreleased - -Targeted as `0.5.0` because the explicit-use policy is a post-`v0.4.0` routing behavior change. +## 0.5.0 - 2026-07-06 ### Changed @@ -11,6 +9,7 @@ Targeted as `0.5.0` because the explicit-use policy is a post-`v0.4.0` routing b - Added `disable-model-invocation: true` to the installable skill metadata for hosts that support manual-only skill invocation. - Documented the boundary between the static agent skill bundle and Briefprint runtime caches under `--cache-dir`. - Aligned README cache-dir examples, including benchmark receipts, under `.cache/briefprint`. +- Bumped runtime and skill metadata to `0.5.0`; cache keys include the skill version, so prior `0.4.x` document-summary and rendered-output cache entries cold-start after upgrade. ### Validation diff --git a/MANIFEST.in b/MANIFEST.in index 3c10605..51aba4d 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -5,4 +5,5 @@ recursive-include evals *.json recursive-include references *.md recursive-include agents *.yaml recursive-include docs *.md +prune docs/superpowers/plans recursive-include skills *.md *.yaml diff --git a/README.ko.md b/README.ko.md index 08c5cfb..459c336 100644 --- a/README.ko.md +++ b/README.ko.md @@ -143,11 +143,10 @@ python -m document_briefing_cache.cli benchmark \ | 총 요약 호출 | 4 | | 문서 캐시 히트 | 16 | | 문서 캐시 미스 | 4 | -| 품질 경고 행 | 0 | 시나리오별 핵심 결과: -| 시나리오 | 요약 호출 | 캐시 인식 입력 토큰 | +| 시나리오 | 요약 호출 | 캐시 미스 입력 토큰 | |---|---:|---:| | 문서 3개 최초 브리핑 | 3 | 226 | | 같은 브리핑 반복 | 0 | 0 | @@ -157,6 +156,8 @@ python -m document_briefing_cache.cli benchmark \ | 업데이트 1개 추가 | 1 | 83 | | 합쳐진 문서 debug 렌더링 | 0 | 0 | +요약 호출과 캐시 미스 입력 토큰이 `0`인 행은 의도된 결과입니다. 반복 브리핑과 재렌더링이 바뀌지 않은 문서를 다시 읽지 않고 캐시된 구조화 상태를 재사용했다는 증거입니다. + 숫자는 솔직하게 봐야 합니다. 이 결과는 로컬 harness의 토큰 추정치입니다. 실제 청구 비용을 보려면 provider usage, Codex CLI/OTel, 또는 사용하는 호스트의 telemetry와 함께 비교해야 합니다. 벤치마크의 품질 체크는 actions, decisions, risks, metrics에 대한 가벼운 smoke check이며 의미론적 정확도 점수는 아닙니다. ## 효과가 큰 경우 diff --git a/README.md b/README.md index ba67ee2..bb21959 100644 --- a/README.md +++ b/README.md @@ -143,11 +143,10 @@ python -m document_briefing_cache.cli benchmark \ | Total summarizer calls | 4 | | Document cache hits | 16 | | Document cache misses | 4 | -| Quality warning rows | 0 | Scenario shape: -| Scenario | Summarizer calls | Cache-aware input tokens | +| Scenario | Summarizer calls | Cache-miss input tokens | |---|---:|---:| | Cold brief over 3 documents | 3 | 226 | | Same brief again | 0 | 0 | @@ -157,6 +156,8 @@ Scenario shape: | Add one update | 1 | 83 | | Rerender debug over combined set | 0 | 0 | +Rows with `0` summarizer calls and `0` cache-miss input tokens are intentional: they show that rerenders and repeated briefs reuse cached structured state instead of re-reading unchanged documents. + Honest number warning: these are deterministic local estimates from the benchmark harness, not provider billing telemetry. Use OpenAI/provider usage or host telemetry when exact billing matters. The benchmark also includes lightweight quality smoke checks for obvious actions, decisions, risks, and metrics; it is not a semantic accuracy score. ## When It Helps diff --git a/VALIDATION.md b/VALIDATION.md index 5cd5bfd..b3f2086 100644 --- a/VALIDATION.md +++ b/VALIDATION.md @@ -24,7 +24,7 @@ ruff check . - `python scripts\validate_skill.py --run-evals`: `OK: briefprint skill repository validated (24 test files, 9 eval cases, 10 trigger cases, 5 model benchmark cases)` - `ruff check .`: `All checks passed!` -Latest fetched `origin/main` CI status was checked separately: GitHub Actions `CI` run `28759630346` completed successfully for `677057a` on 2026-07-06T00:07:29Z. This confirms the base branch status; the commands above remain the source-tree validation for the current checkout. +Latest fetched `origin/main` CI status was checked separately: GitHub Actions `CI` run `28761659503` completed successfully for `344f05d` on 2026-07-06T01:14:27Z. This confirms the base branch status; the commands above remain the source-tree validation for the current checkout. `tests/test_distribution_smoke.py` remains opt-in and skips unless `DBC_RUN_INSTALLED_SMOKE=1` is set. CI or release validation should still build wheel and sdist artifacts, install each into a fresh virtual environment, and run the installed smoke test outside the repository root. diff --git a/agents/openai.yaml b/agents/openai.yaml index e1333d6..ad39a45 100644 --- a/agents/openai.yaml +++ b/agents/openai.yaml @@ -1,4 +1,4 @@ -version: "0.4.0" +version: "0.5.0" interface: display_name: "Briefprint" diff --git a/pyproject.toml b/pyproject.toml index ed3fa3a..872bce0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "document-briefing-cache" -version = "0.4.0" +version = "0.5.0" description = "Reusable document briefing skill with document-level caching and template rendering." requires-python = ">=3.10" dependencies = [ diff --git a/scripts/validate_skill.py b/scripts/validate_skill.py index 564bbc4..b51e54c 100644 --- a/scripts/validate_skill.py +++ b/scripts/validate_skill.py @@ -272,7 +272,7 @@ def validate_openai_yaml(path: Path) -> list[str]: text = path.read_text(encoding="utf-8") errors = [] required_fragments = [ - 'version: "0.4.0"', + 'version: "0.5.0"', "interface:", 'display_name: "Briefprint"', 'short_description: "Rerender cached document briefings without re-summarizing unchanged supplied documents."', diff --git a/skills/briefprint/agents/openai.yaml b/skills/briefprint/agents/openai.yaml index e1333d6..ad39a45 100644 --- a/skills/briefprint/agents/openai.yaml +++ b/skills/briefprint/agents/openai.yaml @@ -1,4 +1,4 @@ -version: "0.4.0" +version: "0.5.0" interface: display_name: "Briefprint" diff --git a/src/document_briefing_cache/__init__.py b/src/document_briefing_cache/__init__.py index 4f6923d..ef66033 100644 --- a/src/document_briefing_cache/__init__.py +++ b/src/document_briefing_cache/__init__.py @@ -11,4 +11,4 @@ "BriefingPipeline", ] -__version__ = "0.4.0" +__version__ = "0.5.0" diff --git a/src/document_briefing_cache/pipeline.py b/src/document_briefing_cache/pipeline.py index 3ba337b..d5e41ee 100644 --- a/src/document_briefing_cache/pipeline.py +++ b/src/document_briefing_cache/pipeline.py @@ -26,7 +26,7 @@ from .render import TEMPLATE_VERSION, render_briefing from .summarizers import BaseSummarizer, RuleBasedExtractiveSummarizer -SKILL_VERSION = "0.4.0" +SKILL_VERSION = "0.5.0" class BriefingPipeline: diff --git a/tests/test_skill_metadata.py b/tests/test_skill_metadata.py index 606d22f..0bb8356 100644 --- a/tests/test_skill_metadata.py +++ b/tests/test_skill_metadata.py @@ -11,14 +11,14 @@ ) -def test_versions_are_synchronized_to_0_4_0(): +def test_versions_are_synchronized_to_0_5_0(): pyproject = (ROOT / "pyproject.toml").read_text(encoding="utf-8") openai_yaml = (ROOT / "agents" / "openai.yaml").read_text(encoding="utf-8") - assert 'version = "0.4.0"' in pyproject - assert __version__ == "0.4.0" - assert SKILL_VERSION == "0.4.0" - assert 'version: "0.4.0"' in openai_yaml + assert 'version = "0.5.0"' in pyproject + assert __version__ == "0.5.0" + assert SKILL_VERSION == "0.5.0" + assert 'version: "0.5.0"' in openai_yaml def test_openai_yaml_uses_interface_metadata():