Skip to content

[codex] harden release status checks#69

Merged
lbliii merged 1 commit into
mainfrom
codex/release-status-guard
May 23, 2026
Merged

[codex] harden release status checks#69
lbliii merged 1 commit into
mainfrom
codex/release-status-guard

Conversation

@lbliii
Copy link
Copy Markdown
Owner

@lbliii lbliii commented May 23, 2026

Summary

  • prepare the post-0.3.0 patch release as 0.3.1
  • add a release-status guard that checks version metadata, remote tags, PyPI, changelog, release notes, and pending fragments
  • wire the guard into make release-status and make gh-release
  • harden Kida template verification with strict end-tag and fragile-path checks in Milo's terminal-aware environment

Why

0.3.0 was already tagged and live, but local metadata and release fragments made the next release state ambiguous. The new guard reports that situation before editing release notes or publishing artifacts.

Validation

  • python3 scripts/release_status.py --remote --pypi
  • make release-status
  • uv run pytest tests/test_release_status.py
  • make docs-test
  • make ci
  • git diff --check

make ci still reports the existing ty warnings in pipeline.py and schema.py; this PR does not add new type warnings.

@lbliii lbliii marked this pull request as ready for review May 23, 2026 18:31
Copilot AI review requested due to automatic review settings May 23, 2026 18:31
@github-actions
Copy link
Copy Markdown

Coverage Report

88.1% overall coverage

File Coverage
src/milo/\_\_init\_\_.py 100.0%
src/milo/\_cells.py 85.9%
src/milo/\_child.py 91.8%
src/milo/\_cli\_help.py 90.5%
src/milo/\_command\_defs.py 99.2%
src/milo/\_compat.py 63.3%
src/milo/\_errors.py 92.8%
src/milo/\_jsonrpc.py 81.4%
src/milo/\_mcp\_router.py 100.0%
src/milo/\_protocols.py 100.0%
src/milo/\_scaffold/\_\_init\_\_.py 100.0%
src/milo/\_types.py 100.0%
src/milo/app.py 58.9%
src/milo/cli.py 87.3%
src/milo/commands.py 89.3%
src/milo/completions.py 96.0%
src/milo/components\_cli.py 88.1%
src/milo/config.py 87.3%
src/milo/context.py 86.6%
src/milo/dev.py 91.9%
src/milo/doctor.py 89.9%
src/milo/flow.py 96.5%
src/milo/form.py 91.7%
src/milo/gateway.py 68.9%
src/milo/groups.py 93.5%
src/milo/help.py 100.0%
src/milo/input/\_\_init\_\_.py 100.0%
src/milo/input/\_platform.py 77.8%
src/milo/input/\_reader.py 96.2%
src/milo/input/\_sequences.py 100.0%
src/milo/live.py 0.0%
src/milo/llms.py 78.8%
src/milo/mcp.py 88.9%
src/milo/middleware.py 100.0%
src/milo/observability.py 100.0%
src/milo/output.py 90.5%
src/milo/pipeline.py 90.1%
src/milo/plugins.py 100.0%
src/milo/reducers.py 100.0%
src/milo/registry.py 89.1%
src/milo/schema.py 92.7%
src/milo/state.py 91.7%
src/milo/streaming.py 100.0%
src/milo/templates/\_\_init\_\_.py 100.0%
src/milo/testing/\_\_init\_\_.py 100.0%
src/milo/testing/\_mcp.py 100.0%
src/milo/testing/\_record.py 86.7%
src/milo/testing/\_replay.py 87.1%
src/milo/testing/\_snapshot.py 100.0%
src/milo/theme.py 100.0%
src/milo/verify.py 84.8%
src/milo/version\_check.py 60.6%

@lbliii lbliii force-pushed the codex/release-status-guard branch from 85115de to c8b254b Compare May 23, 2026 18:33
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR prepares the 0.3.1 patch release and adds a “release status” guard script to detect version/tag/changelog/release-note drift before publishing, while also tightening template verification to match Milo’s terminal-aware Kida environment (including strict end-tag and fragile-path lint checks).

Changes:

  • Bump project version metadata to 0.3.1 and add 0.3.1 changelog + release notes (with minor historical correction in 0.3.0 notes).
  • Add scripts/release_status.py + tests, and wire it into make release-status / make gh-release.
  • Harden scripts/check_templates.py to perform strict end-tag + fragile-path checks when compiling templates via milo.templates.get_env().

Reviewed changes

Copilot reviewed 17 out of 18 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
uv.lock Bumps editable package version to 0.3.1.
pyproject.toml Updates package version to 0.3.1 (and reflects Kida dependency expectations).
src/milo/init.py Updates __version__ to 0.3.1.
scripts/release_status.py New release-status guard (version surfaces + tags + PyPI + changelog + release notes + fragments).
tests/test_release_status.py New unit tests for the release-status guard logic.
Makefile Adds release-status target and runs release-status as a preflight for gh-release.
docs/testing.md Documents make release-status.
scripts/check_templates.py Adds strict end-tag and fragile-path checks in Milo-aware template compilation.
tests/test_templates.py Adds tests ensuring the local template checker uses Milo’s env and flags strict-end/fragile-path issues.
src/milo/templates/error.kida Adjusts template to satisfy stricter end-tag checks (removes unified {% end %} usage).
src/milo/templates/components/help_page.kida Switches to same-folder ./_defs.kida import style.
src/milo/templates/components/command_list.kida Switches to same-folder ./_defs.kida import style.
site/content/releases/0.3.1.md Adds release notes for 0.3.1.
site/content/releases/0.3.0.md Minor wording correction regarding Kida version for 0.3.0.
CHANGELOG.md Adds 0.3.1 entry and aligns Kida wording in the 0.3.0 entry.
changelog.d/steward-network.changed.md Removes compiled fragment (now in CHANGELOG).
changelog.d/release-0.3.0.changed.md Removes compiled fragment (now in CHANGELOG).
changelog.d/kida-0.9.changed.md Removes compiled fragment (now in CHANGELOG).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread Makefile
Comment on lines +72 to +74
release-status:
python3 scripts/release_status.py --remote

Comment thread Makefile
Comment on lines 83 to 85
gh-release:
python3 scripts/release_status.py --remote --pypi
@VERSION=$$(grep -m1 '^version = ' pyproject.toml | sed 's/version = "\(.*\)"/\1/'); \
Comment thread scripts/release_status.py
Comment on lines +283 to +287
continue
text = path.read_text(encoding="utf-8").strip()
if not text:
empty.append(path.name)
return tuple(empty)
Comment thread scripts/release_status.py
Comment on lines +318 to +321
"CHANGELOG.md",
f"site/content/releases/{version}.md",
],
)
Comment on lines +43 to +46
def check_strict_closures(path: Path, rel: str, env: Any) -> list[str]:
source = path.read_text(encoding="utf-8")
lexer = Lexer(source, env._lexer_config)
tokens = list(lexer.tokenize())
Comment thread scripts/check_templates.py Outdated
)
parser.parse()
errors: list[str] = []
for lineno, _col, closing in parser._unified_end_closures:
Comment thread scripts/check_templates.py Outdated
Comment on lines +69 to +73
tmpl = env.get_template(rel)
errors.extend(check_strict_closures(path, rel, env))
ast = getattr(tmpl, "_optimized_ast", None)
if ast is not None:
for issue in check_fragile_paths(ast, rel):
Comment thread scripts/release_status.py
Comment on lines +300 to +302
if len(parts) == 2:
tags.append(parts[1])
return tuple(tags)
@lbliii lbliii force-pushed the codex/release-status-guard branch from c8b254b to 3a2a8e4 Compare May 23, 2026 18:38
@lbliii lbliii added the skip-changelog Skip changelog fragment CI check label May 23, 2026
@lbliii lbliii force-pushed the codex/release-status-guard branch from 3a2a8e4 to a1046f5 Compare May 23, 2026 18:39
@lbliii lbliii force-pushed the codex/release-status-guard branch from a1046f5 to 92ab66b Compare May 23, 2026 18:45
@lbliii lbliii merged commit ecd6820 into main May 23, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-changelog Skip changelog fragment CI check

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants