From 30e860bbfeeb113b3d12809654109d8730f02e5f Mon Sep 17 00:00:00 2001 From: Tom Softreck Date: Mon, 19 Oct 2026 19:43:38 +0200 Subject: [PATCH] chore(governance): integration owns release metadata with the version it releases (ticket-230) --- .governance/manifest.json | 4 +++- project/TICKETS.md | 1 + project/ticket-230/README.md | 42 ++++++++++++++++++++++++++++++++++ project/ticket-230/intent.json | 26 +++++++++++++++++++++ 4 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 project/ticket-230/README.md create mode 100644 project/ticket-230/intent.json diff --git a/.governance/manifest.json b/.governance/manifest.json index 41667b5..a412d5d 100644 --- a/.governance/manifest.json +++ b/.governance/manifest.json @@ -94,7 +94,9 @@ "events/**", "error/**", "models/**", - "proto/**" + "proto/**", + "planfile/release-metadata.json", + "tests/test_release_availability.py" ] } }, diff --git a/project/TICKETS.md b/project/TICKETS.md index 4c8e12c..028b0dc 100644 --- a/project/TICKETS.md +++ b/project/TICKETS.md @@ -128,4 +128,5 @@ This file indexes governance tickets without taking ownership of | **ticket-216** | [`README.md`](./ticket-216/README.md) | - | - | - | - | - | | **ticket-217** | [`README.md`](./ticket-217/README.md) | - | - | - | - | - | | **ticket-218** | [`README.md`](./ticket-218/README.md) | - | - | - | - | - | +| **ticket-220** | [`README.md`](./ticket-220/README.md) | - | - | - | - | - | diff --git a/project/ticket-230/README.md b/project/ticket-230/README.md new file mode 100644 index 0000000..3c913eb --- /dev/null +++ b/project/ticket-230/README.md @@ -0,0 +1,42 @@ +# Ticket 230: Let one integration ticket own release metadata with the version it releases + +- **ID**: ticket-230 +- **Owner**: agent:antigravity (requested by the repository owner) +- **Status**: IN_PROGRESS +- **Workflow state**: EDIT +- **Created**: 2026-10-19 + +## Goal and scope + +A release changes the version in `pyproject.toml`, `uv.lock` and `VERSION` (workstream +`integration`), but `planfile/release-metadata.json` and `tests/test_release_availability.py` were +owned by `application` through the `planfile/**` and `tests/**` globs. The release ticket could +therefore not update them, and every release left `main` red on `test_release_availability`; fixing +it needed a second ticket whose pull request could not pass the other required checks. + +This ticket lists those two paths in the `integration` workstream's `ownedPaths` in +`.governance/manifest.json`, so one integration ticket can carry the release and its metadata. + +## Evidence + +Checked in an isolated clone of `main` with this manifest as the base commit: one `integration` +ticket changing `uv.lock`, `planfile/release-metadata.json` and `tests/test_release_availability.py` +passes `./project/governance-check.sh` (`GOV-PASS`). Overlapping ownership with `application` raises +no finding; only changing the manifest inside the same ticket does, which is why this is a separate +`governance` ticket. + +## Acceptance criteria + +- [x] AC-01: `integration` owns the two release paths in `.governance/manifest.json`. +- [x] AC-02: An integration ticket touching `uv.lock` plus both paths passes governance when this + manifest is the base (isolated-clone check above). +- [x] AC-03: Governance gates pass on this branch. + +## Not in scope + +The managed `.governance/manifest.base.json`, the adopted standard, and the protected verifier. + +## Tracking boundary + +This directory contains the minimal reviewed intent. Optional participant prose and raw command +logs are not required delivery output. diff --git a/project/ticket-230/intent.json b/project/ticket-230/intent.json new file mode 100644 index 0000000..0886e27 --- /dev/null +++ b/project/ticket-230/intent.json @@ -0,0 +1,26 @@ +{ + "schema": "new-project.intent/v3", + "ticket": "ticket-230", + "summary": "Let one integration ticket own release metadata with the version it releases", + "workstream": "governance", + "classification": { + "kind": "SERVICE", + "priority": "P2", + "origin": "health" + }, + "allowedPaths": [ + "project/ticket-230/**", + "TODO.md", + "project/TICKETS.md", + ".governance/manifest.json" + ], + "forbiddenPaths": [ + "project/ticket-*/user-*.md" + ], + "stacks": [ + "python" + ], + "dependsOn": [], + "conflictsWith": [], + "integrationTicket": null +}