feat: add repository-scoped GitHub authority
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# R1.1 任务报告
|
||||
|
||||
## 任务回链
|
||||
|
||||
- MDTODO:R1.1。
|
||||
- Target:NC01。
|
||||
- targetWorkspace:`/root/.worktrees/unidesk/selfmedia-repo-github-authority`。
|
||||
- repository:`pikasTech/unidesk`。
|
||||
- ref:`feat/selfmedia-repo-github-authority`。
|
||||
|
||||
## Primary Workspace 轻量准备
|
||||
|
||||
- 仅加载 `dad-dev`、`unidesk-trans`、`unidesk-ymalops`、`cli-spec`、`git-spec`、`unidesk-gh` 与 `docs-spec`。
|
||||
- 未在 runner primary workspace 读取、修改或验证目标源码。
|
||||
- 未把 runner 本地结果作为 Target 原入口证据。
|
||||
|
||||
## Target 实现
|
||||
|
||||
- 在 `config/platform-infra/gitea.yaml` 为 `selfmedia-nc01` 声明 repository credential override。
|
||||
- 独立 `sourceRef` 为 `/root/.unidesk/.env` 根下的 `pikainc-selfmedia-gh-token.txt`。
|
||||
- 独立 Secret key 为 `github-token-pikainc-selfmedia`,未修改全局 `gh_token.txt` 权限或内容。
|
||||
- YAML 声明最小权限:Contents Read、Metadata Read、Webhooks Read/Write。
|
||||
- 配置 parser 与 validator 支持通用 repository override,并校验 Secret key 唯一性、环境变量归一化碰撞、目标 namespace、bridge Secret 归属和必需能力。
|
||||
- Secret 渲染支持多个 GitHub token key;token 仅通过环境变量进入受控执行,不进入 YAML、Git、日志或报告。
|
||||
- bridge、candidate、受控 fetch、GitHub head、hooks list/status 和 hook reconciler 均按 repository 选择 credential。
|
||||
- bridge/candidate 只注入所属 Target 仓库 token;hook owner reconciler 额外注入所有声明 `github-hooks-*` 的 override;JD01 不依赖 NC01 selfmedia token。
|
||||
- CLI credential 摘要对 override 仅披露 `sourceRef`、`present`、`requiredKeysPresent`、`fingerprint`、`permissionResult`、有界错误与 `valuesPrinted=false`。
|
||||
|
||||
## Target 原入口证据
|
||||
|
||||
- 已通过 `trans NC01:/root/.worktrees/unidesk/selfmedia-repo-github-authority` 执行全部源码、Git 和验证操作。
|
||||
- `bun test scripts/src/platform-infra-gitea-config.test.ts scripts/src/platform-infra-gitea-disclosure.test.ts`:8 项通过,0 项失败。
|
||||
- `bun scripts/cli.ts platform-infra gitea plan --target NC01`:policy 为 `ok`。
|
||||
- `git diff --check`、Node 语法、Python `py_compile`、Shell `sh -n`:通过。
|
||||
- `mirror bootstrap --target NC01 --repo selfmedia-nc01 --dry-run`:`OK=false`,blocker 为 `github-upstream:selfmedia-nc01`,符合 fail-closed。
|
||||
- `mirror bootstrap --target JD01 --dry-run`:`OK=true`,证明 JD01 不依赖 NC01 override。
|
||||
- 专用凭据只读状态:`sourceRef=pikainc-selfmedia-gh-token.txt`、`presence=false`、`fingerprint=null`、`permissionResult=blocked-missing-credential`。
|
||||
- 因 credential material 缺失,未执行权限 API 探测;不得声称 Contents、Metadata 或 Webhooks 权限已实际授予。
|
||||
|
||||
## 并行保护
|
||||
|
||||
- 已两次按 `stash -u`、`fetch`、`rebase origin/master`、`stash apply` 安全吸收主线。
|
||||
- 最终吸收 `origin/master@3aaa2616`。
|
||||
- R1.2 保持 `[completed]`,`R1.2_Task_Report.md` 保留。
|
||||
|
||||
## 未执行事项
|
||||
|
||||
- 未创建假 token,未复制 SSH 私钥,未修改仓库可见性。
|
||||
- 未手工 apply、Secret sync、PipelineRun、Argo sync/refresh、rollout 或 cutover。
|
||||
- 未触发 PaC 或任何部署,只保留只读运行面证据。
|
||||
|
||||
## 当前结论
|
||||
|
||||
- R1.1 配置、schema、renderer、Secret、bridge、observer 与受控 fetch 的源码能力已落地并通过轻量验证。
|
||||
- 外部 credential material 仍缺失,R1.1 保持 `in_progress`。
|
||||
- 凭据到位后的下一步仅允许通过受控 CLI 观察脱敏 permissionResult、hook reconciler 与自动交付收敛,不得以手工触发替代自动链路。
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
打通 selfmedia WebTerm 在 NC01 的纯自动生产交付:以 config/selfmedia.yaml 与 platform-infra owning YAML 为唯一真相,修复 GitHub→Gitea mirror→PaC/Tekton→GitOps/Argo 的自动触发与可见性,使合并 pikainc/selfmedia/master 后无需人工触发即可构建并发布;保留零 RBAC runtime、双 PVC、YAML-first Secret、NetworkPolicy、公网 IP 152.53.229.148:4317,禁止用手工 PipelineRun、Argo sync/refresh、rollout 或 cutover 代替自动链路,完成任务后将详细报告写入[任务报告](./details/selfmedia-production-delivery/R1_Task_Report.md)。
|
||||
|
||||
### R1.1
|
||||
### R1.1 [in_progress]
|
||||
|
||||
以 YAML-first 为 selfmedia-nc01 增加仓库级 GitHub authority:使用独立 sourceRef 提供 pikainc/selfmedia 私有仓库 Contents Read 与 Webhooks Read/Write 权限,校验权限/Secret presence 与脱敏 fingerprint;不扩大全局 gh_token.txt、不向 Codex 下发、不手工触发 PaC,待凭据到位后仅观察 hook reconciler 与自动交付收敛,并将详细报告写入任务报告,完成任务后将详细报告写入[任务报告](./details/selfmedia-production-delivery/R1.1_Task_Report.md)。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user