Skip to content

v0.13.0

Choose a tag to compare

@silversurfer562 silversurfer562 released this 15 May 18:37
0d7e9b6

Regenerator fixes, polish-bypass marker, and fact-check Phase 1.

Note: skipping 0.12.0. The internal release/v0.12.0 branch carried the polish fact-check Phase 1 work but was never published to PyPI. That work now ships in 0.13.0 alongside the regenerator fixes prompted by attune-rag d39e39d.

Added

  • Polish bypass surfaced in YAML frontmatter (#33). When the polish pass falls back to returning raw Jinja content in lenient mode (no API key, swallowed LLM error), the rendered template now carries a polish: skipped line in its YAML frontmatter. Without this marker the bypass was structurally invisible — same headings, same frontmatter shape — so degraded output slipped through PR review (see attune-rag d39e39d). Helper is idempotent; non-YAML output (project-doc HTML-comment-footer templates) passes through unchanged.

  • Polish fact-check (Phase 1 of the polish-fact-check spec). AST-based post-generation verification of every polished template across four checks (check_python_refs, check_cli_refs, check_md_links, check_numeric_refs). Soft-fail by default — findings appended as an ## Unresolved references block; strict mode raises FactCheckError. Controlled via ATTUNE_AUTHOR_FACT_CHECK env var, --fact-check / --no-fact-check flags, or the [tool.attune-author.fact-check] pyproject table.

Changed

  • Reference templates carry typed Parameters/Returns columns without depending on polish (#31, closes #30). The Jinja meta-template for reference.md previously emitted a 3-column table. The richer 4-column shape (Function | Parameters | Returns | Description | File) was only produced when the LLM polish pass succeeded and synthesized it. A polish bypass made the structural data vanish. AST-derived parameter and return data now flows through Jinja directly, so the structural ceiling no longer depends on the LLM. The feature.description from features.yaml also lands directly under the title. Polish keeps its job (rewriting prose, smoothing tone) and is no longer load-bearing for typed data.

  • Test fixture isolates the polish cache per session (#32). Redirects ATTUNE_AUTHOR_POLISH_CACHE to a per-session tmp_path_factory directory so tests no longer share the dev machine's real ~/.attune/polish_cache. Also hardens delenv("ANTHROPIC_API_KEY") with raising=False.

Compat

  • The 4-column reference table renders from function_signatures when available; legacy callers that only pass public_functions continue to get the 3-column fallback. No breaking changes to the public API.

🤖 Generated with Claude Code