Skip to content

Version Packages - #198

Merged
drewstone merged 2 commits into
mainfrom
changeset-release/main
Aug 16, 2026
Merged

Version Packages#198
drewstone merged 2 commits into
mainfrom
changeset-release/main

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@tangle-network/agent-interface@1.0.0

Major Changes

  • ca3901d: Adopt a stated compatibility promise and release it as 1.0.0.

    The published surface of 1.0.0 equals the published surface of 0.56.0.
    No export is added, removed, or narrowed by this release.
    The version number changes so that a caret range can read the promise the package already keeps.

    The promise from this release forward:

    • A minor release is additive. A new export, a new optional field, and a new member on an exported union are minor.
    • A patch release is a fix. A behaviour correction that keeps every declared type is patch.
    • A major release removes or narrows. A deleted export, a removed member, a narrowed type, and a new required field are major.

    Two limits of that promise, stated because a caret range makes them reachable:

    • A switch over an exported union must have a default branch. An exhaustiveness check that assigns the remaining case to never fails when a minor adds a member, and this promise does not cover it.
    • Declare the lowest 1.x you actually use. A package that reads an export added in 1.4.0 must declare ^1.4.0, because ^1.0.0 lets a resolver keep 1.0.0.

    Consumers must declare ^1.<lowest minor used>.0.
    A caret range admits every later additive minor without a consumer release.
    The single-generation window >=X.Y.0 <X.(Y+1).0 is retired and must not be reintroduced.

@tangle-network/agent-core@0.9.4

Patch Changes

  • Updated dependencies [ca3901d]
    • @tangle-network/agent-interface@1.0.0

@tangle-network/agent-provider-cli-bridge@0.7.6

Patch Changes

  • Updated dependencies [ca3901d]
    • @tangle-network/agent-interface@1.0.0

@tangle-network/agent-provider-computesdk@0.3.14

Patch Changes

  • Updated dependencies [ca3901d]
    • @tangle-network/agent-interface@1.0.0

@tangle-network/agent-provider-daytona@0.3.14

Patch Changes

  • Updated dependencies [ca3901d]
    • @tangle-network/agent-interface@1.0.0

@tangle-network/agent-provider-e2b@0.3.14

Patch Changes

  • Updated dependencies [ca3901d]
    • @tangle-network/agent-interface@1.0.0

@tangle-network/agent-provider-tangle@0.12.2

Patch Changes

  • Updated dependencies [ca3901d]
    • @tangle-network/agent-interface@1.0.0

@tangle-network/agent-provider-testkit@0.8.2

Patch Changes

  • Updated dependencies [ca3901d]
    • @tangle-network/agent-interface@1.0.0

@tangletools tangletools left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

✅ Auto-approved GitHub Actions PR — 4d87f8e0

This PR was opened by trusted GitHub Actions automation.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: github_actions_author · 2026-08-16T12:05:32Z

Every internal consumer moves from the exact 1.0.0 that changesets wrote to
^1.0.0. One installed copy now spans every later additive minor, so a consumer
tree that holds two first-party packages resolves a single agent-interface.

The range rides this release because ^1.0.0 does not satisfy a workspace at
0.56.0, so it could not land on the release PR, and doing it here avoids a
second agent-core and six-provider round.
@drewstone

Copy link
Copy Markdown
Contributor

The seven internal ranges ride this release — a4f8a335

This PR carries one hand-authored commit on top of the generated Version Packages commit. Every internal consumer moves from the exact 1.0.0 that changeset version wrote to ^1.0.0:

package version @tangle-network/agent-interface
agent-core 0.9.4 ^1.0.0
agent-provider-cli-bridge 0.7.6 ^1.0.0
agent-provider-computesdk 0.3.14 ^1.0.0
agent-provider-daytona 0.3.14 ^1.0.0
agent-provider-e2b 0.3.14 ^1.0.0
agent-provider-tangle 0.12.2 ^1.0.0
agent-provider-testkit 0.8.2 ^1.0.0

Why it cannot land on #195 instead

satisfies("0.56.0", "^1.0.0") is false. On #195 the workspace still published 0.56.0, so the artifact check refuses the caret range — correctly. The range only becomes declarable once the workspace manifest reads 1.0.0, which is true here and nowhere earlier. Landing it here also avoids publishing agent-core and six providers twice.

Proof on this head

pnpm install --lockfile-only   exit 0   (lockfile unchanged: workspace copies stay link:../agent-interface)
pnpm build                     exit 0
pnpm check-types               exit 0
pnpm check:package-artifacts   exit 0   9 packages, 28 exports, 56 export targets
pnpm check:control-artifacts   131 passed
                               packed tangle-network-agent-interface-1.0.0.tgz
pnpm test                      1439 passed

Per-package: interface 438, core 505, cli-bridge 144, tangle 140, trace-contract 182, testkit 24, computesdk/daytona/e2b 2 each.

The diff is 7 files, 7 lines. The lockfile does not move because ^1.0.0 still resolves the workspace copy.

Surface equality, checked rather than asserted

No commit since the #195 merge-base touches packages/agent-interface/src, and #195 changed only that package's README. The published surface of 1.0.0 equals the published surface of 0.56.0.

@tangletools tangletools left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

✅ Auto-approved GitHub Actions PR — a4f8a335

This PR was opened by trusted GitHub Actions automation.
The full PR reviewer audit still runs separately and will publish findings if it detects issues.

This approval is provisional. It rests on the audit running. If the audit cannot run — for example the CLI bridge rejects it — this approval is dismissed rather than left standing, so an unrun check never reads as a passing one.

tangletools · auto-approval · reason: github_actions_author · 2026-08-16T12:09:13Z

@tangletools tangletools left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟢 Value Audit — sound

Verdict sound
Coverage 2 of 2 lenses (value, usefulness)
Concerns 0 (none)
Heuristic 0.0s
Duplication 0.0s
Interrogation 145.9s (2 bridge agents)
Total 145.9s

💰 Value — sound

Standard changesets release that publishes agent-interface 1.0.0 (surface identical to 0.56.0, now with a stated semver promise) and converts every internal consumer from exact pins to ^1.0.0 so one installed copy spans all additive minors — coherent, guarded by existing repo tooling, and shipped in

  • What it does: Two commits: (1) the changesets 'Version Packages' bump — agent-interface 0.56.0→1.0.0 with the compatibility-promise changelog, plus patch bumps (agent-core 0.9.4, six providers) with changelogs across 17 files; (2) a manual follow-up (a4f8a33) that rewrites the internal agent-interface dependency in all 7 consuming package.json files from the exact '1.0.0' changesets wrote to '^1.0.0'. No source
  • Goals it achieves: Makes the compatibility promise operational: with a stated semver contract (minor=additive, patch=fix, major=removal), a caret range lets a consumer tree holding two first-party packages (e.g. agent-core + a provider) resolve a single agent-interface instead of exact-pin-forced duplicate copies. Riding the release PR is also the only place the caret COULD land — on main the workspace is at 0.56.0,
  • Assessment: Good on its merits. The design was prepared in ca3901d (already on main): scripts/check-package-artifacts.mjs:347-388 was extended to require internal ranges to admit the workspace version AND stop below the next major (probing majors +1, +2, 999999), with comments explicitly endorsing caret over exact pins ('an exact pin pulls a second copy into a tree that already holds another') — '^1.0.0' is e
  • Better / existing approach: none — this is the right approach. Considered alternatives: (a) pnpm 'workspace:^' protocol, which auto-expands to ^version at publish — but the repo's artifact checker deliberately rejects workspace: specifiers (check-package-artifacts.mjs:341-345) and validates packed-vs-source dependency metadata, so literal ranges are the chosen grain; (b) changesets 'fixed'/'linked' lockstep versioning — woul
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 2
  • Bridge warning: opencode/kimi-for-coding/k2p7: opencode: opencode error

🎯 Usefulness — sound

A changesets release PR that publishes agent-interface 1.0.0 (surface-identical to 0.56.0, per the changeset in ca3901d) and consistently moves all 7 internal dependents from exact 0.56.0 pins to ^1.0.0 caret ranges, matching the compatibility promise and its CI enforcement landed in #195.

  • Integration: Fully wired. Merging triggers the established release path: .github/workflows/release.yml:35-38 runs changesets/action@v1 with publish: pnpm changeset:publish (OIDC trusted publishing), the same mechanism as the prior release merge 66cd90b (#197). All consumers of agent-interface were found by grep across package.json files: exactly the 7 dependents bumped here (agent-core, cli-bridge, computesd
  • Fit with existing patterns: Fits the grain precisely. The caret range is not an arbitrary style choice: scripts/check-package-artifacts.mjs:347-388 (landed in the same series, ca3901d) requires every internal range to admit the workspace version and stop below the next major, and its comment explains that an exact pin pulls a second copy into a tree that already holds another. ^1.0.0 satisfies the rule (admits 1.0.0, rejec
  • Real-world viability: Holds up. For npm consumers, the published dependents now declare ^1.0.0, so a single agent-interface copy satisfies the whole tree under additive minors — the exact failure mode the artifact check documents. The known sharp edge of a caret-on-major (a minor adding a union member breaking never-based exhaustiveness checks, and consumers needing ^1..0) is explicitly stated as outsid
  • Model: opencode/zai-coding-plan/glm-5.2
  • Bridge attempts: 1

No concerns — sound change, no better or existing approach found. ✅


What this audit checks

It judges the change on its merits — not whether it was tasked out in an issue. Unticketed, fast-moving work is fine; the question is whether the change is good and whether a better or existing approach should be used instead.

Pass What it asks
Heuristic Vague title? Whitespace-only or cruft-bearing diff? (content signals only)
Duplication Do added function/class names already exist elsewhere in the repo?
Value Audit What does it do? What goal does it achieve? Is it good? Better architecture or already-exists?
Usefulness Audit Does it integrate and fit? Will it hold up in real use and actually get used?

Findings are concerns, not blocks — the human reviewer decides what to do with them.

value-audit · 20260816T121226Z

@drewstone
drewstone merged commit 8895582 into main Aug 16, 2026
1 check passed
@tangletools tangletools mentioned this pull request Aug 17, 2026
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