Merge remote-tracking branch 'origin/master' into feat/1923-cicd-otel-observability

This commit is contained in:
Codex
2026-07-13 14:59:12 +02:00
47 changed files with 1686 additions and 161 deletions
@@ -139,6 +139,6 @@
按 [UniDesk #1905](https://github.com/pikasTech/unidesk/issues/1905) 清理冲突的 reference/skill/Next,并在 Artificer YAML prompt/resource bundle 内明确支持 stdin 时禁止一次性 /tmp 正文;补最小 render/行为测试后独立交付,当前只登记不执行,完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R9.1_Task_Report.md)。
## R10 [in_progress]
## R10 [completed]
解决 [UniDesk #1656](https://github.com/pikasTech/unidesk/issues/1656):由 Artificer 在独立 `.worktree/cicd-status-visibility``fix/cicd-status-visibility` 分支修复 `cicd status --node` 成功零输出,并统一 PaC consumer 的 registry applicabilityGitOps-only/publisher-only 应显示 N/A 且由 PipelineRun、GitOps/Argo 与 runtime 证据闭环,只有 owning YAML 明确声明 image/registry 的 consumer 才把 registry missing 作为 blocker。保持默认输出有界、text/JSON/YAML 同构、缺失可选 YAML 事实降级为 warning,不新增严格合同或手工交付入口;补针对性测试和 `unidesk-cicd` 说明,提交独立 PR 且不自行合并,完成任务后将详细报告写入[任务报告](./details/cli-output-progressive-disclosure/R10_Task_Report.md)。
@@ -0,0 +1,22 @@
# R10 任务报告
## 交付
- Issue[pikasTech/unidesk#1656](https://github.com/pikasTech/unidesk/issues/1656)。
- PR[pikasTech/unidesk#1918](https://github.com/pikasTech/unidesk/pull/1918)。
- 实现提交:`f130598c`;文档治理提交:`40cdb946`;合并提交:`52b9c4bc`
- `cicd status --node` 在零 consumer、ready、warning 和 blocked 投影中稳定返回非空 typed 摘要。
- registry applicability 从 owning PaC YAML 的 repository/pipeline 关系派生,没有新增 consumer 特例或严格版本门禁。
## 验证
- 合并态测试:12 pass179 assertions;语法检查 11/11`git diff --check` 通过。
- NC01 节点状态返回 7 个 consumer 的完整表,Sub2Rank 为 ready。
- `platform-infra-gitea-nc01` 的 registry 为 `applicability=not-configured``status=not-configured`,不再产生 `pac-registry-missing`
- image-producing 的 `platform-infra-sub2rank-nc01` 仍要求真实 registry artifact,观测为 `present:sha256:c36633bb4ae`PipelineRun、GitOps、Argo 与 runtime ready。
- 节点整体仍有其他 consumer 的既有失败,这些失败未被本任务隐藏,也不影响 registry applicability 验收。
## 收尾
- PR 已合并,远端分支已删除,任务 worktree 与本地分支已清理。
- 长期说明位于 `unidesk-cicd``references/gitea-pac.md`skill 仅保留短索引。
@@ -0,0 +1,14 @@
# R1.1 任务报告
## 复现与合同
- 根因记录于 [agent_skills#7](https://github.com/pikasTech/agent_skills/issues/7):双引号 positional 标题在 CLI 启动前被 shell 展开,反引号和 `$()` 可执行 command substitution。
- positional 标题包含 CR、LF、NUL 或空标题时,必须在文件锁与写入前拒绝,并返回 `validation-failed``mutation=false`
- `add``add-sub``update` 的安全标题入口固定为 quoted heredoc `--stdin`
- batch 任一标题非法时整批零写入;错误不得回显原始敏感正文。
- update 必须保留原任务 ID、children、相邻任务、报告路径和文件锁语义。
## 证据
- 上游 PR #8 的固定测试覆盖 CR/LF/NUL、shell 敏感字符、stdin/positional 冲突和 update 恢复。
- 本轮临时 fixture 复测了反引号、`$()`、空格与引号,确认 shell substitution 未执行。
@@ -0,0 +1,15 @@
# R1.2 任务报告
## 实现
- 上游实现由 [agent_skills PR #8](https://github.com/pikasTech/agent_skills/pull/8) 合并,merge commit 为 `f928206`
- `add``add-sub``update` 支持 `--stdin`,并拒绝同时提供 positional title。
- 所有写入口共用单行校验、空标题校验和幂等标题正规化。
- update 恢复保持原 ID、children、相邻任务与报告链接,不复制任务。
- PR #9 继续收敛标点幂等与空标题验证,安装基线为 `2dfe24b`
## 验证
- 本机合并后的 `mdtodo-edit` 全量测试 207 pass。
- skill quick validation 与 `git diff --check` 均通过。
- 未创建第二套 MDTODO 工具,也未引入版本或 commit 门禁。
@@ -0,0 +1,20 @@
# R1.3 任务报告
## 合并与安装
- [agent_skills PR #8](https://github.com/pikasTech/agent_skills/pull/8) 已合并,issue #7 已关闭。
- `/root/.agents/skills` 原状态落后 5 个提交且包含并行脏改。
- 安装过程先 `stash -u`,再快进到 `origin/master@2dfe24b`,最后 `stash apply` 并对 3 个重叠文件做语义合并。
- 上游安全 stdin/校验实现作为本地标点改动的超集保留;其余 6 组并行修改、未跟踪 worktree 与保护 stash 未删除。
## 原入口验收
- `add --help` 显示 `--stdin``add-sub``update` capability 由合并态 UniDesk 测试覆盖。
- 临时 MDTODO 使用 quoted heredoc 写入包含反引号、`$()`、空格和引号的标题。
- 标题内容原样读取,预设 command-substitution 文件不存在。
- 全量测试 207 passskill 校验通过,CLI 文件 SHA-256 为 `16e9c7aacc97fc80...`
## 清理
- 临时 MDTODO fixture 已删除。
- 保护 stash 保留,避免对并行改动做破坏性 drop。
@@ -0,0 +1,15 @@
# R1 任务报告
## 结果
- MDTODO 标题污染根因、输入合同、实现、合并、本机安装与原入口复测全部闭环。
- 上游 owner 保持为 `pikasTech/agent_skills`,实现通过 issue #7 / PR #8 长期维护。
- UniDesk 通过 issue #1913 / PR #1920 提供 capability/freshness warning 和 quoted heredoc 默认示例,不复制实现。
- 缺失或过期只产生 warning,不作为业务 blocker。
## 验收摘要
- 上游 merge`f928206`;安装基线:`2dfe24b`
- MDTODO 测试:207 passUniDesk adoption 测试:2 pass / 9 assertions。
- 真实标题包含 Markdown、反引号、`$()`、空格与引号,内容原样写入且 shell substitution 未执行。
- 任务 ID、报告、children、相邻任务和文件锁合同均由固定测试保护。
@@ -0,0 +1,28 @@
# R2 任务报告
## 交付
- Issue[pikasTech/unidesk#1913](https://github.com/pikasTech/unidesk/issues/1913)。
- PR[pikasTech/unidesk#1920](https://github.com/pikasTech/unidesk/pull/1920)。
- 实现提交:`cfcade4e`;复审修正:`7dcc1395`;合并提交:`99fcfd34`
- UniDesk 只探测 `mdtodo-edit add/add-sub/update --help``--stdin` capability,不复制工具实现,也不绑定版本或 commit。
- source/target identity、freshness、warning 与精确 Next 已进入 compact/full 输出;漂移不改变 `ok``runnerUsable``contractOk`
- source stale、target ready 的边界现在返回非阻塞 `source-stale` warning,不再误报 ready freshness。
## 验证
- 合并态定向测试:2 pass9 assertions;语法检查 11/11`git diff --check` 通过。
- 本机 `/root/.agents/skills` 按 stash、快进、stash apply 做语义合并,原并行修改与保护 stash 均保留。
- 安装 HEAD 与 `origin/master` 同为 `2dfe24b`CLI SHA-256 为 `16e9c7aacc97fc80` 前缀。
- MDTODO 全量测试 207 passskill 校验通过。
- 临时真实 MDTODO 标题包含 Markdown、反引号、`$()`、空格和引号,经 quoted heredoc 原样写入;命令替换目标文件未生成。
## 非阻塞限制
- `codex skills-sync --dry-run --full` 在当前 NC01 主机仍报告旧 local Compose `backend-core-container-missing``mutation=false`
- 该诊断入口不可提供 live backend 投影,但不影响已安装安全 stdin、生成命令、fixture 测试或业务运行;没有为绕过它启动 Compose 或建立第二控制面。
## 收尾
- PR 已合并,远端分支已删除,任务 worktree 与本地分支已清理。
- R2 完成后由 R1.3 记录上游实现、受控安装和真实标题复测的完整闭环。
@@ -0,0 +1,77 @@
# R1.1 任务报告
## 任务回链
- MDTODOR1.1。
- TargetNC01。
- 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 keytoken 仅通过环境变量进入受控执行,不进入 YAML、Git、日志或报告。
- bridge、candidate、受控 fetch、GitHub head、hooks list/status 和 hook reconciler 均按 repository 选择 credential。
- bridge/candidate 只注入所属 Target 仓库 tokenhook owner reconciler 额外注入所有声明 `github-hooks-*` 的 overrideJD01 不依赖 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`11 项通过,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 --full``OK=true``blockers=[]`;全局与 repository override 均只显示脱敏 presence/fingerprint,不显示 token。
- `mirror webhook status --target NC01 --repo selfmedia-nc01 --full`:可读取私有仓库 HEAD `6e6a95297c3c153ab269410a079a997adc345774`;当前 `hookReady=false``driftTypes=[desired-url-missing]`、有界错误为 `github-hook-missing`
- 三个 missing-credential 回归改用 synthetic blocker 输入,不再 spawn 宿主 CLI、不读取 sourceRef、不接触或打印 tokencompact/full 合同仍覆盖。
- `mirror bootstrap --target JD01 --dry-run``OK=true`,证明 JD01 不依赖 NC01 override。
- 专用凭据只读状态:`sourceRef=pikainc-selfmedia-gh-token.txt``presence=true``mode=600``fingerprint=sha256:5eed1c04a44ac5e4``valuesPrinted=false`
- 受控 status 已验证私有 HEAD 与 hooks list 可读,但未创建 hook;不得把可读性推断为超出 YAML 声明的额外权限,也不得披露 token 值。
## 并行保护
- 已两次按 `stash -u``fetch``rebase origin/master``stash apply` 安全吸收主线。
- 最终吸收 `origin/master@3aaa2616`
- R1.2 保持 `[completed]``R1.2_Task_Report.md` 保留。
## 本轮 bootstrap Secret 物化修复
- PR #1926 合并后的只读运行面证据显示,candidate Pod 因 `devops-infra/gitea-github-sync-secrets` 缺少 `github-token-pikainc-selfmedia` 而失败;live Secret 脱敏 key 列表只有全局 `github-token`、Gitea 管理员与 webhook secret。
- 旧 Deployment/reconciler 仅引用全局 `github-token`candidate desired manifest 已引用 repository key,因此故障发生在 YAML credential 选择之后、Secret 物化之前。
- 根因确认:`run_mirror_bootstrap()` 读取 repository token 并创建 Gitea repo,但从未执行 `run_apply()` 内的 webhook Secret upsert。此前“bootstrap 已写入 key”的现场假设不成立。
- 修复将 Secret upsert 抽为 `upsert_webhook_sync_secret()`,由 `run_apply()``run_mirror_bootstrap()` 复用。bootstrap 在任何 Gitea admin/repository mutation 前物化完整 Target/owner YAML credential key 集合;失败时显式 `return 1``apiBootstrap.skipped=true``valuesPrinted=false`
- bootstrap 的 Secret key map 由本次实际加载的 `githubTokens` keys 生成,selfmedia override 不回落或合并到全局 token,也不会删除同 Target/owner 的其他 YAML repository keys。Secret 值未进入 GitOps、Git、日志或报告。
- 行为测试使用 fixture token 模拟全部 key 与 Secret apply 失败,不读取宿主 sourceRef;断言两个 GitHub key 均物化、失败时不发生后续 Gitea mutation。
- 主代理按 `bun.lock` 执行 `bun install --frozen-lockfile`,未修改 package/lock`sh -n``git diff --check` 与 payload/config/PaC bootstrap 三个测试文件共 14/14 通过。
- 受控 webhook status 已可读取 `pikainc/selfmedia` master HEAD `6e6a95297c3c153ab269410a079a997adc345774`,先前 `github-api-get-404` 已消失;生产 Hook 尚未创建,R1.1 继续保持 `in_progress`
## 未执行事项
- 未创建假 token,未复制 SSH 私钥,未修改仓库可见性。
- 未手工 apply、Secret sync、PipelineRun、Argo sync/refresh、rollout 或 cutover。
- 未触发 PaC 或任何部署,只保留只读运行面证据。
## Git 与 PR 交付
- 源码提交:`89b618de`
- bounded status 修复:`21aed20f`
- compact blocker renderer 修复:`a539a4ff`
- 中文 PR`pikasTech/unidesk#1926`
- 未自行合并 PR。
## 当前结论
- R1.1 配置、schema、renderer、Secret、bridge、observer 与受控 fetch 的源码能力已落地并通过轻量验证。
- repository-scoped credential material 已到位且 mode 为 `0600`;当前 GitHub hook 尚未创建,R1.1 保持 `in_progress`
- 下一步仅允许在授权的自动控制面中观察 hook reconciler 与自动交付收敛;本次未执行 hook 创建、Secret sync、apply、bootstrap 或任何部署。
@@ -0,0 +1,34 @@
# R1.2 任务报告
## 结论
NC01 / `nc01-v02` AgentRun manager 受控代理可见性已通过原入口自行恢复;本次按瞬态故障收口,没有修改 YAML、源码、Secret、Deployment、PipelineRun、Argo 或运行面状态。
`agentrun-proxy-exec-failed` 的现有实现语义是 lane `kubectl exec` 代理进程非零退出,发生在 manager HTTP 响应被解析前;它不同于 `auth-failed``agentrun-manager-fetch-failed``agentrun-timeout`。恢复后的同路径查询持续成功,未发现持久配置或服务故障。
## 配置与授权核对
- owning YAML`config/agentrun.yaml`
- 外层调用:`client.transport=target-trans`Target `NC01`,重入工作区 `/root/unidesk`
- lane`nc01-v02`,内部代理模式 `lane-k8s-service-proxy`manager Service URL `http://agentrun-mgr.agentrun-v02.svc.cluster.local:8080`
- 顶层 `manager.baseUrl=https://agentrun.74-48-78-17.nip.io/` 只属于 direct HTTP 诊断;本次带 Target 的资源查询未走该地址。
- host 授权文件 `/root/.unidesk/.env/agentrun.env``present=false``fingerprint=null``valuesPrinted=false`;lane 查询不依赖该文件,而是从 manager Pod 环境读取 API key。恢复后的鉴权查询成功,未输出凭据值。
## 原入口恢复证据
2026-07-13 10:12-10:16 UTC 期间重复执行以下只读入口,均返回退出码 0:
- `agentrun events run/run_9d2eb6e33cfb4656bb4a9ce450da28e2 --target NC01 --lane nc01-v02`:事件可读,并从 seq 21 持续推进到 seq 181 以后。
- `agentrun logs session/sess_artificer_c1f57337c99e7836cea26a5c --target NC01 --lane nc01-v02`:日志可读,并持续推进到 seq 213。
- `agentrun get tasks``agentrun describe task/qt_cdc6fa2b3f964b91bd12934f51b8c1e7`:目标任务为 `running`run、command、runner 与 session identity 完整。
- 机器输出明确显示 `TargetExecution.transport=target-trans``route=NC01:/root/unidesk``lane=nc01-v02``mutation=false``valuesPrinted=false`
- `agentrun control-plane status --node NC01 --lane nc01-v02`manager source `7585787e5e1f`Deployment `1/1 ready`Service 存在;最新 PaC PipelineRun 成功,Argo `Synced/Healthy`
控制面同时报告既有 `lane-secret-missing` 总体告警;它没有阻断本次 manager 资源查询,也不属于 R1.2 瞬态代理恢复范围,因此未扩大处理。
## 变更与回退
- 运行面变更:无。
- 配置/源码变更:无。
- 唯一交付:本报告与 R1.2 状态收口。
- 回退:不适用。
@@ -0,0 +1,69 @@
# R1 任务报告
## 任务回链
- MDTODO`docs/MDTODO/selfmedia-production-delivery.md` R1。
- Target`NC01`
- targetWorkspace`/root/.worktrees/unidesk/selfmedia-production-delivery`
- repository`pikasTech/unidesk`
- ref`feat/selfmedia-production-delivery`
- 状态:保持 `in_progress`,尚未取得修复合并后的真实自动链证据。
## 最小根因
- `platform-infra gitea mirror webhook status` 的 GitHub hooks 观察器在未校验 HTTP 结果和 JSON 形状时直接迭代响应。
- 私有仓库 `pikainc/selfmedia` 对 YAML 声明的 `gh_token.txt` authority 返回 HTTP `404`;错误对象被按 hook list 迭代,最终产生 `AttributeError: 'str' object has no attribute 'get'`,并把权限故障伪装成空 hook。
- owning YAML 已包含 `selfmedia-nc01`、GitHub→Gitea hook topology、Gitea repository、PaC consumer、GitOps/Argo、双 PVC、Secret、NetworkPolicy 和公网 `152.53.229.148:4317` 契约;不需要新增 Secret 或手工 apply。
- 自动链当前真正阻塞 authority:`config/platform-infra/gitea.yaml` 声明的 GitHub bridge credential `gh_token.txt` 无法读取或管理私有仓库 `pikainc/selfmedia` 的 hooks,也无法读取仓库 head。Git SSH push 可用不能替代 GitHub API hook authority。
## 源码修复
- `scripts/src/platform_infra_gitea_status_evaluator.py`
- 新增 GitHub hooks HTTP/JSON/list/item 的 fail-closed 解析。
- 错误仅输出 `github-hooks-http-<status>``github-hooks-response-not-list``github-hooks-item-not-object` 等有界 code,不回显 GitHub 错误正文或凭据。
- 统一支持 hook `config` 为对象 URL 或字符串 URL 的公开 API 形状。
- `scripts/src/platform-infra-gitea-remote.sh`
- embedded observer 复用 evaluator,不再直接迭代未校验响应。
- HTTP 失败、错误对象和畸形 list 不再伪装成空 hook。
- `scripts/src/platform-infra-gitea-status-evaluator.test.ts`
- 覆盖 HTTP 错误对象、非 list、含非对象元素、对象 config、字符串 config 和畸形 hook。
## Target 原入口验证
- `sh -n scripts/src/platform-infra-gitea-remote.sh`:通过。
- `python3 -m py_compile scripts/src/platform_infra_gitea_status_evaluator.py`:通过。
- `git diff --check`:通过。
- `bun test scripts/src/platform-infra-gitea-status-evaluator.test.ts``14 pass / 0 fail / 86 expect()`
- `platform-infra gitea mirror webhook status --target NC01 --repo selfmedia-nc01 --full`
- bridge `ready=true``1/1`
- durable inbox `ready=true`,无 pending/failed
- selfmedia `hookReady=false``authorityMatches=false`
- topology drift 为 `desired-url-missing`
- 有界错误为 `github-hooks-http-404`
- 不再出现 Python traceback,不打印 token 或 GitHub 错误正文。
- `platform-infra pipelines-as-code status --target NC01 --consumer selfmedia-nc01`
- consumer bootstrap readyrunner automount disabledArgo repository Secret keys ready
- Repository hook `0`Latest PipelineRun 为空;
- diagnosis 仍为 `pac-source-unknown`、registry missing、Argo sync Unknown。
- 公网补充证据:`152.53.229.148:4317` 健康但 WebTerm 显示“后端尚未声明内置终端能力”,`/api/v1/system` 无 terminal configRef;宿主 PID 自 01:44 运行。该入口是旧宿主进程证据,不是 K8s 自动发布证明,任务未执行重启或 cutover。
- Secret 补充证据:`secrets status --scope selfmedia --target selfmedia-nc01` 显示 runtime TOKEN 与 codex `auth.json` / `config.toml` 均存在且 keys exact、`valuesPrinted=false`;任务未新增或同步 Secret。
## Primary Workspace 边界
- primary workspace 仅用于读取 `$dad-dev``$unidesk-trans``$unidesk-cicd``$unidesk-ymalops``$cli-spec``$git-spec``$docs-spec``$unidesk-gh`
- 所有源码读取、编辑、测试、Git 和运行面只读观察均通过 `trans NC01:/root/.worktrees/unidesk/selfmedia-production-delivery ...` 完成。
- 未使用 runner 本地结果替代 Target 原入口证据,未递归派单。
## 保留与删除的特例
- `keep-domain-special`selfmedia 双 PVC、零 runtime RBAC、`automountServiceAccountToken=false`、非特权 runtime、YAML-first Secret、NetworkPolicy、公网 IP 与 GitOps branch 契约保持不变。
- `remove-code-default`:无新增代码默认值;修复只校验实际 GitHub API 形状。
- `legacy-retire`:不恢复 branch-follower、人工 mirror sync、人工 PipelineRun、Argo refresh/sync、rollout 或 cutover。
## 合并后自动验收
1. 由凭据 authority 管理者为 owning YAML 的 `gh_token.txt` 授予 `pikainc/selfmedia` 私有仓库读取与 webhook 管理权限;不得复制 root SSH 私钥或改变仓库可见性。
2. 合并本修复 PR 后,仅观察 `platform-infra-gitea-nc01` 自动 PipelineRun 与 Argo 收敛;不得 apply、sync、refresh 或手工 reconciler。
3. 待 hook reconciler 自动运行后,只读执行 `platform-infra gitea mirror webhook status --target NC01 --repo selfmedia-nc01`,应看到 hook ready、真实 delivery accepted→committed、GitHub head 与 Gitea branch/snapshot 对齐。
4. 合并一条 `pikainc/selfmedia/master` 正常 PR,观察自动产生唯一外层 selfmedia PipelineRun、镜像 digest、GitOps release state、Argo revision、runtime commitId 与 `/healthz` ready。
5.`platform-infra pipelines-as-code status|history --target NC01 --consumer selfmedia-nc01` 验证阶段耗时、失败归因和下一步;未取得上述真实自动事件前 R1 保持 `in_progress`
@@ -0,0 +1,20 @@
# R1.4.1 任务报告
## 结论
- [UniDesk #1919](https://github.com/pikasTech/unidesk/issues/1919) 的约 10 分钟业务 Session 已定位为 JD01 遗留 quick-verify CronJob,不是 NC01 小时级哨兵或 10 分钟 heartbeat。
- 用户最新确认退役可以是临时操作,不要求 YAML-first 永久化;因此不合并删除 JD01 source profile、PaC consumer 或 `.tekton` 的 PR。
## 临时退役结果
- Argo Application `hwlab-web-probe-sentinel-jd01``NotFound`
- PaC Repository `sentinel-jd01-v03``NotFound`
- `hwlab-v03` 中按 `unidesk.ai/web-probe-sentinel-id=jd01-web-probe-sentinel` 查询 CronJob、Job、Deployment、Pod、Service、ConfigMap、ServiceAccount、Role、RoleBinding、NetworkPolicy 和 PVC,结果为空。
-`*/10` 调度最后一次 Job 保持在 `2026-07-13T08:25:09Z`;紧急停止后跨过后续调度窗口未出现新 Job。
- NC01 小时级 Web 哨兵保持不变。
## 交付边界
- [PR #1922](https://github.com/pikasTech/unidesk/pull/1922) 是此前永久 YAML-first 退役方案;因用户最新范围改为临时退役,不合并该 PR。
- 源码中的 JD01 配置保留,未来如需恢复可重新走受控部署;本次完成标准仅为当前运行面全部 absent。
- D518 遗留和其他 Monitor 问题不在本任务范围。
+5 -5
View File
@@ -3,22 +3,22 @@
本文件跟踪 MDTODO CLI 的结构安全、并发写入、输入合同、渐进披露、任务恢复和跨平台可用性。单次工具故障及其修复作为 ITEM 进入本长期问题域。
## R1 [in_progress]
## R1 [completed]
依据 [agent_skills #7](https://github.com/pikasTech/agent_skills/issues/7) 修复 MDTODO 标题多行污染并提供安全 stdin 输入,在保持任务 ID、报告、文件锁和层级合同下支持原 ID 恢复,完成任务后将详细报告写入[任务报告](./details/mdtodo-tooling-reliability/R1_Task_Report.md)。
### R1.1 [in_progress]
### R1.1 [completed]
复现 positional title 含 CR/LF/NUL 与 shell command substitution stdout 的污染形态,定义 validation-failed、mutation=false、stdin 标题和原 ID 恢复合同,引用 [agent_skills #7](https://github.com/pikasTech/agent_skills/issues/7),完成任务后将详细报告写入[任务报告](./details/mdtodo-tooling-reliability/R1.1_Task_Report.md)。
### R1.2
### R1.2 [completed]
实现 add/add-sub/batch/update 的单行校验、安全 stdin 输入与结构化 update 正规化,精确保留 children、相邻任务、报告路径和文件锁;补单元与回归测试,完成任务后将详细报告写入[任务报告](./details/mdtodo-tooling-reliability/R1.2_Task_Report.md)。
### R1.3
### R1.3 [completed]
在独立 worktree 提交 PR,完成 Python/skill 校验和临时 fixture 前向验收;合并后更新本机受控 skill 安装并用本 MDTODO 的真实 Markdown 标题复测,完成任务后将详细报告写入[任务报告](./details/mdtodo-tooling-reliability/R1.3_Task_Report.md)。
## R2 [in_progress]
## R2 [completed]
解决 UniDesk #1913https://github.com/pikasTech/unidesk/issues/1913):复用 agent_skills #7 与 PR #8 的 MDTODO 安全 stdin 实现,让主代理、Artificer resource bundle 和受控 host skill 投影默认使用安全标题输入,并有界披露 source/target freshness、warning 与精确修复入口;不得复制第二套 MDTODO 工具、增加版本门禁或覆盖宿主并行脏改,由 Artificer 在独立 worktree 和分支实现、测试并提交 PR,不自行合并,完成任务后将详细报告写入[任务报告](./details/mdtodo-tooling-reliability/R2_Task_Report.md)。
@@ -0,0 +1,13 @@
## R1 [in_progress]
打通 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 [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)。
### R1.2 [completed]
有界恢复 NC01 AgentRun manager 受控代理可见性:定位连续 agentrun-proxy-exec-failed,只允许检查并恢复既有 manager.baseUrl、lane service proxy 与授权 presence,不打印凭据,不修改 Artificer 主线源码,不新增安全围栏;恢复后用原始 agentrun events/logs 入口验证并写任务报告,完成任务后将详细报告写入[任务报告](./details/selfmedia-production-delivery/R1.2_Task_Report.md)。
@@ -24,9 +24,10 @@ PR 合并后只等待自动发布链,使用受控 Web sentinel 原入口产生
核对 [#1861](https://github.com/pikasTech/unidesk/issues/1861) 的小时级实际探测 cadence 与 10 分钟 scheduler heartbeat/扫描间隔;若只读报告语义误导则纠正字段和文档,若 owning YAML 未生效则修正渲染,验收 CronJob 与报告明确区分二者,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R1.4_Task_Report.md)。
#### R1.4.1 [in_progress]
#### R1.4.1 [completed]
完成 [UniDesk #1919](https://github.com/pikasTech/unidesk/issues/1919) 的 JD01 Web 哨兵临时退役:确认约 10 分钟 Session 来自遗留 quick-verify CronJob,停止并移除 live Argo Application、PaC Repository 及带 JD01 sentinel 标签的运行资源;不要求 YAML-first 永久退役,源码配置保留以便恢复;NC01 小时级巡检保持不变,D518 不在本任务范围,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R1.4.1_Task_Report.md)。
解决 [UniDesk #1919](https://github.com/pikasTech/unidesk/issues/1919):已确认约 10 分钟 Session 来自 JD01 遗留 `*/10` quick-verify CronJob,按用户最新要求整个停掉 JD01 哨兵;紧急停止后通过 Git-backed owning YAML 与既有自动 lifecycle 永久退役 JD01 sentinel consumer、Argo desired state、CronJob、sentinel/frpc runtime,不恢复 JD01 target、不把 10m 改成 1h;保留 NC01 唯一小时级巡检,自动交付后覆盖完整小时窗口验收,D518 若需处理另行登记,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R1.4.1_Task_Report.md)。
## R2 [in_progress]
推进 [UniDesk #1868](https://github.com/pikasTech/unidesk/issues/1868):按当前多 runner、全局查询与 Dashboard 复杂度重构 Monitor 平台,评估并实施分散 SQLite 到 NC01 YAML-first Host PostgreSQL 的统一迁移;P0 先冻结架构、数据模型和切换边界,再实现、自动发布和原入口验收,不以迁移掩盖 [#1861](https://github.com/pikasTech/unidesk/issues/1861),不保留永久双写或第二权威,完成任务后将详细报告写入[任务报告](./details/web-sentinel-runtime-reliability/R2_Task_Report.md)。