@mmerterden/multi-agent-pipeline 20.25.0 → 20.25.1
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/CHANGELOG.md +6 -0
- package/README.md +5 -6
- package/README.tr.md +5 -6
- package/docs/architecture.md +3 -3
- package/docs/ecosystem.md +5 -5
- package/docs/facts.json +4 -5
- package/manifest.json +24 -28
- package/package.json +1 -1
- package/pipeline/commands/multi-agent/sync/SKILL.md +3 -3
- package/pipeline/multi-agent-refs/cross-cli-contract.md +4 -4
- package/pipeline/multi-agent-refs/help/en.md +0 -1
- package/pipeline/multi-agent-refs/help/tr.md +0 -1
- package/pipeline/multi-agent-refs/phases/phase-2-dev.md +0 -2
- package/pipeline/schemas/agent-state.schema.json +0 -5
- package/pipeline/schemas/phases.json +0 -4
- package/pipeline/schemas/prefs.schema.json +0 -23
- package/pipeline/skills/.skill-manifest.json +3 -7
- package/pipeline/skills/.skills-index.json +1 -12
- package/pipeline/skills/shared/README.md +3 -4
- package/pipeline/skills/shared/core/multi-agent-sync/SKILL.md +3 -3
- package/pipeline/skills/skills-index.md +1 -2
- package/pipeline/commands/multi-agent/deps/SKILL.md +0 -61
- package/pipeline/multi-agent-refs/features/dep-bump.md +0 -176
- package/pipeline/scripts/dep-bump.mjs +0 -1556
- package/pipeline/skills/shared/core/multi-agent-deps/SKILL.md +0 -60
|
@@ -33,7 +33,7 @@ Run all steps automatically:
|
|
|
33
33
|
```
|
|
34
34
|
Step 0: DOCTOR node $HOME/.claude/scripts/doctor.mjs - exit 2 or 4 STOPS the sync
|
|
35
35
|
Step 1: DETECT Compare timestamps, find stale targets
|
|
36
|
-
Step 2: COPILOT Claude Code -> Copilot CLI (instructions +
|
|
36
|
+
Step 2: COPILOT Claude Code -> Copilot CLI (instructions + 65 sub-command skills)
|
|
37
37
|
Step 2b: CODEX Claude Code -> Codex CLI (1 router skill + sub-command specs as refs + agent TOML)
|
|
38
38
|
Step 3: REPO Claude Code -> pipeline repo (genericized, personal data scrub)
|
|
39
39
|
Step 3d: DEV-TOOLKIT Companion MCP server -> detect movement, ship gates, commit + publish
|
|
@@ -229,12 +229,12 @@ When invoked with the `release` argument:
|
|
|
229
229
|
|-------------|-------------|
|
|
230
230
|
| `~/.claude/commands/multi-agent/{cmd}/SKILL.md` | `~/.copilot/skills/multi-agent-{cmd}/SKILL.md` |
|
|
231
231
|
|
|
232
|
-
**
|
|
232
|
+
**65 commands are synced** (canonical inventory - must match `cross-cli-contract.md` section 1; drift = contract violation):
|
|
233
233
|
|
|
234
234
|
```
|
|
235
235
|
analysis, analysis-jira, analysis-resolve, autopilot, autopilot-off,
|
|
236
236
|
autopilot-on, autopilot-status, bug-bash, build-optimize, channels, complaint-analysis,
|
|
237
|
-
create-jira,
|
|
237
|
+
create-jira, design-check, diff-explain, doctor, estimate, feedback, forget,
|
|
238
238
|
garbage-collect, graph, help, ios-coding-standard, issue, jira, kill,
|
|
239
239
|
language, log, manual-test, model, postmortem, prune-logs,
|
|
240
240
|
prune-prompts, purge, refactor, research, resume, review,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> Auto-generated by `pipeline/scripts/build-skills-index.mjs` - do not hand-edit.
|
|
4
4
|
> Regenerate with `node pipeline/scripts/build-skills-index.mjs`.
|
|
5
5
|
|
|
6
|
-
**
|
|
6
|
+
**229 skills** across 2 groups.
|
|
7
7
|
|
|
8
8
|
| Group | Name | Platform | Description |
|
|
9
9
|
|-------|------|----------|-------------|
|
|
@@ -111,7 +111,6 @@
|
|
|
111
111
|
| core | `multi-agent-channels` | - | Multi-channel reporter - Jira/Confluence/Wiki/PR description. Multi-select channels + content, humanizer pass, reviewer-preserving Bitbuck |
|
|
112
112
|
| core | `multi-agent-complaint-analysis` | - | Customer-complaint triage. Ingests complaints (paste, csv/xlsx/txt/json file, Jira issue, Confluence URL), fetches Graylog evidence per trx/ |
|
|
113
113
|
| core | `multi-agent-create-jira` | - | Create a standards-compliant Jira issue (Task / Bug / Story): asks the type, mines project conventions, drafts from a standard template with |
|
|
114
|
-
| core | `multi-agent-deps` | - | Bump one dependency, fix only what the bump broke, review, open a PR; rolls back past the fix round cap. SwiftPM, Gradle, npm, pip. Use when |
|
|
115
114
|
| core | `multi-agent-design-check` | - | Mock-mode vs Figma design audit (iOS / Android, local-only). Pick repo + module, gate on mock support, enumerate every state driver into a c |
|
|
116
115
|
| core | `multi-agent-diff-explain` | - | Map Phase 3 triage findings to branch diff lines. Read-only post-hoc command, used after review to answer 'which finding lines up with which |
|
|
117
116
|
| core | `multi-agent-doctor` | - | Health check for the installed pipeline: layout, preferences, credentials, hooks and host capabilities, each with one actionable step. Exit |
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Bump one dependency, fix only what the bump broke, review, open a PR; rolls back past the fix round cap. SwiftPM, Gradle, npm, pip. Use when a library needs updating."
|
|
3
|
-
description-tr: "Tek bağımlılığı yükseltir, yalnızca yükseltmenin kırdığını düzeltir, review edip PR açar; düzeltme turu sınırında geri alır. SwiftPM, Gradle, npm, pip. Bir kütüphaneyi güncellemek için kullanılır."
|
|
4
|
-
argument-hint: "[package[@version]] [--major] - no package opens a picker over the outdated candidates; --major allows a breaking bump"
|
|
5
|
-
parameters: [{"name":"package","kind":"text"},{"name":"--major","kind":"flag"}]
|
|
6
|
-
gui: form
|
|
7
|
-
destructive: false
|
|
8
|
-
confirm: none
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# multi-agent deps - bump one dependency and fix what it broke
|
|
12
|
-
|
|
13
|
-
> **Pickers follow** `$HOME/.claude/multi-agent-refs/picker-contract.md`: never a one-option call, and branch on the option selected, not on its text.
|
|
14
|
-
|
|
15
|
-
**Input**: $ARGUMENTS
|
|
16
|
-
|
|
17
|
-
> **Language (read FIRST)**: read `prefs.global.outputLanguage` and render every conversational line in it. `AskUserQuestion` renders `question`, option `label`s and `description`s in `outputLanguage`; only `header` stays English (<=12-char chip). Commit messages and branch names stay English. Full contract: `$HOME/.claude/multi-agent-refs/rules.md` "Language Application".
|
|
18
|
-
|
|
19
|
-
The normal pipeline with a fixed task. Read `$HOME/.claude/multi-agent-refs/features/dep-bump.md` first: it is the contract for every step below (run shape, scope rule, rollback). `dep-bump.mjs` does every deterministic step; never edit a version string or a lockfile by hand.
|
|
20
|
-
|
|
21
|
-
## Steps
|
|
22
|
-
|
|
23
|
-
1. **Repo and settings.** Resolve the repo as `/multi-agent` does for a free-text task (`_account-picker.md`, `_repo-picker.md`). Then:
|
|
24
|
-
```bash
|
|
25
|
-
node "$HOME/.claude/scripts/dep-bump.mjs" config # depBump.maxFixRounds, depBump.queryRegistry
|
|
26
|
-
node "$HOME/.claude/scripts/dep-bump.mjs" detect --dir "$REPO"
|
|
27
|
-
```
|
|
28
|
-
No ecosystem detected: say so and stop.
|
|
29
|
-
|
|
30
|
-
2. **Candidates.**
|
|
31
|
-
```bash
|
|
32
|
-
node "$HOME/.claude/scripts/dep-bump.mjs" list --dir "$REPO" [--registry] # --registry when queryRegistry is true
|
|
33
|
-
```
|
|
34
|
-
Show `registry.note` and every per-package `note`: an offline listing is reported as offline, never as "nothing outdated".
|
|
35
|
-
- `package@version` given: use it. `package` alone: its `latestInMajor`, else `latest`. Not in the list: stop with the manifests that were read.
|
|
36
|
-
- No package: a single-select picker over the candidates with a newer version, non-breaking first, each option `name current -> target (risk)`. Two or more options per the picker contract; one candidate is confirmed with a yes/no, none means report "nothing newer found" with the registry note.
|
|
37
|
-
|
|
38
|
-
3. **Major gate.** Risk `major` or `unknown`, or a prerelease target (`prerelease: true`), needs `--major` in the input or an explicit confirmation naming the versions (`Bump anyway` / `Take {latestInMajor} instead` when one exists / `Cancel`). An autopilot run without `--major` takes `latestInMajor` or stops.
|
|
39
|
-
|
|
40
|
-
4. **Run the pipeline** with `state.mode = "deps"`, `state.taskType = "chore"`, the free-text task `chore(deps): bump {name} from {current} to {target}` and the branch `chore/deps-{name}-{target}` (kebab rules from Phase 0 Step 4). Phase 0 intake, worktree and tracker run as in `/multi-agent`. Then:
|
|
41
|
-
- **Phase 1**: the fixed plan from the feature doc, with the changelog excerpt as evidence:
|
|
42
|
-
```bash
|
|
43
|
-
node "$HOME/.claude/scripts/dep-bump.mjs" notes --dir "$WORKTREE" --ecosystem E --name N --from A --to B
|
|
44
|
-
```
|
|
45
|
-
- **Phase 2**: apply first, then the exit gate as written:
|
|
46
|
-
```bash
|
|
47
|
-
node "$HOME/.claude/scripts/dep-bump.mjs" apply --dir "$WORKTREE" --ecosystem E --name N --to B [--allow-major]
|
|
48
|
-
```
|
|
49
|
-
Exit 1: report `error` and `lock.output` (or `dirty`: the worktree had uncommitted changes), stop with nothing to commit. Persist the output to `state.depBump`. Green: no dev agent, on to Phase 3. Red: fix rounds, at most `depBump.maxFixRounds`, each dispatched with the failing log tail, `surface` output, the changelog excerpt and the scope rule (feature doc section 4); after each round:
|
|
50
|
-
```bash
|
|
51
|
-
node "$HOME/.claude/scripts/dep-bump.mjs" scope --dir "$WORKTREE" --log "$GATE_LOG" # the round's build/test log
|
|
52
|
-
```
|
|
53
|
-
Only the surface recorded by `apply` is in scope. A file listed in `newImporters` with `cited: null` started importing the dependency without an error line behind it: revert it before the next round.
|
|
54
|
-
- **Cap reached and still red** (or still out of scope): `dep-bump.mjs rollback --dir "$WORKTREE"` (restores the manifest, lockfile and fix files; anything under `kept` is reported, not discarded), set `state.depBump.rolledBack = true`, and end with the report from feature doc section 5. No commit, no push, no PR.
|
|
55
|
-
- **Phase 3**: standard review. Each `outOfScope` file without a cited error line, and each `newImporters` entry with `cited: null`, is a blocking finding.
|
|
56
|
-
- **Phase 4**: commit with `commitMessage` from `apply` (plus ` [{jiraId}]` when present). PR body per the feature doc; `Ref:` or `Related:`, never `Closes`, `Fixes` or `Resolves`, and never close an issue.
|
|
57
|
-
- **Phase 5**: channels as in every mode.
|
|
58
|
-
|
|
59
|
-
## Report
|
|
60
|
-
|
|
61
|
-
In `outputLanguage`, at most 10 lines: the dependency, from and to, risk, lockfile command and result, rounds taken against the cap, files changed (in scope / justified), review verdict, and the PR URL or the rollback reason.
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
# Feature: Dependency Bump and Fix
|
|
2
|
-
|
|
3
|
-
<!-- toc -->
|
|
4
|
-
- [1. Shape of a run](#1-shape-of-a-run)
|
|
5
|
-
- [2. The script](#2-the-script)
|
|
6
|
-
- [3. What each phase does](#3-what-each-phase-does)
|
|
7
|
-
- [4. Scope of a fix round](#4-scope-of-a-fix-round)
|
|
8
|
-
- [5. Rollback](#5-rollback)
|
|
9
|
-
- [6. Settings](#6-settings)
|
|
10
|
-
- [7. Never](#7-never)
|
|
11
|
-
<!-- /toc -->
|
|
12
|
-
|
|
13
|
-
**Pattern**: bump one dependency, build and test, and when the bump breaks
|
|
14
|
-
something, fix only that breakage. A bump PR that also refactors, reformats or
|
|
15
|
-
"while I was here" fixes unrelated code cannot be reviewed as a bump, and a fix
|
|
16
|
-
loop with no cap turns a version bump into an open-ended rewrite.
|
|
17
|
-
|
|
18
|
-
Entry: `/multi-agent:deps [package[@version]] [--major]`. It is the normal
|
|
19
|
-
pipeline with a fixed task, not a second flow: same Phase 0 intake, worktree,
|
|
20
|
-
branch rules, Phase 2 dev agent and exit gate, Phase 3 review gates, Phase 4
|
|
21
|
-
commit and PR rules, Phase 5 channels.
|
|
22
|
-
|
|
23
|
-
## 1. Shape of a run
|
|
24
|
-
|
|
25
|
-
| Field | Value |
|
|
26
|
-
|---|---|
|
|
27
|
-
| `state.mode` | `"deps"` |
|
|
28
|
-
| `state.taskType` | `chore` |
|
|
29
|
-
| Branch | `chore/deps-{kebab(name)}-{kebab(to)}`, kebab and collision rules from Phase 0 Step 4 |
|
|
30
|
-
| Commit | `chore(deps): bump {name} from {from} to {to}`, taken verbatim from `dep-bump.mjs apply` (`commitMessage`), plus ` [{jiraId}]` when the run carries one |
|
|
31
|
-
| PR body | the bump, its risk, the lockfile command, `alsoMoves`, the changelog excerpt, each fix and the error line it answers; `Ref:` / `Related:`, never `Closes` / `Fixes` / `Resolves` |
|
|
32
|
-
| `state.depBump` | the apply output plus `rounds`, `scope` and, on rollback, `rolledBack` and `stillFailing` |
|
|
33
|
-
|
|
34
|
-
## 2. The script
|
|
35
|
-
|
|
36
|
-
`$HOME/.claude/scripts/dep-bump.mjs` owns every deterministic step; the model
|
|
37
|
-
never edits a version string by hand. JSON on stdout.
|
|
38
|
-
|
|
39
|
-
| Command | Does |
|
|
40
|
-
|---|---|
|
|
41
|
-
| `detect --dir D` | Ecosystems and manifests: SwiftPM `Package.swift`, Gradle `gradle/*.versions.toml`, npm `package.json`, pip `requirements*.txt` / `pyproject.toml`, each with its lockfile |
|
|
42
|
-
| `list --dir D [--registry]` | Candidates: `current` (lockfile, else declared), `latest`, `latestInMajor` (highest non-breaking), `risk`, `riskInMajor`, `source` |
|
|
43
|
-
| `apply --dir D --ecosystem E --name N --to V [--allow-major]` | One bump: manifest edit plus the lockfile through the ecosystem tool; writes `.pipeline/dep-bump.json` |
|
|
44
|
-
| `surface --dir D --ecosystem E --name N` | Files that import or reference the dependency |
|
|
45
|
-
| `scope --dir D [--log L]` | Files changed since the recorded base, split into `inScope` (manifest, lockfile and the surface recorded at apply), `newImporters` and `outOfScope`; exit 1 when anything is out of scope or a new importer has no cited error line |
|
|
46
|
-
| `notes --dir D --ecosystem E --name N --from A --to B` | The local changelog sections between the two versions, else the repository URL to read release notes from |
|
|
47
|
-
| `rollback --dir D` | Restores what the bump owns (manifest, lockfile, the files `scope` saw the fix touch in scope) from the recorded base and removes those the base lacks; every other change is left in place and listed under `kept` |
|
|
48
|
-
| `config` | The resolved `depBump.*` settings |
|
|
49
|
-
|
|
50
|
-
SwiftPM identities compare case-insensitively (`--name Alamofire` and
|
|
51
|
-
`alamofire` are one package). The surface covers every module name the package
|
|
52
|
-
is imported under: the identity, the repository name in the url, the products
|
|
53
|
-
named by `.product(name:package:)` and by-name target dependencies in the
|
|
54
|
-
package manifests. Packages an Xcode project adds through File > Packages keep
|
|
55
|
-
their pins in `*.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved`
|
|
56
|
-
or `*.xcworkspace/xcshareddata/swiftpm/Package.resolved` and their requirement
|
|
57
|
-
in `project.pbxproj`. `detect` and `list` report them with `readOnly: true` and
|
|
58
|
-
a note; `apply` refuses them (exit 1), because dep-bump does not edit
|
|
59
|
-
`project.pbxproj`. Such a bump is made in Xcode.
|
|
60
|
-
|
|
61
|
-
For Gradle the surface is the build scripts that name the catalog alias and
|
|
62
|
-
the Kotlin and Java files whose imports start at the Maven group
|
|
63
|
-
(`com.google.code.gson`), the artifact id or the alias stem, each with an
|
|
64
|
-
optional major suffix (`okhttp3` for `com.squareup.okhttp3:okhttp`, `retrofit2`
|
|
65
|
-
for `retrofit`). A library whose package root is none of these (Gson's
|
|
66
|
-
`com.google.gson`) is not found by `surface`, so a fix in such a file is out of
|
|
67
|
-
scope and needs the error line that names it, cited per file (section 4).
|
|
68
|
-
|
|
69
|
-
Offline listing reads what is already on disk: the lockfile for the current
|
|
70
|
-
version, SwiftPM `.build/checkouts/<id>` tags and the Gradle module cache for
|
|
71
|
-
newer ones. `--registry` asks the ecosystem's own tool (`npm view`,
|
|
72
|
-
`git ls-remote --tags`, Maven or PyPI metadata over `curl`); a failed query is
|
|
73
|
-
a `note` on that package, never a failed listing. Registry and lockfile tools
|
|
74
|
-
run in the manifest's directory (a workspace member's lockfile tool in the
|
|
75
|
-
workspace root), so the repo's own `.npmrc` registries and scopes apply. A
|
|
76
|
-
name or url that does not fit its ecosystem's grammar (a url that is not
|
|
77
|
-
http(s), ssh, git, file or `git@host:`, a name starting with `-`) is never
|
|
78
|
-
passed to a tool; the package gets a `registry query skipped` note.
|
|
79
|
-
|
|
80
|
-
Risk follows semver: a major step is breaking, and so is a minor step under
|
|
81
|
-
`0.x` and any step under `0.0.x`. `+build` metadata is ignored, and for Gradle
|
|
82
|
-
a Maven release qualifier (`-jre`, `-android`, `.Final`, `-RELEASE`, `.GA`,
|
|
83
|
-
`.SP1`) is part of a stable version, not a prerelease. A version that does not
|
|
84
|
-
parse is `unknown` and is treated as major, and so is a prerelease target.
|
|
85
|
-
`apply` exits 3 on a major, unknown or prerelease bump without `--allow-major`,
|
|
86
|
-
and touches nothing.
|
|
87
|
-
|
|
88
|
-
A pip requirement with several clauses (`foo>=1.0,<2.0`) is bumped on its
|
|
89
|
-
primary clause, the first `==`, `===`, `~=`, `>=` or `>`; `<`, `<=` and `!=`
|
|
90
|
-
are never primary, and a requirement made only of them is not listed. When
|
|
91
|
-
another clause would exclude the target (`<2.0` against `2.1`), `apply` exits 1
|
|
92
|
-
and changes nothing: rewriting a bound the repo set is a decision, not part of
|
|
93
|
-
the bump.
|
|
94
|
-
|
|
95
|
-
`apply` refuses a worktree with uncommitted changes to tracked files (exit 1,
|
|
96
|
-
`dirty` lists them), so the base it records holds no work of anyone else's.
|
|
97
|
-
|
|
98
|
-
`apply` is atomic. When the lockfile tool fails, the manifest and the lockfile
|
|
99
|
-
are restored byte for byte and the tool's output tail is in `lock.output`.
|
|
100
|
-
Lockfile tools: `swift package resolve`, `./gradlew dependencies --write-locks`
|
|
101
|
-
(only with a `gradle.lockfile`), the resolved npm-family manager with scripts
|
|
102
|
-
disabled (`package-manager.mjs`; yarn 2 and later take `--mode=skip-build`, yarn
|
|
103
|
-
1 `--ignore-scripts`), `poetry lock` on Poetry 2 and `poetry lock --no-update`
|
|
104
|
-
before it, `uv lock --upgrade-package`. A workspace member's lockfile is the
|
|
105
|
-
workspace root's (the nearest directory above it with a lockfile and a
|
|
106
|
-
`workspaces` field or `pnpm-workspace.yaml`), and the tool runs there; a
|
|
107
|
-
lockfile above the manifest in a directory that declares no workspaces fails
|
|
108
|
-
the bump rather than letting it go ahead with no lockfile. Membership is not
|
|
109
|
-
matched against the `workspaces` globs. A shared Gradle `version.ref` moves every module bound to
|
|
110
|
-
it; `alsoMoves` names them and they join the surface.
|
|
111
|
-
|
|
112
|
-
## 3. What each phase does
|
|
113
|
-
|
|
114
|
-
| Phase | In a deps run |
|
|
115
|
-
|---|---|
|
|
116
|
-
| 0 Init | Candidate pick and the major gate happen in the command before Phase 0. Then the normal intake (account, repo, base branch, workspace) with the free-text task `chore(deps): bump {name} from {from} to {to}`, `taskType` `chore`, branch from section 1 |
|
|
117
|
-
| 1 Plan | No analysis document (`chore`). The plan is fixed: one todo, "apply the bump", plus one per failing area once Phase 2 has a red run. `notes` output and the `list` record are the plan's evidence. The approval gate shows the bump, its risk and `alsoMoves` |
|
|
118
|
-
| 2 Dev | `apply` in the worktree first, before any agent runs. Then the Phase 2 exit gate as written (build, lint, tests, evidence gates). Green: straight to Phase 3 with no dev agent. Red: fix rounds (section 4) |
|
|
119
|
-
| 3 Review | The standard gates and reviewers over the whole diff. `scope` runs first; every `outOfScope` file is a blocking finding unless the round's report ties it to a build or test error line |
|
|
120
|
-
| 4 Commit | `commitMessage` from `apply`, the PR body from section 1. Never auto-close an issue |
|
|
121
|
-
| 5 Report | Channels as in every mode |
|
|
122
|
-
|
|
123
|
-
## 4. Scope of a fix round
|
|
124
|
-
|
|
125
|
-
A round is one Phase 2 dev dispatch, given exactly this:
|
|
126
|
-
|
|
127
|
-
- the failing build or test log tail, from the exit gate;
|
|
128
|
-
- `surface` output: the files that use the dependency;
|
|
129
|
-
- the `notes` excerpt (breaking changes, migration notes). With no local
|
|
130
|
-
changelog, read the release notes for the versions in between from the
|
|
131
|
-
repository URL it returns (`gh release view`, the releases page) when
|
|
132
|
-
reachable, and say when they were not;
|
|
133
|
-
- the rule: change only what the bump broke. A file outside the surface may be
|
|
134
|
-
touched only when a compile or test error names it, and the report cites that
|
|
135
|
-
error line per file.
|
|
136
|
-
|
|
137
|
-
The surface is the one `apply` recorded. A file that starts importing the
|
|
138
|
-
dependency during a fix round does not join it: `scope` reports it under
|
|
139
|
-
`newImporters`, and each one passes only when the build or test log handed to
|
|
140
|
-
`scope --log` has an error line naming that file. The line is returned as
|
|
141
|
-
`cited`; a new importer with `cited: null` fails scope like an out-of-scope
|
|
142
|
-
file.
|
|
143
|
-
|
|
144
|
-
After each round: `scope --log <exit-gate log>`, then the exit gate again. Out-of-scope files with no
|
|
145
|
-
cited error are reverted before the next round. Green ends the loop. Every round
|
|
146
|
-
is recorded in `state.depBump.rounds[]` with the files it touched and the
|
|
147
|
-
errors it answered.
|
|
148
|
-
|
|
149
|
-
## 5. Rollback
|
|
150
|
-
|
|
151
|
-
A run still red after `depBump.maxFixRounds` rounds (default 2), or out of
|
|
152
|
-
scope after its last round, is not committed: `dep-bump.mjs rollback` returns
|
|
153
|
-
the manifest, the lockfile and the files the fix rounds touched to the recorded
|
|
154
|
-
base, removes the ones the base did not have, and leaves every other change in
|
|
155
|
-
place (`kept`); the run ends with a report instead of a PR. The report names the bump, each round, the errors still failing with their
|
|
156
|
-
log lines, the files that would need to change and the changelog section that
|
|
157
|
-
explains it. `state.depBump.rolledBack` is `true`. The branch is left with no
|
|
158
|
-
commit; nothing is pushed.
|
|
159
|
-
|
|
160
|
-
## 6. Settings
|
|
161
|
-
|
|
162
|
-
| Key | Default | Effect |
|
|
163
|
-
|---|---|---|
|
|
164
|
-
| `depBump.maxFixRounds` | 2 | Fix rounds before rollback; 0 rolls back any bump that is not green as-is |
|
|
165
|
-
| `depBump.queryRegistry` | true | `list` gets `--registry`; false lists offline only |
|
|
166
|
-
|
|
167
|
-
Read through `node "$HOME/.claude/scripts/dep-bump.mjs" config`. Asserted by
|
|
168
|
-
`test/dep-bump.test.mjs` and `smoke-dep-bump.sh`.
|
|
169
|
-
|
|
170
|
-
## 7. Never
|
|
171
|
-
|
|
172
|
-
- A major, unparseable or prerelease bump without `--major` or an explicit confirmation.
|
|
173
|
-
- A version edit by hand, or a lockfile edited as text.
|
|
174
|
-
- More than one dependency per run (a shared `version.ref` is one bump).
|
|
175
|
-
- A fix outside the bump's surface with no error line behind it.
|
|
176
|
-
- A commit after the round cap is reached red.
|