maintain: Frameworks aktualisieren statt Security-Overrides löschen#7
Open
kaihaase wants to merge 3 commits into
Open
maintain: Frameworks aktualisieren statt Security-Overrides löschen#7kaihaase wants to merge 3 commits into
kaihaase wants to merge 3 commits into
Conversation
…s zu löschen Ein realer Wartungslauf (offers, 2026-07) hat 20+ Security-Overrides gelöscht, den Build zerlegt und musste komplett zurückgerollt werden. Ursache waren zwei Anweisungen im Plugin selbst. 1) Zirkuläre Override-Regel Der Agent bekam vorgegeben: "If override was for security and pnpm audit shows no vulnerability -> REMOVE override". Das ist zirkulär — das Audit ist ja nur deshalb sauber, WEIL der Override greift. Die Regel garantierte damit, dass jeder wirksame Security-Override entfernt wird. Neu: Overrides werden ANGEHOBEN, nicht gelöscht. Entfernen verlangt positiven Beweis via `pnpm why`, dass das Paket den Baum verlassen hat. Der häufigste reale Befund ist ohnehin ein anderer: Pins, die exakt eine Patch-Version unter ihrem Fix liegen (im Realfall 8 von 36, u.a. vite 7.3.2 statt >=7.3.5) — exakt, gepflegt aussehend und trotzdem verwundbar. 2) Frameworks waren aus dem Scope ausgeschlossen nest-server und nuxt-extensions pinnen ihre Dependencies exakt. Eine CVE in einer solchen Dependency ist per Override NICHT schließbar — der Override überstimmt nur das Framework und erzeugt eine ungetestete Kombination. Genau das passierte mit better-auth: Audit grün, API-Test rot. Der richtige Fix war nest-server 11.25.2 -> 11.27.6, das die gepatchte Version selbst mitbringt. maintain ist jetzt ein Orchestrator: - Phase 0 erkennt die Topologie (Fullstack? npm- oder vendor-Mode je Projekt, anhand projects/api/src/core/ bzw. projects/app/app/core/). - Phase 1 aktualisiert die Frameworks und routet nach Modus: vendor an nest-server-core-updater / nuxt-extensions-core-updater, npm-Major an nest-server-updater (der die Migration Guides hat), npm-Minor direkt. - Phase 2 gleicht die Peers des Frameworks an (@nestjs/* usw.). Wird sonst vergessen und äußert sich als scheinbar unzusammenhängender Typfehler: nach dem nest-server-Update existierte @nestjs/schedule zweimal (gegen @nestjs/common 11.1.19 und 11.1.23) und der Build brach mit "Class 'CronJobs' incorrectly extends base class 'CoreCronJobs'". - Phase 3 übergibt an npm-package-maintainer, Phase 4 verifiziert (check + E2E). - Rollback-Protokoll: Snapshot vor Phase 1, bei nicht reparierbarem Bruch zurückrollen statt einen halb migrierten Dependency-Baum zu hinterlassen. Der npm-package-maintainer darf in Vendor-Projekten src/core/ bzw. app/core/ nicht anfassen — das ist Sache der core-updater. Angepasst: maintain, maintain-check, maintain-post-feature, maintain-security (dort die Ausnahme für framework-gepinnte Pakete), der Agent und der Skill. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
enforce draft-only PRs and forbid merges in core contributors
add e2e DB isolation reference and harden update/check workflows
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.
Anlass
Ein realer Wartungslauf (
offers, 2026-07) hat über 20 Security-Overrides gelöscht, den Nuxt-Peer-Graph zerlegt und musste vollständig zurückgerollt werden. Beide Ursachen standen im Plugin selbst.1. Die Override-Regel war zirkulär
Der Agent bekam vorgegeben:
Das Audit ist aber nur deshalb sauber, weil der Override greift. Die Regel garantierte damit, dass jeder wirksame Security-Override gelöscht wird — und genau das ist passiert (
axios,lodash,kysely,drizzle-orm,unhead,qs,hono, …).Neu: Overrides werden angehoben, nicht gelöscht. Entfernen verlangt positiven Beweis via
pnpm why, dass das Paket den Dependency-Baum verlassen hat. Der häufigste reale Befund ist ohnehin ein anderer: Pins, die exakt eine Patch-Version unter ihrem Fix liegen (im Realfall 8 von 36, u. a.viteauf7.3.2statt>=7.3.5) — exakt, gepflegt aussehend, trotzdem verwundbar.2. Frameworks waren aus dem Scope ausgeschlossen
nest-serverundnuxt-extensionspinnen ihre Dependencies exakt. Eine CVE in einer solchen Dependency ist per Override nicht schließbar — der Override überstimmt nur das Framework und erzeugt eine Kombination, die niemand getestet hat. Beibetter-authging das Audit dadurch auf grün und ein API-Test auf rot. Der richtige Fix war nest-server11.25.2 → 11.27.6, das die gepatchte Version selbst mitbringt./lt-dev:maintenance:maintainist jetzt ein Orchestrator:projects/api/src/core/,projects/app/app/core/)nest-server-core-updater/nuxt-extensions-core-updater; npm-Major →nest-server-updater(hat die Migration Guides); npm-Minor → direkt@nestjs/*…)npm-package-maintainercheck+ E2E)Dazu ein Rollback-Protokoll: Snapshot vor Phase 1; bei nicht reparierbarem Bruch zurückrollen, statt einen halb migrierten Dependency-Baum zu hinterlassen.
Phase 2 wird zuverlässig vergessen und äußert sich als scheinbar unzusammenhängender Typfehler: Nach dem nest-server-Update existierte
@nestjs/schedulezweimal (aufgelöst gegen@nestjs/common@11.1.19und@11.1.23), und der Build brach mitClass 'CronJobs' incorrectly extends base class 'CoreCronJobs'.Vendor-Grenze
Der
npm-package-maintainerdarfsrc/core/bzw.app/core/nicht anfassen — das ist Sache der core-updater, die der Command vorher fährt.Geändert
commands/maintenance/maintain.md— Orchestrator (Phasen, Modus-Erkennung, Rollback)commands/maintenance/maintain-check.md— analysiert Framework-Drift und zu niedrige Pins statt „was könnte weg"commands/maintenance/maintain-post-feature.md— Overrides anheben statt löschencommands/maintenance/maintain-security.md— Ausnahme für framework-gepinnte Paketeagents/npm-package-maintainer.md— Priority 4 (anheben statt löschen), Priority 5 (Framework-Alignment), Vendor-Grenzeskills/maintaining-npm-packages/SKILL.md— Override-Retention-Regel, „Frameworks vor Paketen"🤖 Generated with Claude Code