Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions docs/evidence/compatibility.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ The current public snapshot is dated **2026-07-30**. All packages remain
pre-1.0, so compatible versions must be selected from evidence rather than
assumed from package names.

[Open the immutable compatibility snapshot](https://github.com/hayatepy/.github/blob/975173da2c1be720a4f902cde36ba3822b9b6e56/docs/COMPATIBILITY.md){ .md-button .md-button--primary }
[Open the immutable compatibility snapshot](https://github.com/hayatepy/.github/blob/1496dc87b780ff81470518df468a18bd6783ebce/docs/COMPATIBILITY.md){ .md-button .md-button--primary }

## Golden runtime lock

Expand All @@ -23,14 +23,14 @@ assumed from package names.

- `hayate-openapi 0.8.1` generates the dependency-free callable TypeScript
client and validates it against a real Hayate ASGI process.
- `create-hayate 0.13.0` propagates the client, its types, and drift checks
- `create-hayate 0.13.1` propagates the client, its types, and drift checks
into generated projects.
- The released generator passed all
[112 frontend compositions](https://github.com/hayatepy/create-hayate/actions/runs/30488857568).
[112 frontend compositions](https://github.com/hayatepy/create-hayate/actions/runs/30493092512).
The aggregate evidence JSON SHA-256 is
`fb3f4dc15e8d49bd1fdb6a658df70cc33e174a0f9342895f732dca8aa57a8bb9`.
`f7be85bf13c135c9c112c3cb504c337f3e0fbad501fe575425ad69be898a84df`.
- The [golden application main
run](https://github.com/hayatepy/golden-app/actions/runs/30488723553)
run](https://github.com/hayatepy/golden-app/actions/runs/30494459938)
executes authenticated path, query, JSON, multipart, delete, and error
flows through the compiled client.

Expand Down
8 changes: 8 additions & 0 deletions scripts/check_release_freshness.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
ROOT = Path(__file__).resolve().parents[1]
MANIFEST = ROOT / "data" / "ecosystem.toml"
CREATE_HAYATE_PIN = re.compile(r"create-hayate==(\d+\.\d+\.\d+)")
CREATE_HAYATE_RELEASE = re.compile(r"\bcreate-hayate (\d+\.\d+\.\d+)\b")
PYPI_ORIGIN = "https://pypi.org"
USER_AGENT = "hayatepy-docs-release-freshness/1"

Expand Down Expand Up @@ -87,6 +88,13 @@ def validate_create_hayate_pins(root: Path, data: Mapping[str, Any]) -> list[str
f"{relative}:{line_number}: create-hayate pin "
f"{match.group(1)} must match manifest {expected}"
)
for match in CREATE_HAYATE_RELEASE.finditer(line):
if match.group(1) != expected:
relative = path.relative_to(root)
failures.append(
f"{relative}:{line_number}: create-hayate release "
f"{match.group(1)} must match manifest {expected}"
)
if references == 0:
failures.append("documentation contains no exact create-hayate release pin")
return failures
Expand Down
28 changes: 28 additions & 0 deletions tests/test_release_freshness.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,31 @@ def test_documentation_requires_an_exact_release_pin(tmp_path: Path) -> None:
assert validate_create_hayate_pins(tmp_path, manifest()) == [
"documentation contains no exact create-hayate release pin"
]


def test_documentation_release_prose_must_match_manifest(tmp_path: Path) -> None:
docs = tmp_path / "docs"
docs.mkdir()
(docs / "evidence.md").write_text(
"uvx --from create-hayate==0.13.1 create-hayate demo\n"
"Current evidence uses create-hayate 0.13.0.\n",
encoding="utf-8",
)

failures = validate_create_hayate_pins(tmp_path, manifest())

assert failures == [
"docs/evidence.md:2: create-hayate release 0.13.0 must match manifest 0.13.1"
]


def test_current_documentation_release_prose_is_accepted(tmp_path: Path) -> None:
docs = tmp_path / "docs"
docs.mkdir()
(docs / "evidence.md").write_text(
"uvx --from create-hayate==0.13.1 create-hayate demo\n"
"Current evidence uses create-hayate 0.13.1.\n",
encoding="utf-8",
)

assert validate_create_hayate_pins(tmp_path, manifest()) == []
Loading