CI Pipeline / lint (push) Canceled after 0s
CI Pipeline / unit-tests (push) Canceled after 0s
CI Pipeline / go-surface (push) Canceled after 0s
CI Pipeline / rust-surface (push) Canceled after 0s
CI Pipeline / canary (push) Canceled after 0s
CI Pipeline / best-practices (push) Canceled after 0s
CI Pipeline / documentation (push) Canceled after 0s
CI Pipeline / type-check (push) Canceled after 0s
CI Pipeline / gitea-offline (push) Canceled after 0s
CI Pipeline / required-checks (push) Canceled after 0s
CI Pipeline / CI Pipeline / notify-event-bridge (push) Canceled after 0s
deploy / deploy (push) Skipped
Local-Model First-Pass Review (#131) / first-pass-review (pull_request) Successful in 28s
CI Pipeline / rust-surface (pull_request) Failing after 25s
Spec gate (headless) / spec-gate (pull_request) Successful in 36s
CI Pipeline / best-practices (pull_request) Successful in 9s
CI Pipeline / documentation (pull_request) Successful in 8s
Auto-label / auto-label (pull_request) Successful in 1s
CI Pipeline / go-surface (pull_request) Failing after 48s
CI Pipeline / gitea-offline (pull_request) Successful in 19s
CI Pipeline / lint (pull_request) Failing after 59s
CI Pipeline / type-check (pull_request) Failing after 46s
CI Pipeline / canary (pull_request) Failing after 3m37s
CI Pipeline / unit-tests (pull_request) Failing after 37m50s
CI Pipeline / required-checks (pull_request) Failing after 0s
CI Pipeline / CI Pipeline / notify-event-bridge (pull_request) Failing after 5s
Auto-version and Release / release (pull_request) Canceled after 0s
The changelog = a generated artifact, not a kept doc: CHANGELOG.md composes from the MAIN v* tag namespace (one section per version: What is new / What you could try / What verifies it) byte-deterministically; CI lint runs "changelog --check" (byte-compare vs regeneration — a release that skips its sync turns the gate red); auto-version syncs it after every release with a chore(changelog) commit (the convergence classifier ranks it "other" = earns no version, no recursion). Tests red-first (deterministic composition, dedupe); the go battery + the generated file are current as of v0.346.0.
93 lines
3.8 KiB
Python
93 lines
3.8 KiB
Python
"""Admission dispatch for #2582 release reporting (owner: plain-English
|
|
version reads with what-to-test).
|
|
|
|
The version-push reader bug tri-diagnosed: (1) latest_release_tag sorted
|
|
all tag namespaces, so the TUI build tag captured the main-line range;
|
|
(2) the Go narrative prepend ran before body finalization and failed
|
|
silently; (3) no try-actions existed. This contract admits: the
|
|
namespace-aware tag resolution, the try-action narrative, the workflow
|
|
rewiring, and the retroactive v0.346.0 body rebuild.
|
|
"""
|
|
import json
|
|
import os
|
|
import sys
|
|
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "src"))
|
|
|
|
from rune import construction_activation as cact # noqa: E402
|
|
from rune import construction_admission as cadm # noqa: E402
|
|
from rune import construction_mode as cmode # noqa: E402
|
|
from rune import scaffold as sc # noqa: E402
|
|
|
|
ROOT = os.path.join(os.path.dirname(__file__), "..")
|
|
OBJECTIVE = (
|
|
"#2582 release reporting: make a pushed version read like a changelog "
|
|
"for a non-technical owner — plain English what-changed, what-to-try "
|
|
"derived from touched surfaces, how-it-was-verified. Namespace-aware "
|
|
"tag resolution (main vs tui-v), the try-action narrative section, "
|
|
"workflow wiring, retroactive v0.346.0 body rebuild."
|
|
)
|
|
AFFECTED = [
|
|
"scripts/tag_repair.py",
|
|
"tests/test_tag_repair.py",
|
|
"src/go/release-notes/narrative.go",
|
|
"src/go/release-notes/narrative_test.go",
|
|
"src/go/release-notes/cli_narrative.go",
|
|
".gitea/workflows/auto-version.yml",
|
|
".gitea/workflows/maintenance.yml",
|
|
"src/go/release-notes/main.go", "src/go/release-notes/cli_changelog.go", "CHANGELOG.md", "scripts/admit_release_reporting.py",
|
|
]
|
|
|
|
|
|
def main() -> int:
|
|
store = os.path.join(ROOT, "store", "scaffold")
|
|
scaffold = sc.Scaffold(store, "rune")
|
|
md = cmode.classify_mode(OBJECTIVE, target_project="rune", project_exists=True,
|
|
affected_surface=AFFECTED)
|
|
need = {
|
|
"need_id": "need-release-reporting",
|
|
"objective": OBJECTIVE,
|
|
"origin": "worker",
|
|
"project": "rune",
|
|
"task_ref": "release-reporting",
|
|
"affected_surface": AFFECTED,
|
|
"evidence_refs": ["tests/test_tag_repair.py", "src/go/release-notes/narrative_test.go"],
|
|
}
|
|
act = cact.activate(md, need=need, scaffold=scaffold, builder="release-reporting")
|
|
env = cadm.admit(
|
|
act,
|
|
objective=OBJECTIVE,
|
|
builder="release-reporting",
|
|
affected_surface=AFFECTED,
|
|
evidence_refs=need["evidence_refs"],
|
|
origin="worker",
|
|
task_ref="release-reporting",
|
|
expected_new_entities=[
|
|
"src/go/release-notes/main.go", "src/go/release-notes/cli_changelog.go", "CHANGELOG.md", "scripts/admit_release_reporting.py", "tests/test_tag_repair.py",
|
|
],
|
|
expected_runtime_effects=[
|
|
"every pushed version's release body opens with plain English "
|
|
"what-changed + what-to-try + how-verified; ranges start at the "
|
|
"main v* tag, never the tui build tag",
|
|
],
|
|
verification_obligations=[
|
|
"pytest tests/test_tag_repair.py green (namespace law)",
|
|
"go test ./... in src/go/release-notes green (try-section law)",
|
|
"v0.346.0 body visibly rebuilt with the template",
|
|
],
|
|
regression_obligations=[
|
|
"no runtime behavior change: release reporting content only",
|
|
"the evidence store (release_history init) still receives its exit-note",
|
|
],
|
|
approval_ref="user: 'can you fix my gitea ... explains what was improved. and what could be tested' (session 2026-10-23)",
|
|
contract_id="ADMIT-release-reporting",
|
|
project_store=store,
|
|
project_id="rune",
|
|
)
|
|
print(json.dumps(env, indent=2, default=str)[:2400])
|
|
return 0 if env.get("success") else 1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|