1 Commits
8 changed files with 58 additions and 38 deletions
+1
View File
@@ -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 -1
View File
@@ -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),不得使用裸代码。
@@ -324,8 +324,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
+4 -4
View File
@@ -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.
+31 -28
View File
@@ -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
+10 -1
View File
@@ -187,6 +187,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 +210,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 |
+1 -1
View File
@@ -860,7 +860,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.
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "octopus-workflow", "name": "octopus-workflow",
"version": "0.1.3", "version": "0.1.4",
"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,