forked from Octopus/octopus-workflow
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3d5f89301b | ||
|
|
d6567b1842 |
@@ -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),不得使用裸代码。
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -499,9 +499,9 @@ 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,
|
> **Kanban column lifecycle**: manual — move the source issue across board
|
||||||
> `POST .../pulls` → Review; no manual moves). Single shared reference:
|
> columns explicitly as the pipeline stage changes (Pattern 7.5 in
|
||||||
> `_shared/gitea-write-patterns.md` Pattern 7.5; column semantics: wiki
|
> `_shared/gitea-write-patterns.md`); column semantics: wiki
|
||||||
> `kanban-lifecycle`.
|
> `kanban-lifecycle`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 |
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "octopus-workflow",
|
"name": "octopus-workflow",
|
||||||
"version": "0.1.3",
|
"version": "0.1.5",
|
||||||
"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