forked from Octopus/octopus-workflow
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d2592c4bce | ||
|
|
b987e2e62f | ||
|
|
3d5f89301b | ||
|
|
d6567b1842 |
@@ -138,31 +138,6 @@ curl -fsS -X PATCH "<gitea-base-url>/api/v1/repos/Octopus/octopus/issues/comment
|
|||||||
|
|
||||||
单评论聚合不变量(工件索引、当前状态表等)的执行手段。
|
单评论聚合不变量(工件索引、当前状态表等)的执行手段。
|
||||||
|
|
||||||
## Pattern 7: move-issue-to-column
|
|
||||||
|
|
||||||
看板列迁移(Todo → In Progress → Review → Done)。projects/columns
|
|
||||||
发现用 REST;「把工单移到列」的操作端点语义复杂,经 swagger 查询后
|
|
||||||
调用,不臆造路径:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 列出 repo 级 projects(projects 仅 repo 级,无 org/user 级端点)
|
|
||||||
curl -fsS -H "Authorization: token <token>" \
|
|
||||||
"<gitea-base-url>/api/v1/repos/Octopus/octopus/projects"
|
|
||||||
# 列某 project 的 columns
|
|
||||||
curl -fsS -H "Authorization: token <token>" \
|
|
||||||
"<gitea-base-url>/api/v1/repos/Octopus/octopus/projects/{project_id}/columns"
|
|
||||||
# 移动工单到列:先经 swagger.v1.json 查询 projects 相关端点后调用
|
|
||||||
curl -s <gitea-base-url>/swagger.v1.json -o /tmp/gitea-sw.json
|
|
||||||
jq -r '.paths | keys[]' /tmp/gitea-sw.json | grep projects
|
|
||||||
```
|
|
||||||
|
|
||||||
## Pattern 7.5: move-issue-to-pipeline-stage
|
|
||||||
|
|
||||||
管线阶段板列(Pipeline Stages board column)承载阶段迁移——阶段转移
|
|
||||||
落到板列,**不落** `## 当前状态` 行(该表只承载 PR / 评审 / CI 行与
|
|
||||||
非阶段阻塞项)。列序列按管线阶段定义;移动与 Pattern 7 同款
|
|
||||||
(projects/columns 经 REST + swagger 发现,同上)。
|
|
||||||
|
|
||||||
## Pattern 8: post-commit-status
|
## Pattern 8: post-commit-status
|
||||||
|
|
||||||
commit status 直发 REST(评审综合的 Tier-2 落点):
|
commit status 直发 REST(评审综合的 Tier-2 落点):
|
||||||
@@ -183,22 +158,6 @@ context 公式:`pipeline/review-{stage}`(`code` / `review-dag` /
|
|||||||
`audit-process`)。token 从实例配置读取(此处 `<token>` 占位)。
|
`audit-process`)。token 从实例配置读取(此处 `<token>` 占位)。
|
||||||
merge 前读回验证:`GET /commits/{PR_SHA}/status`。
|
merge 前读回验证:`GET /commits/{PR_SHA}/status`。
|
||||||
|
|
||||||
## Pattern 9: create-iteration-board
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# 建 project(board):先经 swagger 查询 create 端点契约
|
|
||||||
curl -s <gitea-base-url>/swagger.v1.json -o /tmp/gitea-sw.json
|
|
||||||
jq '.paths["/repos/{owner}/{repo}/projects"].post' /tmp/gitea-sw.json
|
|
||||||
# 随后 POST 建板(title="{slug} — Iteration {N}", description="…")
|
|
||||||
# 再对每列(Todo / In Progress / Review / Done):
|
|
||||||
jq '.paths["/repos/{owner}/{repo}/projects/{project_id}/columns"].post' /tmp/gitea-sw.json
|
|
||||||
# 随后 POST 建列
|
|
||||||
```
|
|
||||||
|
|
||||||
projects 仅 repo 级。DAG 聚合 agent 在单门 PASS 后建板;工单正文模板带
|
|
||||||
`## Node Reference`(指向 `{epic-slug}/dag`)、`## Acceptance Criteria`、
|
|
||||||
`## Parent`。
|
|
||||||
|
|
||||||
## Pattern 10: artifact-index(工单 ↔ 工件索引)
|
## Pattern 10: artifact-index(工单 ↔ 工件索引)
|
||||||
|
|
||||||
技能发布工件后,在源工单维护 **`## 工件索引` 评论**——单一原位编辑的
|
技能发布工件后,在源工单维护 **`## 工件索引` 评论**——单一原位编辑的
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ curl -fsS -H "Authorization: token <token>" \
|
|||||||
|
|
||||||
## Pattern 4: read-project-column-issues
|
## Pattern 4: read-project-column-issues
|
||||||
|
|
||||||
看板列工单队列。project/column 发现:
|
看板列工单队列(只读)。project/column 发现:
|
||||||
|
|
||||||
```
|
```
|
||||||
curl -fsS -H "Authorization: token <token>" \
|
curl -fsS -H "Authorization: token <token>" \
|
||||||
@@ -89,9 +89,7 @@ curl -fsS -H "Authorization: token <token>" \
|
|||||||
"<gitea-base-url>/api/v1/repos/Octopus/octopus/projects/{project_id}/columns"
|
"<gitea-base-url>/api/v1/repos/Octopus/octopus/projects/{project_id}/columns"
|
||||||
```
|
```
|
||||||
|
|
||||||
「把工单移到列」等复杂操作:经 `swagger.v1.json`
|
projects 仅 repo 级(无 org/user 级端点)。
|
||||||
(`jq '.paths | keys[]' | grep projects`)查询 projects 相关端点后调用,
|
|
||||||
不要臆造具体端点路径。projects 仅 repo 级(无 org/user 级端点)。
|
|
||||||
|
|
||||||
## Pattern 5: read-review-status(CLI)
|
## Pattern 5: read-review-status(CLI)
|
||||||
|
|
||||||
|
|||||||
@@ -179,6 +179,7 @@ creating thin wrapper checklist files would add no value.
|
|||||||
| 8.5 | 防范范围收窄:明令禁止「只看重点/从简」类弱化措辞(IEEE 1028-2008 完整性) | ☐ | ☐ | |
|
| 8.5 | 防范范围收窄:明令禁止「只看重点/从简」类弱化措辞(IEEE 1028-2008 完整性) | ☐ | ☐ | |
|
||||||
| 8.6 | 留痕:审计产物落盘到结构化文件,而非仅存于对话 | ☐ | ☐ | |
|
| 8.6 | 留痕:审计产物落盘到结构化文件,而非仅存于对话 | ☐ | ☐ | |
|
||||||
| 8.7 | 闭环:存在重审循环与收敛/审批终止条件(ISO 19011:2018 跟踪与关闭) | ☐ | ☐ | |
|
| 8.7 | 闭环:存在重审循环与收敛/审批终止条件(ISO 19011:2018 跟踪与关闭) | ☐ | ☐ | |
|
||||||
|
| 8.8 | 流程自身测试为绿:Orchestrator(bash 可用)在派发审计员**之前**机械运行流程自身的测试套件与守卫门(`bun run test:parallel` 全量分片 + `check:*` 守卫族,如 core-parity / encoding-health / derived-artifacts),并把命令、基线 SHA 与结果摘要落盘到 `<runs-root>/audit/reviews/audit-process/process-tests-green.md`(Tier 1);审计员(只读,无 bash)核对该记录存在于当前基线且为绿——任何红测试/红守卫本身即流程缺陷,按 findings 登记(缺陷逃逸案例:红测试存活 3 轮审计、无任何维度运行过测试套件,[org-internal #4787]) | ☐ | ☐ | 运行归 Orchestrator、核对归审计员(角色边界:`core/skills/_shared/review-orchestrator-rules.md` §No bash for Explorer sub-agents) |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Release 检查清单
|
# Release 检查清单
|
||||||
|
|
||||||
> 发版前自检。Release Manager 在 Phase 1 和 Phase 6 完整过一遍。
|
> 发版前自检。Producer (Worker) 在 Phase 1 和 Phase 6 完整过一遍。
|
||||||
|
|
||||||
> **维度命名空间(dimension namespace)**: 本清单中的维度代码(如 TST/BEH/GATE/REG)是**清单局部(checklist-local)**标识符,仅在本文档内唯一;其他清单可能对相同字母串绑定不同概念(如 code-review.md 的 TST=Test Quality、verification.md 的 TST=Test Suite Completeness、port.md 的 TST=Test Porting)。跨清单引用时必须带清单限定(如 code-review.md TST 5.8),不得使用裸代码。
|
> **维度命名空间(dimension namespace)**: 本清单中的维度代码(如 TST/BEH/GATE/REG)是**清单局部(checklist-local)**标识符,仅在本文档内唯一;其他清单可能对相同字母串绑定不同概念(如 code-review.md 的 TST=Test Quality、verification.md 的 TST=Test Suite Completeness、port.md 的 TST=Test Porting)。跨清单引用时必须带清单限定(如 code-review.md TST 5.8),不得使用裸代码。
|
||||||
|
|
||||||
@@ -74,3 +74,24 @@
|
|||||||
| 6.1 | Tagged commit 可构建 | ☐ | ☐ | |
|
| 6.1 | Tagged commit 可构建 | ☐ | ☐ | |
|
||||||
| 6.2 | 测试全部通过 | ☐ | ☐ | |
|
| 6.2 | 测试全部通过 | ☐ | ☐ | |
|
||||||
| 6.3 | 回到了原始分支 | ☐ | ☐ | |
|
| 6.3 | 回到了原始分支 | ☐ | ☐ | |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. 产物发布(DIST — Artifact Distribution,octopus 项目)
|
||||||
|
|
||||||
|
> 对应 `.octopus/skills/release/SKILL.md` Phase 4b(#2003 退役 CI publish
|
||||||
|
> 管线后的手工发布流程)。**主仓库 tag + release 对象 ≠ 发布完成**——CLI
|
||||||
|
> 二进制、公开镜像、桌面 feed 三层外圈全部就位才算。本清单从磁盘读取,
|
||||||
|
> 作为技能注入被截断时的兜底事实源(v0.25.0 发布时技能注入截断恰好切掉
|
||||||
|
> Phase 4b,导致外圈整层遗漏——本节由此设立)。
|
||||||
|
|
||||||
|
| # | 检查项 | 通过 | 不通过 | 备注 |
|
||||||
|
| --- | ---------------------------------------- | ---- | ------ | ---- |
|
||||||
|
| 7.1 | 12 平台 CLI 二进制已构建(tag 的干净 checkout,`bun packages/octopus/script/build.ts`),全部 smoke test 输出版本号 | ☐ | ☐ | Windows 无 `python3` 命令,zip 归档需垫 shim 或手动补齐 |
|
||||||
|
| 7.2 | 12 个归档已挂到主仓库 release(zip×6 + tar.gz×6) | ☐ | ☐ | |
|
||||||
|
| 7.3 | (可选,Gitea-only 口径可跳过)npm/docker/AUR 外部 registry 已发或明确跳过 | ☐ | ☐ | `OCTOPUS_GITEA_ONLY=true` |
|
||||||
|
| 7.4 | `sync-public-assets.sh` 已跑:公共镜像 `Octopus/octopus-release` 的 `v{version}` release 有 12 资产 | ☐ | ☐ | 大 POST 出站不通时经服务器 localhost 中继 |
|
||||||
|
| 7.5 | `sync-public-install.sh` 已跑:install/install.ps1/README 同步到镜像 main(注意 cp 目标是**根 README.md**,不是 scripts/ 副本) | ☐ | ☐ | |
|
||||||
|
| 7.6 | `verify-public-sync.sh` PASSED | ☐ | ☐ | |
|
||||||
|
| 7.7 | Desktop feed 三腿已派发(mac 走 `desktop-mac.yml` dispatch;win/linux 各一次 `desktop-feed.yml` dispatch),`bun packages/desktop/script/verify-feed.ts --version <ver> --channel <beta|prod>` PASS(三平台 yml 全量校验:`latest.yml`/`latest-linux.yml`/`latest-mac.yml` 的 `version:` == CLI 版本 + size 对资产逐项核对 + 匿名可达) | ☐ | ☐ | #6378 起以 verify-feed.ts 为准(v0.31.0 漏腿事故 #6375 的 fail-loud 补丁);concurrency 组已按 platform 分离;stable 通道 feed 缺失见 #6376 |
|
||||||
|
| 7.8 | README 下载链接抽查(install 脚本 raw、资产直链、docs 相对链接)匿名可达 | ☐ | ☐ | v0.18 遗留 wiki 坏链由此发现 |
|
||||||
|
|||||||
@@ -46,9 +46,9 @@ Rules:
|
|||||||
surfaced by checklist annotations alone — do NOT add live-status rows for
|
surfaced by checklist annotations alone — do NOT add live-status rows for
|
||||||
them. PR / review / CI transitions carry BOTH a checklist annotation AND
|
them. PR / review / CI transitions carry BOTH a checklist annotation AND
|
||||||
a live-status row.
|
a live-status row.
|
||||||
- **Stage rows live on the board, not here**: pipeline stage transitions are
|
- **No stage rows here**: pipeline stage transitions are NOT represented by
|
||||||
represented by the Pipeline Stages board column (shared write-patterns
|
`## 当前状态` rows — they surface through checklist annotations at skill
|
||||||
Pattern 7.5), NOT by `## 当前状态` rows. Keep only the
|
exits. Keep only the
|
||||||
status-sync-automated rows (PR / 代码评审 / CI) and non-stage
|
status-sync-automated rows (PR / 代码评审 / CI) and non-stage
|
||||||
blockers/deferrals.
|
blockers/deferrals.
|
||||||
- Update in place (same section heading `## 当前状态`), never append a second copy.
|
- Update in place (same section heading `## 当前状态`), never append a second copy.
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
},
|
},
|
||||||
"quantitative_summary": {
|
"quantitative_summary": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
"description": "Every check the reviewer executed this round (PASS and FAIL counted in total_checks; NA reported via na_count). The verdict field must follow these counts per the thresholds documented on verdict — a synthesis consumer recalculates pass_rate from passed/total_checks and treats a mismatch as a malformed artifact.",
|
||||||
"required": ["total_checks", "passed", "failed", "pass_rate"],
|
"required": ["total_checks", "passed", "failed", "pass_rate"],
|
||||||
"properties": {
|
"properties": {
|
||||||
"total_checks": { "type": "integer", "minimum": 1 },
|
"total_checks": { "type": "integer", "minimum": 1 },
|
||||||
@@ -74,7 +75,8 @@
|
|||||||
},
|
},
|
||||||
"severity": {
|
"severity": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": ["BLOCKER", "MAJOR", "MINOR", "INFO"]
|
"enum": ["BLOCKER", "MAJOR", "MINOR", "INFO"],
|
||||||
|
"description": "BLOCKER: breaks an acceptance criterion, hangs/leaks, or opens an abuse channel — the artifact must not land as-is. MAJOR: a real defect on a non-blocking path, or a test/lock blind to a plausible regression (a mutation would escape). MINOR: quality/drift issue with a cheap local fix (naming, duplication, small docs gap); no behavioral risk. INFO: observation, accepted-risk note, or follow-up ticket material — no action required this round. Calibration rule: severity grades the FINDING's impact, not the reviewer's confidence; low-confidence suspicions go to INFO with the evidence, never inflated to MAJOR."
|
||||||
},
|
},
|
||||||
"checklist_ref": {
|
"checklist_ref": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
|
|||||||
@@ -41,11 +41,6 @@ in `_shared/gitea-write-patterns.md`.
|
|||||||
|
|
||||||
**Orchestrator actions**:
|
**Orchestrator actions**:
|
||||||
|
|
||||||
0. **Move the source issue to the `review` column** on the Pipeline Stages
|
|
||||||
board per `_shared/gitea-write-patterns.md` Pattern 7.5. Skip if no
|
|
||||||
source issue exists. The review stage is a single board column covering
|
|
||||||
all review targets (DAG single gate / code review / audit-process).
|
|
||||||
|
|
||||||
0.5. **Initialize the review-status file** (round 1 only). The Orchestrator
|
0.5. **Initialize the review-status file** (round 1 only). The Orchestrator
|
||||||
creates `<runs-root>/{slug}/reviews/{stage}/status.json` before dispatching
|
creates `<runs-root>/{slug}/reviews/{stage}/status.json` before dispatching
|
||||||
round 1, with the full schema-required field set
|
round 1, with the full schema-required field set
|
||||||
@@ -111,6 +106,13 @@ in `_shared/gitea-write-patterns.md`.
|
|||||||
`core/skills/_shared/review-orchestrator-rules.md` — Default
|
`core/skills/_shared/review-orchestrator-rules.md` — Default
|
||||||
Explorer Permissions).
|
Explorer Permissions).
|
||||||
- Temperature: 0.1 (deterministic output).
|
- Temperature: 0.1 (deterministic output).
|
||||||
|
- StructuredOutput mount ([org-internal #5658]): pass `format: { type:
|
||||||
|
"json_schema", schema: <the reviewer-output.schema.json contents you
|
||||||
|
read at prompt build time> }` on the task dispatch — the reviewer's
|
||||||
|
final emission is schema-enforced (malformed verdict/severity/summary
|
||||||
|
args are rejected with field-path repair feedback inside the reviewer's
|
||||||
|
own loop). The findings FILE remains the canonical Tier-1 artifact; the
|
||||||
|
structured output mirrors it as a self-check.
|
||||||
|
|
||||||
4. Wait for all {REVIEWER_OR_AUDITOR}s to complete. Each reviewer writes its
|
4. Wait for all {REVIEWER_OR_AUDITOR}s to complete. Each reviewer writes its
|
||||||
dimension result to the skill's configured findings sink:
|
dimension result to the skill's configured findings sink:
|
||||||
@@ -171,6 +173,11 @@ in `_shared/gitea-write-patterns.md`.
|
|||||||
`tier1-local` skills; `/tmp/octopus/...` for `tier2-comment` skills)
|
`tier1-local` skills; `/tmp/octopus/...` for `tier2-comment` skills)
|
||||||
- `permissions`: read + write + edit + bash + glob + grep (all allow)
|
- `permissions`: read + write + edit + bash + glob + grep (all allow)
|
||||||
- `temperature`: 0.1
|
- `temperature`: 0.1
|
||||||
|
- `format` ([org-internal #5658]): `{ type: "json_schema", schema: <the
|
||||||
|
synthesis.schema.json contents you read> }` — the Synthesizer's final
|
||||||
|
emission is schema-enforced (malformed verdict/dimension args rejected
|
||||||
|
with field-path repair feedback in-loop). The posted fenced JSON block
|
||||||
|
remains the canonical artifact; the structured output mirrors it.
|
||||||
- Foreground (the Orchestrator waits for completion).
|
- Foreground (the Orchestrator waits for completion).
|
||||||
|
|
||||||
3. The Synthesizer:
|
3. The Synthesizer:
|
||||||
@@ -324,8 +331,15 @@ After the {REVISION_ROLE} completes revision:
|
|||||||
round, or the diff touches a frozen cross-session contract) —
|
round, or the diff touches a frozen cross-session contract) —
|
||||||
`<instance-root>/workflow-routing.yaml` `review.max_rounds` ([org-internal #3567], process-diet
|
`<instance-root>/workflow-routing.yaml` `review.max_rounds` ([org-internal #3567], process-diet
|
||||||
P0b). At budget without convergence: STOP, register the remaining
|
P0b). At budget without convergence: STOP, register the remaining
|
||||||
BLOCKER/MAJOR findings as TD registry rows, verdict FAIL if any BLOCKER
|
BLOCKER/MAJOR findings as TD registry rows, then compute the verdict
|
||||||
remains else PASS — the debt is carried by those TD registry rows
|
with the shared three-tier ladder (`core/schemas/synthesis.schema.json`
|
||||||
|
`overall_verdict` + `core/skills/_shared/review-orchestrator-rules.md`
|
||||||
|
rule 3): FAIL if any BLOCKER or FAIL dimension remains, else WARN,
|
||||||
|
PASS only if every remaining dimension is PASS ([org-internal #4786]:
|
||||||
|
the prior binary "else PASS" wording silently upgraded WARN-eligible
|
||||||
|
outcomes to PASS; a PASS round has already stopped at the convergence
|
||||||
|
table above, so the residual tail lands WARN or FAIL). The debt is
|
||||||
|
carried by those TD registry rows
|
||||||
(see `review-code/SKILL.md` Phase D). This
|
(see `review-code/SKILL.md` Phase D). This
|
||||||
supersedes the 2026-08-25 [org-internal #3380] calibration (p50=2, p95=5, n=66): the runs
|
supersedes the 2026-08-25 [org-internal #3380] calibration (p50=2, p95=5, n=66): the runs
|
||||||
past round 3 are the marathon tail this budget exists to cut; their residue
|
past round 3 are the marathon tail this budget exists to cut; their residue
|
||||||
|
|||||||
@@ -32,6 +32,18 @@ Label: {DIMENSION_NAME}
|
|||||||
|
|
||||||
## Instructions
|
## Instructions
|
||||||
|
|
||||||
|
### Gate records are deterministic inputs ([org-internal #5656] N-04)
|
||||||
|
|
||||||
|
When the work item carries gate records (`gate` tool results — metadata
|
||||||
|
`exit_code`, `duration_ms`, `ci_run_id`), those records ARE the command
|
||||||
|
outcomes for mechanical questions (tests/typecheck/lint): cite the exit code
|
||||||
|
verbatim (`gate <id> (<tier>): exit_code=<n> -> green|red` — canonical block
|
||||||
|
in `packages/octopus/src/gate/consume.ts`) and never substitute a model's
|
||||||
|
narration of command output. A claim that disagrees with a record's
|
||||||
|
exit_code is a finding (record wins); a mechanical claim with no record is
|
||||||
|
unverifiable — request the citation. A green verdict-cache hit
|
||||||
|
(`metadata.verdict_cache.key`) counts the same as a fresh run.
|
||||||
|
|
||||||
{READ_FIRST_STEPS}
|
{READ_FIRST_STEPS}
|
||||||
4. For each checklist item, determine whether the {ARTIFACT_NOUN} satisfies it.
|
4. For each checklist item, determine whether the {ARTIFACT_NOUN} satisfies it.
|
||||||
Every checklist item must receive a PASS or FAIL verdict.
|
Every checklist item must receive a PASS or FAIL verdict.
|
||||||
@@ -46,6 +58,21 @@ Label: {DIMENSION_NAME}
|
|||||||
(reviewer_count > 1), use the slot-prefixed form {DIM}R{k}-F{NNN} with your
|
(reviewer_count > 1), use the slot-prefixed form {DIM}R{k}-F{NNN} with your
|
||||||
1-based slot k (e.g. TOPOR1-F001) so parallel slot files never collide on id.
|
1-based slot k (e.g. TOPOR1-F001) so parallel slot files never collide on id.
|
||||||
{CONTRADICTION_RULE}
|
{CONTRADICTION_RULE}
|
||||||
|
6b. Code graph availability (worktree sessions): if `codegraph_status` is
|
||||||
|
unavailable or reports no index for the tree under review (typical when
|
||||||
|
reviewing from a session worktree whose per-worktree `.codegraph/` index
|
||||||
|
has not finished building — see `<instance-root>/rules/code-graph.md`), do NOT
|
||||||
|
silently substitute grep+read for structural questions ("who calls /
|
||||||
|
what depends on / where defined"). Instead:
|
||||||
|
- For symbols on the MAIN branch side (baselines, design refs, cross-session
|
||||||
|
frozen contracts), you MAY query the main checkout's index (path given in
|
||||||
|
your dispatch preamble) and cite `main:<path>:<line>`.
|
||||||
|
- If no index is reachable at all, mark the affected checklist items NA
|
||||||
|
with reason "codegraph unavailable — structural check degraded to grep"
|
||||||
|
and emit one INFO finding (id `{DIM}-F001`-style, in your dimension's own
|
||||||
|
code) recording the degradation, so the Synthesizer can surface it.
|
||||||
|
Findings derived purely from grep+read when a graph query was required are
|
||||||
|
treated as low-confidence and may be waived in synthesis.
|
||||||
7. Assign severity strictly:
|
7. Assign severity strictly:
|
||||||
{SEVERITY_DEFINITIONS}
|
{SEVERITY_DEFINITIONS}
|
||||||
8. Count every PASS and FAIL. Compute pass_rate = passed / total_checks.
|
8. Count every PASS and FAIL. Compute pass_rate = passed / total_checks.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
> Core 中立版(Increment 6a 改写,原 deferHard verbatim)。编号与条目结构严格不变(C-2 不变量);实例术语按 `core/adapters/TERMINOLOGY.md` 绑定。
|
# > Core 中立版(Increment 6a 改写,原 deferHard verbatim)。编号与条目结构严格不变(C-2 不变量);实例术语按 `core/adapters/TERMINOLOGY.md` 绑定。
|
||||||
name: Coordinator
|
name: Coordinator
|
||||||
purpose: >
|
purpose: >
|
||||||
Pool dispatch coordinator (billing-v2 [org-internal #4041] §7, REQ-F-012): a wake-driven,
|
Pool dispatch coordinator (billing-v2 [org-internal #4041] §7, REQ-F-012): a wake-driven,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
> Core 中立版(Increment 6a 改写,原 deferHard verbatim)。编号与条目结构严格不变(C-2 不变量);实例术语按 `core/adapters/TERMINOLOGY.md` 绑定。
|
# > Core 中立版(Increment 6a 改写,原 deferHard verbatim)。编号与条目结构严格不变(C-2 不变量);实例术语按 `core/adapters/TERMINOLOGY.md` 绑定。
|
||||||
name: Producer
|
name: Producer
|
||||||
purpose: >
|
purpose: >
|
||||||
Write production artifacts — requirements, design, plans, code, fixes,
|
Write production artifacts — requirements, design, plans, code, fixes,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
> Core 中立版(Increment 6a 改写,原 deferHard verbatim)。编号与条目结构严格不变(C-2 不变量);实例术语按 `core/adapters/TERMINOLOGY.md` 绑定。
|
# > Core 中立版(Increment 6a 改写,原 deferHard verbatim)。编号与条目结构严格不变(C-2 不变量);实例术语按 `core/adapters/TERMINOLOGY.md` 绑定。
|
||||||
name: Reviewer
|
name: Reviewer
|
||||||
purpose: >
|
purpose: >
|
||||||
Review one dimension of an artifact against its checklist, read-only.
|
Review one dimension of an artifact against its checklist, read-only.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
> Core 中立版(Increment 6a 改写,原 deferHard verbatim)。编号与条目结构严格不变(C-2 不变量);实例术语按 `core/adapters/TERMINOLOGY.md` 绑定。
|
# > Core 中立版(Increment 6a 改写,原 deferHard verbatim)。编号与条目结构严格不变(C-2 不变量);实例术语按 `core/adapters/TERMINOLOGY.md` 绑定。
|
||||||
name: Tool
|
name: Tool
|
||||||
purpose: >
|
purpose: >
|
||||||
Specialized tool agent for image interpretation and other vision/utility
|
Specialized tool agent for image interpretation and other vision/utility
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
> Core 中立版(Increment 6a 改写,原 deferHard verbatim)。编号与条目结构严格不变(C-2 不变量);实例术语按 `core/adapters/TERMINOLOGY.md` 绑定。
|
# > Core 中立版(Increment 6a 改写,原 deferHard verbatim)。编号与条目结构严格不变(C-2 不变量);实例术语按 `core/adapters/TERMINOLOGY.md` 绑定。
|
||||||
name: Verifier
|
name: Verifier
|
||||||
purpose: >
|
purpose: >
|
||||||
Run the iteration's DoD matrix, integration tests, NFR validation, and
|
Run the iteration's DoD matrix, integration tests, NFR validation, and
|
||||||
|
|||||||
@@ -198,6 +198,14 @@
|
|||||||
- **Rule 4 — Aggregation, not reinterpretation**: You MUST NOT soften, rephrase,
|
- **Rule 4 — Aggregation, not reinterpretation**: You MUST NOT soften, rephrase,
|
||||||
or downgrade reviewer findings. If a reviewer writes "BLOCKER", it stays
|
or downgrade reviewer findings. If a reviewer writes "BLOCKER", it stays
|
||||||
"BLOCKER" in synthesis.
|
"BLOCKER" in synthesis.
|
||||||
|
|
||||||
|
1c. **Pass-rate recalc post-check (MANDATORY, [org-internal #5658])**: for
|
||||||
|
every dimension, recompute `pass_rate = passed / total_checks` from its
|
||||||
|
`quantitative_summary` and compare with the reported value. On a mismatch:
|
||||||
|
keep the raw file unchanged, use the RECOMPUTED value in the synthesis
|
||||||
|
digest, and note the mismatch — a reviewer-output whose `pass_rate` does
|
||||||
|
not match its own counts is a malformed artifact (the schema description
|
||||||
|
says exactly this; this step is the enforcement).
|
||||||
- **Rule 5 — Anonymous findings preservation**: If two reviewers independently
|
- **Rule 5 — Anonymous findings preservation**: If two reviewers independently
|
||||||
flag the same issue from different dimensions, preserve both entries. Do not
|
flag the same issue from different dimensions, preserve both entries. Do not
|
||||||
deduplicate by discarding one — cross-dimension agreement is itself a signal.
|
deduplicate by discarding one — cross-dimension agreement is itself a signal.
|
||||||
@@ -209,6 +217,11 @@
|
|||||||
Return ONLY this summary as your final message. Do NOT include the full
|
Return ONLY this summary as your final message. Do NOT include the full
|
||||||
synthesis JSON — it is already posted to the pipeline PR / source issue
|
synthesis JSON — it is already posted to the pipeline PR / source issue
|
||||||
comment (for audit-process runs, the wiki page `audit/{date}/round{N}/synthesis`).
|
comment (for audit-process runs, the wiki page `audit/{date}/round{N}/synthesis`).
|
||||||
|
|
||||||
|
When your dispatch carries `format` (StructuredOutput mount, [org-internal
|
||||||
|
[org-internal #5658]]): the structured output is the MIRROR self-check of this summary (same
|
||||||
|
schema, schema-enforced), not a second artifact — the posted fenced JSON block
|
||||||
|
and this summary remain canonical.
|
||||||
Persist this summary verbatim to
|
Persist this summary verbatim to
|
||||||
`<runs-root>/{slug}/reviews/{stage}/round{N}/synthesis-return.md` before
|
`<runs-root>/{slug}/reviews/{stage}/round{N}/synthesis-return.md` before
|
||||||
returning (step 9 above — worker-report persistence [org-internal #2847]).
|
returning (step 9 above — worker-report persistence [org-internal #2847]).
|
||||||
|
|||||||
@@ -1,33 +1,14 @@
|
|||||||
---
|
---
|
||||||
name: codegraph-setup
|
name: codegraph-setup
|
||||||
description: >
|
description: >
|
||||||
Use ONLY when installing, configuring, initializing, or troubleshooting CodeGraph
|
Use ONLY when installing, configuring, initializing, or troubleshooting
|
||||||
(@colbymchenry/codegraph — https://github.com/colbymchenry/codegraph) in the
|
CodeGraph (@colbymchenry/codegraph) in the octopus environment.
|
||||||
octopus environment. Covers global CLI install, per-project `.codegraph/`
|
|
||||||
indexing, and maintenance commands (status, sync, upgrade, uninstall). MCP
|
|
||||||
wiring into octopus.jsonc is handled by the kickoff pipeline
|
|
||||||
(`octopus kickoff` or `/kickoff`). Also use when a project session reports a
|
|
||||||
missing/stale `.codegraph/` index.
|
|
||||||
triggers:
|
triggers:
|
||||||
- codegraph
|
- codegraph
|
||||||
- code graph
|
- code graph
|
||||||
- codegraph setup
|
|
||||||
- codegraph install
|
|
||||||
- codegraph init
|
|
||||||
- .codegraph
|
|
||||||
- codegraph_explore
|
|
||||||
- codegraph_node
|
|
||||||
- codegraph_callers
|
|
||||||
- codegraph_status
|
|
||||||
- install codegraph
|
|
||||||
# Chinese — bare nouns for code-graph concepts. The English "codegraph" brand
|
|
||||||
# name above already covers mixed-language phrasings; these cover pure Chinese.
|
|
||||||
- 代码图
|
- 代码图
|
||||||
- 代码图谱
|
|
||||||
- 代码索引
|
- 代码索引
|
||||||
- 索引代码
|
- 索引代码
|
||||||
- 装代码图
|
|
||||||
- 初始化代码图
|
|
||||||
role: Producer
|
role: Producer
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ name: image-interpret
|
|||||||
description: >
|
description: >
|
||||||
Use ONLY when the agent needs to read or analyze an image (screenshot,
|
Use ONLY when the agent needs to read or analyze an image (screenshot,
|
||||||
design mockup, UI capture, .png/.jpg/.webp file) but the active model lacks
|
design mockup, UI capture, .png/.jpg/.webp file) but the active model lacks
|
||||||
vision capability. Delegates to the Image Interpreter role (vision-capable
|
vision capability. Delegates to the Tool role (image interpretation) (vision-capable
|
||||||
model) which returns a structured text spec — layout regions, colors (hex),
|
model) which returns a structured text spec — layout regions, colors (hex),
|
||||||
spacing (px), typography, component hierarchy, and responsive breakpoints.
|
spacing (px), typography, component hierarchy, and responsive breakpoints.
|
||||||
Do not use for non-image tasks or when the active model already supports
|
Do not use for non-image tasks or when the active model already supports
|
||||||
@@ -31,7 +31,7 @@ role: Tool
|
|||||||
|
|
||||||
You (the calling agent) cannot read images — your model has no vision. Any
|
You (the calling agent) cannot read images — your model has no vision. Any
|
||||||
task that requires *seeing* a visual artifact must be delegated to the
|
task that requires *seeing* a visual artifact must be delegated to the
|
||||||
**Image Interpreter** role, which runs on a vision-capable model and returns a
|
**Tool** role (image interpretation), which runs on a vision-capable model and returns a
|
||||||
structured text description you can act on.
|
structured text description you can act on.
|
||||||
|
|
||||||
Trigger situations:
|
Trigger situations:
|
||||||
@@ -64,7 +64,7 @@ Trigger situations:
|
|||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
4. **Consume the returned text spec.** The Image Interpreter returns a
|
4. **Consume the returned text spec.** The Tool sub-agent (image interpretation) returns a
|
||||||
structured description only — it cannot write code or artifacts. Use the
|
structured description only — it cannot write code or artifacts. Use the
|
||||||
returned spec to drive your own work (code generation, design review,
|
returned spec to drive your own work (code generation, design review,
|
||||||
planning).
|
planning).
|
||||||
@@ -74,7 +74,7 @@ Trigger situations:
|
|||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
- The Image Interpreter is **read-only** — it describes images, it does not edit
|
- The Tool sub-agent (image interpretation) is **read-only** — it describes images, it does not edit
|
||||||
files or write code.
|
files or write code.
|
||||||
- One delegation per distinct visual question. Batch multiple images into a
|
- One delegation per distinct visual question. Batch multiple images into a
|
||||||
single delegation only when they must be compared.
|
single delegation only when they must be compared.
|
||||||
|
|||||||
@@ -127,6 +127,20 @@ Rules:
|
|||||||
|
|
||||||
Each execution mode below defines its own Tester focus and any mode-specific orchestration overrides.
|
Each execution mode below defines its own Tester focus and any mode-specific orchestration overrides.
|
||||||
|
|
||||||
|
**Producer test preflight** (before writing any test):
|
||||||
|
|
||||||
|
1. **No absolute-path targets outside the test's own fixture/instance dir** — target fixtures or instance-relative paths instead. Where behavior is
|
||||||
|
platform-dependent (path resolution differs Windows/Linux), assert the
|
||||||
|
platform-specific expectation explicitly; a platform mismatch must fail,
|
||||||
|
never pass by accident.
|
||||||
|
2. **Polling/wait-for loops must be bounded AND non-vacuous** — bound the
|
||||||
|
loop AND assert the body executed at least once (e.g. an iteration
|
||||||
|
counter asserted after the loop), so a timeout-cut never yields a false
|
||||||
|
green.
|
||||||
|
|
||||||
|
Anchor: CI job 112302 (PR [org-internal #6409] first head red — nonexistent absolute path
|
||||||
|
drill + 15s-bound vacuous loop).
|
||||||
|
|
||||||
## Greenfield vs. Brownfield
|
## Greenfield vs. Brownfield
|
||||||
|
|
||||||
**Greenfield** (new project): Create new files following the design. Project conventions are defined by the design document.
|
**Greenfield** (new project): Create new files following the design. Project conventions are defined by the design document.
|
||||||
|
|||||||
@@ -179,10 +179,6 @@ Available work items:
|
|||||||
|
|
||||||
#### Phase 1 — Parse Context
|
#### Phase 1 — Parse Context
|
||||||
|
|
||||||
> **Pipeline stage**: if the source issue exists, move it to the `implement`
|
|
||||||
> column on the Pipeline Stages board per `_shared/gitea-write-patterns.md`
|
|
||||||
> Pattern 7.5. Skip if no source issue exists.
|
|
||||||
|
|
||||||
Read the upstream artifacts to build a complete implementation context.
|
Read the upstream artifacts to build a complete implementation context.
|
||||||
Resolve inputs per the DAG-route read map (Preconditions above); standalone
|
Resolve inputs per the DAG-route read map (Preconditions above); standalone
|
||||||
modes read the request/bug report instead:
|
modes read the request/bug report instead:
|
||||||
@@ -499,11 +495,6 @@ issue exists.
|
|||||||
retired — each one re-triggered the full CI surface for near-zero re-tested
|
retired — each one re-triggered the full CI surface for near-zero re-tested
|
||||||
risk.
|
risk.
|
||||||
|
|
||||||
> **Kanban column lifecycle**: automated (`POST <gitea-base-url>/api/v1/repos/{owner}/{repo}/issues` → Backlog,
|
|
||||||
> `POST .../pulls` → Review; no manual moves). Single shared reference:
|
|
||||||
> `_shared/gitea-write-patterns.md` Pattern 7.5; column semantics: wiki
|
|
||||||
> `kanban-lifecycle`.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
#### Phase 5 — Report
|
#### Phase 5 — Report
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
---
|
---
|
||||||
name: release
|
name: release
|
||||||
description: >
|
description: >
|
||||||
Use ONLY when ready to cut a release. The Release Manager (Worker) inspects
|
Use ONLY when ready to cut a release. The Producer (Worker) inspects
|
||||||
project state (git log, version files, build) to determine the semver bump,
|
project state (git log, version files, build) to determine the semver bump,
|
||||||
generate the changelog, tag, and produce a release artifact. Works on any
|
generate the changelog, tag, and produce a release artifact. Works on any
|
||||||
project state — no pipeline artifacts required.
|
project state — no pipeline artifacts required.
|
||||||
triggers:
|
triggers:
|
||||||
- release
|
|
||||||
- cut release
|
- cut release
|
||||||
- 发版
|
- 发版
|
||||||
- publish release
|
- publish release
|
||||||
@@ -14,7 +13,6 @@ triggers:
|
|||||||
role: Producer
|
role: Producer
|
||||||
---
|
---
|
||||||
|
|
||||||
> Core 中立版(Increment 6a 改写,原 deferHard verbatimDir)。机制、结构与 frontmatter 保持;实例术语(工具名、路径、工单号)按 `core/adapters/TERMINOLOGY.md` 绑定到具体实例。
|
|
||||||
# Release
|
# Release
|
||||||
|
|
||||||
Prepare and tag a release based on project facts — git history since the last
|
Prepare and tag a release based on project facts — git history since the last
|
||||||
@@ -28,14 +26,14 @@ produced here is the input to project-specific deployment workflows.
|
|||||||
|
|
||||||
## Agent Role
|
## Agent Role
|
||||||
|
|
||||||
The release is owned and executed by the **Release Manager** (Worker).
|
The release is owned and executed by the **Producer** (Worker).
|
||||||
|
|
||||||
**Context compaction**: release is a pipeline stage boundary. The main session
|
**Context compaction**: release is a pipeline stage boundary. The main session
|
||||||
compacts at this clean boundary ONLY when a capacity/projection trigger holds,
|
compacts at this clean boundary ONLY when a capacity/projection trigger holds,
|
||||||
per `core/rules/compact.md` §"Stage-boundary compaction" (long multi-stage
|
per `.octopus/rules/compact.md` §"Stage-boundary compaction" (long multi-stage
|
||||||
runs — DAG Epic orchestration — keep the legacy every-boundary compaction;
|
runs — DAG Epic orchestration — keep the legacy every-boundary compaction;
|
||||||
short runs — bugfix / DAG task — and standalone runs default to NOT
|
short runs — bugfix / DAG task — and standalone runs default to NOT
|
||||||
compacting). The Release Manager itself is single-phase and
|
compacting). The Producer itself is single-phase and
|
||||||
artifact-driven (version files, changelog, tag); a mid-run compaction loses
|
artifact-driven (version files, changelog, tag); a mid-run compaction loses
|
||||||
nothing — re-read the release checklist state and git log to resume.
|
nothing — re-read the release checklist state and git log to resume.
|
||||||
|
|
||||||
@@ -46,7 +44,7 @@ nothing — re-read the release checklist state and git log to resume.
|
|||||||
Before starting the release:
|
Before starting the release:
|
||||||
|
|
||||||
- [ ] Working tree is clean (`git status` has no uncommitted changes).
|
- [ ] Working tree is clean (`git status` has no uncommitted changes).
|
||||||
- [ ] `core/checklists/release.md` is accessible.
|
- [ ] `.octopus/checklists/release.md` is accessible.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -65,7 +63,7 @@ Run each check against the live project. Stop and report failures.
|
|||||||
- No new HIGH or CRITICAL CVEs block the release.
|
- No new HIGH or CRITICAL CVEs block the release.
|
||||||
- Pre-existing HIGH/CRITICAL CVEs do NOT block but **MUST be filed as
|
- Pre-existing HIGH/CRITICAL CVEs do NOT block but **MUST be filed as
|
||||||
tech-debt** before the release lands. File them in TWO TIERS (batching
|
tech-debt** before the release lands. File them in TWO TIERS (batching
|
||||||
rule, [org-internal #3846] — a single release audit once fanned out to 14 TDs → 14 PRs →
|
rule, [org-internal #3846] — a single release audit once fanned out to 14 TDs → 14 PRs →
|
||||||
56-84 CI runs on a saturated runner pool): Tier A below is the general
|
56-84 CI runs on a saturated runner pool): Tier A below is the general
|
||||||
mechanical-change batching rule; Tier B and the escape hatch follow it.
|
mechanical-change batching rule; Tier B and the escape hatch follow it.
|
||||||
|
|
||||||
@@ -86,7 +84,7 @@ Two source types today: (a) dependency bump audits; (b) docs 批量修订
|
|||||||
- **(a) Dependency bump audits** (the [org-internal #3846] origin case): advisories whose
|
- **(a) Dependency bump audits** (the [org-internal #3846] origin case): advisories whose
|
||||||
remediation is a plain version bump (lockfile-only diff, no semver-major
|
remediation is a plain version bump (lockfile-only diff, no semver-major
|
||||||
jump, no overrides/catalog surgery, no API or adapter fallout) are filed
|
jump, no overrides/catalog surgery, no API or adapter fallout) are filed
|
||||||
together via `工单 API(见 TERMINOLOGY)create` with
|
together via REST `POST .../issues` with
|
||||||
`title="[{origin}] audit-batch@{version}: mechanical bumps for {N} advisories (TD-{NNN})"`
|
`title="[{origin}] audit-batch@{version}: mechanical bumps for {N} advisories (TD-{NNN})"`
|
||||||
and labels `[tech_debt_label_id, severity_label_id, kind_bug_label_id]`
|
and labels `[tech_debt_label_id, severity_label_id, kind_bug_label_id]`
|
||||||
(severity = highest in the batch). One row per advisory — CVE/GHSA ID,
|
(severity = highest in the batch). One row per advisory — CVE/GHSA ID,
|
||||||
@@ -101,7 +99,7 @@ Two source types today: (a) dependency bump audits; (b) docs 批量修订
|
|||||||
`title="[{origin}] docs-batch: {class} revisions for {N} files"`, with one
|
`title="[{origin}] docs-batch: {class} revisions for {N} files"`, with one
|
||||||
row per file (path, correction, reason); same ONE-batch-PR landing.
|
row per file (path, correction, reason); same ONE-batch-PR landing.
|
||||||
- **Landing**: when members live on separate branches, compose the single
|
- **Landing**: when members live on separate branches, compose the single
|
||||||
batch PR via the `land-batch` skill (`core/skills/land-batch/SKILL.md`
|
batch PR via the `land-batch` skill (`.octopus/skills/land-batch/SKILL.md`
|
||||||
— cross-branch batch composition, topology B). For dependency-bump
|
— cross-branch batch composition, topology B). For dependency-bump
|
||||||
batches pass `batch-compose --convergent bun.lock` (script
|
batches pass `batch-compose --convergent bun.lock` (script
|
||||||
`.gitea/scripts/batch-compose.ts`): the regenerable lockfile is exempt
|
`.gitea/scripts/batch-compose.ts`): the regenerable lockfile is exempt
|
||||||
@@ -110,14 +108,14 @@ Two source types today: (a) dependency bump audits; (b) docs 批量修订
|
|||||||
|
|
||||||
#### 适用边界 / Applicability boundary
|
#### 适用边界 / Applicability boundary
|
||||||
|
|
||||||
- **非mechanical(含判断成分的变更,不并单)** — items requiring judgment
|
- **非 mechanical(含判断成分的变更,不并单)** — items requiring judgment
|
||||||
(wording decisions, behavior/API changes, review-dependent edits) are
|
(wording decisions, behavior/API changes, review-dependent edits) are
|
||||||
never batched; file each as its own issue.
|
never batched; file each as its own issue.
|
||||||
- **路径重叠(batch 成员触碰相同文件 → 不并单;唯一豁免 =
|
- **路径重叠(batch 成员触碰相同文件 → 不并单;唯一豁免 =
|
||||||
可再生共享文件`bun.lock` 经batch-compose `--convergent` 收敛)** — the sole
|
可再生共享文件 `bun.lock` 经 batch-compose `--convergent` 收敛)** — the sole
|
||||||
path-overlap exemption is the regenerable shared lockfile under
|
path-overlap exemption is the regenerable shared lockfile under
|
||||||
`--convergent`; every other same-file collision stays un-batched.
|
`--convergent`; every other same-file collision stays un-batched.
|
||||||
- **semver-major 跳变 / overrides·catalog 手术 / adapter·peer 联动(→
|
- **semver-major 跳变 / overrides·catalog 手术 / adapter·peer 联动(→
|
||||||
Tier B 独立单,维持 per-package)** — these stay per-package Tier B
|
Tier B 独立单,维持 per-package)** — these stay per-package Tier B
|
||||||
issues. Tier B and the escape hatch (below) survive this generalization
|
issues. Tier B and the escape hatch (below) survive this generalization
|
||||||
unchanged.
|
unchanged.
|
||||||
@@ -157,12 +155,12 @@ template and `_shared/gitea-write-patterns.md` Pattern 3.
|
|||||||
|
|
||||||
| Check | Status |
|
| Check | Status |
|
||||||
| ----------------- | ----------------------------------------------------- |
|
| ----------------- | ----------------------------------------------------- |
|
||||||
| Clean workspace | ✅/ ❌ |
|
| Clean workspace | ✅ / ❌ |
|
||||||
| Branch | {branch name} |
|
| Branch | {branch name} |
|
||||||
| Build | ✅/ ❌ |
|
| Build | ✅ / ❌ |
|
||||||
| Typecheck + Lint | ✅/ ❌ |
|
| Typecheck + Lint | ✅ / ❌ |
|
||||||
| Tests | ✅/ ❌(N passed, M failed) |
|
| Tests | ✅ / ❌ (N passed, M failed) |
|
||||||
| Dependency audit | ✅/ ⚠️ N known CVEs (pre-existing) / ❌N new CVEs |
|
| Dependency audit | ✅ / ⚠️ N known CVEs (pre-existing) / ❌ N new CVEs |
|
||||||
```
|
```
|
||||||
|
|
||||||
If any gate fails except known CVEs, stop and report what failed.
|
If any gate fails except known CVEs, stop and report what failed.
|
||||||
@@ -309,7 +307,7 @@ credentials in the environment.
|
|||||||
- `NODE_AUTH_TOKEN` — only if publishing to npm.
|
- `NODE_AUTH_TOKEN` — only if publishing to npm.
|
||||||
- `AUR_KEY` — only if pushing the AUR package.
|
- `AUR_KEY` — only if pushing the AUR package.
|
||||||
- Docker logged in to the Gitea container registry:
|
- Docker logged in to the Gitea container registry:
|
||||||
`echo "$GITEA_TOKEN" | docker login <instance-registry-host> -u <user> --password-stdin`.
|
`echo "$GITEA_TOKEN" | docker login eightarms.net -u <user> --password-stdin`.
|
||||||
|
|
||||||
### Steps
|
### Steps
|
||||||
|
|
||||||
@@ -323,7 +321,7 @@ credentials in the environment.
|
|||||||
```bash
|
```bash
|
||||||
OCTOPUS_VERSION={version} OCTOPUS_RELEASE={release-id} \
|
OCTOPUS_VERSION={version} OCTOPUS_RELEASE={release-id} \
|
||||||
GH_REPO=Octopus/octopus GITEA_TOKEN=<pat> \
|
GH_REPO=Octopus/octopus GITEA_TOKEN=<pat> \
|
||||||
bun <harness-package>/script/build.ts
|
bun packages/octopus/script/build.ts
|
||||||
```
|
```
|
||||||
`build.ts` attaches the 12 release assets to the draft release.
|
`build.ts` attaches the 12 release assets to the draft release.
|
||||||
|
|
||||||
@@ -339,14 +337,14 @@ credentials in the environment.
|
|||||||
4. **Undraft the release** (makes it public):
|
4. **Undraft the release** (makes it public):
|
||||||
```bash
|
```bash
|
||||||
curl -fsS -X PATCH \
|
curl -fsS -X PATCH \
|
||||||
"<instance-base-url>/api/v1/repos/Octopus/octopus/releases/{release-id}" \
|
"https://eightarms.net/api/v1/repos/Octopus/octopus/releases/{release-id}" \
|
||||||
-H "Authorization: token $GITEA_TOKEN" \
|
-H "Authorization: token $GITEA_TOKEN" \
|
||||||
-H "Content-Type: application/json" -d '{"draft": false}'
|
-H "Content-Type: application/json" -d '{"draft": false}'
|
||||||
```
|
```
|
||||||
|
|
||||||
5. **Verify assets** — the release must carry 12 assets:
|
5. **Verify assets** — the release must carry 12 assets:
|
||||||
```bash
|
```bash
|
||||||
curl -sS "<instance-base-url>/api/v1/repos/Octopus/octopus/releases/tags/v{version}" \
|
curl -sS "https://eightarms.net/api/v1/repos/Octopus/octopus/releases/tags/v{version}" \
|
||||||
-H "Authorization: token $GITEA_TOKEN" | jq '.assets | length'
|
-H "Authorization: token $GITEA_TOKEN" | jq '.assets | length'
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -375,9 +373,14 @@ Document how to undo this release:
|
|||||||
1. **Git rollback**:
|
1. **Git rollback**:
|
||||||
- `git tag -d v{version}` (if not yet pushed).
|
- `git tag -d v{version}` (if not yet pushed).
|
||||||
- `git revert {commit_hash}` (if already merged).
|
- `git revert {commit_hash}` (if already merged).
|
||||||
- If the release includes DB migrations, confirm the `down` migration exists.
|
- If the release includes DB migrations, confirm the `down` migration exists
|
||||||
|
**when the project's migration tooling provides one**. This repo's Drizzle
|
||||||
|
convention is forward-only (`migration.sql` + `snapshot.json`, no `down`
|
||||||
|
files) — there, record the reversal plan (manual SQL / restore) or mark the
|
||||||
|
change irreversible instead of waiting on a `down` file that never comes.
|
||||||
2. **Data rollback** (if applicable):
|
2. **Data rollback** (if applicable):
|
||||||
- For each migration, confirm the `down` migration exists and has been tested.
|
- For each migration, confirm the `down` migration exists and has been tested
|
||||||
|
where the tooling offers one; otherwise document the manual reversal steps.
|
||||||
- If the release changes data format without a reversible migration, mark
|
- If the release changes data format without a reversible migration, mark
|
||||||
`⚠️ IRREVERSIBLE DATA CHANGE`.
|
`⚠️ IRREVERSIBLE DATA CHANGE`.
|
||||||
|
|
||||||
@@ -390,7 +393,7 @@ git tag -d v{version}
|
|||||||
# or: git revert {hash}
|
# or: git revert {hash}
|
||||||
|
|
||||||
### Data Rollback
|
### Data Rollback
|
||||||
- Migration `{name}`: down {exists / NOT FOUND}
|
- Migration `{name}`: down {exists / NOT FOUND / N/A — forward-only tooling}
|
||||||
- {additional risks}
|
- {additional risks}
|
||||||
|
|
||||||
### Rollback Triggers
|
### Rollback Triggers
|
||||||
@@ -419,7 +422,7 @@ git tag -d v{version}
|
|||||||
**Version**: {old} → {new} (MAJOR / MINOR / PATCH)
|
**Version**: {old} → {new} (MAJOR / MINOR / PATCH)
|
||||||
**Tag**: v{version}
|
**Tag**: v{version}
|
||||||
**Commits**: {N} since last tag ({feat} features, {fix} fixes)
|
**Commits**: {N} since last tag ({feat} features, {fix} fixes)
|
||||||
**Typecheck**: ✅| Lint: ✅| Tests: ✅
|
**Typecheck**: ✅ | Lint: ✅ | Tests: ✅
|
||||||
|
|
||||||
### Changelog
|
### Changelog
|
||||||
|
|
||||||
@@ -435,13 +438,13 @@ git tag -d v{version}
|
|||||||
|
|
||||||
**Deploy**: {manual step — "merge to main triggers CI", etc.}
|
**Deploy**: {manual step — "merge to main triggers CI", etc.}
|
||||||
**Rollback**: see Phase 5 above
|
**Rollback**: see Phase 5 above
|
||||||
**Next**: `core/skills/retrospective/SKILL.md` (optional — run on any project state)
|
**Next**: `.octopus/skills/retrospective/SKILL.md` (optional — run on any project state)
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## References
|
## References
|
||||||
|
|
||||||
- `core/checklists/release.md` — Release checklist
|
- `.octopus/checklists/release.md` — Release checklist
|
||||||
- Semver spec: https://semver.org
|
- Semver spec: https://semver.org
|
||||||
- Conventional Commits: https://www.conventionalcommits.org
|
- Conventional Commits: https://www.conventionalcommits.org
|
||||||
|
|||||||
@@ -97,10 +97,7 @@ The stage IDs remain as-is — they are used by the stage registry and auto-appr
|
|||||||
This skill follows the standardized parallel-review pipeline. The full mechanics are in:
|
This skill follows the standardized parallel-review pipeline. The full mechanics are in:
|
||||||
|
|
||||||
- `<!-- inject: ../_shared/review-pipeline-phases.md -->` — Phase A through Phase E
|
- `<!-- inject: ../_shared/review-pipeline-phases.md -->` — Phase A through Phase E
|
||||||
- **Phase A step 0**: move the source issue to the `review` column on the
|
(canonical orchestrator actions for the shared flow)
|
||||||
Pipeline Stages board per `_shared/gitea-write-patterns.md` Pattern 7.5
|
|
||||||
(see `_shared/review-pipeline-phases.md` for the canonical orchestrator
|
|
||||||
actions — step 0 is now part of the shared flow).
|
|
||||||
- `<!-- inject: ../_shared/review-orchestrator-rules.md -->` — mandatory orchestrator rules
|
- `<!-- inject: ../_shared/review-orchestrator-rules.md -->` — mandatory orchestrator rules
|
||||||
- `<!-- inject: ../_shared/review-final-report-template.md -->` — final report format
|
- `<!-- inject: ../_shared/review-final-report-template.md -->` — final report format
|
||||||
- `<!-- inject: ../_shared/review-revision-prompt.md -->` — Phase C revision prompt template
|
- `<!-- inject: ../_shared/review-revision-prompt.md -->` — Phase C revision prompt template
|
||||||
@@ -187,6 +184,15 @@ The audit target is the **SDLC factory itself** — the set of skills, checklist
|
|||||||
- [ ] `core/skills/` exists and contains at least one `SKILL.md`.
|
- [ ] `core/skills/` exists and contains at least one `SKILL.md`.
|
||||||
- [ ] `core/checklists/audit-process.md` is accessible.
|
- [ ] `core/checklists/audit-process.md` is accessible.
|
||||||
- [ ] `core/schemas/` contains the shared review schemas (`reviewer-output`, `synthesis`, `review-status`).
|
- [ ] `core/schemas/` contains the shared review schemas (`reviewer-output`, `synthesis`, `review-status`).
|
||||||
|
- [ ] **Process-tests-green gate ([org-internal #4787] STD 8.8)**: before dispatching
|
||||||
|
auditors, the Orchestrator (bash-capable; Explorer auditors have none by
|
||||||
|
construction) runs the process's own suite and guards — from
|
||||||
|
`<harness-package>`: `bun run test:parallel`, plus the repo-root `check:*`
|
||||||
|
guard family — and writes the commands, baseline SHA, and per-command result
|
||||||
|
summary to `<runs-root>/audit/reviews/audit-process/process-tests-green.md`
|
||||||
|
(Tier 1). The read-only STD 8.8 auditor verifies that record against the
|
||||||
|
current baseline; any red test/guard is itself a process defect and MUST be
|
||||||
|
filed as a finding.
|
||||||
|
|
||||||
No `.artifacts/{slug}/` inputs are required — the audit reads `<instance-root>/` itself. Audit outputs are published as Gitea wiki pages under `audit/{date}/`.
|
No `.artifacts/{slug}/` inputs are required — the audit reads `<instance-root>/` itself. Audit outputs are published as Gitea wiki pages under `audit/{date}/`.
|
||||||
|
|
||||||
@@ -201,7 +207,7 @@ No `.artifacts/{slug}/` inputs are required — the audit reads `<instance-root>
|
|||||||
| 5 | FLOW | Pipeline Cohesion | FLOW 5.1–5.6 | Preconditions + output sections of every `SKILL.md` |
|
| 5 | FLOW | Pipeline Cohesion | FLOW 5.1–5.6 | Preconditions + output sections of every `SKILL.md` |
|
||||||
| 6 | SCH | Schema Contract | SCH 6.1–6.5 | `core/schemas/*.json` + skills that reference them |
|
| 6 | SCH | Schema Contract | SCH 6.1–6.5 | `core/schemas/*.json` + skills that reference them |
|
||||||
| 7 | DUP | Duplication & Drift | DUP 7.1–7.4 | ALL `SKILL.md` + ALL `checklists/*.md` |
|
| 7 | DUP | Duplication & Drift | DUP 7.1–7.4 | ALL `SKILL.md` + ALL `checklists/*.md` |
|
||||||
| 8 | STD | Audit Standards (ISO/IEEE) | STD 8.1–8.7 | `review-*` skills, `review-artifact` (target: `audit-process`) itself |
|
| 8 | STD | Audit Standards (ISO/IEEE) | STD 8.1–8.8 | `review-*` skills, `review-artifact` (target: `audit-process`) itself |
|
||||||
| 9 | AGT | AGENTS.md Conformance | AGT 9.1–9.5 | ALL `SKILL.md` + `AGENTS.md` |
|
| 9 | AGT | AGENTS.md Conformance | AGT 9.1–9.5 | ALL `SKILL.md` + `AGENTS.md` |
|
||||||
| 10 | TRC | Traceability | TRC 10.1–10.5 | `review-*` skills, schemas, status artifacts |
|
| 10 | TRC | Traceability | TRC 10.1–10.5 | `review-*` skills, schemas, status artifacts |
|
||||||
|
|
||||||
|
|||||||
@@ -458,7 +458,7 @@ table).
|
|||||||
<!-- section:phase-a -->
|
<!-- section:phase-a -->
|
||||||
## Phase A — Parallel Review
|
## Phase A — Parallel Review
|
||||||
|
|
||||||
> **Canonical mechanics**: `core/skills/_shared/review-pipeline-phases.md` — keep this section in sync with the canonical Phase A–E flow. This section adds review-code-specific constants (10 dimensions, severity definitions, risk tiers, output mode, standalone-bugfix mode). Step 0 (move source issue to `review` column on Pipeline Stages board per Pattern 7.5) is inherited from the shared Phase A orchestrator actions; see `_shared/review-pipeline-phases.md`.
|
> **Canonical mechanics**: `core/skills/_shared/review-pipeline-phases.md` — keep this section in sync with the canonical Phase A–E flow. This section adds review-code-specific constants (10 dimensions, severity definitions, risk tiers, output mode, standalone-bugfix mode); orchestrator actions are inherited from the shared Phase A flow.
|
||||||
|
|
||||||
### Standalone Bugfix Mode — Orchestrator Dispatch
|
### Standalone Bugfix Mode — Orchestrator Dispatch
|
||||||
|
|
||||||
@@ -530,6 +530,13 @@ fallback is retired with the design pipeline, [org-internal #3072] phase 3):
|
|||||||
emits the reviewer's output; it does NOT touch the code under review, so
|
emits the reviewer's output; it does NOT touch the code under review, so
|
||||||
rule #7 auditor independence holds.)
|
rule #7 auditor independence holds.)
|
||||||
- Temperature: 0.1 (deterministic output).
|
- Temperature: 0.1 (deterministic output).
|
||||||
|
- StructuredOutput mount ([org-internal #5658]): pass `format: { type: "json_schema",
|
||||||
|
schema: <the reviewer-output.schema.json contents you read at prompt
|
||||||
|
build time> }` on the Task dispatch — the reviewer's final emission is
|
||||||
|
schema-enforced (malformed verdict/severity/summary args are rejected
|
||||||
|
with field-path repair feedback inside the reviewer's own loop). The
|
||||||
|
findings FILE remains the canonical Tier-1 artifact; the structured
|
||||||
|
output mirrors it as a self-check.
|
||||||
|
|
||||||
**Worktree-path rule (mandatory)**: Every file path in the reviewer prompt
|
**Worktree-path rule (mandatory)**: Every file path in the reviewer prompt
|
||||||
(`{FILE_SECTIONS}`, design reference paths, artifact paths) MUST be the
|
(`{FILE_SECTIONS}`, design reference paths, artifact paths) MUST be the
|
||||||
@@ -545,6 +552,21 @@ fallback is retired with the design pipeline, [org-internal #3072] phase 3):
|
|||||||
observed in the 2026-07 auto-approve retrospective (5-round convergence,
|
observed in the 2026-07 auto-approve retrospective (5-round convergence,
|
||||||
67.7% rework fraction).
|
67.7% rework fraction).
|
||||||
|
|
||||||
|
**Code-graph availability preamble (worktree sessions, [org-internal #4187])**: the main
|
||||||
|
checkout's `.codegraph/` index does NOT cover a session worktree
|
||||||
|
([org-internal #2561]/TD-006). Before dispatch, the Orchestrator checks the worktree's
|
||||||
|
own index: run `codegraph_status` against the worktree root, or check for
|
||||||
|
`<worktree-root>/.codegraph/codegraph.db` (a bare `init.log` without the
|
||||||
|
db means the background `session-worktree.sh create` init is still running).
|
||||||
|
Include in each reviewer's dispatch preamble: (a) the worktree index state
|
||||||
|
(ready / building / absent), and (b) when absent or still building, the
|
||||||
|
ABSOLUTE path of the main checkout (which has its own `.codegraph/`) so
|
||||||
|
DGN/COR reviewers can query MAIN-side symbols (design baselines, frozen
|
||||||
|
cross-session contracts) from the main checkout's index and cite them as
|
||||||
|
`main:<path>:<line>`. Reviewers apply rule 6b of
|
||||||
|
`_shared/review-reviewer-prompt.md` (NA + INFO finding) when no index is
|
||||||
|
reachable at all — grep-only structural claims must never pass silently.
|
||||||
|
|
||||||
4. Wait for all reviewers to complete. Each reviewer writes its finding JSON to
|
4. Wait for all reviewers to complete. Each reviewer writes its finding JSON to
|
||||||
`<runs-root>/{slug}/reviews/code/round{N}/findings-{DIMENSION_CODE}.json`
|
`<runs-root>/{slug}/reviews/code/round{N}/findings-{DIMENSION_CODE}.json`
|
||||||
(Tier 1 local, validated by `core/schemas/reviewer-output.schema.json`). After all
|
(Tier 1 local, validated by `core/schemas/reviewer-output.schema.json`). After all
|
||||||
@@ -860,7 +882,7 @@ After the Developer completes revision:
|
|||||||
|
|
||||||
**Convergence criteria**: see `core/skills/_shared/review-pipeline-phases.md` Phase D for the canonical table (stop conditions). `{MAX_ROUNDS}` is per-skill — code review binds the routing budget: **2** rounds default, **3** for high risk (a BLOCKER survived a round, or the diff touches a frozen cross-session contract) — `<instance-root>/workflow-routing.yaml` `review.max_rounds` ([org-internal #3567]). The code-review-specific addition is inheritance of the shared INFO-disposition rule. The shared Round-3 Escalation Guardrail is scoped to the `review-artifact` skill targets only and does not apply here.
|
**Convergence criteria**: see `core/skills/_shared/review-pipeline-phases.md` Phase D for the canonical table (stop conditions). `{MAX_ROUNDS}` is per-skill — code review binds the routing budget: **2** rounds default, **3** for high risk (a BLOCKER survived a round, or the diff touches a frozen cross-session contract) — `<instance-root>/workflow-routing.yaml` `review.max_rounds` ([org-internal #3567]). The code-review-specific addition is inheritance of the shared INFO-disposition rule. The shared Round-3 Escalation Guardrail is scoped to the `review-artifact` skill targets only and does not apply here.
|
||||||
|
|
||||||
**Round budget (mandatory, [org-internal #3567])**: when `current_round` reaches the budget (2; 3 for high risk) without convergence, do NOT enter another round. STOP: register every remaining BLOCKER/MAJOR finding as TD registry rows (`rules/ticket-lifecycle.md`), record the verdict (FAIL if any BLOCKER remains, else PASS — the debt is carried by the TD registry rows just registered), and close the loop. A review that cannot converge within budget is a design-level stall wearing review clothes (retro 2026-08-21 / [org-internal #3050]): in DAG task mode, map it to the DAG oversize signals (`<instance-root>/workflow-routing.yaml` `dag.size_derivation.oversize_signals`) and let the aggregator agent drive re-derivation + a `review-dag` re-run; otherwise record the design-level finding on the Epic, or open `{slug}/03-design-amendments` via `wiki 读写 API(见 TERMINOLOGY)` (`_shared/gitea-write-patterns.md` Pattern 1).
|
**Round budget (mandatory, [org-internal #3567])**: when `current_round` reaches the budget (2; 3 for high risk) without convergence, do NOT enter another round. STOP: register every remaining BLOCKER/MAJOR finding as TD registry rows (`rules/ticket-lifecycle.md`), record the verdict with the shared three-tier ladder (`core/schemas/synthesis.schema.json` `overall_verdict` + `core/skills/_shared/review-orchestrator-rules.md` rule 3): FAIL if any BLOCKER or FAIL dimension remains, else WARN, PASS only if every remaining dimension is PASS ([org-internal #4786]: the prior binary "else PASS" wording silently upgraded WARN-eligible outcomes to PASS), and close the loop. The debt is carried by the TD registry rows just registered, not by the recorded verdict. A review that cannot converge within budget is a design-level stall wearing review clothes (retro 2026-08-21 / [org-internal #3050]): in DAG task mode, map it to the DAG oversize signals (`<instance-root>/workflow-routing.yaml` `dag.size_derivation.oversize_signals`) and let the aggregator agent drive re-derivation + a `review-dag` re-run; otherwise record the design-level finding on the Epic, or open `{slug}/03-design-amendments` via `wiki 读写 API(见 TERMINOLOGY)` (`_shared/gitea-write-patterns.md` Pattern 1).
|
||||||
|
|
||||||
**Efficiency optimization**: see `core/skills/_shared/review-pipeline-phases.md` Phase D (same rule — from round 2 onward ([org-internal #2598]), only spawn reviewers for FAIL/WARN/UNRESOLVED dimensions; full sweep every 2 rounds). Round ≥2 reviewer input is delta-scoped to the revised files + their neighbors.
|
**Efficiency optimization**: see `core/skills/_shared/review-pipeline-phases.md` Phase D (same rule — from round 2 onward ([org-internal #2598]), only spawn reviewers for FAIL/WARN/UNRESOLVED dimensions; full sweep every 2 rounds). Round ≥2 reviewer input is delta-scoped to the revised files + their neighbors.
|
||||||
|
|
||||||
|
|||||||
@@ -196,10 +196,6 @@ each missing item.
|
|||||||
<!-- section:phase-1 -->
|
<!-- section:phase-1 -->
|
||||||
## Phase 1 — Load Verification Context
|
## Phase 1 — Load Verification Context
|
||||||
|
|
||||||
> **Pipeline stage**: if the source issue exists, move it to the `verify`
|
|
||||||
> column on the Pipeline Stages board per `_shared/gitea-write-patterns.md`
|
|
||||||
> Pattern 7.5. Skip if no source issue exists.
|
|
||||||
|
|
||||||
Read the upstream artifacts. DAG task/milestone mode (the live path — see
|
Read the upstream artifacts. DAG task/milestone mode (the live path — see
|
||||||
the DAG branch below for its read map):
|
the DAG branch below for its read map):
|
||||||
|
|
||||||
@@ -310,6 +306,20 @@ gate fingerprint is keyed on the working tree (SHA + uncommitted state +
|
|||||||
untracked), so it covers pre-push/headless states the same-SHA CI clauses
|
untracked), so it covers pre-push/headless states the same-SHA CI clauses
|
||||||
cannot.
|
cannot.
|
||||||
|
|
||||||
|
### 2.0b — Gate Records as Deterministic Inputs ([org-internal #5656] N-04)
|
||||||
|
|
||||||
|
Mechanical checks MUST be grounded in gate records (`gate` tool result
|
||||||
|
metadata), never in a model's transcription of command output:
|
||||||
|
|
||||||
|
- Cite `exit_code` verbatim — canonical block from
|
||||||
|
`packages/octopus/src/gate/consume.ts`: `gate <id> (<tier>):
|
||||||
|
exit_code=<n> -> green|red`, plus `duration_ms` / `ci_run_id` when present.
|
||||||
|
- `exit_code === null` (timeout/abort) is NO verdict — rerun required; a
|
||||||
|
pass claim cannot stand on it.
|
||||||
|
- A green verdict-cache hit (`metadata.verdict_cache.key`) satisfies the
|
||||||
|
check the same as a fresh run (content-addressed, same fingerprint).
|
||||||
|
- Narration drift (claim != record) is itself a verification finding.
|
||||||
|
|
||||||
### 2.1 Full Test Suite
|
### 2.1 Full Test Suite
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -1203,10 +1213,7 @@ If the user confirms, invoke the commit workflow per
|
|||||||
|
|
||||||
An iteration is NOT Done until all code is committed in git history.
|
An iteration is NOT Done until all code is committed in git history.
|
||||||
|
|
||||||
After the commit gate passes, move the source issue to the `done` column on
|
Issue closing follows the lifecycle per `issue-checklist-sync.md` 归档动作.
|
||||||
the Pipeline Stages board per `_shared/gitea-write-patterns.md` Pattern 7.5.
|
|
||||||
Skip if no source issue exists. `done` is a stage column marker; issue
|
|
||||||
closing follows the lifecycle per `issue-checklist-sync.md` 归档动作.
|
|
||||||
|
|
||||||
To notify workflow completion, call the `signal_stage_done` tool.
|
To notify workflow completion, call the `signal_stage_done` tool.
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "octopus-workflow",
|
"name": "octopus-workflow",
|
||||||
"version": "0.1.3",
|
"version": "0.1.7",
|
||||||
"description": "Standalone workflow core: provider-neutral agent workflow corpus (skills / rules / checklists / templates / schemas) with drift guards, extracted from the octopus agent platform.",
|
"description": "Standalone workflow core: provider-neutral agent workflow corpus (skills / rules / checklists / templates / schemas) with drift guards, extracted from the octopus agent platform.",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"private": false,
|
"private": false,
|
||||||
|
|||||||
Reference in New Issue
Block a user