[pull] main from CopilotKit:main - #93
Merged
Merged
Conversation
…n merge (#367) The drift-sync bot built its commit **subject** by interpolating every changed family. On the first run that recorded ten deprecations, that produced a **525-character header**, and commitlint rejects anything over 100 — so the bot opened PR #366 that can never merge, putting a human back in the loop for pure bookkeeping. This was always latent. It stayed hidden because ten deprecations used to mean "page a human" rather than a mechanical commit, and at one change the unbounded subject is only 94 characters — just under the limit. ## Change The subject is now bounded for any number of changes, degrading by *count* rather than by characters: it names how many families and which providers, ending in a form whose length grows only with the count's digits. The full per-family detail moves to the commit body, where nothing is lost and `body-max-line-length` is respected. The needs-human subject was already a fixed 72-character string and is unchanged. ## Verification Red drives the real construction path with the actual ten deprecations from production run `31225520102`. Its output is **byte-identical to the bot's real commit `3e70a91`** — 525 characters, real commitlint exit 1. Green, same inputs, measured at 1 / 10 / 50 / 200 changes: **67 / 70 / 70 / 71** characters for one provider, and 67 / 86 / 86 / 87 across all three. Growth is only the count's digits, so the bound is structural rather than a slice. At 200 changes it still reads as a complete sentence; at one change it reads "1 family:", not "1 changes". Fallback forms were forced with synthetic long provider names — they engage at six or more providers and stay within the limit as whole sentences. Body integrity is proven by building real commits and linting them with the repo's own config: the 200-change message passes with all 200 detail triples present in the stored body. The checks are non-vacuous, verified by controls that must fail and do: the reconstructed 526-character header fails `header-max-length`, and a 162-character body line fails `body-max-line-length`. Restoring the unbounded interpolation reds 7 of the 10 new tests. The three survivors are honest and explained: at one change the old subject is only 94 characters, which is precisely why this defect stayed invisible until a ten-family run.
Recorded in deprecatedFamilies.anthropic — each family is absent from the live /models listing. The mock is retained for every still-referenced family, so tests that pin these models keep passing. - claude-3-5-haiku: still referenced in aimock source — mock retained - claude-3-5-sonnet: still referenced in aimock source — mock retained - claude-3-7-sonnet: still referenced in aimock source — mock retained - claude-3-haiku: still referenced in aimock source — mock retained - claude-3-opus: still referenced in aimock source — mock retained - claude-3-sonnet: still referenced in aimock source — mock retained - claude-haiku-4: still referenced in aimock source — mock retained - claude-opus-4: still referenced in aimock source — mock retained - claude-opus-4-1: no remaining aimock reference — droppable from includeFamilies in a reviewed re-pin - claude-sonnet-4: still referenced in aimock source — mock retained
## Summary
Auto-generated, DATA-ONLY model-family sync (zero-LLM).
<!-- drift-changeset: c4c4866c6c7467e8 -->
> **Needs human review + merge.** This PR was opened by the
> deterministic drift-sync pipeline after `drift-sync-check`
> passed (changed-file allowlist, checksum-pin re-assert, clean
> re-collect). It is NOT auto-merged — review CI, the diff, and
> merge.
### drift-sync-check verdict
```
npm warn Unknown project config "minimum-release-age". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
npm warn Unknown project config "block-exotic-subdeps". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
drift-sync-check passed: changed files are data-only, classification pins intact, clean re-collect
reason=ok
```
### drift-sync outcome
```
npm warn Unknown project config "minimum-release-age". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
npm warn Unknown project config "block-exotic-subdeps". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
mechanical sync applied and drift-sync-check passed
[deprecation-recorded] anthropic/claude-3-5-haiku: "claude-3-5-haiku" is absent from the live /models listing — recorded in deprecatedFamilies.anthropic (still referenced in aimock source — mock retained)
[deprecation-recorded] anthropic/claude-3-5-sonnet: "claude-3-5-sonnet" is absent from the live /models listing — recorded in deprecatedFamilies.anthropic (still referenced in aimock source — mock retained)
[deprecation-recorded] anthropic/claude-3-7-sonnet: "claude-3-7-sonnet" is absent from the live /models listing — recorded in deprecatedFamilies.anthropic (still referenced in aimock source — mock retained)
[deprecation-recorded] anthropic/claude-3-haiku: "claude-3-haiku" is absent from the live /models listing — recorded in deprecatedFamilies.anthropic (still referenced in aimock source — mock retained)
[deprecation-recorded] anthropic/claude-3-opus: "claude-3-opus" is absent from the live /models listing — recorded in deprecatedFamilies.anthropic (still referenced in aimock source — mock retained)
[deprecation-recorded] anthropic/claude-3-sonnet: "claude-3-sonnet" is absent from the live /models listing — recorded in deprecatedFamilies.anthropic (still referenced in aimock source — mock retained)
[deprecation-recorded] anthropic/claude-haiku-4: "claude-haiku-4" is absent from the live /models listing — recorded in deprecatedFamilies.anthropic (still referenced in aimock source — mock retained)
[deprecation-recorded] anthropic/claude-opus-4: "claude-opus-4" is absent from the live /models listing — recorded in deprecatedFamilies.anthropic (still referenced in aimock source — mock retained)
[deprecation-recorded] anthropic/claude-opus-4-1: "claude-opus-4-1" is absent from the live /models listing — recorded in deprecatedFamilies.anthropic (no remaining aimock reference — droppable from includeFamilies in a reviewed re-pin)
[deprecation-recorded] anthropic/claude-sonnet-4: "claude-sonnet-4" is absent from the live /models listing — recorded in deprecatedFamilies.anthropic (still referenced in aimock source — mock retained)
npm warn Unknown env config "block-exotic-subdeps". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
npm warn Unknown env config "minimum-release-age". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
npm warn Unknown project config "minimum-release-age". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
npm warn Unknown project config "block-exotic-subdeps". This will stop working in the next major version of npm. See `npm help npmrc` for supported config options.
�[33m[STARTED]�[39m Backing up original state...
�[32m[COMPLETED]�[39m Backed up original state in git stash (b343bb0)
�[33m[STARTED]�[39m Running tasks for staged files...
�[33m[STARTED]�[39m package.json�[0;90m — 1 file�[0m
�[33m[STARTED]�[39m *.{ts,mts,js,mjs,cjs,json,html,css,md}�[0;90m — 1 file�[0m
�[33m[STARTED]�[39m *.{ts,mts,js,mjs}�[0;90m — 1 file�[0m
�[33m[STARTED]�[39m prettier --write
�[33m[STARTED]�[39m eslint --fix
�[32m[COMPLETED]�[39m prettier --write
�[32m[COMPLETED]�[39m *.{ts,mts,js,mjs,cjs,json,html,css,md}�[0;90m — 1 file�[0m
�[32m[COMPLETED]�[39m eslint --fix
�[32m[COMPLETED]�[39m *.{ts,mts,js,mjs}�[0;90m — 1 file�[0m
�[32m[COMPLETED]�[39m package.json�[0;90m — 1 file�[0m
�[32m[COMPLETED]�[39m Running tasks for staged files...
�[33m[STARTED]�[39m Applying modifications from tasks...
�[32m[COMPLETED]�[39m Applying modifications from tasks...
�[33m[STARTED]�[39m Cleaning up temporary files...
�[32m[COMPLETED]�[39m Cleaning up temporary files...
[fix/drift-2026-08-07-31225520102 3e70a91] fix(drift-sync): mechanical model-family sync (deprecation-recorded anthropic/claude-3-5-haiku, deprecation-recorded anthropic/claude-3-5-sonnet, deprecation-recorded anthropic/claude-3-7-sonnet, deprecation-recorded anthropic/claude-3-haiku, deprecation-recorded anthropic/claude-3-opus, deprecation-recorded anthropic/claude-3-sonnet, deprecation-recorded anthropic/claude-haiku-4, deprecation-recorded anthropic/claude-opus-4, deprecation-recorded anthropic/claude-opus-4-1, deprecation-recorded anthropic/claude-sonnet-4)
1 file changed, 10 insertions(+)
unchecked-providers=
reason=ok-applied
changeset-key=c4c4866c6c7467e8
```
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )