opencode-swarm 7.196.0 → 7.197.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.opencode/skills/brainstorm/SKILL.md +2 -1
- package/.opencode/skills/ci-failure-batching/SKILL.md +2 -1
- package/.opencode/skills/ci-fix-monitor/SKILL.md +2 -1
- package/.opencode/skills/clarify/SKILL.md +2 -1
- package/.opencode/skills/clarify-spec/SKILL.md +2 -1
- package/.opencode/skills/codebase-review-swarm/SKILL.md +1 -1
- package/.opencode/skills/commit-pr/SKILL.md +3 -2
- package/.opencode/skills/consult/SKILL.md +2 -1
- package/.opencode/skills/council/SKILL.md +2 -1
- package/.opencode/skills/critic-gate/SKILL.md +2 -1
- package/.opencode/skills/deep-dive/SKILL.md +2 -1
- package/.opencode/skills/deep-research/SKILL.md +2 -1
- package/.opencode/skills/design-docs/SKILL.md +2 -1
- package/.opencode/skills/discover/SKILL.md +2 -1
- package/.opencode/skills/durable-session-state/SKILL.md +2 -1
- package/.opencode/skills/engineering-conventions/SKILL.md +2 -1
- package/.opencode/skills/execute/SKILL.md +2 -1
- package/.opencode/skills/fork-pr-operations/SKILL.md +2 -1
- package/.opencode/skills/gate-attribution/SKILL.md +2 -1
- package/.opencode/skills/issue-ingest/SKILL.md +2 -1
- package/.opencode/skills/issue-tracer/SKILL.md +1 -1
- package/.opencode/skills/loop/SKILL.md +2 -1
- package/.opencode/skills/merge-queue-readiness/SKILL.md +2 -1
- package/.opencode/skills/orchestrating-subagents/SKILL.md +2 -1
- package/.opencode/skills/parallel-work-check/SKILL.md +17 -16
- package/.opencode/skills/phase-wrap/SKILL.md +2 -1
- package/.opencode/skills/pre-phase-briefing/SKILL.md +2 -1
- package/.opencode/skills/running-tests/SKILL.md +2 -1
- package/.opencode/skills/skill-edit-validation/SKILL.md +2 -1
- package/.opencode/skills/specify/SKILL.md +2 -1
- package/.opencode/skills/swarm/SKILL.md +2 -1
- package/.opencode/skills/swarm-ci-monitor/SKILL.md +3 -2
- package/.opencode/skills/swarm-implement/SKILL.md +2 -1
- package/.opencode/skills/swarm-plan/SKILL.md +2 -1
- package/.opencode/skills/swarm-pr-feedback/SKILL.md +9 -162
- package/.opencode/skills/swarm-pr-feedback/references/gate-evidence-scope.md +20 -0
- package/.opencode/skills/swarm-pr-feedback/references/intake-surfaces.md +107 -0
- package/.opencode/skills/swarm-pr-feedback/references/preflight-checkout.md +67 -0
- package/.opencode/skills/swarm-pr-review/SKILL.md +12 -344
- package/.opencode/skills/swarm-pr-review/references/council-mode.md +38 -0
- package/.opencode/skills/swarm-pr-review/references/explorer-output-format.md +54 -0
- package/.opencode/skills/swarm-pr-review/references/findings-persistence-detail.md +15 -0
- package/.opencode/skills/swarm-pr-review/references/parser-candidate-extraction.md +75 -0
- package/.opencode/skills/swarm-pr-review/references/phase0a-intake.md +61 -0
- package/.opencode/skills/swarm-pr-review/references/scope-detection.md +103 -0
- package/.opencode/skills/swarm-pr-review/references/writeback-phases.md +68 -0
- package/.opencode/skills/swarm-pr-subscribe/SKILL.md +3 -2
- package/.opencode/skills/swarm-resume/SKILL.md +2 -1
- package/.opencode/skills/test-file-split/SKILL.md +2 -1
- package/.opencode/skills/worktree-retry-cleanup/SKILL.md +2 -1
- package/.opencode/skills/writing-tests/SKILL.md +7 -437
- package/.opencode/skills/writing-tests/references/cross-platform-patterns.md +237 -0
- package/.opencode/skills/writing-tests/references/mock-tiers.md +207 -0
- package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
- package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
- package/dist/cli/{auto-checkpoint-f00tk7sc.js → auto-checkpoint-s05sxmg6.js} +4 -4
- package/dist/cli/{checkpoint-acztxqga.js → checkpoint-kzyy9b7y.js} +8 -8
- package/dist/cli/{coder-settlement-0ka4n1xf.js → coder-settlement-d1qqfgdm.js} +3 -3
- package/dist/cli/{config-doctor-qv7wc6fa.js → config-doctor-yrven0ya.js} +7 -7
- package/dist/cli/{core-dmn3arr1.js → core-qpmksfae.js} +1 -1
- package/dist/cli/{curator-drift-sxzs48ew.js → curator-drift-2h6nf0mw.js} +5 -5
- package/dist/cli/{curator-llm-factory-cvrt4bf9.js → curator-llm-factory-kt3jhgs9.js} +25 -25
- package/dist/cli/{curator-891pc8b7.js → curator-mqnqst1g.js} +25 -25
- package/dist/cli/{doctor-knowledge-receipt-phase-id-mvbj576e.js → doctor-knowledge-receipt-phase-id-d8arz38j.js} +4 -4
- package/dist/cli/{evidence-summary-service-x9nxvmn5.js → evidence-summary-service-gjs4zssz.js} +9 -9
- package/dist/cli/{gate-evidence-dxd20wrc.js → gate-evidence-9n5r17hq.js} +2 -2
- package/dist/cli/{guardrail-explain-fga9bnvt.js → guardrail-explain-g4wcr664.js} +26 -26
- package/dist/cli/{guardrail-log-y84b9m8n.js → guardrail-log-0hy23f7d.js} +3 -3
- package/dist/cli/{guardrail-reset-xpcsxyt0.js → guardrail-reset-9z5rmp3f.js} +25 -25
- package/dist/cli/{hive-promoter-w1vchgfr.js → hive-promoter-w8f840ah.js} +25 -25
- package/dist/cli/{index-7gqmqhzj.js → index-1cks27mv.js} +6 -6
- package/dist/cli/{index-tjc68trf.js → index-1gnrtz76.js} +5 -5
- package/dist/cli/{index-nqxbqb50.js → index-20m9q2z9.js} +1 -1
- package/dist/cli/{index-41p9zzpe.js → index-29xr45xr.js} +153 -52
- package/dist/cli/{index-psqfkgav.js → index-3qqnz0jg.js} +3 -3
- package/dist/cli/{index-3drq02r1.js → index-401a12w5.js} +1 -1
- package/dist/cli/{index-3hpjqa6y.js → index-5p0jhn2s.js} +1 -1
- package/dist/cli/{index-hjma52c8.js → index-67w61x1b.js} +3 -3
- package/dist/cli/{index-w3mav870.js → index-8ahnfc03.js} +2 -2
- package/dist/cli/{index-t5med3ga.js → index-8zwmfh9d.js} +1 -1
- package/dist/cli/{index-vsa05smc.js → index-9px1knpj.js} +1 -1
- package/dist/cli/{index-174j0g38.js → index-9sqcmzc2.js} +2 -2
- package/dist/cli/{index-nrqyc8pr.js → index-agvmmvdt.js} +25 -25
- package/dist/cli/{index-wscg5ryb.js → index-avbvxmw2.js} +1 -1
- package/dist/cli/{index-ppnpkww2.js → index-bpnpvhja.js} +1 -1
- package/dist/cli/{index-knxq5byr.js → index-dgvf1jey.js} +1 -1
- package/dist/cli/{index-mt5t492g.js → index-eabxecjf.js} +2 -2
- package/dist/cli/{index-tzasccpd.js → index-fzx1wfxn.js} +1 -1
- package/dist/cli/{index-4cazf4kb.js → index-g1r94prs.js} +27 -27
- package/dist/cli/{index-8bsnnnj2.js → index-g749xs7c.js} +2 -2
- package/dist/cli/{index-bjaef5zn.js → index-jvpvghyh.js} +326 -222
- package/dist/cli/{index-2grr37ry.js → index-jvzfw0n5.js} +1 -1
- package/dist/cli/{index-391ydd25.js → index-mbdkr2sh.js} +1 -1
- package/dist/cli/{index-te61qv0q.js → index-ng6me2hh.js} +2 -2
- package/dist/cli/{index-7zkgdefv.js → index-njfkqr77.js} +3 -3
- package/dist/cli/{index-ryjp0wmq.js → index-t3tzk566.js} +1 -1
- package/dist/cli/{index-svbh91pz.js → index-v8jhmn8x.js} +1 -1
- package/dist/cli/{index-jnjvghgp.js → index-xb3h5tvj.js} +4 -4
- package/dist/cli/{index-31b55cq9.js → index-xf6tdsyr.js} +3 -3
- package/dist/cli/{index-sgt1d7ez.js → index-ysbmrmzk.js} +1 -1
- package/dist/cli/index.js +26 -26
- package/dist/cli/{knowledge-escalator-2dy96d0j.js → knowledge-escalator-42cvn0ec.js} +7 -7
- package/dist/cli/{knowledge-events-70kb745b.js → knowledge-events-v0xavjkd.js} +5 -5
- package/dist/cli/{knowledge-store-hvq03g0j.js → knowledge-store-s01cread.js} +1 -1
- package/dist/cli/{knowledge-validator-eaatcnkr.js → knowledge-validator-kvtcqpke.js} +2 -2
- package/dist/cli/{mcp-bj3awdfy.js → mcp-ff73w9z7.js} +1 -1
- package/dist/cli/{model-preflight-skhq4xtr.js → model-preflight-0k8bd388.js} +25 -25
- package/dist/cli/{pending-delegations-yamzv468.js → pending-delegations-bmj7djk1.js} +2 -2
- package/dist/cli/{pr-subscriptions-hkzd0nr4.js → pr-subscriptions-9dbrw7ky.js} +1 -1
- package/dist/cli/{pr-workflow-gate-2gmznmj4.js → pr-workflow-gate-wg003fkd.js} +25 -25
- package/dist/cli/{scan-cursor-arezehhk.js → scan-cursor-d93q0q3s.js} +2 -2
- package/dist/cli/{schema-emx6r32d.js → schema-0ny9ef6s.js} +1 -1
- package/dist/cli/{scope-persistence-tvr8w7ea.js → scope-persistence-ekcfq34x.js} +5 -5
- package/dist/cli/{server-ez03wdw9.js → server-rpx7pkg1.js} +25 -25
- package/dist/cli/{skill-generator-w0jy1mpc.js → skill-generator-h1w7s5dh.js} +8 -8
- package/dist/cli/{snapshot-coordination-init-2x56ds8a.js → snapshot-coordination-init-f6ecsn9c.js} +25 -25
- package/dist/cli/{speckit-checkoff-c2e5wezr.js → speckit-checkoff-kf0zkpdw.js} +3 -3
- package/dist/cli/{worktree-collision-ownership-1bgcea0v.js → worktree-collision-ownership-p7zmj4ag.js} +2 -2
- package/dist/cli/{worktree-isolation-9xp4dz41.js → worktree-isolation-nz90xvw5.js} +25 -25
- package/dist/config/skill-contract-digest.d.ts +6 -0
- package/dist/hooks/skill-scoring.d.ts +1 -1
- package/dist/hooks/skill-usage-log.d.ts +2 -0
- package/dist/index.js +23 -21
- package/dist/services/skill-evaluator.d.ts +2 -0
- package/dist/services/skill-generator.d.ts +13 -0
- package/package.json +1 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Phase 0A signal-intake steps (fetch, classify, merge) and anti-patterns
|
|
2
|
+
|
|
3
|
+
### Step 1 — Fetch all PR feedback surfaces
|
|
4
|
+
|
|
5
|
+
The commands below are GitHub examples. On GitLab, Bitbucket, Gerrit, or
|
|
6
|
+
another code host, use the host's API/connector/CLI to enumerate the same full
|
|
7
|
+
surface, including pagination and unresolved-thread state. Host choice never
|
|
8
|
+
reduces the intake ledger.
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
# Issue comments (general PR thread)
|
|
12
|
+
gh api --paginate repos/{owner}/{repo}/issues/{PR_NUMBER}/comments
|
|
13
|
+
|
|
14
|
+
# Review comments (inline code comments)
|
|
15
|
+
gh api --paginate repos/{owner}/{repo}/pulls/{PR_NUMBER}/comments
|
|
16
|
+
|
|
17
|
+
# Review summaries (approve/request-changes/comment events)
|
|
18
|
+
gh api --paginate repos/{owner}/{repo}/pulls/{PR_NUMBER}/reviews
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
`--paginate` requests every REST page. These three calls are gate-allowed as
|
|
22
|
+
written. A literal jq filter passed as one closed double-quoted `gh api --jq`
|
|
23
|
+
argument is also allowed when it needs no backslash-escaped nested double
|
|
24
|
+
quotes; use `gh_evidence` when a portable filter cannot meet that shape. A real
|
|
25
|
+
shell pipeline to `jq` or another command remains blocked. To
|
|
26
|
+
separate bot/automated reviews (Copilot, Codex, CodeRabbit, etc.) from human
|
|
27
|
+
ones, apply the same predicate in context to the JSON already returned above
|
|
28
|
+
— `user.type == "Bot"` or a `user.login` match against
|
|
29
|
+
`bot|copilot|coderabbit|codex` (case-insensitive) — instead of re-fetching
|
|
30
|
+
with a shell-side `--jq` filter. `gh_evidence` with `target: "pr"` and
|
|
31
|
+
`fields: "comments"` is the sanctioned read-only tool path for the same PR
|
|
32
|
+
comment data when a tool call is preferred over a raw shell command. `gh pr
|
|
33
|
+
view --json comments,reviews` is convenience-only because those fields have
|
|
34
|
+
item caps; never use it as the authoritative "all signals" intake.
|
|
35
|
+
|
|
36
|
+
### Step 2 — Classify each comment
|
|
37
|
+
|
|
38
|
+
| Category | Action |
|
|
39
|
+
|----------|--------|
|
|
40
|
+
| **Human review with file:line evidence** | Add as candidate finding with `source: existing-review` — still needs reviewer validation |
|
|
41
|
+
| **Bot/automated finding with specific code reference** | Add as candidate finding with `source: bot-review` — high false-positive rate, treat as unverified |
|
|
42
|
+
| **General feedback / style preference** | Add as advisory obligation |
|
|
43
|
+
| **Resolved/outdated comment** | Skip — note in report under "Ingested Resolved Comments" |
|
|
44
|
+
| **Requested changes not yet addressed** | Add as HIGH-priority obligation |
|
|
45
|
+
|
|
46
|
+
### Step 3 — Merge into review pipeline
|
|
47
|
+
|
|
48
|
+
All ingested comments become candidate findings or obligations. They follow the
|
|
49
|
+
same Phase 3-8 pipeline as freshly discovered findings. Ingested findings are
|
|
50
|
+
NOT pre-confirmed — they still require independent reviewer validation per the
|
|
51
|
+
Anti-Self-Review Rule.
|
|
52
|
+
|
|
53
|
+
**Comment-ledger output:**
|
|
54
|
+
```
|
|
55
|
+
[INGESTED] | source | category | file:line (if applicable) | original_author | status: PENDING_VALIDATION / SKIPPED_OUTDATED / ADVISORY
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Anti-patterns
|
|
59
|
+
- ✗ Ignoring bot reviews because "bots produce false positives" — they also catch real issues
|
|
60
|
+
- ✗ Pre-confirming human review comments without independent validation — even senior reviewers make mistakes
|
|
61
|
+
- ✗ Skipping inline review comments and only reading the summary — inline comments contain the evidence
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# Scope Detection, pre-flight git ref availability, and shell rules under the PR_REVIEW gate
|
|
2
|
+
|
|
3
|
+
### Shell rules under the PR_REVIEW gate
|
|
4
|
+
|
|
5
|
+
The gate accepts one command per tool call — never compose commands with
|
|
6
|
+
`&&`, `;`, shell pipelines, redirects (`>`, `>>`, `<`), or `$(...)`/`` ` ``
|
|
7
|
+
substitution. The only literal-pipe exception is inside one closed
|
|
8
|
+
double-quoted `gh api --jq` argument with no backslash-escaped nested double
|
|
9
|
+
quotes; that escape is ambiguous under `cmd.exe`. The exception does not
|
|
10
|
+
permit an outer pipeline or any other control syntax.
|
|
11
|
+
A single leading `cd <dir> &&` prefix and a trailing `2>&1` suffix are
|
|
12
|
+
tolerated, but only on read-only commands. State-transition verbs — `git
|
|
13
|
+
fetch`, `git checkout`, `git switch`, `git branch`, and `gh pr checkout` —
|
|
14
|
+
must always run bare: no `cd` prefix, no `2>&1` suffix.
|
|
15
|
+
|
|
16
|
+
Allowed read-only `git` subcommands: `status`, `log`, `show`, `diff`,
|
|
17
|
+
`rev-parse`, `merge-base`, `ls-files`, `grep`, `blame`, `cat-file`,
|
|
18
|
+
`for-each-ref`, `branch --list` (listing only — mutation flags are blocked),
|
|
19
|
+
`remote -v`, and `config --get`.
|
|
20
|
+
|
|
21
|
+
Prefer tools over raw shell for state that a single read-only command cannot
|
|
22
|
+
cover cleanly:
|
|
23
|
+
|
|
24
|
+
- `pr_workflow_status` — observe local HEAD, branch, dirty-file state,
|
|
25
|
+
remotes, and gate state in one read-only call.
|
|
26
|
+
- `gh_evidence` — bounded PR/issue/run metadata without a shell round-trip.
|
|
27
|
+
- If `gh` is not installed, the web fetch tool against the equivalent
|
|
28
|
+
`api.github.com` REST URL is the degraded read-only path.
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
Determine review scope using this priority:
|
|
32
|
+
|
|
33
|
+
1. explicit user-provided PR URL, PR number, commit, branch, or file scope,
|
|
34
|
+
2. current feature branch diff vs the remote-tracking base ref (`origin/main`,
|
|
35
|
+
`origin/master`; a local `main`/`master` only as a last resort — it is only as
|
|
36
|
+
fresh as the last fetch and yields a different merge base),
|
|
37
|
+
3. staged changes,
|
|
38
|
+
4. latest commit,
|
|
39
|
+
5. user-specified files or directories.
|
|
40
|
+
|
|
41
|
+
Record:
|
|
42
|
+
|
|
43
|
+
- base ref,
|
|
44
|
+
- head ref,
|
|
45
|
+
- commit range,
|
|
46
|
+
- changed files,
|
|
47
|
+
- deleted files,
|
|
48
|
+
- generated files,
|
|
49
|
+
- lockfiles,
|
|
50
|
+
- test files,
|
|
51
|
+
- docs/config/schema files,
|
|
52
|
+
- whether the working tree is dirty.
|
|
53
|
+
|
|
54
|
+
If scope cannot be determined, review the narrowest safe scope available and state the limitation.
|
|
55
|
+
|
|
56
|
+
### Pre-flight git ref availability
|
|
57
|
+
|
|
58
|
+
Before launching explorers (Phase 3), perform this exact standalone sequence:
|
|
59
|
+
|
|
60
|
+
1. Resolve and retain the authoritative full `pr_head_sha` from PR metadata.
|
|
61
|
+
2. Verify the working tree is clean with `git status --porcelain`. If it is
|
|
62
|
+
dirty at all — tracked changes, untracked files, or both — call
|
|
63
|
+
`prepare_pr_workflow_checkout` (Profile A). The tool supports
|
|
64
|
+
self-discovery: call it with no `paths` argument to auto-discover and
|
|
65
|
+
preserve every dirty path in one step, including untracked files; an
|
|
66
|
+
already-clean tree returns a no-op (nothing is stashed, no receipt is
|
|
67
|
+
written). Pass explicit `paths` only when you already have the exact,
|
|
68
|
+
bounded list of dirty tracked files and want the older exact-match
|
|
69
|
+
contract. Without the controller (Profiles B/C), do not blind-stash over
|
|
70
|
+
dirty state: surface tracked changes to the user, or abort. Do not issue
|
|
71
|
+
`git stash` through shell.
|
|
72
|
+
Treat the controller's Git-state result as final for this attempt: `clean`
|
|
73
|
+
proceeds, `stashable` permits exactly one checkout-preparation call, and
|
|
74
|
+
`recovery-required` or `indeterminate` means report the typed
|
|
75
|
+
`required_action`, abort/clear any already-active gate, and stop. Retry only
|
|
76
|
+
when the controller explicitly returns `retryable: true`; never fight an
|
|
77
|
+
unmerged index or in-progress Git operation with repeated stash attempts.
|
|
78
|
+
3. Fetch the PR head as one standalone command, for example
|
|
79
|
+
`git fetch origin refs/pull/<N>/head`. Do not compose fetch and checkout.
|
|
80
|
+
3a. Fetch the base branch as its own standalone command, for example
|
|
81
|
+
`git fetch origin main`. Skipping this is the single most common cause of a
|
|
82
|
+
rejected dispatch: the merge base is recomputed against `base_ref`, and a
|
|
83
|
+
local `main`/`refs/heads/main` that was never refreshed resolves to a
|
|
84
|
+
different commit than `origin/main` for the same `base_sha`.
|
|
85
|
+
4. Prove the full commit exists locally with two portable standalone commands:
|
|
86
|
+
`git rev-parse --verify <full_pr_head_sha>^0`, then
|
|
87
|
+
`git cat-file -t <full_pr_head_sha>`. The second command must print
|
|
88
|
+
`commit`. This avoids shell/wrapper parsing differences around the
|
|
89
|
+
`^{commit}` suffix on Windows.
|
|
90
|
+
5. Check out the exact PR filesystem with
|
|
91
|
+
`git switch --detach <full_pr_head_sha>`. Do not use `--track FETCH_HEAD`:
|
|
92
|
+
`FETCH_HEAD` is not a remote-tracking branch.
|
|
93
|
+
6. Confirm `git rev-parse HEAD` equals the full `pr_head_sha`, bind that exact
|
|
94
|
+
head (Profile A: through the first PR-review controller call; Profiles B/C:
|
|
95
|
+
record it at the top of the findings ledger and repeat it in every lane
|
|
96
|
+
prompt), and finish this before dispatching explorer lanes.
|
|
97
|
+
|
|
98
|
+
Explorer agents read files from the working tree, not from git history. Passing
|
|
99
|
+
the commit range in a prompt cannot substitute for this checkout because
|
|
100
|
+
`Read` / `Glob` / `Grep` operate on the filesystem.
|
|
101
|
+
- Explicitly pass the verified merge-base range (`base_sha...pr_head_sha`) in every explorer delegation so explorers inspect exactly the bound PR diff. Include `base_ref` only as the live ref used to recompute `base_sha`; do not substitute a two-dot branch-tip range.
|
|
102
|
+
|
|
103
|
+
If refs cannot be fetched or checked out, state the limitation in the context pack.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Phase 10 Metrics and Knowledge Writeback / Phase 11 Post-Fix Re-verification
|
|
2
|
+
|
|
3
|
+
## Phase 10: Metrics and Knowledge Writeback
|
|
4
|
+
|
|
5
|
+
At the end of the review, include review quality metrics in the final report's
|
|
6
|
+
validation provenance. Persist them only through an invoked evidence tool and
|
|
7
|
+
record the exact `.swarm/evidence/` path returned by that tool; if no invoked
|
|
8
|
+
tool supports metrics (including all of Profiles B/C), state `NOT PERSISTED —
|
|
9
|
+
no metrics evidence writer` and keep the metrics block in the final report and
|
|
10
|
+
session ledger rather than naming a nonexistent command or path.
|
|
11
|
+
|
|
12
|
+
Record:
|
|
13
|
+
|
|
14
|
+
- raw candidates by base lane,
|
|
15
|
+
- raw candidates by micro-lane,
|
|
16
|
+
- deterministic tool candidates,
|
|
17
|
+
- reviewer-confirmed findings,
|
|
18
|
+
- reviewer-disproved findings,
|
|
19
|
+
- reviewer-unverified findings,
|
|
20
|
+
- critic-upheld findings,
|
|
21
|
+
- critic-downgraded findings,
|
|
22
|
+
- critic-disproved findings,
|
|
23
|
+
- final reported findings,
|
|
24
|
+
- suppressed non-actionable candidates,
|
|
25
|
+
- recurring false-positive patterns,
|
|
26
|
+
- commands or probes used,
|
|
27
|
+
- token/time cost if available,
|
|
28
|
+
- accepted/fixed findings when known.
|
|
29
|
+
|
|
30
|
+
Knowledge writeback rules:
|
|
31
|
+
|
|
32
|
+
- Write back only validated true positives or validated false-positive patterns.
|
|
33
|
+
- Include file patterns, invariant, evidence, and why it was confirmed/disproved.
|
|
34
|
+
- Mark repo-specific lessons as project-tier unless there is strong evidence they generalize.
|
|
35
|
+
- Never promote quarantined or unvalidated knowledge to hive-tier.
|
|
36
|
+
- Never store secrets, private tokens, or raw sensitive logs.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Phase 11: Post-Fix Re-verification
|
|
41
|
+
|
|
42
|
+
When the PR author pushes fixes after a review, perform a targeted re-verification before updating the verdict.
|
|
43
|
+
|
|
44
|
+
### Re-verification scope
|
|
45
|
+
|
|
46
|
+
Only re-verify findings the author claims to have fixed. Do not re-run the full review pipeline.
|
|
47
|
+
|
|
48
|
+
### Re-verification steps
|
|
49
|
+
|
|
50
|
+
1. For each finding the author claims fixed:
|
|
51
|
+
a. Read the changed file(s) from the updated branch at the specific lines referenced in the original finding.
|
|
52
|
+
b. Verify the fix addresses the root cause, not just the symptom.
|
|
53
|
+
c. Check that the fix does not introduce a new issue in the same area.
|
|
54
|
+
2. Run CI checks on the updated branch to confirm no regressions.
|
|
55
|
+
3. For findings the author did not address, carry forward the original finding with unchanged status.
|
|
56
|
+
|
|
57
|
+
### Re-verification output
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
[REVERIFIED] | finding_id | FIXED / PARTIALLY_FIXED / NOT_FIXED / NEW_ISSUE | evidence | updated_severity
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
- `FIXED`: the root cause is resolved and no new issue introduced.
|
|
64
|
+
- `PARTIALLY_FIXED`: the root cause is partially addressed or a residual concern remains.
|
|
65
|
+
- `NOT_FIXED`: the root cause persists unchanged.
|
|
66
|
+
- `NEW_ISSUE`: the fix introduced a new problem at the same location.
|
|
67
|
+
|
|
68
|
+
Update the verdict only after re-verifying all previously blocking findings.
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: swarm-pr-subscribe
|
|
3
|
-
audience: swarm-plugin
|
|
4
3
|
description: >
|
|
5
4
|
Monitor a pull request after creation and act autonomously on pushed PR
|
|
6
5
|
activity. Use when subscribing to a PR after opening it, when asked to watch,
|
|
7
6
|
babysit, or autofix a PR until merge, or when a <pr-activity> wake message or
|
|
8
7
|
[pr-monitor:...] advisory arrives for a subscribed PR. Owns event triage
|
|
9
8
|
(fix / ask / skip), bounded-retry escalation, and terminal-state cleanup.
|
|
10
|
-
|
|
9
|
+
metadata:
|
|
10
|
+
audience: swarm-plugin
|
|
11
|
+
swarm-contract-digest: 1f679751e34e
|
|
11
12
|
---
|
|
12
13
|
|
|
13
14
|
# Swarm PR Subscribe
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: test-file-split
|
|
3
|
-
audience: swarm-plugin
|
|
4
3
|
description: Protocol for splitting test files that approach or exceed the FR-006 500-line limit (enforced in CI by scripts/check-test-file-cap.ts as a diff-scoped ratchet). Covers describe-block extraction, shared helper management, pure-function extraction, mock isolation verification, and cascading-split detection. Load when a test file approaches or exceeds 500 lines.
|
|
4
|
+
metadata:
|
|
5
|
+
audience: swarm-plugin
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# Test File Split Protocol (FR-006)
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: worktree-retry-cleanup
|
|
3
|
-
audience: swarm-plugin
|
|
4
3
|
description: Protocol for cleaning parallel-coder worktree lanes before retry. Triggered before re-dispatching any task that already has a lane (completed, denied, cancelled, or failed).
|
|
4
|
+
metadata:
|
|
5
|
+
audience: swarm-plugin
|
|
5
6
|
---
|
|
6
7
|
|
|
7
8
|
# Worktree Retry Cleanup
|