Repository navigation
Develop is red: wire the animation MCP into every contract that enumerates servers, and derive the collector's package flags from the shared rule - #585
Merged
Conversation
…ctor contracts it joined (PRD-760) PRD-760 made threenative-animation a default server in every scaffold, but the places that enumerate the servers still listed four. - doctor: the server resolves to @threenative/core like engine and blender, so its pin is core's version, not an unpublished dependency. - golden path and registry install: add the server's recorded surface (animation-mcp-tools.json, captured by scripts/capture-blender-mcp-tools.ts animation and by prepare-release) and a safe animation_inspect probe on an owned empty GLB. - release spec: the bundled server list names the fifth server. - package externals: threenative-animation-mcp is a self-contained stdio tool (core commits its bundle, its page loads one browser file), so it is excused from the shared-runtime gate, and the excuse requires a bin. - quality: waiver reason on the v2/v3 recipe cast in upgradeLog.
… flag from the shared rule A develop push builds threenative-animation-mcp, so the collector passed it to the scaffolder and threw TN_PROD_PACKAGE_FLAG_UNSUPPORTED: its copy of the flag rule named the two MCP packages by hand. macOS desktop core, Windows desktop core, desktop parity and test-native all died there. It now applies scripts/workspace-packages.ts workspacePackageSourceFlag's rule (scoped packages derive their flag, an unscoped threenative-* package drops its prefix), and profile-production.spec.ts holds the copy equal to the original for every workspace package, so the next package cannot drift it again. Verified: profile-production.spec.ts 11 passed; the case fails with the old rule restored.
jonit-dev
force-pushed
the
fix/develop-animation-mcp-red
branch
from
October 28, 2026 18:10
0aea26b to
318e719
Compare
Change scope cancelled three times on PR #574 (merge queue attempt 3, PR run 40727651261, merge queue attempt 7) with actions/checkout still fetching every branch of the 3.9 GB repository when the job's 5-minute timeout hit, on loaded tn-local runners. Scope reads commits and trees (rev-parse, cat-file, rev-list) and fetches missing commits itself, so the checkout takes filter: blob:none. Measured locally: a blob-less fetch of all 532 branches takes 8 s and 20 MB with the full 2263-commit develop history, and ci-change-scope.mjs prints a byte-identical plan for the PR merge commit 952193d from the blob-less clone and from a full clone (scope=review). Checks: the 29 workflow specs 804/804.
3 tasks
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What is this PR about?
Repairs every failure on develop's head
72590f3a4(#582). develop has been red for two runs, so PR #574, #583 and any other PR into develop pays a red base.Why does it matter?
Nothing lands until develop is green: the same tree fails 10 jobs with real product causes, not flakes.
The failures, and why
PRD-760 made
threenative-animationa default MCP server in every scaffold, but the places that enumerate servers still listed four, and the native collector still knew two MCP package names by hand.doctor.spec.ts > pins every MCP server at the version @threenative/core actually installs,verify-golden-path.spec.ts > probes every server the scaffold actually wirespackage-externals.spec.ts,verify-registry-install.spec.ts(8 cases)release.spec.ts > validates the real candidate's template pins and bundled MCP serversquality gate failed: 1 suppression-class finding(s) are new, grew, or lack a waiver reasonupgradeLoghas no waiver reasonTN_PROD_EVIDENCE_INVALID: TN_PROD_PACKAGE_FLAG_UNSUPPORTED: threenative-animation-mcpblender-mcpandengine-mcpby handDone
scripts/workspace-packages.tsalready owns it; the collector's copy now states the same rule — byte-identical to PR Starter kits: Unreal look, shooter revamp, performance by construction, kit contract and worker mode (PRD-723/746/747/748/749/752) #574's copy, so the 557-file PR merges without touching this hunk — andprofile-production.spec.tsholds the two equal for every workspace package. Red → green: with the old rule restored the new case fails withTN_PROD_PACKAGE_FLAG_UNSUPPORTED: threenative-animation-mcp.animation_inspecton an owned empty GLB), registry install, the release spec's bundled list, and a recordedanimation-mcp-tools.jsoncaptured byprepare-release.bin— a game never imports it, so no second copy of three.js can meet the game's own.Change scopewas cancelled three times at exactly 5m00s–5m09s withactions/checkoutstill running: the job's 5-minute timeout against afetch-depth: 0clone of a 3.9 GB repository. This carries Starter kits: Unreal look, shooter revamp, performance by construction, kit contract and worker mode (PRD-723/746/747/748/749/752) #574's measured fix (blob-less fetch,filter: blob:none, 8 s and 20 MB for the same plan) so the repair is reviewable at all. Regression cases:ci-structure.spec.ts+ci-needs.spec.ts234 passed.Evidence
pnpm exec vitest run packages/runtime-native/__tests__/profile-production.spec.ts— 11 passed; the new case fails against the old rule (verified by stashing the rule only).pnpm exec vitest run packages/create-threenative/__tests__/doctor.spec.ts scripts/__tests__/{release,package-externals,quality-json,mcp-tool-schemas,verify-registry-install,verify-golden-path}.spec.ts— 200 passed, 7 files.pnpm exec vitest run scripts/__tests__/ci-structure.spec.ts scripts/__tests__/ci-needs.spec.ts— 234 passed.pnpm budgets—budgets ok;pnpm quality— exit 0, no suppression-class finding is new, grew, or unwaived;pnpm typecheck— exit 0.pnpm exec biome checkon both touched source files — warnings only (pre-existing complexity in the collector).threenative-animation-mcp → --animation-mcp-package → threenative-animation-mcp, and all four unscoped packages round-trip.318e7192(ci.yml, manual qualification) — the macOS/Windows native legs cannot run from a workstation.Doubt left open
native-platforms / Desktop web/native parityalso failedTN_FRAME_BUDGET_PHASE_OVER_BUDGET: the 'ui' phase is 2.75 ms at p95on one develop run only, after passing on the previous one. Nothing in #581/#582 reachespackages/runtime-nativerender,packages/ui, or the UI composite, and the bound is not edited here. If it recurs on a develop run it is a real regression and needs its own diagnosis.Conflict note for #583
#583 waives the same
upgradeLogcast with its own wording. Whoever merges second resolves one line; this side is written first only because the base must go green for anything else to land.