chore(release): 0.135.4 — accept the agent-interface 0.54 generation and move the sibling floors with it - #878
chore(release): 0.135.4 — accept the agent-interface 0.54 generation and move the sibling floors with it#878drewstone wants to merge 4 commits into
Conversation
…sibling floors with it agent-interface 0.54.0 took the npm 'latest' tag 88 seconds after the peer widen to '<0.54.0' merged, and agent-knowledge 8.0.2 then moved its own peer to '>=0.54.0 <0.55.0'. The two ranges are disjoint, so 'npm install @tangle-network/agent-runtime@latest @tangle-network/agent-knowledge@latest' cannot resolve at all. 0.54.0 is additive against 0.53.0: it adds isCredentialBearingProfileConfigName and isRuntimeProcessControlEnvironmentName, widens RequestedInteractions from a three-key strict object to a string-keyed boolean record, and removes no symbol. No file in this package reads RequestedInteractions. The interface peer accepts both generations, so a consumer that still holds a 0.53 package resolves too. The agent-eval floor moves in the same commit because agent-knowledge 8.0.2 requires '>=0.145.16', and agent-eval 0.145.16 is the release that depends on interface 0.54.0. A floor that moves generation alone leaves the same disjoint pair one level down.
tangletools
left a comment
There was a problem hiding this comment.
✅ Auto-approved drewstone PR — 38ef766f
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.
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: drewstone_author · 2026-08-16T06:35:08Z
|
@tangletools review now |
tangletools
left a comment
There was a problem hiding this comment.
✅ Auto-approved drewstone PR — 38ef766f
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.
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: drewstone_author · 2026-08-16T06:45:27Z
|
Head moved to Local gates on the pushed head:
@tangletools review now |
…0.55.0 Interface 0.55.0 published 2026-08-16T06:44:30Z, 2 hours 14 minutes after 0.54.0 and before this release could land. It took the npm 'latest' tag in turn, so a '<0.55.0' ceiling would ship already behind the tag it exists to track. 0.55.0 is additive over 0.54.0: it adds the environment-interactive module, the optional startInteractive and interactive methods on AgentEnvironment, and the optional interactiveAgent capability block. It removes no symbol. The range now holds every generation this release verifies against instead of only the newest, so an adoption wave no longer has to be atomic.
tangletools
left a comment
There was a problem hiding this comment.
✅ Auto-approved drewstone PR — ebb1b976
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.
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: drewstone_author · 2026-08-16T07:00:01Z
|
@tangletools review now |
tangletools
left a comment
There was a problem hiding this comment.
✅ Auto-approved drewstone PR — ebb1b976
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.
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: drewstone_author · 2026-08-16T07:00:13Z
|
Head is now
So the peer is 0.55.0 is additive over 0.54.0: it adds Re-verified on this head against interface 0.55.0:
Sibling PRs move to the same Root cause and the release-order rule: tangle-network/agent-sdk#190. Manifest gate for the sibling-floor half: tangle-network/agent-app#445. |
tangletools
left a comment
There was a problem hiding this comment.
⚠️ Value Audit did not run — no verdict
This is not an approval and not a clean bill of health. Neither interrogation lens returned a judgment, so this PR has no value-audit evidence for or against it.
| Status | audit-incomplete (could not run) |
| Why | value: cli-bridge admission rejected (queue saturated); usefulness: cli-bridge admission rejected (queue saturated) |
| Lenses answered | 0 of 2 |
| What to do | re-run once the CLI bridge has capacity: pr-reviewerctl trigger <repo>#<pr> --force |
💰 Value — error
value agent never ran: the CLI bridge refused admission (no model was started).
- Model: opencode/deepseek/deepseek-v4-pro
- Bridge attempts: 4
- Bridge error: opencode/kimi-for-coding/k2p7: Bridge returned 503: bridge at capacity (queue_timeout, lane=reserved): active=20/20 queued=5/48 — no model was started
🎯 Usefulness — error
usefulness agent never ran: the CLI bridge refused admission (no model was started).
- Model: opencode/deepseek/deepseek-v4-pro
- Bridge attempts: 4
- Bridge error: opencode/zai-coding-plan/glm-5.2: Bridge returned 503: bridge at capacity (queue_timeout, lane=reserved): active=20/20 queued=6/48 — no model was started
No concerns are listed because nothing examined the change — absence of findings here is absence of evidence, not a pass.
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 could not run (value: cli-bridge admission rejected (queue saturated); usefulness: cli-bridge admission rejected (queue saturated)). This approval was provisional on that audit running, so it is dismissed. Re-run the reviewer once the CLI bridge has capacity.
Positive control — the wave resolves, proven before mergeThe final proof normally waits on merge → publish. It does not have to: npm's resolver reads only manifests, so packing these branches and installing the tarballs beside the live registry is the same resolution the published packages will produce.
Negative control — the published state, right nowPositive control — the same command against these branchesZero ERESOLVE. Interface 0.55.0 hoists to the root and satisfies both new peer windows. The nested Same command shape, same live registry, same day. Only the two manifests differ. One more generation landed during this run
Root cause and the release-order rule: tangle-network/agent-sdk#190. Manifest gate for the sibling-floor half: tangle-network/agent-app#445. |
Re-verified against the manifest that actually merged
So the proof above was re-run against the real merged manifest, packed straight from Zero ERESOLVE. This PR's What the narrower window costs, stated plainly
That is the same failure this PR exists to fix, one repository over, created inside the same hour. It is not an argument against #136 — it is the argument in tangle-network/agent-sdk#190 and tangle-network/agent-app#445, restated by the fleet a third time in one morning. This PR keeps the floor at 0.53 for exactly that reason: a wide window costs nothing and a narrow one costs a wave.
|
tangletools
left a comment
There was a problem hiding this comment.
🟡 Value Audit — sound-with-nits
| Verdict | sound-with-nits |
| Coverage | 2 of 2 lenses (value, usefulness) |
| Concerns | 4 (4 weak-concern) |
| Heuristic | 0.0s |
| Duplication | 0.0s |
| Interrogation | 454.4s (2 bridge agents) |
| Total | 454.4s |
💰 Value — sound-with-nits
Patch release 0.135.4 that widens the agent-interface peer window to three generations (>=0.53.0 <0.56.0) and moves sibling floors (eval >=0.145.16, catalog knowledge/core/materialize) to un-break npm resolution of agent-runtime@latest alongside agent-knowledge@latest — a coherent, well-evidenced fi
- What it does: Four commits on top of 0.135.3: (1) 38ef766 widens the interface peer from >=0.53.0 <0.54.0 to <0.55.0 and moves the catalog (interface 0.54.0, eval 0.145.16, knowledge 8.0.2, core 0.9.1, profile-materialize 0.15.2); (2) e3edf2e cuts release 0.135.4 — version bumps in package.json:3 and bench/package.json, CHANGELOG entry, regenerated version-embedding fixtures via the repo's own generator (packag
- Goals it achieves: Restore installability: 0.135.3's single-generation window (>=0.53.0 <0.54.0) and agent-knowledge 8.0.2's peer (>=0.54.0 <0.55.0) are disjoint, so 'npm install agent-runtime@latest agent-knowledge@latest' fails regardless of the interface's own latest tag (reproduced in the PR body). The eval floor moves in the same release because knowledge 8.0.2 requires eval >=0.145.16 — fixing only the interfa
- Assessment: Good change, executed in the grain of the codebase. The file set exactly matches prior releases (9e6d7c9/#873, 1502fe5/#871: package.json, bench, catalog, lockfile, fixtures, CHANGELOG). The version bump satisfies the repo's own gate requiring peer-surface changes to raise the version (scripts/check-version-bump.mjs, header comment). Fixtures were regenerated with the documented script and are cov
- Better / existing approach: Searched the repo for an existing mechanism: scripts/ has check-version-bump.mjs, prepare-release.mjs, verify-packed-cohort.mjs — release/verification machinery this change correctly rides, none of which solves cross-package peer disjointness. Alternatives considered and rejected on evidence: an unbounded peer (>=0.53.0 with no ceiling) would silently accept a breaking 0.56; staying single-generat
- Model: opencode/zai-coding-plan/glm-5.2
- Bridge attempts: 5
- Bridge warning: opencode/kimi-for-coding/k2p7: opencode: opencode error
🎯 Usefulness — sound
Release 0.135.4 fixes a real, reproduced npm ERESOLVE failure between agent-runtime and the agent-interface 0.54/0.55 generation, using the repo's established release pattern; verified empirically that the new ranges resolve cleanly.
- Integration: Fully wired. Peer ranges (package.json:172-176), catalog (pnpm-workspace.yaml:21-28), lockfile, CHANGELOG, and the version-embedding fixtures (consumed via src/testing/index.ts:12-13, regeneration enforced by check:testing-fixture inside verify:package, package.json:139) all move together, matching the identical shape of the prior release (commit 9e6d7c9, 0.135.3). The 'caller' is every npm consum
- Fit with existing patterns: Follows the established release cadence exactly: single-generation peer windows widened at release time with the catalog floor moved in lockstep (git log shows 0.135.3 performed the identical move one generation earlier). The extension from a one-generation to a two-generation window (<0.56.0, catalog 0.55.0) is a deliberate, commit-stated response to the interface package outpacing the fleet — no
- Real-world viability: Verified on the real resolver, not just the happy path: the previously-broken combination now installs, including when the consumer pins agent-interface@0.55.0 at the root. Two weak caveats found: (1) npm satisfies agent-knowledge@8.0.2's narrower peer (>=0.54.0 <0.55.0, confirmed via npm view) by nesting a second agent-interface@0.54.0 copy under it while the rest of the tree gets 0.55.0 — duplic
- Model: opencode/zai-coding-plan/glm-5.2
- Bridge attempts: 1
🎯 Usefulness Audit
🟡 Hard dep agent-knowledge@8.0.2 still peers interface <0.55.0, forcing a nested duplicate copy [robustness] ``
npm view confirms agent-knowledge@8.0.2 peers agent-interface >=0.54.0 <0.55.0 while this release's own peer accepts <0.56.0; npm install empirically resolves this by nesting interface@0.54.0 under agent-knowledge alongside 0.55.0 elsewhere (npm ls shows both). Currently benign (no identity checks in src; types+schemas), but until agent-knowledge widens its peer, every npm consumer co-installing at 0.55.0 carries two interface copies. No action needed in this PR; revisit if agent-interface ever
🟡 Peer range floor 0.53.0 is accepted but never tested [robustness] ``
pnpm-workspace.yaml:24 pins agent-interface 0.55.0, so CI verifies only the ceiling of the >=0.53.0 <0.56.0 range. A consumer pinned to 0.53.x is promised compatibility that no test run exercises. Prior releases had the inverse gap (tested floor only), so this matches existing practice; if a low-floor break is ever suspected, a matrix check against the floor would close it.
💰 Value Audit
🟡 Lower end of the widened peer window (0.53.0) is not exercised by CI [maintenance] ``
The development catalog pins interface 0.55.0 (pnpm-workspace.yaml:24), so typecheck/tests verify only the ceiling; interface 0.53.0 appears in the lockfile solely as sandbox 0.27.0's nested dependency (pnpm-lock.yaml:3215), not as a first-class verification arm. The additivity claim for the floor end rests on the commit-message symbol diff, not on an executed check. Acceptable for a patch release, but if the multi-generation window becomes the standing policy, add a verify arm that installs the
🟡 PR body table misstates the catalog agent-core change [maintenance] ``
The table says catalog agent-core went 0.9.0 -> 0 (removed) and omits agent-profile-materialize 0.15.1 -> 0.15.2; the actual cumulative diff keeps agent-core at 0.9.1 (git diff 9e6d7c9..HEAD -- pnpm-workspace.yaml). The durable artifacts are accurate — CHANGELOG 0.135.4 entry records 'agent-knowledge to 8.0.2, agent-core to 0.9.1, and agent-profile-materialize to 0.15.2' — so this is a description error only; no code action needed, flagged so future dependency forensics trust the CHANGELOG over
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.
❌ Needs Work —
|
| opencode GLM 5.2 | opencode DeepSeek v4 Pro | opencode DeepSeek v4 Flash | aggregate | |
|---|---|---|---|---|
| Readiness | 76 | 29 | 56 | 29 |
| Confidence | 85 | 85 | 85 | 85 |
| Correctness | 76 | 29 | 56 | 29 |
| Security | 76 | 29 | 56 | 29 |
| Testing | 76 | 29 | 56 | 29 |
| Architecture | 76 | 29 | 56 | 29 |
Reviewer score is advisory once the run is complete and the verdict has no blockers.
Full multi-shot audit completed 5/5 planned shots over 9 changed files. Global verifier still owns final merge decision. | Full multi-shot audit completed 5/5 planned shots over 9 changed files. Global verifier still owns final merge decision. | Full multi-shot audit completed 5/5 planned shots over 9 changed files. Global verifier still owns final merge decision.
Blocking
🔴 HIGH agent-knowledge 8.0.2 resolved against an out-of-range agent-interface peer — pnpm-lock.yaml
The package entry declares peerDependencies '@tangle-network/agent-interface': '>=0.54.0 <0.55.0' (line 1163), but the resolved snapshot at line 3233 binds it to agent-interface 0.55.0 (dependency line 3236). 0.55.0 does not satisfy '<0.55.0'. This is an unmet-peer violation that pnpm will report on every install (and fail under strict-peer-dependencies). The CHANGELOG itself says 'one that carries agent-knowledge 8.0.2 resolves against 0.54'
🔴 HIGH agent-profile-materialize 0.15.2 resolved against an out-of-range agent-interface peer — pnpm-lock.yaml
The package entry declares peerDependencies '@tangle-network/agent-interface': '>=0.47.0 <0.54.0' (line 1168), unchanged from 0.15.1, but the snapshot at line 3240 binds it to agent-interface 0.55.0. 0.55.0 is two minor generations past the '<0.54.0' cap, so the peer is unmet. This is the strongest signal that the 0.55.0 catalog bump is premature: profile-materialize was not updated to accept even 0.54.0, let alone 0.55.0. Combined with finding #1, the dependency set is mutually incompatible — knowledge needs >=0.54.0 while profile-materialize needs <0.54.0
Other
🟠 MEDIUM Lockfile wires two siblings against interface generations their published peer ranges exclude — pnpm-lock.yaml
Snapshot '@tangle-network/agent-knowledge@8.0.2(...)(@tangle-network/agent-interface@0.55.0)' (line 3233, importer lines 61/137) violates knowledge 8.0.2's published peer 'agent-interface >=0.54.0 <0.55.0', and '@tangle-network/agent-profile-materialize@0.15.2(@tangle-network/agent-interface@0.55.0)' (line 3240, importer line 64)
🟠 MEDIUM Two active agent-interface copies (0.54.0 and 0.55.0) coexist across the module boundary — pnpm-lock.yaml
agent-core 0.9.1 (line 3196) and agent-eval 0.145.16 (line 3206) hard-depend on agent-interface 0.54.0, while the workspace importers depend on 0.55.0 (lines 61/64/137) and knowledge/profile-materialize resolve to 0.55.0. Two copies of the zod-typed interface package ship in one install, so values/schemas produced by agent-core/agent-eval (interface 0.54.0) are passed to consumers on interface 0.55.0. This duplicates zod schema identity across
🟠 MEDIUM agent-knowledge@8.0.2 peer resolved against agent-interface 0.55.0, outside its declared range — pnpm-lock.yaml
The catalog pins @tangle-network/agent-interface to 0.55.0 (line 1154), but agent-knowledge@8.0.2 declares its peer as '>=0.54.0 <0.55.0' (line 1163). The lockfile still resolves knowledge's peer to 0.55.0 (snapshot key and dependency line 3236).
pnpm peers checkconfirms: 'unmet peer @tangle-network/agent-interface Installed: 0.55.0 Wanted >=0.54.0 <0.55.0'. This contradicts the PR changelog, which says a consumer carrying agent-knowledge
🟠 MEDIUM agent-profile-materialize@0.15.2 peer resolved against agent-interface 0.55.0, outside its declared range — pnpm-lock.yaml
agent-profile-materialize@0.15.2 declares peer '@tangle-network/agent-interface: >=0.47.0 <0.54.0' (line 1168) but the lockfile resolves it against 0.55.0 (snapshot line 3242). pnpm peers check flags it as an unmet peer. The published package has no release that accepts interface 0.55.0 (0.15.2 is the latest 0.15.x and still caps at <0.54.0). Same root cause as the agent-knowledge finding: catalog pins interface 0.55.0 ahead of the sibling packages' declared compatibility. Same remediation.
🟠 MEDIUM agent-interface 0.55.0 catalog bump leaves peer ranges unsatisfied for agent-knowledge and agent-profile-materialize — pnpm-workspace.yaml
Catalog now pins '@tangle-network/agent-interface': 0.55.0 (line 24) and bumps siblings to 8.0.2 (line 25) and 0.15.2 (line 26). Evidence: (1) agent-knowledge@8.0.2 publishes peerDependencies '@tangle-network/agent-interface': '>=0.54.0 <0.55.0' — 0.55.0 is outside the range; lockfile resolves it as 'agent-knowledge@8.0.2(...)(@tangle-network/agent-interface@0.55.0)' (pnpm-lock.yaml:61) and installed node_modules links it to 0.55.0.
🟡 LOW agent-core 0.9.2 referenced but catalog pins 0.9.1 — CHANGELOG.md
Line 15 says a consumer carrying
agent-core0.9.2 resolves against interface 0.55, but line 19 and pnpm-workspace.yaml pin the dev catalog atagent-core0.9.1. The consumer-side version (0.9.2) is not what this repo verifies against (0.9.1), so the example is one version removed from the tested set. Not incorrect per se — a downstream consumer could carry 0.9.2 — but the two numbers side by side read as inconsistent. Fix: cite 0.9.1 to match the catalog, or add one clause explaining 0.9.2 is a newer consumer-side release the window also covers.
🟡 LOW agent-core version stated as both 0.9.2 and 0.9.1 in the same release entry — CHANGELOG.md
Line 15 (bullet 3): 'one that carries
agent-core0.9.2 resolves against 0.55.' Line 19 (bullet 4): 'The development catalog movesagent-knowledgeto 8.0.2,agent-coreto 0.9.1, andagent-profile-materializeto 0.15.2 for the same reason.' The same package is named at two different versions (0.9.2 vs 0.9.1) in one entry with no note distinguishing a consumer-installed copy from the dev-catalog pin. Fix: make the two references agree, or clarify that the dev catalog pins 0.9.1 while a released consumer copy may be 0.9.2. Docs-only, no runtime impact.
🟡 LOW test-pass claim not independently provable from this diff — CHANGELOG.md
Line 13 asserts 'Typecheck and the test suite pass against 0.55.0'. The claim is plausible (CI ran on this PR) but the evidence lives in CI, not the diff, and a changelog cannot carry it. Consistent with the repo's existing changelog convention (0.135.3 line 26 makes the same claim against 0.53.0), so acceptable; only flagged so the claim gate is explicit — verify CI green on the head commit before merge.
🟡 LOW Orphaned agent-interface@0.53.0 snapshot left in lockfile — pnpm-lock.yaml
Both the package entry (line 1148) and snapshot (line 3215) for agent-interface 0.53.0 remain, but no importer or dependency references them (grep for 'agent-interface: 0.53.0' and 'agent-interface@0.53.0' returns only these self-definitions). The lockfile was not pruned after the bump; a fresh 'pnpm install' would drop it. Purely a hygiene nit, but it suggests the lockfile was hand-edited or not regenerated cleanly.
🟡 LOW Three agent-interface copies coexist in the dependency graph — pnpm-lock.yaml
The tree now contains agent-interface 0.53.0 (pulled by sandbox@0.27.0, line 3215), 0.54.0 (regular dep of agent-core@0.9.1 and agent-eval@0.145.16, lines 3196/3206), and 0.55.0 (root catalog, line 3227). Since agent-interface ships runtime zod schemas (agentProfileSchema, sha256DigestSchema) plus @noble/hashes and spdx-expression-parse, duplicate copies risk schema/type identity mismatch when objects validated by one copy cross into code com
🟡 LOW Three copies of agent-interface (0.53.0/0.54.0/0.55.0) coexist in the dev tree — pnpm-lock.yaml
pnpm why @tangle-network/agent-interfaceon the installed tree confirms 0.53.0 (via @tangle-network/sandbox@0.27.0, which pins agent-core@0.9.0/interface 0.53.0 as direct deps — lines 3187/3215/3248), 0.54.0 (inside agent-core@0.9.1 and agent-eval@0.145.16), and 0.55.0 (root, knowledge, profile-materialize). Any value crossing the runtime↔agent-eval boundary passes between two interface generations; zod schemas and structural types keep it working now, but instance-identity checks or symbol-keyed registries would split silently. The sandbox 0.27.0 pin was deliberately not bumped this wave (consistent with the changelog's three-generation strategy) — track it for the next
🟡 LOW Three copies of agent-interface and two of agent-core coexist in the dependency tree — pnpm-workspace.yaml
Installed tree contains agent-interface 0.53.0 (via @tangle-network/sandbox@0.27.0), 0.54.0 (hard dep of agent-eval@0.145.16 and agent-core@0.9.1), and 0.55.0 (catalog); agent-core 0.9.0 (via sandbox) and 0.9.1 (catalog). Verified the repo imports only zod schemas and pure functions from agent-interface (applyAgentProfileDiff, digest fns, *Schema), so no instanceof/symbol-branding hazard across copies exists today. Informational: any future runtime-value identity checks across these boundaries would silently fail. No action required in this shot.
🟡 LOW agent-interface 0.55.0 violates declared peer ranges of agent-knowledge 8.0.2 and agent-profile-materialize 0.15.2 — pnpm-workspace.yaml
Catalog pins '@tangle-network/agent-interface': 0.55.0 while lockfile shows agent-knowledge@8.0.2 declares peer '>=0.54.0 <0.55.0' (pnpm-lock.yaml:1157-1163, snapshot resolved at 0.55.0 on :3233) and agent-profile-materialize@0.15.2 declares '>=0.47.0 <0.54.0' (resolved at 0.55.0 on :3240). The two declared ranges are mutually disjoint, so no pin satisfies both. pnpm resolves anyway (no strict-peer-dependencies; no .npmrc), producing install warnings and a latent risk if either package later ships a patch relying on <0.55 semantics. CHANGELOG documents this as deliberate (0.54/0.55 additive, typecheck+tests pass — I verified tsc and fixture check clean). Fix: upstream, republish knowledge/materialize with widened peers; nothing to change in this repo now.
tangletools · 2026-08-16T08:15:21Z · trace
tangletools
left a comment
There was a problem hiding this comment.
❌ 2 Blocking Findings — ebb1b976
Full multi-shot audit completed 5/5 planned shots over 9 changed files. Global verifier still owns final merge decision. | Full multi-shot audit completed 5/5 planned shots over 9 changed files. Global verifier still owns final merge decision. | Full multi-shot audit completed 5/5 planned shots over 9 changed files. Global verifier still owns final merge decision.
Full immutable report for this review: trace
Summary comment for this run: full summary
tangletools · 2026-08-16T08:15:21Z · immutable trace
Redirected to
|
|
Superseded by #881, which adopts This PR moved the peer to It was also #881 supersedes it end to end:
A clean install under #881 resolves exactly one |
Problem
agent-interfacepublishes minors faster than the fleet can adopt them, and each one takes the npmlatesttag on arrival.04:28:43Z>=0.53.0 <0.54.0.04:30:11Zagent-interface@0.54.0published — 88 seconds later — takinglatest.04:30:16Zagent-core@0.9.1published, dep interface0.54.0.06:09:50Zagent-eval@0.145.16published, dep interface0.54.0.06:19:28Zagent-knowledge@8.0.2published, peer interface>=0.54.0 <0.55.0.06:44:30Zagent-interface@0.55.0published — 2h 14m after 0.54.0 — takinglatestin turn.Because 0.135.3 and
agent-knowledge8.0.2 landed on adjacent single-generation windows, their ranges are disjoint. The break is therefore not an@latestproblem on the interface — it holds when the interface is never named:Change — release 0.135.4
versionbenchversionagent-interface>=0.53.0 <0.54.0>=0.53.0 <0.56.0agent-eval>=0.145.15 <0.146.0>=0.145.16 <0.146.0agent-interfaceagent-evalagent-knowledgeagent-coreagent-profile-materializeThe peer holds three generations, not the newest one alone. A consumer carrying a package capped below 0.54 resolves against interface 0.53; one carrying
agent-knowledge8.0.2 resolves against 0.54; one carryingagent-core0.9.2 resolves against 0.55. A single-generation window makes every adoption wave atomic, and at a 2h14m publish cadence a 5-repository wave cannot be atomic. That is the condition that produced this break, so the window is what changes.The
agent-evalfloor moves in the SAME commit.agent-knowledge8.0.2 requiresagent-eval >=0.145.16, and 0.145.16 is the release that depends on interface 0.54.0. A floor that moves generation alone leaves the same disjoint pair one level down.agent-corestays at 0.9.1 rather than 0.9.2, becauseagent-eval0.145.16 pins 0.9.1 and a consumer install should hold one copy.Evidence that both generations are additive
Published tarballs, exported-symbol lists diffed per changed
.d.ts.0.53.0 → 0.54.0 — identical file lists, four
dist/*.d.tschanged:isCredentialBearingProfileConfigName(profile-schema),isRuntimeProcessControlEnvironmentName(profile-security).RequestedInteractionsfrom{permission?, question?, plan?}toReadonly<Record<string, boolean | undefined>>, andRequestedInteractionsSchemafrom a strictZodObjectto aZodRecord. Every old value stays assignable.RequestedInteractionsentered the package in 0.53.0, one day earlier, and is read by zero files in agent-runtime, agent-knowledge, agent-app, agent-eval, sandbox-ui.0.54.0 → 0.55.0 — one file added:
dist/environment-interactive.{d.ts,js}.startInteractive?andinteractive?onAgentEnvironment; optionalinteractiveAgent?capability block onAgentEnvironmentCapabilities;AgentInteractiveSession*schemas and helpers re-exported fromindex.Proof, on this head, against interface 0.55.0
pnpm install: resolves interface 0.55.0,agent-eval0.145.16,agent-knowledge8.0.2,agent-core0.9.1,agent-profile-materialize0.15.2.pnpm typecheck(tsc --noEmitplus the examples project): exit 0.pnpm test:Test Files 216 passed | 2 skipped (218),Tests 2714 passed | 6 skipped (2720).node scripts/check-version-bump.mjs:Consumer-visible package surfaces carry their version bumps—bench/package.json: 3 consumer-visible change(s), paid for by 0.8.11 -> 0.8.12,package.json: 5 consumer-visible change(s), paid for by 0.135.3 -> 0.135.4.pnpm run check:testing-fixture:agent improvement proposal fixtures are current.pnpm run docs:check:docs freshness: OK — no drift detected in the curated docs.Rest of the wave
>=0.54.0 <0.56.0. This is what unblocks a plainagent-interface@latestinstall.>=0.36.0 <0.56.0.agent-profile-materializepeer>=0.47.0 <0.56.0. It was the one unmet peerpnpm peers checkreported here.06:45:13Z, moving the shell off the 0.47 line onto 0.53. Its follow-up onto this window waits on 0.135.4 publishing.Root causes filed
nexttag, promote tolatestonly after N first-party consumers accept the version. Removes the race instead of buying time.Refs agent-runtime#694.