create-pr

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Create PR

创建 PR

Enterprise-owned recorder for opening or reusing a pull request for a completed development phase. It has two paths selected from
log.json
:
  • Stacked plans (
    header.phase_branches.mode == "stacked"
    ): a manual repair recorder that runs
    publish-phase
    against the recorded phase branch. The phase branch is read by ref and is never checked out.
  • Other plans (
    none
    or no
    phase_branches
    header): creates or reuses the PR for the current branch.
It does not own phase-verdict reporting.
Core principle: This is an explicit user-triggered recorder. It creates or discovers a PR, records its identity, and surfaces preflight warnings verbatim. Phase summaries and inline verdicts belong to the Enterprise adapter, not this skill or Core.
v4 boundary: Package
4.2.1
uses
CONTRACT=3
,
PIPELINE=5
, lifecycle schema
2
, adapter contract
2
, and surface manifest
1
. This skill is part of the additive Enterprise role and requires matching Core. Core is local-first: it does not call
gh
, it does not merge pull requests, and it does not close issues. This recorder may call GitHub only after explicit user invocation and successful Enterprise preflight; it never merges a PR or closes an issue.
Use this when: The user requests a phase PR, or explicitly confirms an Enterprise offer. For a non-stacked plan the target phase is in
REVIEW
. For a stacked plan the target phase is
DONE
and its
phase-closed
event exists (created by
log handoff
, see pocket-closing's Stacked Handoff).
Do NOT use when: Enterprise is disabled, a compatible Core/adapter preflight fails, or there is no linked issue.

Enterprise 层负责的记录器,用于为已完成的开发阶段创建或复用 pull request。它包含两条路径,根据
log.json
进行选择:
  • 堆叠式计划(
    header.phase_branches.mode == "stacked"
    ):手动修复型记录器,针对已记录的阶段分支运行
    publish-phase
    。阶段分支按 ref 读取,绝不执行 checkout。
  • 其他计划(
    none
    或不存在
    phase_branches
    header):为当前分支创建或复用 PR。
它不负责 phase-verdict 报告。
核心原则: 这是一个由用户显式触发的记录器。它负责创建或发现 PR、记录 PR 身份,并原样呈现 preflight 警告。阶段摘要和内联 verdict 属于 Enterprise adapter,而不属于此 skill 或 Core。
v4 边界: 包
4.2.1
使用
CONTRACT=3
、
PIPELINE=5
、lifecycle schema
2
、adapter contract
2
和 surface manifest
1
。此 skill 是增量 Enterprise role 的一部分,并要求匹配对应的 Core。Core 采用 local-first 模式:不调用
gh
,不合并 pull request,也不关闭 issue。此记录器仅可在用户显式调用且 Enterprise preflight 成功后调用 GitHub;它绝不合并 PR 或关闭 issue。
适用场景: 用户请求 phase PR,或明确确认 Enterprise offer。对于非堆叠式计划,目标阶段应为
REVIEW
。对于堆叠式计划,目标阶段应为
DONE
,并且必须存在由
log handoff
创建的
phase-closed
事件(参见 pocket-closing 的 Stacked Handoff)。
禁止使用场景: Enterprise 已禁用、兼容的 Core/adapter preflight 失败,或不存在关联 issue。

Invocation

调用

text
/pocketto:create-pr <plan_dir> [<phase_file>]
Examples:
text
/pocketto:create-pr docs/pocket/plans/2026-09-19-feature/
/pocketto:create-pr docs/pocket/plans/2026-09-19-feature/ execution-plan/phase-1.md
  • <plan_dir>
    contains
    log.json
    and the execution-plan files.
  • <phase_file>
    is optional. When omitted, select the unique
    log.phases[]
    entry that is eligible for the plan's path:
    status == REVIEW
    for non-stacked plans, or
    status == DONE
    for stacked plans. Zero or multiple matches require an explicit phase file.
text
/pocketto:create-pr <plan_dir> [<phase_file>]
示例:
text
/pocketto:create-pr docs/pocket/plans/2026-09-19-feature/
/pocketto:create-pr docs/pocket/plans/2026-09-19-feature/ execution-plan/phase-1.md
  • <plan_dir>
    包含
    log.json
    和 execution-plan 文件。
  • <phase_file>
    为可选参数。省略时,选择符合计划路径的唯一
    log.phases[]
    条目:非堆叠式计划要求
    status == REVIEW
    ,堆叠式计划要求
    status == DONE
    。出现零个或多个匹配项时,必须显式提供 phase file。

Hard Constraints

硬性约束

<HARD-GATE> 1. **No branch management** — on the non-stacked path never check out, create, switch, or remove a branch; use the current branch. The stacked path reads the recorded phase branch by ref and never checks it out. 2. **Preflight before GitHub** — verify Enterprise mode, compatible Core contract 3, lifecycle schema 2, and registered adapter contract 2 before any GitHub operation. 3. **Traveling state before PR creation (non-stacked only)** — commit `log.json`, plan docs, and spec docs before `gh pr create`. On the stacked path `log handoff` has already committed the phase's traveling state to its phase branch; this recorder does not stage or commit. 4. **Always `--body-file`** — never pass a multiline PR body inline (non-stacked path; the stacked body is built by `publish-phase`). 5. **Recorder only** — never merge the PR or close the linked issue; `closes #N` is a GitHub link that takes effect only if a human later merges the final PR. 6. **Recorder only** — do not post verdict summaries, inline findings, or tasklist comments from this skill. 7. **Never rebase, never force-push, never retarget** — do not run any rebase, do not perform any forced push of any kind, and do not change a PR base. Stacked pushes are fast-forward only and are performed by `publish-phase` itself. If a push, divergence, or base conflict blocks the run, stop and report it for manual resolution. </HARD-GATE>
<HARD-GATE> 1. **禁止分支管理**——在非堆叠路径中,绝不 checkout、创建、切换或删除分支;应使用当前分支。在堆叠路径中,按 ref 读取已记录的阶段分支,绝不将其 checkout。 2. **先执行 preflight,再访问 GitHub**——在任何 GitHub 操作之前,验证 Enterprise 模式、兼容的 Core contract 3、lifecycle schema 2 和已注册的 adapter contract 2。 3. **创建 PR 前提交 traveling state(仅限非堆叠路径)**——在执行 `gh pr create` 前,提交 `log.json`、计划文档和 spec 文档。在堆叠路径中,`log handoff` 已将阶段的 traveling state 提交到其阶段分支;此记录器不会执行 stage 或 commit。 4. **始终使用 `--body-file`**——绝不以内联方式传入多行 PR 正文(非堆叠路径;堆叠路径的正文由 `publish-phase` 构建)。 5. **仅作记录**——绝不合并 PR 或关闭关联 issue;`closes #N` 只是一个 GitHub 链接,只有在人工之后合并最终 PR 时才会生效。 6. **仅作记录**——此 skill 不得发布 verdict 摘要、内联 findings 或 tasklist comments。 7. **绝不 rebase、绝不 force-push、绝不 retarget**——不得执行任何 rebase、任何形式的强制 push,也不得更改 PR base。堆叠式 push 只能采用 fast-forward,并由 `publish-phase` 本身执行。如果 push、divergence 或 base conflict 阻塞运行,停止并报告,以便人工处理。 </HARD-GATE>

Preflight

Preflight

Run these checks before staging files or making a GitHub call. They apply to both paths.
在暂存文件或调用 GitHub 之前运行以下检查。两条路径均适用。

Step 1: Enterprise mode

第 1 步:Enterprise 模式

bash
npx -y pocketto-pi mode --json --contract 3
Stop unless the envelope succeeds and
data.enterprise
is strictly
true
.
bash
npx -y pocketto-pi mode --json --contract 3
除非 envelope 成功且
data.enterprise
严格为
true
,否则停止。

Step 2: Core and adapter compatibility

第 2 步:Core 和 adapter 兼容性

enterprise/cli.js
is in the pocketto-pi package root, not in the project being checked. A checkout of this repository runs:
bash
node enterprise/cli.js preflight <project-root> --json
A project that depends on the npm package runs
node node_modules/pocketto-pi/enterprise/cli.js preflight <project-root> --json
.
Continue only when preflight succeeds and confirms the compatible Core contract, lifecycle schema 2, adapter contract 2, and registration. On failure, stop before GitHub and follow the actionable install/upgrade guidance. A registration written under adapter contract 1 fails preflight with
ENTERPRISE_ADAPTER_CONTRACT_MISMATCH
; the user must reinstall the adapter (see
skills/pocket-enterprise/references/onboarding.md
).
Preflight returns
data.warnings
, an array of ignored-artifact warnings. Keep this array for the report (see Completion Report).
enterprise/cli.js
位于 pocketto-pi 包根目录,而不是被检查的项目中。检出此仓库时运行:
bash
node enterprise/cli.js preflight <project-root> --json
依赖 npm 包的项目运行:
bash
node node_modules/pocketto-pi/enterprise/cli.js preflight <project-root> --json
仅当 preflight 成功,并确认兼容的 Core contract、lifecycle schema 2、adapter contract 2 和 registration 时方可继续。失败时,在访问 GitHub 前停止,并遵循可操作的安装或升级指南。使用 adapter contract 1 写入的 registration 会以
ENTERPRISE_ADAPTER_CONTRACT_MISMATCH
失败;用户必须重新安装 adapter(参见
skills/pocket-enterprise/references/onboarding.md
)。
Preflight 返回
data.warnings
,它是一个 ignored-artifact 警告数组。保留该数组,供报告使用(参见“完成报告”)。

Step 3: Authentication

第 3 步:认证

bash
gh auth status
If authentication is unavailable, stop with the
gh auth login
corrective action. Do not stage or commit traveling state before preflight and authentication pass.
bash
gh auth status
如果认证不可用,停止并给出
gh auth login
修正操作。在 preflight 和认证均通过前,不得暂存或提交 traveling state。

Step 4: Resolve paths, path, and linked issue

第 4 步:解析路径、执行路径和关联 issue

Read
<plan_dir>/log.json
. Determine the path from
header.phase_branches.mode
:
  • "stacked"
    → Stacked Path.
  • anything else, including an absent
    phase_branches
    header → Non-Stacked Path.
Resolve
phase_file
and
phase_key
from the matching
log.phases[]
entry, requiring the status for that path (see Invocation).
  • spec_dir
    is
    docs/pocket/spec/<slug>/
    , with
    <slug>
    matching the plan directory basename.
  • phase_key
    is
    phase-${phase.order}
    from
    log.json
    .
  • Use
    log.phases[]
    order to determine whether this is the final phase.
Read the linked issue:
bash
npx -y pocketto-pi meta get <spec_dir> github_issue.number --json --contract 3
If no positive issue number exists, stop. Run the approved-spec issue reconciliation through the Enterprise lifecycle adapter before requesting a phase PR.

读取
<plan_dir>/log.json
。根据
header.phase_branches.mode
确定执行路径:
  • "stacked"
    → 堆叠路径。
  • 其他任何值,包括不存在
    phase_branches
    header → 非堆叠路径。
从匹配的
log.phases[]
条目解析
phase_file
和
phase_key
,并要求其状态符合该路径的要求(参见“调用”)。
  • spec_dir
    为
    docs/pocket/spec/<slug>/
    ,其中
    <slug>
    与计划目录的 basename 匹配。
  • phase_key
    为
    log.json
    中的
    phase-${phase.order}
    。
  • 使用
    log.phases[]
    的顺序判断是否为最后一个阶段。
读取关联 issue:
bash
npx -y pocketto-pi meta get <spec_dir> github_issue.number --json --contract 3
如果不存在有效的正数 issue number,则停止。请求 phase PR 前,必须通过 Enterprise lifecycle adapter 执行已批准 spec 的 issue 对账流程。

Stacked Path

堆叠路径

Use this path when
log.json
records
header.phase_branches.mode == "stacked"
. The phase must be
DONE
, and
log handoff
must already have committed its
phase-closed
event.
publish-phase
does the remote work and its own identity recording, so this path does not build a PR body, call
gh pr create
, or write
github_pr
metadata itself.
当
log.json
记录
header.phase_branches.mode == "stacked"
时,使用此路径。该阶段必须为
DONE
,并且
log handoff
必须已提交其
phase-closed
事件。
publish-phase
负责远程操作和自身的身份记录,因此此路径不会构建 PR 正文、调用
gh pr create
,也不会自行写入
github_pr
metadata。

Run publish-phase

运行 publish-phase

From a checkout of this repository:
bash
node enterprise/cli.js publish-phase <project-root> <spec_dir> <phase_key> --json
For a project that depends on the npm package, replace
node enterprise/cli.js
with
node node_modules/pocketto-pi/enterprise/cli.js
. Do not add
--contract
; this command does not accept it.
publish-phase
reruns preflight itself. It pushes the phase branch only as a fast-forward, and only when consent exists. Consent is either the durable
push_consent
recorded by
install --push-consent phase-branches
, or an approval bound to the exact commit. It creates the PR against its explicit base (phase 1: the recorded root base; phase N: the phase N-1 branch) or reuses the one already recorded, and it records PR identity in Enterprise metadata. It writes no lifecycle events and changes no branch.
Its envelope is
{ ok, command: "enterprise-publish-phase", data: { phase_key, pr_number, pr_url, created, notices }, error }
.
  • created: true
    → report
    PR_READY
    .
    created: false
    → report
    PR_REUSED
    .
  • Relay each
    notices[].message
    as written (
    PR_CREATED
    or
    PR_REUSED
    ).
从检出的此仓库运行:
bash
node enterprise/cli.js publish-phase <project-root> <spec_dir> <phase_key> --json
对于依赖 npm 包的项目,将
node enterprise/cli.js
替换为
node node_modules/pocketto-pi/enterprise/cli.js
。不要添加
--contract
;此命令不接受该参数。
publish-phase
会自行重新运行 preflight。它仅在存在 consent 时,以 fast-forward 方式 push 阶段分支。Consent 可以是
install --push-consent phase-branches
记录的持久
push_consent
,也可以是绑定到确切 commit 的 approval。它针对明确的 base 创建 PR(phase 1:已记录的 root base;phase N:phase N-1 分支),或复用已记录的 PR,并在 Enterprise metadata 中记录 PR 身份。它不写入 lifecycle event,也不更改任何分支。
其 envelope 为
{ ok, command: "enterprise-publish-phase", data: { phase_key, pr_number, pr_url, created, notices }, error }
。
  • created: true
    → 报告
    PR_READY
    。
    created: false
    → 报告
    PR_REUSED
    。
  • 原样转发每个
    notices[].message
    (
    PR_CREATED
    或
    PR_REUSED
    )。

Stacked error handling

堆叠路径错误处理

CodeAction
PUSH_CONSENT_REQUIRED
Stop and show the exact
consent-push … --sha <40-hex>
command from the error message. Run it only after the user approves that commit SHA, then rerun
publish-phase
. Never record approval on the user's behalf.
PHASE_CLOSED_EVENT_REQUIRED
No
phase-closed
event exists for the phase. Run
log handoff
through pocket-closing's Stacked Handoff first, then rerun.
PHASE_CLOSED_NOT_STACKED
The plan is not stacked. Use the Non-Stacked Path.
PR_BLOCKED
Manual resolution. The message names the reason: base retargeted on GitHub, duplicate open PR for the same head and base, a foreign PR for the head, an unrecorded root base, an unpublished parent branch, or a merged or closed parent PR. Pocket does not retarget, close duplicates, or rebase; the user fixes it on GitHub, then reruns. For a merged parent PR, open or retarget the child PR against the base the parent merged into, then rerun: Pocket reuses that PR. A closed parent PR cannot be fixed by a rerun, so its repair is a manual decision.
PUSH_FAILED
,
REMOTE_UNAVAILABLE
,
GIT_UNAVAILABLE
,
GH_MALFORMED_OUTPUT
Retryable. Report it and rerun after the condition clears. Do not work around it with a rebase or a forced push.
ENTERPRISE_*
or preflight codes
Follow the install/upgrade guidance in the message.
Any other codeReport the code and message verbatim and stop.
A failed run leaves no lifecycle state changed. Report the code; do not retry in a loop.

代码操作
PUSH_CONSENT_REQUIRED
停止,并显示错误消息中的确切
consent-push … --sha <40-hex>
命令。仅在用户批准该 commit SHA 后运行,然后重新运行
publish-phase
。绝不能代替用户记录 approval。
PHASE_CLOSED_EVENT_REQUIRED
该阶段不存在
phase-closed
事件。先通过 pocket-closing 的 Stacked Handoff 运行
log handoff
,然后重新运行。
PHASE_CLOSED_NOT_STACKED
计划不是堆叠式。使用非堆叠路径。
PR_BLOCKED
需要人工处理。消息会指明原因:GitHub 上的 base 已被 retarget;同一 head 和 base 存在重复的开放 PR;该 head 存在外部 PR;缺少已记录的 root base;父分支尚未发布;或父 PR 已合并或关闭。Pocket 不会 retarget、关闭重复 PR 或 rebase;用户在 GitHub 上修复后,再重新运行。若父 PR 已合并,则针对父 PR 合并到的 base 打开或 retarget 子 PR,然后重新运行;Pocket 会复用该 PR。父 PR 已关闭无法通过重跑修复,因此需要人工决定。
PUSH_FAILED
、
REMOTE_UNAVAILABLE
、
GIT_UNAVAILABLE
、
GH_MALFORMED_OUTPUT
可重试。报告问题,并在相关条件解除后重新运行。不要通过 rebase 或 force-push 绕过问题。
ENTERPRISE_*
或 preflight 错误代码
遵循消息中的安装或升级指南。
其他任何代码原样报告代码和消息并停止。
失败的运行不会改变任何 lifecycle state。报告错误代码;不要循环重试。

Non-Stacked Path

非堆叠路径

Use this path when the plan does not record stacked phase branches. Behavior is unchanged from earlier releases.
当计划未记录堆叠式阶段分支时,使用此路径。其行为与早期版本相同。

Current Branch

当前分支

bash
git rev-parse --abbrev-ref HEAD
Record the result as
<branch>
. Do not change branches.
bash
git rev-parse --abbrev-ref HEAD
将结果记录为
<branch>
。不要切换分支。

PR Discovery

PR 发现

First check Enterprise metadata:
bash
npx -y pocketto-pi meta get <spec_dir> phases.<phase_key>.github_pr.number --json --contract 3
If it contains a positive number, read its URL and reuse it. Otherwise search for a PR on the current branch:
bash
gh pr list --head <branch> --json number,url
Reuse one exact match and record its identity. If no match exists, continue to explicit creation. If the target is ambiguous or belongs to a different plan/phase, stop for manual resolution.
首先检查 Enterprise metadata:
bash
npx -y pocketto-pi meta get <spec_dir> phases.<phase_key>.github_pr.number --json --contract 3
如果其中包含有效的正数,则读取其 URL 并复用。否则搜索当前分支上的 PR:
bash
gh pr list --head <branch> --json number,url
复用唯一精确匹配项,并记录其身份。如果不存在匹配项,则继续显式创建。如果目标不明确或属于其他 plan/phase,则停止并转人工处理。

Commit Traveling State

提交 Traveling State

Before creating a PR, include the plan and its review evidence:
bash
git add -f <plan_dir>/log.json <plan_dir> <spec_dir>
git diff --cached --quiet || git commit -m "chore(pocket): traveling state for <phase_key>"
If no staged change exists, skip the commit. Push is not performed by this skill.
创建 PR 前,应包含计划及其 review evidence:
bash
git add -f <plan_dir>/log.json <plan_dir> <spec_dir>
git diff --cached --quiet || git commit -m "chore(pocket): traveling state for <phase_key>"
如果不存在 staged change,则跳过 commit。此 skill 不执行 push。

Build and Create the PR

构建并创建 PR

Write a temporary structured input file using Node
fs
(not a shell heredoc) with:
FieldSource
issue
Linked issue number from metadata
finalPhase
Whether this is the last phase in
log.json
fileCount
Deduplicated paths changed in this phase
what
Phase file and task summaries
why
Approved spec or plan context
howToTest
Acceptance criteria and task verification commands
Format the body:
bash
npx -y pocketto-pi format pr --input <pr-input.json> --json --contract 3
Read
data.bodyFile
and
data.fileWarning
. If
fileWarning
is true, tell the user but continue; it is not a creation gate.
bash
gh pr create --head <branch> --title "<phase title>" --body-file <data.bodyFile>
Use
closes #N
for the final phase and
refs #N
for an earlier phase. The reference does not close the issue when the PR is created; a human-controlled merge is required. Parse the resulting PR number and URL.
使用 Node
fs
(不要使用 shell heredoc)写入临时结构化输入文件,包含:
字段来源
issue
metadata 中的关联 issue number
finalPhase
是否为
log.json
中最后一个 phase
fileCount
此 phase 中已去重的变更路径数
what
Phase 文件和 task 摘要
why
已批准的 spec 或 plan 上下文
howToTest
验收标准和 task 验证命令
格式化正文:
bash
npx -y pocketto-pi format pr --input <pr-input.json> --json --contract 3
读取
data.bodyFile
和
data.fileWarning
。如果
fileWarning
为 true,则告知用户但继续执行;它不是创建门禁。
bash
gh pr create --head <branch> --title "<phase title>" --body-file <data.bodyFile>
最后一个阶段使用
closes #N
,较早的阶段使用
refs #N
。该引用不会在创建 PR 时关闭 issue;必须由人工控制的 merge 才会生效。解析生成的 PR number 和 URL。

Record PR Identity

记录 PR 身份

Only after a successful create or discovery, record the PR under the phase key:
bash
npx -y pocketto-pi meta set <spec_dir> phases.<phase_key>.github_pr.number <N> --json --contract 3
npx -y pocketto-pi meta set <spec_dir> phases.<phase_key>.github_pr.url "<url>" --json --contract 3

仅在成功创建或发现 PR 后,将 PR 记录在 phase key 下:
bash
npx -y pocketto-pi meta set <spec_dir> phases.<phase_key>.github_pr.number <N> --json --contract 3
npx -y pocketto-pi meta set <spec_dir> phases.<phase_key>.github_pr.url "<url>" --json --contract 3

Completion Report

完成报告

Warnings: Report the preflight
data.warnings
entries verbatim under
Warnings:
, in the same text and order preflight produced. Do not summarize, reword, or drop them. Write
none
only when the array is empty.
Stacked path:
text
PR_READY: <phase_key>        (or PR_REUSED when created is false)
Path: stacked (publish-phase)
PR: #<pr_number> <pr_url>
Warnings: <verbatim preflight warnings, or none>
Non-stacked path:
text
PR_READY: <phase_key>        (or PR_REUSED when the PR was reused)
Path: non-stacked
Branch: <branch>
PR: #<N> <url>
Issue link: <refs|closes> #<issue>
fileWarning: <true|false>
Warnings: <verbatim preflight warnings, or none>
警告: 按照 preflight 产生的相同文本和顺序,在
Warnings:
下原样报告
data.warnings
条目。不要总结、改写或省略。仅当数组为空时写
none
。
堆叠路径:
text
PR_READY: <phase_key>        (or PR_REUSED when created is false)
Path: stacked (publish-phase)
PR: #<pr_number> <pr_url>
Warnings: <verbatim preflight warnings, or none>
非堆叠路径:
text
PR_READY: <phase_key>        (or PR_REUSED when the PR was reused)
Path: non-stacked
Branch: <branch>
PR: #<N> <url>
Issue link: <refs|closes> #<issue>
fileWarning: <true|false>
Warnings: <verbatim preflight warnings, or none>

Red Flags

危险信号

ThoughtCounter
"I'll create a feature branch first"STOP. This recorder never manages branches.
"Skip the traveling-state commit"STOP. Review needs the plan log and artifacts on the PR. This applies to the non-stacked path; on the stacked path
log handoff
already committed them.
"This recorder should post phase verdicts"STOP. The registered Enterprise lifecycle adapter owns phase reporting when a
phase-complete
or
phase-closed
event is drained.
"The push was rejected, so force it"STOP. Pocket never force-pushes. Divergence is blocked for manual resolution.
"Rebase the phase branch to clear the conflict"STOP. This recorder never rebases.
"Point the PR at the root to fix the base"STOP. Pocket does not retarget. Fix the base on GitHub, then rerun.
"Run consent-push myself so it goes through"STOP. Show the user the exact command and wait for their approval of that SHA.
"I'll inline the PR body"Use
format pr
and
--body-file
(non-stacked path).
"No issue yet — create the PR anyway"STOP. Reconcile the approved spec issue first.
想法对策
“我先创建一个功能分支”STOP. 此记录器绝不管理分支。
“跳过 traveling-state commit”STOP. 评审需要 PR 中包含 plan log 和相关产物。这适用于非堆叠路径;在堆叠路径中,
log handoff
已提交这些内容。
“此记录器应该发布 phase verdict”STOP. 当
phase-complete
或
phase-closed
事件被 drain 时,已注册的 Enterprise lifecycle adapter 负责 phase 报告。
“push 被拒绝了,所以 force push”STOP. Pocket 绝不 force-push。divergence 会阻塞运行,等待人工处理。
“rebase phase branch 以解决冲突”STOP. 此记录器绝不 rebase。
“将 PR 指向 root 以修复 base”STOP. Pocket 不会 retarget。在 GitHub 上修复 base,然后重新运行。
“我自己运行 consent-push 让它通过”STOP. 向用户显示确切命令,并等待其批准该 SHA。
“我会内联 PR 正文”使用
format pr
和
--body-file
(非堆叠路径)。
“还没有 issue——仍然创建 PR”STOP. 先完成已批准 spec 的 issue 对账。