Skip to content

chore(deps): bump ai from 4.3.19 to 5.0.80 - #199

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/ai-5.0.80
Closed

chore(deps): bump ai from 4.3.19 to 5.0.80#199
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/npm_and_yarn/ai-5.0.80

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Oct 27, 2025

Copy link
Copy Markdown
Contributor

Bumps ai from 4.3.19 to 5.0.80.

Release notes

Sourced from ai's releases.

ai@5.0.80

Patch Changes

  • c7688ec: fix(ai): correct type field in arrayOutputStrategy from 'enum' to 'array'

ai@5.0.79

Patch Changes

  • 22ab538: feat(ai): add OAuth for MCP clients + refactor to new package

    This change replaces

    import { experimental_createMCPClient } from 'ai';
    import { Experimental_StdioMCPTransport } from 'ai/mcp-stdio';

    with

    import { experimental_createMCPClient } from '@ai-sdk/mcp';
    import { Experimental_StdioMCPTransport } from '@ai-sdk/mcp/mcp-stdio';

ai@5.0.78

Patch Changes

  • Updated dependencies [f1a8734]
    • @​ai-sdk/gateway@​2.0.1

ai@5.0.77

Patch Changes

  • 3568ebc: feat(ai): add convertDataPart option to convertToModelMessages

    Add optional convertDataPart callback for converting custom data parts (URLs, code files, etc.) to text or file parts that models can process. Fully type-safe using existing UIMessage generics.

Commits
  • bb38a3b Version Packages (#9802)
  • c7688ec Backport: fix(ai): correct type field in arrayOutputStrategy from 'enum' to '...
  • a17354f Backport: docs: fix agent streaming response example (#9799)
  • b36ca9b Version Packages (#9790)
  • 22ab538 Backport: feat(ai): add OAuth for MCP clients + refactor to new package (#9782)
  • 55cdf7a Backport: docs: add v6 beta announcement post (#9759)
  • 1ffedee Version Packages (#9764)
  • f1a8734 Backport: feat (provider/gateway): add models provider option for fallbacks (...
  • 8546087 Version Packages (#9751)
  • 3568ebc Backport: feat(ai): add convertDataPart option to convertToModelMessages (#9748)
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [ai](https://github.com/vercel/ai) from 4.3.19 to 5.0.80.
- [Release notes](https://github.com/vercel/ai/releases)
- [Changelog](https://github.com/vercel/ai/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vercel/ai/compare/ai@4.3.19...ai@5.0.80)

---
updated-dependencies:
- dependency-name: ai
  dependency-version: 5.0.80
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Oct 27, 2025
@dependabot @github

dependabot Bot commented on behalf of github Nov 3, 2025

Copy link
Copy Markdown
Contributor Author

Superseded by #204.

@dependabot dependabot Bot closed this Nov 3, 2025
@dependabot
dependabot Bot deleted the dependabot/npm_and_yarn/ai-5.0.80 branch November 3, 2025 00:43
edobry added a commit that referenced this pull request Aug 31, 2026
…text

## Summary

ADR-012 §Implementation Follow-Ups → *Child task 2* prescribes deriving `associations.tracksTask`
from content patterns and closes with a bullet that was never built:

> Validate by comparing structured associations against body-text grep

mt#4448 shipped the derivation (the backfill, and every `memory.create`) without it. Because
`extractTrackingTaskRefs` prefers a stored association and never re-scans the text, a false
positive minted once is **permanent** — immune to every later improvement to the patterns. This
ships the missing validation.

Measured over the full corpus (1,343 memories, 182 carrying `tracksTask`, 198 stored refs):
**9 refs across 9 records are false**, every one the detector firing on prose *about* retirement
rather than a retirement clause.

## Key changes

`scripts/rederive-memory-associations.ts` — dry-run by default; `--execute` requires a plan token
minted by the dry-run, aborts on drift, re-reads each record immediately before writing, and skips
any record whose `tracksTask` moved since the dry-run.
`scripts/rederive-memory-associations-results.json` — the committed measurement snapshot.

**Both derivations come from the shipped extractor.** A new `skipQuotationElision` option on
`extractTrackingTaskRefs` (`packages/domain/src/memory/staleness.ts`) reproduces the pre-mt#4454
behaviour, so the script can compare:

- `derivedNow` — what the extractor produces today (quotation-elided). Ground truth.
- `derivedRaw` — what it produced when the stored associations were **minted**.

A ref in `derivedRaw` but not `derivedNow` was minted from a quoted clause: the old patterns saw
it, the corrected ones do not. That is an exact statement about the write path, and it is the only
bucket this script corrects. The option is documented as archaeology with one caller and barred
from read/write paths — passing it reproduces a defect — and is an options bag rather than a second
exported function so it cannot be mistaken for a peer entry point.

Two other design points worth review:

1. **Per REF, not per record.** mem#1208 carries one true ref beside one false one.
2. **`not-derivable` is deliberately NOT actionable.** A derived value and an author-DECLARED value
   are byte-identical once stored. Measured support: 5 of the 7 `not-derivable` write-time records
   have `updated_at == created_at`, and the write path derives only when the caller supplied
   nothing — so those were explicitly authored. Auto-correcting that bucket would delete real
   associations.

### History: this PR was reworked mid-review

mt#4454 shipped the ADR-024 Rung 1 quotation prefilter **while this PR was in review**, which
invalidated the original design (a local approximation of that pass, written when the extractor had
none). Reworking onto the shipped primitive raised the finding count from 6 to 9 — the local copy
only elided code spans; the real one also covers part (b), prose-quoted spans.

That rework also surfaced a defect in the freshly-merged primitive itself (it blanked to spaces, so
`\s+` matched across elided holes and manufactured matches). Fixed separately in **mt#4792** /
PR #3502, merged and deployed; this PR sits on top of it.

## Testing

Execution evidence:

```
$ bun test --preload ./tests/setup.ts scripts/rederive-memory-associations.test.ts
 10 pass   0 fail   12 expect() calls

$ bun test --preload ./tests/setup.ts packages/domain/src/memory packages/domain/src/text
 205 pass   0 fail   381 expect() calls   (12 files)
```

**SC1 / AT1** — the write-time-minted population (16 records; boundary is the derivation commit
`d10d1243a`, 2026-08-24T20:56:48Z, not the calendar date):

```
mem#1237  mt#4525[quoted-only]     mem#1315  mt#4677[grounded]
mem#1239  mt#4529[grounded]        mem#1316  mt#4659[grounded]
mem#1243  mt#4449[not-derivable]   mem#1317  mt#4669[grounded]
mem#1249  mt#4473[grounded]        mem#1325  mt#4701[not-derivable]
mem#1253  mt#4548[not-derivable]   mem#1326  mt#4301[not-derivable]
mem#1267  mt#4347[not-derivable]   mem#1340  mt#1541[quoted-only]
mem#1302  mt#4658[grounded]        mem#1344  mt#4757[not-derivable]
mem#1308  mt#4666[not-derivable]   mem#1311  mt#4655[quoted-only]
```

**3 of 16** false (mem#1237 joined after the rework). Excluding the 5 provably-declared leaves 9–11
genuinely derived, so **27–33%**.

**SC2** — a **census, not a sample**: all 182 records carrying `tracksTask` were classified, so the
sample-size question is moot. Backfilled population: **6 false of 166 = 3.6%**.

**SC3 / SC5** — the mechanism, this diff. SC5 is now demonstrated rather than promised: mt#4454 DID
land mid-flight and the mechanism was re-pointed at it without changing the classification contract.

**SC6 / AT3** — discrimination control. mem#315 carries **both** verdicts through the same code
path in the same record: `mt#1034[grounded] mt#1503[quoted-only]`, keeping its genuine tracking
task while dropping the quoted one.

**AT2** — mem#1340 classified FALSE by the mechanism, not by hand-annotation: it appears in the
committed plan, and a unit test asserts the verdict from its verbatim stored text.

**SC4a / AT4** — dry-run half, plan token `4200dcaa2378b6e2`, measured 2026-08-31T01:12Z:

```
mem#1340  ['mt#1541']            -> []
mem#1311  ['mt#4655']            -> []
mem#1237  ['mt#4525']            -> []
mem#1208  ['mt#2056','mt#4454']  -> ['mt#4454']
mem#484   ['mt#2056']            -> []
mem#361   ['mt#1637']            -> []
mem#315   ['mt#1034','mt#1503']  -> ['mt#1034']
mem#199   ['mt#1034','mt#1503']  -> ['mt#1034']
mem#82    ['mt#1034','mt#1503']  -> ['mt#1034']
```

**SC4b** — the run against prod is NOT in this PR. Writing the memories table is a shared/
production state change held for explicit principal authorization; it is a data operation, and
merging this PR changes no memory record. SC4b remains owed and the task does not close until it
runs or is waived.

Negative control — the two-mode derivation: set `skipQuotationElision: false` so both derivations
are identical, and the comparison goes inert:

```
[control]   quoted-only (ACTIONABLE):  0     Records to correct: 0
[restored]  quoted-only (ACTIONABLE):  9     Records to correct: 9
```

Negative control — entrypoint guard: removed `if (import.meta.main)` and imported the module; it
opened Postgres and began a full scan. With the guard, only the pure exports.

**All nine read by hand, not counted** (mem#1208's discipline — a rate bounds volume and says
nothing about correctness):

| Record | Ref | The text that fired |
| --- | --- | --- |
| mem#1340 | mt#1541 | `` - `Retire when mt#1541 ships.` → HIT `` — a discrimination-control table documenting **this very extractor**, matched as its own fixture |
| mem#1311 | mt#4655 | `` `## Subsumed by mt#4655` `` — a code span quoting **another task's** spec heading |
| mem#1208 | mt#2056 | `` `retire when mt#2056 ships` `` — quoted while narrating it **as a known false positive** |
| **mem#484** | mt#2056 | *"Bridge memory `70ba7f79` had a budget criterion: **"retire when mt#2056 ships AND…"**"* — quoting ANOTHER memory's criterion. This is the record **mem#1208 documents as canonical**, and the pre-rework classifier missed it |
| **mem#1237** | mt#4525 | *"The condition this memory set for itself (**"retires when mt#4525…"**) is met"* — quoting its own superseded condition |
| **mem#361** | mt#1637 | *"This memory's budget said **"retire when mt#1637 ships."**"* — inside a `## RETIRED` historical record |
| mem#82 / #199 / #315 | mt#1503 | ``Example: `Budget: retire when ≥3 invocations in 14d; tracking task: mt#1503.` `` — the memory **teaching the budget format**, its own worked example read as a declaration |

**A sub-shape worth naming:** three of the nine are memories quoting **their own past retirement
condition** while recording that it has been discharged. Writing down that a budget fired re-mints
the association the budget was about — so this class recurs in exactly the records that are best
maintained.

**Bound on every rate above:** these are lower bounds. The classifier detects the `quoted-only`
shape only — a false positive whose clause is *unquoted* classifies `grounded` and is invisible
here.

Typecheck clean (8 projects); lint clean (4,214 files). Both against the session workspace.

## Deploy verification

This PR touches one deploy-surface file — `packages/domain/src/memory/staleness.ts`, for the
`skipQuotationElision` option. The original diff was scripts-only; the option arrived with the
mt#4792 rework, which is why this section postdates the first review round.

After merge I will run `mcp__minsky__deployment_wait-for-latest` for `minsky-mcp` with
`notBefore` = the merge timestamp and `expectCommitSha` = the merge SHA, read `buildIdentity`, and
— since that service is image-source and returns `indeterminate` by construction — correlate the
`Deploy MCP` workflow run against the merge SHA and assert the `/health` body's `service` field
rather than the status code. Deploy-SUCCESS alone is not the completion signal.

The change is additive and default-off: `skipQuotationElision` is undefined on every existing
caller, so the deployed read and write paths behave exactly as they do today.

Co-Authored-By: minsky-ai[bot] <minsky-ai[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants