Skip to content

chore(release): 0.119.0 - #696

Merged
drewstone merged 2 commits into
mainfrom
release/0.119.0
Aug 1, 2026
Merged

chore(release): 0.119.0#696
drewstone merged 2 commits into
mainfrom
release/0.119.0

Conversation

@drewstone

@drewstone drewstone commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Why this exists

The published latest is 0.117.0, which still ships piExecutor. The deletion (fee88987, "drop the bespoke pi executor for the generic bridge path") has been on main since 2026-08-01 and bumped package.json to 0.118.0 — but no tag was ever cut, so 0.118.0 does not exist on the registry (npm view versions end at 0.117.0). Downstream cannot consume the deletion until a release publishes: loops still pins 0.111.0 and has a src/pi-worker.ts, supervisor-lab pins 0.116.0.

Why 0.119.0 and not 0.118.0

main has taken a second BREAKING change since that bump: #691 (ad57c084), the LocalHarness 'claude' -> 'claude-code' rename that also deleted materializerHarness(). It landed its changelog under ## Unreleased without bumping the version, so no version number covers it.

Tagging v0.118.0 at main's tip would publish that rename under a heading whose changelog does not mention it. This assigns it 0.119.0 instead:

  • ## Unreleased -> ## 0.119.0
  • ## 0.118.0 keeps its section and gains one line recording that it never published and that its contents ship in 0.119.0.

The registry goes 0.117.0 -> 0.119.0. Consumers upgrading from 0.117.0 read both sections; both are BREAKING, which matches this repo's 0.x convention of a minor bump per breaking release (0.117.0 -> 0.118.0 was itself BREAKING).

Independently, pnpm run release:prepare 0.119.0 refuses 0.118.0 outright — package.json is already 0.118.0 — so the repo's own tooling rules that number out.

The second commit fixes a real publish blocker

agent-bench has failed CI on every commit since ad57c084 (72913a17 was the last green one). One stale assertion in bench/src/swe-arena/proposer-fanout.test.mts:393 still expected 'proposer alpha (claude)' while the rename now produces claude-code.

This is not merely a red check. publish.yml's verify job runs the same pnpm run verify:bench before packing, so tagging v0.119.0 would fail the gate and never publish. The release is not shippable without this fix.

Only the harness NAME moves. The bare 'claude' in quant-loop.mts and swe-code-improve.mts is the EXECUTABLE name, which the rename deliberately kept — both left alone.

Verification

Gate Result
pnpm run typecheck (src + examples) 0 errors
pnpm run test 2260 passed, 6 skipped, 1 load flake
pnpm run verify:package (publint + attw + exports + edge loop) exit 0
check:testing-fixture / check:skills / check:publish-workflow / docs:freshness all PASS
bench typecheck:public clean
bench tests after fix proposer-fanout + proc 49/49 passed
merge-tree vs origin/main clean

publint reports "All good!"; attw is green on node16 (from ESM) and bundler across all 18 subpaths (node10/node16-cjs ignored per the repo's existing resolution config).

The one runtime-suite failure, tests/knowledge-improvement-job.test.ts > applies and restores only frozen candidate bytes, is a 15s-timeout flake under parallel load in a worktree-spawning test — 3/3 pass on isolated re-run. It occurs on unmodified origin/main (baseline measured before any edit), so it is pre-existing.

Packed artifact (pnpm pack, exactly as publish.yml builds it)

  • @tangle-network/agent-runtime@0.119.0147 files, 2.1 MB packed / 8.0 MB unpacked
  • Contents: dist/ (141), skills/ (4), README.md, package.json
  • No pi-executor file and no piExecutor symbol anywhere in the tarball. For contrast, the published 0.117.0 tarball carries piExecutor in 5 files (dist/kernel.js, dist/kernel.d.ts, dist/index-*.d.ts, dist/supervise-*.js, .js.map).
  • All catalog: specifiers resolve in the packed manifest: agent-knowledge@7.0.3, agent-profile-materialize@0.9.4, tar-stream@3.2.0; peers agent-eval >=0.139.2 <0.140.0, agent-interface >=0.40.0 <0.41.0, sandbox >=0.15.0 <0.16.0, playwright ^1.40.0.

Apart from the bench test, only version-embedded artifacts changed — no runtime source changes, so dist/ differs from 0.118.0 solely by the version string.

Cohort pins

Package Pinned (catalog) Shipped range npm latest Match
agent-interface 0.40.0 >=0.40.0 <0.41.0 0.40.0 yes
agent-knowledge 7.0.3 7.0.3 (dep) 7.0.3 yes
agent-profile-materialize 0.9.4 0.9.4 (dep) 0.9.4 yes
sandbox 0.15.2 >=0.15.0 <0.16.0 0.15.2 yes
agent-eval 0.139.2 >=0.139.2 <0.140.0 0.140.1 one minor behind

The pins are internally consistent — catalog, peer floor, and the exact cohort SHA publish.yml checks out all say 0.139.2 — and check:publish-workflow passes, so this is not the inconsistency class that failed the 0.110.0 attempt.

agent-eval 0.140.0/0.140.1 published 2026-07-31T21:43/22:03Z, ~15h after the pinned 0.139.2. Moving to it is a coordinated three-place change (catalog, peer range, and the pinned v0.139.2 SHA in publish.yml) across a 0.x minor whose 0.140.0 notes add a required controlAdapter key to the DSPy bridge, so it is deliberately not bundled into a release commit.

Worth a prompt follow-up: agent-eval 0.140.1 specifically fixes reading the supervisor journal this package writes (src/durable/spawn-journal.ts's {kind:'event', root, event} envelope made parseSupervisorTree report zero spawns). Our peer range currently excludes that fix.

To publish after merge

git tag v0.119.0 <merged-main-sha> && git push origin v0.119.0

publish.yml rejects a tag that is not the tip of main, packs with pnpm pack, and publishes the digest-locked tarball via npm trusted publishing with provenance. Do not hand-publish with npm publish from a working tree: npm does not resolve pnpm's catalog: protocol and would ship unresolved specifiers.

0.118.0 bumped package.json on main but was never tagged, so the pi
executor deletion (fee8898) never reached the registry — the published
latest is still 0.117.0, which ships piExecutor. Main has since taken a
second BREAKING change (#691, the LocalHarness 'claude' -> 'claude-code'
rename) that sat under an "Unreleased" changelog heading with no version
covering it.

Publishing main as 0.118.0 would ship that rename under a number whose
changelog does not mention it, so this cuts 0.119.0 instead: the
Unreleased section becomes 0.119.0, and the 0.118.0 section records that
it never published and that its contents ship here. The registry goes
0.117.0 -> 0.119.0.

Version-embedded artifacts regenerated with release:prepare, so the
fixture, primitive-catalog, and canonical-api gates stay green.
…tionale

#691 renamed LocalHarness 'claude' to 'claude-code' but left this bench
assertion expecting the old spelling, so `pnpm run verify:bench` has
failed on every commit since ad57c0872913a1 was the last green one.

This blocks the release, not just CI: publish.yml runs the same
`pnpm run verify:bench` in its verify job before packing, so a tag would
fail the gate and never publish.

Only the harness NAME moves. The bare 'claude' in quant-loop.mts and
swe-code-improve.mts is the EXECUTABLE name, which the rename
deliberately kept, so both are left alone.

@tangletools tangletools left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Auto-approved drewstone PR — e7cf997e

This PR was opened by the trusted drewstone account.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

tangletools · auto-approval · reason: drewstone_author · 2026-08-01T22:28:21Z

@drewstone
drewstone merged commit 56dd6eb into main Aug 1, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants