Parent: #107
Blocked by: #116 , #117
问题概述 / Summary
Prayu 已有 typed Git push 与 PR 创建/更新能力,但没有面向模型审阅闭环的 GitHub Provider:无法读取 unresolved review threads、inline comments、requested changes、Check Runs/CI 日志,也不能把这些远端证据稳定映射到当前 merge-base、文件版本、LSP 调用链和本地修复。需要基于 GitHub 正式 API 与独立凭证/网络授权建立受控 Review Provider。
优先级 / Priority
P2。API/credential/read-only contract 可提前设计;完整交付由 #116 的语义证据接口和 #117 的高级 Git/恢复接口共同阻塞。
当前基线 / Current baseline
范围 / Scope
定义 versioned github-review-provider.v1 account/repository/PR identity、capability snapshot、credential reference、network scope、pagination、typed error、receipt 和兼容策略。
通过 OS credential store/受控 credential provider 使用 GitHub App、OAuth user token 或受支持的细粒度 token;模型、日志、事件和 HTTP/Desktop projection 不接收原始 Secret。
提供精确资格诊断:host、account/installation、repository、fork、权限 scopes、rate limit、SSO、network policy 和 API 版本。
只读能力覆盖 PR metadata、base/head/merge-base、完整 changed-file diff、reviews、requested changes、unresolved/resolved threads、inline comments、check suites/runs、job/step 状态、有界失败日志和 Artifact metadata。
远端内容均标记为不可信;限制分页、字节、ANSI/C1、Markdown/链接、压缩包和日志展开,并进行 Secret/credential-shaped 数据清洗。
将评论位置绑定 repository/PR/base/head/commit/path/side/line/original position;base/head force-push、文件 hash 或 merge-base 漂移后将映射标记 stale。
消费 feat(code-intel): Go-owned LSP Runtime 与只读语义工具 #116 的 definition/references/call hierarchy/diagnostics 与 feat(git): hunk 级操作、高级恢复与 Worktree #117 的 merge-base diff/hunk/worktree/冲突状态,建立 review evidence graph 和修复影响范围。
受控写回覆盖 reply、resolve/unresolve thread、提交 COMMENT/APPROVE/REQUEST_CHANGES review、请求 reviewer,以及通过既有 Repository service push/更新 PR。
每次写回前展示 host、repo、PR、base/head、commit、目标 thread/comment、正文摘要、权限来源和本地变更/验证摘要;使用 compare-and-swap/idempotency key 防止重复写入。
处理 offline、rate limit/Retry-After、权限不足、SSO、fork PR、private repository、base drift、force-push、已关闭/已合并 PR、重复 API/webhook 事件和应用重启。
Desktop/CLI/OpenAPI 提供账户/仓库状态、PR 审阅收件箱、线程、CI 失败证据、stale 映射、待授权写回和持久收据。
增强 review Skill 与 focused-checks:按调用链、生命周期、并发、恢复路径、改动范围和 CI 证据选择检查并分级,不把未运行或外部状态伪装为通过。
非目标 / Non-goals
不实现通用 Issues、Projects、Releases、Actions 管理或 GitHub 网页自动化。
不依赖 DOM 抓取、用户浏览器登录态、cookie 或日常 Chrome/Edge Profile。
不默认自动 reply、resolve、approve、request changes、push、force push 或更新 PR。
不把 GitHub token、credential helper 输出、私有日志或 Artifact 原文注入模型上下文。
不让仓库内容、评论、CI 日志或 GitHub App 自行扩大本地工具与网络权限。
不在本 Issue 开放 Cyber Surface 或任意第三方代码托管 Provider。
涉及目录 / Affected directories
internal/githubreview/
internal/repository/
internal/codeintel/
internal/application/
internal/toolgateway/
internal/credential/
internal/policy/
internal/approval/
internal/store/
internal/events/
internal/httpapi/
cmd/
web/src/
configs/skills/review/
configs/skills/focused-checks/
docs/
依赖 / Dependencies
验收条件 / Acceptance criteria
安全边界 / Security boundaries
GitHub Provider 增加的是经授权的远端证据与精确写回操作,不是通用网络或账户权限。读取结果不可信,写入必须绑定当前 repository、PR、commit、目标对象、credential scope 和 capability generation;凭证与授权判定始终留在 Go 控制平面。
Parent: #107
Blocked by: #116, #117
问题概述 / Summary
Prayu 已有 typed Git push 与 PR 创建/更新能力,但没有面向模型审阅闭环的 GitHub Provider:无法读取 unresolved review threads、inline comments、requested changes、Check Runs/CI 日志,也不能把这些远端证据稳定映射到当前 merge-base、文件版本、LSP 调用链和本地修复。需要基于 GitHub 正式 API 与独立凭证/网络授权建立受控 Review Provider。
优先级 / Priority
P2。API/credential/read-only contract 可提前设计;完整交付由 #116 的语义证据接口和 #117 的高级 Git/恢复接口共同阻塞。
当前基线 / Current baseline
范围 / Scope
github-review-provider.v1account/repository/PR identity、capability snapshot、credential reference、network scope、pagination、typed error、receipt 和兼容策略。非目标 / Non-goals
涉及目录 / Affected directories
internal/githubreview/internal/repository/internal/codeintel/internal/application/internal/toolgateway/internal/credential/internal/policy/internal/approval/internal/store/internal/events/internal/httpapi/cmd/web/src/configs/skills/review/configs/skills/focused-checks/docs/依赖 / Dependencies
验收条件 / Acceptance criteria
安全边界 / Security boundaries
GitHub Provider 增加的是经授权的远端证据与精确写回操作,不是通用网络或账户权限。读取结果不可信,写入必须绑定当前 repository、PR、commit、目标对象、credential scope 和 capability generation;凭证与授权判定始终留在 Go 控制平面。