Status: Draft for human review (#332). Edit before publishing a discussion post or tagging packages.
Last published discussion: Discussion #294 (2026-07-16) — loop-context 1.2.0, loop-worktree 1.1.0.
Window: 2026-07-16 → 2026-07-29
loop-cost1.2.0 (published) —--with-cachingscenario +stable_fractionon patterns (#346, #347). Thanks @Tusm11.loop-context1.5.0 (published) —--budget-scenario caching+ frustration circuit breaker.
loop-worktree1.3.1 — public./locksubpath export for advisory path locking (#407, thanks @shixi-li) plus the concurrent-operation manifest-loss fix (#430) and the npm≥12 pack-test hardening (#421–#423) that landed after the burned tag.- Tag:
loop-worktree-v1.3.1(supersedesloop-worktree-v1.3.0; see "Why 1.3.1" below) - Why 1.3.1:
loop-worktree-v1.3.0currently points at1c88a5e(#422), which predates #423's pack-tarball directory-scan fix — the one that actually survives the release workflow'snpm@latest(12.x). Every 2026-07-29 dispatch ofrelease-loop-worktree.ymltherefore died in the test step (package-exports.test.mjs,ERR_INVALID_ARG_TYPEfrom an undefined pack filename) before reaching publish; reproduced locally: the1c88a5etree fails 31/32 under npm 12.0.2, currentmainpasses 35/35. npm never received 1.3.0. Rather than re-pointing the existing tag, bump the version so the release rides a fresh tag.
- Tag:
--model-provider minimaxfor--with-foundryimplementer stacks, with--region/--model(#418). Thanks @octo-patch.--with-memorymemory-engineering bridge scaffold (#359).
loop_audit_score+loop_check_breakertools (#360).
| Package | Version | Notes |
|---|---|---|
@cobusgreyling/loop-sandbox |
1.0.0 | Ephemeral worktree isolation + advisory lock (#370, #399) |
@cobusgreyling/loop-swarm |
1.0.0 | Multi-agent majority consensus over sandboxes (#398). Thanks @THRISHAL12345. |
Publish sandbox before swarm (swarm depends on @cobusgreyling/loop-sandbox@^1.0.0).
budget-negotiatorskill integrated withloop-budget+ human safety gates (#400). Thanks @THRISHAL12345.
| PR | Contributor | Topic |
|---|---|---|
| #419 | @AIMindCrafter | CI Sweeper production story |
| #417 | @AIMindCrafter | loop-sandbox QUICKSTART |
| #416 | @AIMindCrafter | loop-action QUICKSTART |
| #413–#415 | @AIMindCrafter | Windsurf CI / Issue / Dependency sweepers |
| #409 | @k-anushka14 | Merge-gate subsection in QUICKSTART (closes #391) |
- Memory bridge + Cursor examples + CI reliability (#355–#362)
- Primitives matrix: Continue.dev, Copilot, Cline, Roo Code
| Package | On npm | Target | State | Action |
|---|---|---|---|---|
@cobusgreyling/loop-cost |
1.2.0 | 1.2.0 | Done | — |
@cobusgreyling/loop-context |
1.5.0 | 1.5.0 | Done | — |
@cobusgreyling/loop-worktree |
1.2.0 | 1.3.1 | v1.3.0 tag burned (its tree predates #423's pack-test fix) |
This PR bumps to 1.3.1 → tag loop-worktree-v1.3.1 |
@cobusgreyling/loop-init |
1.5.0 | 1.6.0 | Tag exists; 07-29 run green through build, failed at publish (E404) | Registry config below, then re-dispatch |
@cobusgreyling/loop-audit |
1.7.0 | 1.8.0 | Tag exists; tests green, publish E404 | Registry config below, then re-dispatch |
@cobusgreyling/loop-mcp-server |
1.1.0 | 1.2.0 | Tag exists; tests green, publish E404 | Registry config below, then re-dispatch |
@cobusgreyling/loop-sandbox |
— | 1.0.0 | Tag exists; tests green, publish E404 (first publish) | See first-publish note below |
@cobusgreyling/loop-swarm |
— | 1.0.0 | Waiting on sandbox | First publish after sandbox is on npm |
@cobusgreyling/loop-gate |
1.0.0 | 1.0.0 | Done | — |
@cobusgreyling/loop |
0.1.2 | 0.1.2 | Done | — |
All three dispatch rounds ended in 404 Not Found - PUT https://registry.npmjs.org/@cobusgreyling%2f<pkg>,
including the 15:10 round that ran after #422 removed NODE_AUTH_TOKEN from the
publish steps. In each log the Sigstore provenance statement is signed and uploaded
before the PUT fails, so the GitHub OIDC token itself works — the registry is
rejecting an unauthenticated publish (npm reports 404 rather than 403 for
unauthorized package access). That points at the npmjs.com side of trusted
publishing, not the workflows:
- Trusted publishing is configured per package on npmjs.com
(package → Settings → Trusted Publisher), and the workflow filename must match
exactly. This repo uses one workflow per package
(
release-loop-worktree.yml,release-loop-audit.yml,release-loop-init.yml,release-loop-mcp-server.yml,release-loop-sandbox.yml, …), so each package needs its own entry pointing at its own filename. - First publishes (
loop-sandbox,loop-swarm): a trusted publisher can only be configured on a package that already exists on the registry. If npmjs.com does not offer the create-package-with-trusted-publisher flow for the scope, do the first publish once from a maintainer machine with a granular token (npm publish --access public), then add the trusted publisher and let CI own subsequent releases.
- Merge this PR (bumps
loop-worktreeto 1.3.1; tags for the other packages already exist and their tagged trees test green). - On npmjs.com, add a Trusted Publisher entry for each package listed above
(repository
cobusgreyling/loop-engineering, the package's ownrelease-*.ymlfilename, environment blank unless one is configured). - Tag the superseding worktree release:
(Leave
git tag loop-worktree-v1.3.1 && git push origin loop-worktree-v1.3.1loop-worktree-v1.3.0in place; npm never received 1.3.0 and release dispatches must not target it.) - Re-dispatch the failed workflows against the existing tags:
loop-audit-v1.8.0,loop-init-v1.6.0,loop-mcp-server-v1.2.0,loop-sandbox-v1.0.0(or first-publish sandbox manually per the note above). Once sandbox is on npm, create the swarm tag (it does not exist yet):git tag loop-swarm-v1.0.0 && git push origin loop-swarm-v1.0.0 - Confirm with
npm view @cobusgreyling/<pkg> version. - Fold this draft into a GitHub Discussion; close #332.
npx @cobusgreyling/loop-worktree --help
npx @cobusgreyling/loop-init . --pattern daily-triage --tool grok --with-foundry --model-provider minimax
npx @cobusgreyling/loop-audit . --auto-fix
npx @cobusgreyling/loop-sandbox --help
npx @cobusgreyling/loop-swarm run --count 3 -- echo "demo"- PR triage 2026-07-29: merged docs wave + #398/#400/#407/#418; #409 additive rework; #365 release draft refresh superseded by this file.
- Feature PRs should include
package.jsonbumps in the same change (lesson from unpublished features sitting on main at old versions).