@mmerterden/multi-agent-pipeline 16.31.0 → 16.31.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
CHANGED
|
@@ -14,6 +14,16 @@ Internal file-layout changes that don't affect the slash-command surface are sti
|
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
+
## [16.31.1] - 2026-09-13
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- **A literal keychain item name shipped in `refs/rules.md` for two months.** The Vercel section's example read `credential-store.sh get <maintainer's own item>`, which both named whose machine the file came from and taught the wrong mechanism: `keychainMapping` exists precisely so shipped files name the LOGICAL key and the mapping resolves the per-machine item. The example is now the one-line wrapper call, which resolves the token itself. `sync/SKILL.md`'s publish-candidate table and `keychain.py`'s comment carried the same shape and are genericized.
|
|
22
|
+
|
|
23
|
+
- **`smoke-personal-data.sh` had no pattern for that shape**, which is why it survived every scan. Added, case-sensitively: the owner segment must start lowercase, which is exactly what separates a resolved item name from the `${USER}_...` and `{USER}_...` template spellings the convention calls for - under the main list's `-i` that distinction disappears and the templates match too. It found three live instances on its first run.
|
|
24
|
+
|
|
25
|
+
- `account-resolver.sh`'s prefix example and `smoke-pref-migration.sh`'s fixtures now use placeholder spellings rather than ones that read like a real account.
|
|
26
|
+
|
|
17
27
|
## [16.31.0] - 2026-09-13
|
|
18
28
|
|
|
19
29
|
A pipeline that leaves worktrees, artefacts and exclude lines behind is not generic tooling, it is a guest that rearranges the furniture. This release makes a run leave the repo exactly as it found it, and fixes two credentials-and-integrity gaps found while proving it.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmerterden/multi-agent-pipeline",
|
|
3
|
-
"version": "16.31.
|
|
3
|
+
"version": "16.31.1",
|
|
4
4
|
"description": "8-phase AI development pipeline with full orchestration on Claude Code, Copilot CLI and Codex CLI. Analysis, planning, TDD, CLI-aware parallel review with consensus surfacing + Fable triage, default-FAIL evidence gates, secret + intent guards, per-phase cost ledger, persistent learnings memory, wiki generation, commit automation. Token-preserving uninstall.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -384,8 +384,8 @@ Measured on this machine, which is why the order is what it is:
|
|
|
384
384
|
| Candidate | login | scopes |
|
|
385
385
|
|---|---|---|
|
|
386
386
|
| `keychainMapping.github` | corporate EMU account | cannot publish to a personal scope under any grant |
|
|
387
|
-
|
|
|
388
|
-
| `gh auth token -u
|
|
387
|
+
| the personal PAT in the store | personal | `admin:public_key, gist, read:org, repo` - no `write:packages` |
|
|
388
|
+
| `gh auth token -u {owner}` | personal | `gist, read:org, repo, workflow, write:packages` ✓ |
|
|
389
389
|
|
|
390
390
|
**Two 403s mean two different things, and neither says "wrong token" plainly:**
|
|
391
391
|
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
# that precedes the provider segment. Examples:
|
|
9
9
|
# ${USER}_Github_Access_Token -> prefix=${USER}
|
|
10
10
|
# ${USER}_Tktech_Github_Access_Token -> prefix=${USER}_Tktech
|
|
11
|
-
#
|
|
11
|
+
# {prefix}_Github_Auth_Token -> prefix={prefix}
|
|
12
12
|
#
|
|
13
13
|
# Usage:
|
|
14
14
|
# ./account-resolver.sh # JSON array
|
|
@@ -161,11 +161,10 @@ This is the single source of truth. When a contributor or model is unsure where
|
|
|
161
161
|
Provider tools that print failed argv on retry leak credentials into the conversation transcript. Every Vercel call from the pipeline (Phase 6 deploy hooks, Phase 7 site updates, manual `vercel deploy` shells) MUST go through the wrapper:
|
|
162
162
|
|
|
163
163
|
```bash
|
|
164
|
-
# CORRECT -
|
|
165
|
-
#
|
|
166
|
-
#
|
|
167
|
-
|
|
168
|
-
bash $HOME/.claude/lib/vercel-deploy.sh deploy --prod
|
|
164
|
+
# CORRECT - the wrapper resolves the token itself, via the logical key `vercel`
|
|
165
|
+
# that keychainMapping maps to this machine's item. Never name the item here.
|
|
166
|
+
# An explicit VERCEL_TOKEN in the environment still wins.
|
|
167
|
+
bash $HOME/.claude/lib/vercel-deploy.sh deploy --prod
|
|
169
168
|
|
|
170
169
|
# Health check before deploy:
|
|
171
170
|
bash $HOME/.claude/lib/vercel-deploy.sh doctor
|
|
@@ -189,7 +189,7 @@ def _macos_find(args: list[str]) -> Optional[str]:
|
|
|
189
189
|
|
|
190
190
|
def get(label: str, account: Optional[str] = None) -> Optional[str]:
|
|
191
191
|
"""Lookup by label first, then by service name. Two coexisting conventions:
|
|
192
|
-
- User's manually-added tokens (e.g.
|
|
192
|
+
- User's manually-added tokens (e.g. ${USER}_Vercel_Access_Token) use -l (label).
|
|
193
193
|
- credential-store.sh-managed items use -s (service).
|
|
194
194
|
The helper finds either."""
|
|
195
195
|
pf = _ensure_backend()
|