Skip to content

fix: changelog extractor drops redundant version-heading lines (audit P2-7)#55

Merged
abrichr merged 1 commit into
mainfrom
fix/docs-flow-framing
Jul 21, 2026
Merged

fix: changelog extractor drops redundant version-heading lines (audit P2-7)#55
abrichr merged 1 commit into
mainfrom
fix/docs-flow-framing

Conversation

@abrichr

@abrichr abrichr commented Jul 21, 2026

Copy link
Copy Markdown
Member

Context: the docs-audit P0/P1 findings were already resolved on main

This branch started from a docs.openadapt.ai audit (docs-findings.md, IDENTIFICATION pass) that flagged P0/P1 issues. On investigation, that audit was run against a stale checkout: it references docs/packages/openadapt-ml.md, -wright, -evals, architecture.md, and a package-first nav that no longer exist on origin/main. The current site has since been rewritten to a hand-authored, flow-first, product-first structure, and every P0/P1 is already fixed there:

  • P0-1 (flow absent): openadapt-flow is in repos.yml (core/beta) and featured as the "Canonical compiler and governed runtime" in docs/ecosystem/index.md; the entire index.md, concepts/, and reference/cli.md ("openadapt flow CLI") are about it.
  • P0-2 (superseded ML thesis): index.md already leads with the demonstration-compiler framing ("Show it a repeated workflow. OpenAdapt compiles it into governed, deterministic replay") — deterministic model-free replay, effect verification, halt-don't-guess, all substrates, local-first + Cloud.
  • P1-3 / P2-5 (broken images/links in synced package pages): those packages/*.md mirrors were deliberately retired. repos.yml sets no doc_page, sync_readmes.py therefore syncs nothing, and validate_docs.py + test_sync_readmes.py now enforce the page-free, no-package-first-nav contract. Re-introducing README-mirroring (and the requested sync_readmes.py path-rewrite) would regress the site and break those guards, so it is intentionally not done. The old packages/openadapt.md is a redirect stub to /ecosystem/.
  • P2-6 / P2-8 (whats-new / architecture.md stale/orphaned): whats-new.md regenerates on the sync.yml cron (last updated today); architecture.md was removed in favor of concepts/.

What this PR changes: the one genuine residual owned-file bug (P2-7)

aggregate_changelog.py rendered each release as the tag line plus the release body's first line. GitHub release bodies open with a heading that only restates the version (## v1.7.1 (2026-07-19)), so the live changelog.md echoed a duplicate ## vX heading with no notes, also corrupting the page's heading hierarchy.

  • Add summarize_body(): skip a leading heading that merely restates the version, strip leading # so the first real note renders inline, and emit nothing when the body has no notes beyond the version header.
  • Widen the fetched body window (200 → 400 chars) so real notes below the header survive truncation.
  • 4 new tests (unit + end-to-end asserting no ## vX heading leaks into the changelog).

The sync.yml cron runs aggregate_changelog.py, so the live changelog picks this up on the next sync. changelog.md itself is not hand-edited (it is bot-regenerated), per the "do not hand-fake changelog content" instruction.

Verification

  • pytest tests/ — 68 passed (was 64; +4).
  • python scripts/validate_docs.py — Validation passed.
  • mkdocs build --strict — exit 0.

🤖 Generated with Claude Code

https://claude.ai/code/session_01NyCHrzA1psrKMFfroYbzaM

aggregate_changelog.py rendered each release as the tag line followed by
the release body's first line. GitHub release bodies open with a heading
that only restates the version (e.g. "## v1.7.1 (2026-07-19)"), so the
changelog page echoed a duplicate "## vX" heading with no notes, which
also corrupted the page's heading hierarchy (audit P2-7).

Add summarize_body(): skip a leading heading that merely restates the
version, strip leading "#" so the first real note renders inline, and
emit nothing when the body carries no notes beyond the version header.
Widen the fetched body window (200 -> 400 chars) so real notes below the
header survive truncation. Covered by four new tests.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NyCHrzA1psrKMFfroYbzaM
@abrichr
abrichr merged commit 052fb7f into main Jul 21, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant