v0.13.0
Regenerator fixes, polish-bypass marker, and fact-check Phase 1.
Note: skipping
0.12.0. The internalrelease/v0.12.0branch carried the polish fact-check Phase 1 work but was never published to PyPI. That work now ships in0.13.0alongside 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: skippedline 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 referencesblock; strict mode raisesFactCheckError. Controlled viaATTUNE_AUTHOR_FACT_CHECKenv var,--fact-check/--no-fact-checkflags, 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.mdpreviously 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. Thefeature.descriptionfromfeatures.yamlalso 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_CACHEto a per-sessiontmp_path_factorydirectory so tests no longer share the dev machine's real~/.attune/polish_cache. Also hardensdelenv("ANTHROPIC_API_KEY")withraising=False.
Compat
- The 4-column reference table renders from
function_signatureswhen available; legacy callers that only passpublic_functionscontinue to get the 3-column fallback. No breaking changes to the public API.
🤖 Generated with Claude Code