mirror of
https://github.com/hanzoai/dev.git
synced 2026-10-17 15:34:54 +00:00
0.6.93 built five clean binaries, asserted every architecture was present, and published nothing. The publish job died at "Verify release notes header matches version" with `actual: <none>`, and every step after it — the GitHub Release and both npm publishes — was skipped. The cause is two release-notes generators writing to two directories, only one of which anyone reads. The `release-notes` job does the right thing: it writes docs/release-notes/RELEASE_NOTES.md, headed `## @hanzo/dev v<version>`, and uploads it as the release-metadata artifact. The `release` job then downloads that artifact, checks it is non-empty — and never copies it into place. It scratch-generates into a second, root-level release-notes/ instead. So the verifier read the copy committed in the tree, which was still headed `## @just-every/code v0.6.169` from before the fork was rebranded. No line matched `^## @hanzo/dev v`, hence `<none>`. Three fixes, smallest first: - "Apply generated release metadata" now applies it — copies CHANGELOG.md and RELEASE_NOTES.md from the artifact into the tree, which is what the step name has always claimed. - The release-notes fallback asked the wrong question. It was gated on `env.OPENAI_API_KEY == ''`, but the generator it backs up runs our own `dev` binary, and `dev` defaults to the hanzo provider — it needs HANZO_USER_KEY. Set the OpenAI secret without the Hanzo one and the agent dies with "Missing environment variable: HANZO_USER_KEY", the `||` swallows it, and the fallback is skipped because the OpenAI key is non-empty. It now keys off the artifact: write deterministic notes whenever they are missing or wrongly headed. Publishing must not depend on a model call succeeding. - The stale committed RELEASE_NOTES.md carried the upstream fork's brand into our own release page. Reset to this version. Also stopped committing the scratch directory. Only docs/release-notes/*.md were ignored, so the root generator's context.md and prompt.expanded.txt were not, and each release added ~650 KB of expanded prompt to the repo. The new ignore is anchored (`/release-notes/`) because a bare pattern would also swallow the tracked docs/release-notes/.