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
138 changes: 138 additions & 0 deletions .agentplane/tasks/202605011918-JW3M0Z/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
---
id: "202605011918-JW3M0Z"
title: "Standardize release PR titles and messages"
status: "DOING"
priority: "high"
owner: "CODER"
revision: 5
origin:
system: "manual"
depends_on: []
tags:
- "code"
- "release"
- "workflow"
verify: []
plan_approval:
state: "approved"
updated_at: "2026-05-01T19:18:27.774Z"
updated_by: "ORCHESTRATOR"
note: null
verification:
state: "ok"
updated_at: "2026-05-01T19:24:48.053Z"
updated_by: "CODER"
note: "Passed targeted PR-title, hosted-close, release-evidence, workflow-contract, lint, routing, bootstrap, and doctor checks."
commit: null
comments:
-
author: "CODER"
body: "Start: standardize branch_pr, hosted-close, and release-evidence PR titles with one readable task format."
events:
-
type: "status"
at: "2026-05-01T19:18:47.792Z"
author: "CODER"
from: "TODO"
to: "DOING"
note: "Start: standardize branch_pr, hosted-close, and release-evidence PR titles with one readable task format."
-
type: "verify"
at: "2026-05-01T19:24:48.053Z"
author: "CODER"
state: "ok"
note: "Passed targeted PR-title, hosted-close, release-evidence, workflow-contract, lint, routing, bootstrap, and doctor checks."
doc_version: 3
doc_updated_at: "2026-05-01T19:24:48.060Z"
doc_updated_by: "CODER"
description: "Make branch_pr and hosted-close PR titles/messages use one readable canonical format before publishing v0.4.1."
sections:
Summary: |-
Standardize release PR titles and messages

Make branch_pr and hosted-close PR titles/messages use one readable canonical format before publishing v0.4.1.
Scope: |-
- In scope: Make branch_pr and hosted-close PR titles/messages use one readable canonical format before publishing v0.4.1.
- Out of scope: unrelated refactors not required for "Standardize release PR titles and messages".
Plan: |-
1. Inspect PR title generation for branch_pr PRs, hosted-close PRs, and release evidence PRs.
2. Add a shared readable PR title/message formatter that produces one canonical shape for task PRs and close PRs.
3. Update command scripts/workflow helpers and tests/contracts that assert titles.
4. Run targeted PR/hosted-close tests plus workflow checks, lint, policy routing, and doctor.
5. Open/merge this task via branch_pr, then reassess release readiness before publishing v0.4.1.
Verify Steps: |-
1. Review the changed artifact or behavior for the `code` task. Expected: the requested outcome is visible and matches the approved scope.
2. Run the most relevant validation step for the `code` task. Expected: it succeeds without unexpected regressions in touched scope.
3. Compare the final result against the task summary and scope. Expected: any remaining follow-up is explicit in ## Findings.
Verification: |-
<!-- BEGIN VERIFICATION RESULTS -->
### 2026-05-01T19:24:48.053Z — VERIFY — ok

By: CODER

Note: Passed targeted PR-title, hosted-close, release-evidence, workflow-contract, lint, routing, bootstrap, and doctor checks.

VerifyStepsRef: doc_version=3, doc_updated_at=2026-05-01T19:18:47.792Z, excerpt_hash=sha256:0c911ba57bbda86e6b1d4b2c31f39ff10ccc1febf923fdb7f66dbb574080a0d7

<!-- END VERIFICATION RESULTS -->
Rollback Plan: |-
- Revert task-related commit(s).
- Re-run required checks to confirm rollback safety.
Findings: |-
- Observation: PR titles now use canonical task/task-close/task-evidence prefixes with full task ids, and generated PR bodies use Source/Scope sections.
Impact: Release and closure PRs are easier to scan and no longer mix suffix-only, emoji-only, and scoped-title formats.
Resolution: Updated task PR, hosted close PR, hosted workflow closure, and release evidence PR generators plus regression tests.
Promotion: incident-candidate
Fixability: external
id_source: "generated"
---
## Summary

Standardize release PR titles and messages

Make branch_pr and hosted-close PR titles/messages use one readable canonical format before publishing v0.4.1.

## Scope

- In scope: Make branch_pr and hosted-close PR titles/messages use one readable canonical format before publishing v0.4.1.
- Out of scope: unrelated refactors not required for "Standardize release PR titles and messages".

## Plan

1. Inspect PR title generation for branch_pr PRs, hosted-close PRs, and release evidence PRs.
2. Add a shared readable PR title/message formatter that produces one canonical shape for task PRs and close PRs.
3. Update command scripts/workflow helpers and tests/contracts that assert titles.
4. Run targeted PR/hosted-close tests plus workflow checks, lint, policy routing, and doctor.
5. Open/merge this task via branch_pr, then reassess release readiness before publishing v0.4.1.

## Verify Steps

1. Review the changed artifact or behavior for the `code` task. Expected: the requested outcome is visible and matches the approved scope.
2. Run the most relevant validation step for the `code` task. Expected: it succeeds without unexpected regressions in touched scope.
3. Compare the final result against the task summary and scope. Expected: any remaining follow-up is explicit in ## Findings.

## Verification

<!-- BEGIN VERIFICATION RESULTS -->
### 2026-05-01T19:24:48.053Z — VERIFY — ok

By: CODER

Note: Passed targeted PR-title, hosted-close, release-evidence, workflow-contract, lint, routing, bootstrap, and doctor checks.

VerifyStepsRef: doc_version=3, doc_updated_at=2026-05-01T19:18:47.792Z, excerpt_hash=sha256:0c911ba57bbda86e6b1d4b2c31f39ff10ccc1febf923fdb7f66dbb574080a0d7

<!-- END VERIFICATION RESULTS -->

## Rollback Plan

- Revert task-related commit(s).
- Re-run required checks to confirm rollback safety.

## Findings

- Observation: PR titles now use canonical task/task-close/task-evidence prefixes with full task ids, and generated PR bodies use Source/Scope sections.
Impact: Release and closure PRs are easier to scan and no longer mix suffix-only, emoji-only, and scoped-title formats.
Resolution: Updated task PR, hosted close PR, hosted workflow closure, and release evidence PR generators plus regression tests.
Promotion: incident-candidate
Fixability: external
13 changes: 13 additions & 0 deletions .agentplane/tasks/202605011918-JW3M0Z/pr/diffstat.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
.github/workflows/publish.yml | 4 +--
.../cli/prepare-hosted-task-closure-script.test.ts | 7 +++-
.../cli/run-cli.core.pr-flow.pr-lifecycle.test.ts | 2 +-
.../run-cli.core.pr-flow.pr-open.artifacts.test.ts | 4 +--
.../cli/run-cli.core.task-hosted-close-pr.test.ts | 4 +++
.../src/commands/pr/internal/review-template.ts | 23 +++----------
.../release/release-task-evidence-script.test.ts | 4 ++-
.../src/commands/task/hosted-close-pr.execute.ts | 30 ++++++++++++-----
.../src/commands/task/hosted-close-pr.precheck.ts | 1 +
.../src/commands/task/hosted-close-pr.types.ts | 1 +
scripts/prepare-hosted-task-closure.mjs | 39 +++++++++++++++++++---
scripts/release-task-evidence.mjs | 22 ++++++++----
12 files changed, 94 insertions(+), 47 deletions(-)
48 changes: 48 additions & 0 deletions .agentplane/tasks/202605011918-JW3M0Z/pr/github-body.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
Task: `202605011918-JW3M0Z`
Title: Standardize release PR titles and messages

## Summary

Standardize release PR titles and messages

Make branch_pr and hosted-close PR titles/messages use one readable canonical format before publishing v0.4.1.

## Scope

- In scope: Make branch_pr and hosted-close PR titles/messages use one readable canonical format before publishing v0.4.1.
- Out of scope: unrelated refactors not required for "Standardize release PR titles and messages".

## Verification

- State: ok
- Note: Passed targeted PR-title, hosted-close, release-evidence, workflow-contract, lint, routing, bootstrap, and doctor checks.
- Full verification checklist lives in local review.md.

## Handoff Notes

- No handoff notes recorded yet. Use `agentplane pr note ...` to append one.

<details>
<summary>Raw evidence</summary>

- Updated: 2026-05-01T19:25:13.455Z
- Branch: task/202605011918-JW3M0Z/standardize-pr-titles
- Head: 4952e94907c1

```text
.github/workflows/publish.yml | 4 +--
.../cli/prepare-hosted-task-closure-script.test.ts | 7 +++-
.../cli/run-cli.core.pr-flow.pr-lifecycle.test.ts | 2 +-
.../run-cli.core.pr-flow.pr-open.artifacts.test.ts | 4 +--
.../cli/run-cli.core.task-hosted-close-pr.test.ts | 4 +++
.../src/commands/pr/internal/review-template.ts | 23 +++----------
.../release/release-task-evidence-script.test.ts | 4 ++-
.../src/commands/task/hosted-close-pr.execute.ts | 30 ++++++++++++-----
.../src/commands/task/hosted-close-pr.precheck.ts | 1 +
.../src/commands/task/hosted-close-pr.types.ts | 1 +
scripts/prepare-hosted-task-closure.mjs | 39 +++++++++++++++++++---
scripts/release-task-evidence.mjs | 22 ++++++++----
12 files changed, 94 insertions(+), 47 deletions(-)
```

</details>
1 change: 1 addition & 0 deletions .agentplane/tasks/202605011918-JW3M0Z/pr/github-title.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
task: Standardize release PR titles and messages [202605011918-JW3M0Z]
14 changes: 14 additions & 0 deletions .agentplane/tasks/202605011918-JW3M0Z/pr/meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"base": "main",
"branch": "task/202605011918-JW3M0Z/standardize-pr-titles",
"created_at": "2026-05-01T19:18:47.834Z",
"head_sha": "4952e94907c181febfbb5c2268b2d1b5617a5629",
"last_verified_at": "2026-05-01T19:24:48.053Z",
"last_verified_sha": "abc47697882b1cbb9bf7883ffb2f962c6eaa9e2c",
"schema_version": 1,
"task_id": "202605011918-JW3M0Z",
"updated_at": "2026-05-01T19:25:13.455Z",
"verify": {
"status": "pass"
}
}
Empty file.
69 changes: 69 additions & 0 deletions .agentplane/tasks/202605011918-JW3M0Z/pr/review.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# PR Review

Created: 2026-05-01T19:18:47.834Z
Branch: task/202605011918-JW3M0Z/standardize-pr-titles

## Summary

Standardize release PR titles and messages

Make branch_pr and hosted-close PR titles/messages use one readable canonical format before publishing v0.4.1.

## Scope

- In scope: Make branch_pr and hosted-close PR titles/messages use one readable canonical format before publishing v0.4.1.
- Out of scope: unrelated refactors not required for "Standardize release PR titles and messages".

## Verification

### Plan

1. Review the changed artifact or behavior for the `code` task. Expected: the requested outcome is visible and matches the approved scope.
2. Run the most relevant validation step for the `code` task. Expected: it succeeds without unexpected regressions in touched scope.
3. Compare the final result against the task summary and scope. Expected: any remaining follow-up is explicit in ## Findings.

### Current Status

- State: ok
- Note: Passed targeted PR-title, hosted-close, release-evidence, workflow-contract, lint, routing, bootstrap, and doctor checks.

## Risks

- Risk level: not recorded
- Breaking change: no

### Rollback

- Revert task-related commit(s).
- Re-run required checks to confirm rollback safety.

## Handoff Notes

- No handoff notes recorded yet. Use `agentplane pr note ...` to append one.

<!-- BEGIN AUTO SUMMARY -->
<details>
<summary>Raw evidence</summary>

- Updated: 2026-05-01T19:25:13.455Z
- Branch: task/202605011918-JW3M0Z/standardize-pr-titles
- Head: 4952e94907c1

```text
.github/workflows/publish.yml | 4 +--
.../cli/prepare-hosted-task-closure-script.test.ts | 7 +++-
.../cli/run-cli.core.pr-flow.pr-lifecycle.test.ts | 2 +-
.../run-cli.core.pr-flow.pr-open.artifacts.test.ts | 4 +--
.../cli/run-cli.core.task-hosted-close-pr.test.ts | 4 +++
.../src/commands/pr/internal/review-template.ts | 23 +++----------
.../release/release-task-evidence-script.test.ts | 4 ++-
.../src/commands/task/hosted-close-pr.execute.ts | 30 ++++++++++++-----
.../src/commands/task/hosted-close-pr.precheck.ts | 1 +
.../src/commands/task/hosted-close-pr.types.ts | 1 +
scripts/prepare-hosted-task-closure.mjs | 39 +++++++++++++++++++---
scripts/release-task-evidence.mjs | 22 ++++++++----
12 files changed, 94 insertions(+), 47 deletions(-)
```

</details>
<!-- END AUTO SUMMARY -->
Empty file.
4 changes: 1 addition & 3 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -548,12 +548,10 @@ jobs:
echo "closure_sha=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
exit 0
fi
suffix="${{ steps.release_evidence.outputs.task_id }}"
suffix="${suffix##*-}"
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add "${{ steps.release_evidence.outputs.readme_path }}"
git commit --no-verify -m "📝 ${suffix} task: record hosted publish evidence"
git commit --no-verify -m "📝 ${{ steps.release_evidence.outputs.task_id }} task: record hosted publish evidence"
echo "created_commit=true" >> "$GITHUB_OUTPUT"
echo "closure_sha=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT"
- name: Push release evidence branch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,17 @@ describe("prepare-hosted-task-closure script", () => {
closure_branch?: string;
merge_sha?: string;
pr_title?: string;
pr_body?: string;
};
expect(parsed.actionable).toBe(true);
expect(parsed.task_id).toBe("202603271940-EG3B0C");
expect(parsed.merge_sha).toBe("1234567890abcdef1234567890abcdef12345678");
expect(parsed.closure_branch).toBe("task-close/202603271940-EG3B0C/1234567890ab");
expect(parsed.pr_title).toContain("202603271940-EG3B0C");
expect(parsed.pr_title).toBe(
"task-close: Runner repository refactor [202603271940-EG3B0C]",
);
expect(parsed.pr_body).toContain("## Source");
expect(parsed.pr_body).toContain("## Scope");
});

it("returns a no-op payload for non-task PR branches", async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -523,7 +523,7 @@ describe("runCli branch_pr lifecycle flow", { timeout: PR_FLOW_INTEGRATION_TIMEO
expect(review).toContain("change.txt");
const githubTitle = await readFile(path.join(prDir, "github-title.txt"), "utf8");
const githubBody = await readFile(path.join(prDir, "github-body.md"), "utf8");
expect(githubTitle.trim()).toContain(`(${extractTaskSuffix(taskId)})`);
expect(githubTitle.trim()).toContain(`[${taskId}]`);
expect(githubTitle).not.toContain(`task/${taskId}/pr-update`);
expect(githubBody).toContain("## Summary");
expect(githubBody).toContain("## Scope");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,7 @@ describe("runCli pr open flow artifacts", { timeout: PR_FLOW_INTEGRATION_TIMEOUT
await readFile(prArtifacts.diffstatPath, "utf8");
expect(await readFile(prArtifacts.notesPath, "utf8")).toBe("");
await readFile(prArtifacts.verifyLogPath, "utf8");
expect(await readFile(prArtifacts.githubTitlePath, "utf8")).toContain(
`(${extractTaskSuffix(taskId)})`,
);
expect(await readFile(prArtifacts.githubTitlePath, "utf8")).toContain(`[${taskId}]`);
expect(await prArtifacts.readGithubBody()).toContain("## Verification");
expect(await prArtifacts.readGithubBody()).not.toContain("## Risks");
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -718,6 +718,10 @@ describe("runCli", { timeout: HOSTED_CLOSE_INTEGRATION_TIMEOUT_MS }, () => {
expect(log).toContain(
'"repos/example/repo/pulls?state=closed&head=example%3Atask%2F202604091600-348SVA%2Fhosted-close-pr-fallback&base=main"',
);
expect(log).toContain(
"title=task-close: Hosted close PR fallback [202604091600-348SVA]",
);
expect(log).toContain("## Source");
expect(log).toContain('"POST"');
}, 240_000);

Expand Down
Loading