Files

7.8 KiB
Raw Permalink 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

# 1. 列 wiki 页拿 mangled sub_url(绝不手工拼 mangled name
curl -fsS -H "Authorization: token <token>" \
  "<gitea-base-url>/api/v1/repos/Octopus/octopus/wiki/pages"
# 2. 用返回的 sub_url 原样读页(含 %2F 编码与 .- 尾缀)
curl -fsS -H "Authorization: token <token>" \
  "<gitea-base-url>/api/v1/repos/Octopus/octopus/wiki/page/{mangled-name}"

常用页名(全量文法 + 例外枚举见 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

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

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

Pattern 2: read-issue

curl -fsS -H "Authorization: token <token>" \
  "<gitea-base-url>/api/v1/repos/Octopus/octopus/issues/{issue_number}"

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

Pattern 3: read-issue-comments

curl -fsS -H "Authorization: token <token>" \
  "<gitea-base-url>/api/v1/repos/Octopus/octopus/issues/{issue_number}/comments?page=N&limit=50"

分页用 page/limit(上限 50),响应头 x-total-count 给总数。

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

Pattern 4: read-project-column-issues

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

curl -fsS -H "Authorization: token <token>" \
  "<gitea-base-url>/api/v1/repos/Octopus/octopus/projects"
curl -fsS -H "Authorization: token <token>" \
  "<gitea-base-url>/api/v1/repos/Octopus/octopus/projects/{project_id}/columns"

「把工单移到列」等复杂操作:经 swagger.v1.json jq '.paths | keys[]' | grep projects)查询 projects 相关端点后调用, 不要臆造具体端点路径。projects 仅 repo 级(无 org/user 级端点)。

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) 而非猜测页名路径:

# 1. 读源工单
curl -fsS -H "Authorization: token <token>" \
  "<gitea-base-url>/api/v1/repos/Octopus/octopus/issues/{issue_number}"
# 2. 拉评论列表,找 body 以 "## 工件索引"(遗留 "## Pipeline 工件追踪表")开头的评论
curl -fsS -H "Authorization: token <token>" \
  "<gitea-base-url>/api/v1/repos/Octopus/octopus/issues/{issue_number}/comments?page=N&limit=50"
# 3. 按 CORE 行位置列逐个读工件页:先 GET .../wiki/pages 拿 sub_urlmangled
#    name),再原样请求
curl -fsS -H "Authorization: token <token>" \
  "<gitea-base-url>/api/v1/repos/Octopus/octopus/wiki/page/{mangled-name}"

位置列提取规则:单元格形如 [`{page_name}`]({html_url}) —— 取链接文本(首个 [] 之间、剥反引号)作为 page_name,不是 href(含 %2F/.-API 不认)。裸 page_name 单元格(无链接包裹)也 接受:整格即 page_name。形如 #comment-{id} 的值改用 GET .../issues/{index}/comments 拉工单评论列表后按 id 取,不得当作 wiki 页名去读 wiki 端点。

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

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