Files
octopus-workflow/core/adapters/gitea/reading.md
T

6.7 KiB
Raw Blame History

Gitea Adapter — 读模式(Read Patterns

Gitea adapter 参考实现(Increment 3,自 dogfood 源 _shared/gitea-read-patterns.md 拆分上提)。页名规范与寻址语义见 core/rules/artifact-addressing.md(后端中立契约,本文不重复)。 实例基址 <gitea-base-url> 由实例配置提供,见 TERMINOLOGY.md。

Owner/repo 固定 Octopus/octopus。compaction 恢复从 Pattern 6 (读工件索引)开始——源工单上的工件索引是上下文恢复的规范入口, 硬编码页名路径仅作回退。

Pattern 1: read-wiki-page

gitea_wiki__get_page(owner="Octopus", repo="octopus", page_name="{slug}/{page_title}")

常用页名(全量文法 + 例外枚举见 core/rules/artifact-addressing.md §2):

工件 page_name
验证报告 {slug}/05-verify-iteration-{N}
DAG 工件(单门) {epic-slug}/dagAC 子页 {epic-slug}/dag-nodes/{node-id};覆盖子页 {epic-slug}/dag-coverage
评审终报(review-dag {epic-slug}/reviews/review-dag/final/report
评审终报(code {slug}/reviews/code/final/report
评审终报(code, DAG task {epic-slug}/reviews/code/final/report-task-{node-id}
验证(DAG milestone {epic-slug}/05-verify-milestone-{M-id}
验证(DAG task {epic-slug}/05-verify-task-{node-id}
DAG 共享契约 {epic-slug}/shared/{file}
bugfix 附件 {slug}/repro-notes · {slug}/test-report · {slug}/bugfix-report · {slug}/ABORT
原型/实现笔记 {slug}/prototype-debt · {slug}/spike-report · {slug}/impl-notes
设计修订 {slug}/03-design-amendments
审计工件 audit/{date}/{page},如 audit/{date}/final/report
移植工件 port-{name}/source-analysis/{file} · port-{name}/self-check
回顾报告 _retrospectives/{cycle-name}
回顾归档 _archive/{slug}/
技能评估 _evals/{skill-name}/{page}
浏览器调试证据 {slug}/verify/evidence/{name}(临时截图留在工作区截图目录)

历史只读页名(旧管线产物仍可读):{slug}/01-stakeholder-interview{slug}/02-requirements-index{slug}/02-req-{seq:02d}-{title}{slug}/02-03-req-design{slug}/03-design-index{slug}/03-design-{seq:02d}-{title}{slug}/03-adr-{NNNN}-{title}{slug}/04-plan-index{slug}/04-plan-{seq:02d}-{title}{slug}/roadmap/{page}{slug}/shared/{file}{slug}/reviews/{roadmap|design-space|plan}/final/report

本地回退(wiki MCP 工具不可用):读本地 wiki 克隆(实例路径见 TERMINOLOGY.md)。wiki 文件名 URL 编码(/%2F.md 前可能带 .-),用 glob 而非固定路径解析:

glob(pattern="*{slug}*{page-title}*.md", path="<local-wiki-clone>/{repo}-wiki/")

Pattern 2: read-issue

gitea_issue__get(owner="Octopus", repo="octopus", index={issue_number})

读工单详情、正文、元数据(label、assignee、milestone、state)。

Pattern 3: read-issue-comments

gitea_issue_comment__list(owner="Octopus", repo="octopus", index={issue_number})

读工单全部评论(评审结果、状态备注、讨论线程)。

Pattern 4: read-project-column-issues

gitea_column__list_issues(owner="Octopus", repo="octopus",
  project_id={project_id}, column_id={column_id})

看板列工单队列。project/column 发现:gitea_project__list + gitea_column__list

Pattern 5: read-review-statusCLI

octopus review status [--stage <stage>] [--sha <sha>] [--json]

读评审收敛状态(commit status)。stage 值:codereview-dagaudit-process;省略 --stage 列出该提交全部状态。历史 stage 值 (design-space 等)仅可查历史。

stage-id → 评审目录映射Tier-1 本地 reviews/{stage}/ 段): review-codecodereview-dagreview-dag audit-processaudit-process。只有 code 评审用短名,不得发明其他。

收敛判定:context pipeline/review-{stage} 的 status 存在且 state = success= PASS 或 WARN,无未决 BLOCKER)。退出码 0 = 全部 success1 = 有 failure/error。

Pattern 6: read-artifact-indexcompaction 恢复主路径)

压缩后或新会话从工单种子恢复时,读工件索引评论(写侧 Pattern 10) 而非猜测页名路径:

gitea_issue__get(owner="Octopus", repo="octopus", index={issue_number})
gitea_issue_comment__list(owner="Octopus", repo="octopus", index={issue_number})
# 找 body 以 "## 工件索引"(遗留 "## Pipeline 工件追踪表")开头的评论
gitea_wiki__get_page(owner="Octopus", repo="octopus", page_name=page_name)

位置列提取规则:单元格形如 [`{page_name}`]({html_url}) —— 取链接文本(首个 [] 之间、剥反引号)作为 page_name,不是 href(含 %2F/.-API 不认)。裸 page_name 单元格(无链接包裹)也 接受:整格即 page_name。形如 #comment-{id} 的值改用 gitea_issue_comment__list 读,不得喂给 gitea_wiki__get_page

重读规则:重读集 = 全部 CORE 行;ON-DEMAND 行仅当前任务需要 时读;绝不读 ARCHIVE 行。索引缺失(历史工单)→ 回退 issue body + ## 当前状态 + 硬编码页名路径。

已归档索引:无 CORE 行,恢复时重读集为空,按需直读目标工件 (位置列 URL 仍有效);归档只改重读优先级,不改可访问性。