Skip to content

Commit 0e76612

Browse files
authored
fix(release): scope fragment intent to the current change
Keep pending main fragments from contaminating later feature admission and finalize Telegram Unit closure.
1 parent 42d8527 commit 0e76612

4 files changed

Lines changed: 27 additions & 16 deletions

File tree

‎scripts/release.py‎

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,13 @@ def _file_changed(path: Path, base: str) -> bool:
244244
)
245245

246246

247+
def _fragment_changed(project: ReleaseProject, changed_paths: tuple[str, ...]) -> bool:
248+
prefix = f"{project.fragments.relative_to(PROJECT_ROOT).as_posix()}/"
249+
return any(
250+
path.startswith(prefix) and not path.endswith("/.gitkeep") for path in changed_paths
251+
)
252+
253+
247254
def check_release_contract(base: str | None = None, *, release_pr: bool = False) -> None:
248255
projects = discover_projects()
249256
problems = [problem for project in projects for problem in validate_fragments(project)]
@@ -281,14 +288,14 @@ def check_release_contract(base: str | None = None, *, release_pr: bool = False)
281288
for project in projects:
282289
version_changed = _version_at(project, base) not in {None, project.version}
283290
changelog_changed = _file_changed(project.changelog, base)
284-
fragments = _fragment_files(project)
285-
if not release_pr and project.key in affected and not fragments:
291+
fragment_changed = _fragment_changed(project, changed_paths)
292+
if not release_pr and project.key in affected and not fragment_changed:
286293
problems.append(f"{project.key}: delivered behavior changed without a fragment")
287294
if not release_pr and (
288295
version_changed or (changelog_changed and not towncrier_migration)
289296
):
290297
problems.append(f"{project.key}: feature changes cannot prepare a release")
291-
if not release_pr and project.key not in affected and fragments:
298+
if not release_pr and project.key not in affected and fragment_changed:
292299
problems.append(f"{project.key}: fragment has no delivered project change")
293300
if release_pr and version_changed != changelog_changed:
294301
problems.append(

‎tasks/knowledge-lifecycle-capabilities/collaboration/roster.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
| Unit | Session | Branch / worktree | Base | Phase | Decision range | Declared overlap / dependency |
77
| --- | --- | --- | --- | --- | --- | --- |
88
| `mcp-sink` | `01a04610-338e-7311-93df-847f9801c5af` | merged through PR #88;the current root worktree retains only local task-control state | protected `main` merge `459a6df` | Closed | D-381–D-420 | No active implementation ownership;MCP runtime、ChatGPT Tool acceptance and production delivery are complete |
9-
| `telegram-extension` | `01a04685-aa31-7682-a4a2-824727eacce5` | core-py PR #89 / `.github` PR #28 | core-py base `459a6df`;`.github` guidance merged as `f7269b9` | Closed / delivered for merge | D-421–D-460 | Telegram、repository-wide Changie→Towncrier cutover and organization guidance are complete;local implementation/transfer worktrees may be retired after #89 merges |
9+
| `telegram-extension` | `01a04685-aa31-7682-a4a2-824727eacce5` | core-py PR #89 / `.github` PR #28 | merged as core-py `42d8527` and `.github` `f7269b9` | Closed / merged | D-421–D-460 | Telegram、repository-wide Changie→Towncrier cutover and organization guidance are complete;Unit worktrees are retired and Release PR #90 is independently owned by the release lifecycle |
1010

1111
## Shared-worktree coordination
1212

‎tasks/knowledge-lifecycle-capabilities/units/telegram-extension/implementation-evidence.md‎

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,15 @@
6565

6666
## Remaining verification
6767

68-
- None。Core-py PR #89 passed repository contract、portable database runtime、isolated preview database and preview
69-
application delivery at head `624b9ef`;its preview `/readyz` returned HTTP 200 with database、migration、roles、privileges
70-
and catalog ready。InKCre/.github PR #28 was squash merged as `f7269b9`。Sir authorized merge and local cleanup。
68+
- None。Core-py PR #89 was squash merged as `42d8527` after required repository contract and portable database runtime
69+
checks passed;its accepted preview at head `624b9ef` returned HTTP 200 with database、migration、roles、privileges and
70+
catalog ready。Protected-main checks、Extension publication and immutable runtime artifact delivery then passed,and the
71+
new controller created independent Release PR #90。InKCre/.github PR #28 was squash merged as `f7269b9`。Preview resources
72+
and the three Unit delivery/transfer worktrees were retired;the distinct MCP peer worktree was preserved。
73+
- The closure-only follow-up exposed that feature admission treated unchanged pending fragments already on main as if the
74+
current PR introduced them。`release.py check --base` now evaluates fragment intent from the current `base...HEAD` path set,
75+
while preparation continues to consume every pending fragment;a task-doc-only change passes with Telegram/Core fragments
76+
still pending in independent Release PR #90。
7177

7278
## Reusable execution guidance
7379

‎tasks/knowledge-lifecycle-capabilities/units/telegram-extension/packet.md‎

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Control
44

5-
- **State**: Closed;Telegram Product contract is delivered for review,and the Unit also replaced repository-wide
5+
- **State**: Closed and merged;Telegram Product contract is delivered,and the Unit also replaced repository-wide
66
Changie with PDM-managed Towncrier for Core plus first-party Extensions。The Unit remains registered in the
77
peer-maintained parallel roster under session `01a04685-aa31-7682-a4a2-824727eacce5` with reserved decision range
88
D-421–D-460。
@@ -15,19 +15,17 @@
1515
Telegram text、metadata-only attachment、explicit materialization、supported `👍` acknowledgement and the complete
1616
repository gate passed。See
1717
[Implementation Evidence](implementation-evidence.md)。
18-
- **Current placement**: after PR #88 merged as protected-main commit `459a6df`,core-py implementation moved to
19-
`.worktrees/core-py-telegram-integrated` on `feat/telegram-source-towncrier-integrated`。Organization
20-
guidance is isolated in `.worktrees/github-release-guidance` on `feat/release-lifecycle-guidance` from `.github`
21-
`origin/main` `6c7d802`。The former pre-merge implementation worktree remains only as an uncommitted transfer backup until
22-
integrated verification completes;it is not the delivery branch。The retained MCP worktree remains untouched。
18+
- **Current placement**: core-py PR #89 was squash merged to protected main as `42d8527`;organization guidance PR
19+
InKCre/.github#28 was squash merged as `f7269b9`。The integrated、pre-merge transfer and `.github` guidance worktrees were
20+
retired after merge;the separate MCP peer branch/worktree remains untouched。
2321
- **Allocated implementation boundary**: Telegram runtime behavior remains confined to `extensions/telegram/**` plus its
2422
generated OpenAPI consequence。The same Unit additionally owns the repository-wide Changie-to-Towncrier release-contract
2523
migration,including Core,root dependency/lock、release tooling/automation、changelog/fragment convention and contributor
2624
guidance,plus one tool-agnostic `InKCre/.github` release-guidance reference on its own repository branch。Core
2725
Source/Resolver/Extension framework and migrations remain outside ownership。
28-
- **Delivery**: core-py PR #89 is merge-ready at head `624b9ef`;organization guidance PR InKCre/.github#28 was squash
29-
merged as `f7269b9`。No Unit behavior、verification or delivery work remains after #89 merges;the parent Task retains the
30-
packet until its own lifecycle closes。
26+
- **Delivery**: core-py PR #89 and organization guidance PR InKCre/.github#28 are merged。Protected-main repository/runtime
27+
checks and artifact delivery passed;the new controller created independent Release PR #90。No Unit behavior、verification
28+
or delivery work remains;the parent Task retains this packet until its own lifecycle closes。
3129

3230
## Product outcome
3331

0 commit comments

Comments
 (0)