Skip to content

fix(benchmark): explicitly continue repaired quota failures on the original session - #8217

Open
huangruiteng wants to merge 1 commit into
mainfrom
codex/explicit-host-failure-continuation-20261107
Open

huangruiteng wants to merge 1 commit into
mainfrom
codex/explicit-host-failure-continuation-20261107

Conversation

@huangruiteng

@huangruiteng huangruiteng commented Nov 6, 2026 •

Copy link
Copy Markdown
Collaborator

A benchmark Host that returned quota_exhausted stayed held even after an operator repaired the account, because the outer scheduler had no equivalent of the shared Turn's explicit failed retry. This adds an explicit, digest-bound continuation of that exact failure into a separately admitted finite phase, preserving the original session, failure history and attempt count.

The path verifies the returned wake and terminated process, current Goal/session/profile binding, stable native quota-failed cursor, and fresh account allowance through the existing native provider policy. Unknown or exhausted allowance stays held. A repeated request cannot erase a later failure in the new phase. The native cursor remains failed; ordinary completed-checkpoint requirements, unresolved semantic replan holds, automatic quota holds, and default startup behavior remain unchanged.

The shared TypeScript Host retry decision is reused by the Turn Journal and this caller. A stopped legacy container can supply the existing complete-source proof only for its exact returned quota failure; unknown failures, missing identities and cross-container copies remain refused. This does not recreate a missing workspace, reset scorer opportunities, switch accounts or infer a remaining budget. The existing operator supplies the independently authorized finite deadline. The stricter path requires the optional native Codex provider; its absence fails closed. No new persistent option or settings form is introduced.

Validation:

  • 249 relevant regression tests passed, 1 optional skip.
  • Final focused coverage: 72 passed / 3 optional SDK skips, followed by 65 owner/journal tests after the last refinements.
  • Real SQLite Goal and production scheduler/worker subprocess journey: original-session continuation, repeated failure preservation, Stop before/after preparation, changed profile/session, wrong source digest, unavailable/unknown allowance, and pending semantic replan holds.
  • The actual effect-runtime route rejects missing/invalid intent and malformed failure records; 9 shared Turn base/head decision cases were identical.
  • Offline native-client component readback preserved failed tails and history; no model invocation, account probing, live run mutation or full historical-source recovery is claimed.
  • Full premerge validation completed with zero direct or selected-check failures. Its overall status remains manual_review_required for the benchmark-sensitive boundary; no merge readiness or authority is inferred. Bilingual RFC and whitespace checks passed.

This PR intentionally targets the integration branch that owns its benchmark prerequisites, not main. Independent exact-head review and maintainer merge authorization remain separate.

Main target

This proposal now targets main as its independent 14-file continuation change. The interrupted source prerequisite and native receiver startup prerequisite are in main. The source tree of the continuation is identical before and after dropping the now-landed receiver dependency from this proposal. The previous integration review remains available, and this main-target head needs its own review. Original stopped-source prerequisite #8208 · Receiver startup #8262

@huangruiteng huangruiteng left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent; model=gpt-6-astra; provider=OpenAI; reasoning_effort=ultra; declaration_source=runtime_reported.

动机 / Motivation

实验运营者在订阅额度恢复后,需要接着完成原来未完成的实验。旧外部调度器仍把已返回的额度失败保持在停止状态,没有共享 Turn 已有的显式重试入口;手工清空失败或新建会话会丢失故障和预算依据。此改动让运营者绑定这一次失败、原会话及独立批准的有限时间,再进入普通调度。它保留原失败和尝试次数,不负责重建已删除的工作区,也不自动增加评分机会。完整旧工作区缺失的实验仍不能直接恢复。

改动思路 / Approach

现有入口 benchmark.runtime.scheduler 接收失败状态摘要,而不是新增恢复守护进程。摘要表达明确的本次重试意图;历史、Goal 和账号观察来自已有事实。TypeScript 的 hostFailureRetryCheck 统一决定失败能否显式重试,Python 只负责文件、进程及原生客户端读取。账号容量判断复用现有可选 provider,既不轮换账号也不购买容量。

关键边界是先证明原进程已退出、原会话和配置未改变,再只读确认原生末轮确为额度失败并检查当前容量。通过后追加有限新阶段,随后照常接受 Stop、工作准入和未结算 replan 的约束。重复同一请求只能返回同一阶段,不能清掉其后的新失败。该分层保留旧协议读回,同时避免在 benchmark 里再写一份通用失败决策;当前 PR 只完成原文件系统内的显式失败接续,不承担完整丢失数据恢复或自动补时服务。

具体改动 / Changes

审查头 d442384c8259c56bbe63709b0b76106db07b5e04,基线 1a309ccb3278b68f79d674b66833fadffd8ad476。14 个文件,新增 631 行、删除 45 行;其中生产代码新增 285/删除 42,测试新增 295/删除 3,文档新增 51。共同规则从既有 Turn Journal 提取,原调度与自动重试默认值未改变。

关键代码讲解

  • hostFailureRetryCheck 保留自动重试次数上限,并继续拒绝盲目重放输出预算耗尽;效果运行时严格验证意图布尔值和失败结构。
  • read_failed_host 关联唯一返回回执、进程终止窗口及当前绑定,检查容量前后重新执行 Goal 准入,并核对原状态没有被并发改变。
  • native_failed_turn 只读完整原生历史,拒绝未知错误、未完成效果或变化的历史;保留 failed 状态,不冒充 completed checkpoint。
  • resume_state_file 按有限截止选择追加阶段,保留会话、失败次数和 replan 记录;相同请求不能延长阶段或擦掉后续失败。

验收依据为既有恢复契约 https://github.com/loopx-project/loopx/blob/1a309ccb3278b68f79d674b66833fadffd8ad476/benchmark/README.md#continue-an-interrupted-host-in-its-retained-filesystem ,固定修订 1a309ccb3278b68f79d674b66833fadffd8ad476。对应 original-state:保留原文件、会话及失败,已实现并由真实 SQLite/worker 子进程用例验证;finite-phase:新阶段有限且重复请求不能补充时间,已实现;normal-admission:下一轮仍受 Stop、配置和 replan 约束,已实现。以上是审查对原契约三段要求的索引,不是新产品协议。跨容器完整恢复、丢失文件修复及科学分数收益不在本次实现范围。

对主干的风险 / Risks

最危险的回归是重复恢复请求把新的失败清掉,从而不断执行或重置次数。本次实际运行生产调度器、真实 SQLite 和原生协议替身,覆盖首次失败、重复失败、另一次明确修复、原会话继续工作,以及准备前后 Stop。独立执行新增 33 项全部 PASS;有意把恢复次数改为零时,同一生产路径的断言 FAIL,证明该用例能识别次数丢失。正常原生付费模型和线上历史实验完整恢复未执行,不能从这些测试推出得分提升。

默认关闭证据包括基线和当前头 9 组完整 Turn 决策相同、自动 quota 仍不重试、默认 readiness 行为未改;新增的 CLI help/README 仅解释显式入口,不会进入自动模型提示。作者相关回归 249 项 PASS、1 可选跳过;最终 focused 72 项 PASS、3 可选 SDK 跳过,最终 owner/journal 65 项 PASS。Premerge 直接 6 项和选中 19 项均 PASS,但 benchmark-sensitive 总状态仍是 manual_review_required,不等于允许合并。

语义与 CI 对齐

新增的是现有失败枚举与 Turn 决策的调用入口;没有按错误文案子串判断重试资格,也没有把 benchmark 术语写进通用规则。外部容量仅是当前观察,不是未来容量保证;后续失败仍需新的显式决定。按照当前 review 契约不查询或等待远端 CI。缺少可选原生 provider、未知容量、变更绑定或缺失完整源时均保持停止,不能用旧 checkpoint 绕过。部署时必须保留这项可选依赖和原始文件系统。

我的整体评价 / Verdict

该切片是 justified_increment:已经打通可验证的原会话有限接续,长程连续性与运营恢复体验均改善;当前不需要新增界面设置或反复确认。保留 legacy 停止容器适配是因为存在持久化旧回执,不能只因请求端同步发布就删除其读取能力。实现范围与持续停机和历史丢失风险相称,共用 TypeScript 决策是本批最有价值的简化。

本次没有渲染页面变更,视觉评审不适用;未验证范围是线上完整历史数据恢复与最终分数收益。最新完整工作区和评分机会的联合资格仍由既有恢复流程负责,缺失时继续阻塞。没有发现当前精确头的阻断缺陷;审批不代表 main 合并、线上安装或旧实验恢复已经完成。

English verdict: APPROVE d442384c8259c56bbe63709b0b76106db07b5e04 for the bounded explicit same-session continuation; historical source recovery, deployment qualification and merge authorization remain separate.

@huangruiteng huangruiteng left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent; model=gpt-6-astra; provider=OpenAI; reasoning_effort=ultra; declaration_source=runtime_reported.

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

动机 / Motivation

实验运营者在订阅额度恢复后,需要接着完成原来未完成的实验。旧外部调度器仍把已返回的额度失败保持在停止状态,没有共享 Turn 已有的显式重试入口;手工清空失败或新建会话会丢失故障和预算依据。此改动让运营者绑定这一次失败、原会话及独立批准的有限时间,再进入普通调度。它保留原失败和尝试次数,不负责重建已删除的工作区,也不自动增加评分机会。完整旧工作区缺失的实验仍不能直接恢复。

改动思路 / Approach

现有入口 benchmark.runtime.scheduler 接收失败状态摘要,而不是新增恢复守护进程。摘要表达明确的本次重试意图;历史、Goal 和账号观察来自已有事实。TypeScript 的 hostFailureRetryCheck 统一决定失败能否显式重试,Python 只负责文件、进程及原生客户端读取。账号容量判断复用现有可选 provider,既不轮换账号也不购买容量。

关键边界是先证明原进程已退出、原会话和配置未改变,再只读确认原生末轮确为额度失败并检查当前容量。通过后追加有限新阶段,随后照常接受 Stop、工作准入和未结算 replan 的约束。重复同一请求只能返回同一阶段,不能清掉其后的新失败。该分层保留旧协议读回,同时避免在 benchmark 里再写一份通用失败决策;当前 PR 只完成原文件系统内的显式失败接续,不承担完整丢失数据恢复或自动补时服务。

具体改动 / Changes

审查头 d442384c8259c56bbe63709b0b76106db07b5e04,基线 1a309ccb3278b68f79d674b66833fadffd8ad476。14 个文件,新增 631 行、删除 45 行;其中生产代码新增 285/删除 42,测试新增 295/删除 3,文档新增 51。共同规则从既有 Turn Journal 提取,原调度与自动重试默认值未改变。

关键代码讲解

  • hostFailureRetryCheck 保留自动重试次数上限,并继续拒绝盲目重放输出预算耗尽;效果运行时严格验证意图布尔值和失败结构。
  • read_failed_host 关联唯一返回回执、进程终止窗口及当前绑定,检查容量前后重新执行 Goal 准入,并核对原状态没有被并发改变。
  • native_failed_turn 只读完整原生历史,拒绝未知错误、未完成效果或变化的历史;保留 failed 状态,不冒充 completed checkpoint。
  • resume_state_file 按有限截止选择追加阶段,保留会话、失败次数和 replan 记录;相同请求不能延长阶段或擦掉后续失败。

验收依据为既有恢复契约 https://github.com/loopx-project/loopx/blob/1a309ccb3278b68f79d674b66833fadffd8ad476/benchmark/README.md#continue-an-interrupted-host-in-its-retained-filesystem ,固定修订 1a309ccb3278b68f79d674b66833fadffd8ad476。对应 original-state:保留原文件、会话及失败,已实现并由真实 SQLite/worker 子进程用例验证;finite-phase:新阶段有限且重复请求不能补充时间,已实现;normal-admission:下一轮仍受 Stop、配置和 replan 约束,已实现。以上是审查对原契约三段要求的索引,不是新产品协议。跨容器完整恢复、丢失文件修复及科学分数收益不在本次实现范围。

对主干的风险 / Risks

最危险的回归是重复恢复请求把新的失败清掉,从而不断执行或重置次数。本次实际运行生产调度器、真实 SQLite 和原生协议替身,覆盖首次失败、重复失败、另一次明确修复、原会话继续工作,以及准备前后 Stop。独立执行新增 33 项全部 PASS;有意把恢复次数改为零时,同一生产路径的断言 FAIL,证明该用例能识别次数丢失。正常原生付费模型和线上历史实验完整恢复未执行,不能从这些测试推出得分提升。

默认关闭证据包括基线和当前头 9 组完整 Turn 决策相同、自动 quota 仍不重试、默认 readiness 行为未改;新增的 CLI help/README 仅解释显式入口,不会进入自动模型提示。作者相关回归 249 项 PASS、1 可选跳过;最终 focused 72 项 PASS、3 可选 SDK 跳过,最终 owner/journal 65 项 PASS。Premerge 直接 6 项和选中 19 项均 PASS,但 benchmark-sensitive 总状态仍是 manual_review_required,不等于允许合并。

语义与 CI 对齐

新增的是现有失败枚举与 Turn 决策的调用入口;没有按错误文案子串判断重试资格,也没有把 benchmark 术语写进通用规则。外部容量仅是当前观察,不是未来容量保证;后续失败仍需新的显式决定。按照当前 review 契约不查询或等待远端 CI。缺少可选原生 provider、未知容量、变更绑定或缺失完整源时均保持停止,不能用旧 checkpoint 绕过。部署时必须保留这项可选依赖和原始文件系统。

我的整体评价 / Verdict

该切片是 justified_increment:已经打通可验证的原会话有限接续,长程连续性与运营恢复体验均改善;当前不需要新增界面设置或反复确认。保留 legacy 停止容器适配是因为存在持久化旧回执,不能只因请求端同步发布就删除其读取能力。实现范围与持续停机和历史丢失风险相称,共用 TypeScript 决策是本批最有价值的简化。

本次没有渲染页面变更,视觉评审不适用;未验证范围是线上完整历史数据恢复与最终分数收益。最新完整工作区和评分机会的联合资格仍由既有恢复流程负责,缺失时继续阻塞。没有发现当前精确头的阻断缺陷;审批不代表 main 合并、线上安装或旧实验恢复已经完成。

English verdict: APPROVE d442384c8259c56bbe63709b0b76106db07b5e04 for the bounded explicit same-session continuation; historical source recovery, deployment qualification and merge authorization remain separate.

loopx-agent
loopx-agent previously approved these changes Nov 7, 2026

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: actor_kind=model_agent; model=gpt-6.1-sol; provider=OpenAI; declaration_source=runtime_reported; reasoning_effort=max.

动机 / Motivation

持有完整失败研究现场的操作者,在账户额度修复后需要继续原来未完成的工作。 旧外层调度器在额度修复后仍保持硬配额失败;本头允许绑定这一次失败和原会话,在另行获准的有限阶段继续工作,同时保留旧失败和尝试次数。 手工清空失败或新建会话会损失归因和预算依据,继续停住则无法利用已修复的现场。真实 SQLite、生产 worker 子进程与本地确定性 native 协议流程完成同会话后续工作;重复请求、后来失败、Stop 和阶段耗尽均不能清除原记录或补充时间。 本 PR 不重建丢失现场、不把 failed 尾部当作 completed checkpoint,不授予账户、预算、执行或合并权限,也不证明线上模型恢复和科学分数收益。 真实历史现场的正向恢复、安装采用、真实模型与完整科学成本收益仍需原运行和 native qualification owner 单独验收。

改动思路 / Approach

显式重试意图无法从额度可用推导;资格判断复用共享 TypeScript owner,进程、文件和账号读取留在现有 provider,有限阶段与历史留在原调度器,避免另建恢复决策 owner。 当前 PR 只交付保留现场内的一次精确硬配额失败接续,打通原会话的有限后续工作;默认自动重试、completed checkpoint 和原语义 replan owner 保持原边界。 不改动的代价是无法从已修复的配额失败继续;只删除 scheduler 的失败标记会绕过来源、会话、当前 Stop 和有限时间。已有 interrupted-Host 路径负责预算中断,不能用它把 quota failed 假装成已完成 checkpoint。这里复用其文件锁、原始来源、完整 native history 和 phase 机制,扩展一个明确的调用分支。

资格检查只决定能否准备阶段,普通下一轮仍决定是否执行。来源 digest 可由现有状态自动计算;已知 Goal、session、配置继续沿用,不增加新 Goal、登录切换或确认回合。操作者仍需真实修复账户并提供原本独立批准的有限余量;这个 consequential decision 不能由“额度看起来可用”替代。

具体改动 / Changes

审查完整基线 1a309ccb3278b68f79d674b66833fadffd8ad476 到精确头 d442384c8259c56bbe63709b0b76106db07b5e04,实际 PR base 为 codex/edgebench-integration-r30-20261107。14 路径新增631/删除45:10个生产路径285+/42−、3个测试路径295+/3−、1个文档路径51+。完整差异与两个既有作者 review 已读;它们是证据输入,没有继承其批准。此前集成版的14个组件文件、frozen source 与依赖声明在本头相同,但本轮在独立 checkout 重新执行实际入口和对照。

关键代码讲解

  1. hostFailureRetryCheck 从原 Journal 提取现有显式重试规则。自动 quota 不重试,output budget 不盲重放,retryable 错误仍受次数限制;新 Effect 入口拒绝缺失意图、字符串布尔、未知字段和畸形失败。Python 只调用该 owner,不复制通用决定。
  2. read_failed_host 将状态 digest、唯一返回 wake、已结束进程组、原 session/profile 和 native failed 尾部绑定;账号观察前后都检查当前准入,最后重读原始字节。只留下有界 availability 观察,不输出账号、令牌或原始响应。
  3. native_failed_turn 复用既有完整 history reader,要求结构化 quota 错误、正确进程窗口、无 pending effects,重读历史一致。它只观察 failed,原 completed-checkpoint gate 继续拒绝同一尾部。
  4. resume_state_file 在现有独占锁中追加 hash 绑定的有限 phase,保留原失败、attempt 和 replan。相同请求返回相同阶段,即使其中已有新的失败也不擦除;后来的修复必须重新绑定那个失败。生产 worker 下一次 attempt 从保留计数增加。

验收依据 benchmark/README.md,固定修订 1a309ccb3278b68f79d674b66833fadffd8ad476,以改动前的“Continue an interrupted Host in its retained filesystem”原契约为准,而非新增的解释反证自身。original_session:保留 scheduler attempt、wake、Goal/Todos/native conversation,已实现;finite_phase:追加阶段并禁止重放补时,已实现;current_admission:下一轮维持 quota、Stop、profile/session 检查,已实现;semantic_replan:未结算 replan 仍由原 owner 处理,已实现;transport_only:不授予 evaluator、执行或科学可比性,保持现有边界。对应证据是本轮真实 SQLite/worker 流程、反例和9组共享决策对照。

对主干的风险 / Risks

最强反例是首次恢复成功后,同一个旧 digest 反复擦除后来失败或把 attempt 重置为零。生产流程先返回一次 quota 失败、准备阶段、再次失败并保持 attempt=2;重放旧请求保留阶段字节,随后另一次绑定新失败的明确修复才让原 session 完成工作。故意把恢复计数改成0时,同一实际路径在 recovered_attempt_count == 1 断言得到预期 FAIL,原始失败记录保留;未修改产品代码或放宽断言。额外两个并发反例覆盖额度观察成功后的 Stop 与截止耗尽,均拒绝新阶段且原失败字节不变。

本轮 PASS:224项 Python,2项独立并发反例,60项 TypeScript,共享 turn_journal.inspect 的9组 base/head 完整结果逐项一致且零归一化。Python SKIP 保留4项:3项缺可选 SForge SDK,1项显式真实 Docker qualification;legacy quota 分支经过真实文件清单和消费方检查、Docker transport 使用本地替身,不能宣称本轮真实 Docker 恢复成功。共享 TS typecheck 和 premerge 的6项直接、4项选中检查均通过;总体仍为 manual_review_required 的 benchmark hold,exit1没有改写成 merge gate 通过。按当前策略未查询或等待远端 CI。

默认路径未添加 required fields、自动重试、账号轮换或额外 quota spend。require_allowance=false 的旧 readiness 用例与普通 scheduler/Host/replan 回归通过;新增 README/CLI help 只解释显式操作,不是自动加载 prompt/skill。缺 provider、未知或耗尽额度、错误 session/profile/digest、活动进程、变化历史、未知错误与未结算 replan 仍保持原失败。账号可用只是观察,不预留将来容量。回退可撤销这一显式入口,旧失败和追加阶段继续保留给原 owner 检查。

语义与 CI 对齐

共享 loopx_turn_host_failure_v0 枚举与 Journal 的决定含义复用原词表;host_failure.retry 暴露原决策的有类型入口,failed_host_recovery 是原 scheduler 的派生来源记录,没有第二套通用生命周期。没有根据错误 prose 子串猜测 quota,没有把 benchmark 专用义务写进通用 Goal/quota/Todo 规则,也没有将强制准入称作建议。语义、编译、公共边界和现有 ratchet 检查通过;不放松科学门槛或原始预算。当前不触及 PostgreSQL authority owner。

我的整体评价 / Verdict

交付判断 justified_increment。long_horizon=improved 指已验证的失败保留、同会话有限后续工作;user_experience=improved 指操作者可沿已有入口修复并继续,所需额外输入来自真实缺失的 repair intent 和独立预算授权。没有从测试数量推断长期净收益。显式重试意图无法从额度可用推导;资格判断复用共享 TypeScript owner,进程、文件和账号读取留在现有 provider,有限阶段与历史留在原调度器,避免另建恢复决策 owner。 当前 PR 只交付保留现场内的一次精确硬配额失败接续,打通原会话的有限后续工作;默认自动重试、completed checkpoint 和原语义 replan owner 保持原边界。

兼容性保留给已存在的 persisted failure、phase 和停止容器证据;删除这些 reader 会把完整旧现场变成不可用,不能以版本同步替代历史读取。共用 TypeScript predicate、移除 Journal 重复分支是适用且已覆盖 parity 的同域简化;新建通用恢复框架或整条语言重写没有本次需要。本头没有修改渲染页面;检查了 benchmark scheduler CLI、README、账号观察与 worker 失败读回,并搜索了既有 App/capability 消费方,当前是专用实验操作者入口。 未验证范围:安装态前端、真实账号修复、真实 Docker 失败现场和线上历史模型恢复未由本次本地检查认证。 真实历史现场的正向恢复、安装采用、真实模型与完整科学成本收益仍需原运行和 native qualification owner 单独验收。 本轮未发现当前精确头的阻塞问题;批准与合并、安装和实际实验恢复授权分别处理。

English verdict: APPROVE d442384c8259c56bbe63709b0b76106db07b5e04 for bounded explicit same-session continuation; live historical recovery, scientific benefit and maintainer merge authorization remain separate.

…ed sessions

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
(cherry picked from commit d442384)
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
@loopx-agent
loopx-agent force-pushed the codex/explicit-host-failure-continuation-20261107 branch from d442384 to 8bc878b Compare November 7, 2026 09:32
@loopx-agent
loopx-agent changed the base branch from codex/edgebench-integration-r30-20261107 to main November 7, 2026 09:33
@loopx-agent
loopx-agent dismissed their stale review November 7, 2026 09:33

The base branch was changed.

@mergify

mergify Bot commented Nov 7, 2026

Copy link
Copy Markdown

This pull request has merge conflicts with main and cannot be merged
until they are resolved. Please rebase or merge the base branch, @huangruiteng.

Choose the remote for the base repository, not an out-of-date fork.
For a fork clone, first inspect git remote -v; upstream must point
to https://github.com/loopx-project/loopx.git. If it is absent, add it
with git remote add upstream https://github.com/loopx-project/loopx.git.
Then run:

git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEAD

For a same-repository clone whose origin points to
https://github.com/loopx-project/loopx.git, use origin instead of
upstream for fetch/rebase. If you prefer merging the base, use
git merge <base-remote>/main and push normally.

Keep the DCO Signed-off-by trailer on every commit when you rebase.
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Nov 7, 2026
@mergify mergify Bot removed the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Nov 7, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants