promote: 17 memory updates from 2026-05-26 scan#16
Open
gyulsbox wants to merge 1 commit into
Open
Conversation
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.
Summary
promote-clidetected 17 repeated AI review pattern(s) across 65 PR(s) over the last 90 days and is proposing the corresponding memory updates. See Memory promotion details below for evidence and reasoning per candidate.Why
Repeated review comments often encode implicit conventions that future agents and contributors should already know. This PR promotes 17 such pattern(s) into durable repository memory so the same review feedback doesn't have to be re-issued PR after PR.
Changes
docs/test-stubs/test-files-must-import-all-vitest-functions-before.md— Test files must import all Vitest functions (beforeAll, describe, expect, it) that are used to avoid runtime errors. (candidate_014, confidence 0.95).claude/rules/multiple-packages-declare-cli-entrypoints-in-bin-b.instructions.md— Multiple packages declare CLI entrypoints inbin/but fail to includebin/in theirfilesallowlist, causing broken binaries on npm publish. (candidate_018, confidence 0.95).claude/rules/test-files-should-use-the-standard-testserverandcl.instructions.md— Test files should use the standardtestServerAndClientResourcepattern instead of manually managing server lifecycle and client setup. (candidate_031, confidence 0.85)AGENTS.md— Avoid non-null assertions (!) in TypeScript code; use explicit type guards or optional chaining instead. (candidate_035, confidence 0.85).claude/rules/eslint-rules-and-suppressions-must-be-migrated-to.instructions.md— ESLint rules and suppressions must be migrated to Oxlint equivalents before Oxlint is enabled in a package. (candidate_037, confidence 0.75).claude/rules/test-files-should-use-await-using-pattern-with-tes.instructions.md— Test files should useawait usingpattern withtestServerAndClientResourcedirectly instead ofrun(...)wrapper, and configure client behavior via callback pattern. (candidate_038, confidence 0.85).claude/rules/typesnode-major-version-must-align-with-enginesnod.instructions.md— @types/node major version must align with engines.node specification across package.json files. (candidate_041, confidence 0.85)AGENTS.md— Avoid destructuring directly in function parameter declarations; use property access instead. (candidate_049, confidence 0.85).claude/rules/directory-read-error-handling-in-wwwscriptscheck-t.instructions.md— Directory-read error handling in www/scripts/check-twoslash.ts should only suppress ENOENT errors, not all filesystem errors. (candidate_058, confidence 0.85).claude/rules/multiple-packagejson-files-incorrectly-reference-n.instructions.md— Multiple package.json files incorrectly reference non-existent ./bin/intent.js entry points, and workflow paths reference incorrect documentation directory structure. (candidate_060, confidence 0.85).claude/rules/the-maxbatchsize-parameter-must-be-validated-as-a.instructions.md— ThemaxBatchSizeparameter must be validated as a finite positive integer to prevent runtime bugs from NaN, Infinity, and invalid values. (candidate_061, confidence 0.85).claude/rules/server-sent-events-retry-logic-should-not-consume.instructions.md— Server-sent events retry logic should not consume retry budget on initial connection and should exclude AbortError from retryable conditions. (candidate_062, confidence 0.85).claude/rules/github-actions-workflows-using-lerna-publish-must.instructions.md— GitHub Actions workflows usinglerna publishmust either grantpermissions.contents: writeor explicitly use--no-pushand--no-git-tag-versionflags to avoid permission failures. (candidate_064, confidence 0.85).claude/rules/multiple-trpc-packages-expose-a-generic-intent-bin.instructions.md— Multiple @trpc/* packages expose a genericintentbinary that causes node_modules/.bin collisions and shadows @tanstack/intent; use namespaced binary names instead. (candidate_065, confidence 0.85).claude/rules/multiple-packages-incorrectly-declare-binintent-en.instructions.md— Multiple packages incorrectly declarebin.intententries pointing to non-existent./bin/intent.jsfiles, breaking CLI executables in published packages. (candidate_070, confidence 0.85)docs/test-stubs/test-helpers-must-avoid-temporal-dead-zone-errors.md— Test helpers must avoid temporal dead zone errors by declaring subscription variables before subscribe() calls to handle synchronous onError callbacks safely. (candidate_071, confidence 0.85).claude/rules/tanstack-react-query-test-files-must-use-namespace.instructions.md— TanStack React Query test files must use namespace imports for React (import * as React) rather than named imports. (candidate_072, confidence 0.85)docs/promote/digests/2026-05-26.md— full scan digest (included for traceability)Testing
needs_human_decisioncandidates), seedocs/promote/digests/2026-05-26.md.Memory promotion details
Generated by
promote-cliv0.7.1 from scan run on 2026-05-26.Bundled candidates
1. Test files must import all Vitest functions (beforeAll, describe, expect, it) that are used to avoid runtime errors. (target: test, confidence: 0.95)
docs/test-stubs/test-files-must-import-all-vitest-functions-before.mdpackages/openapi/test/cyclicTypes.test.ts, #7252packages/client/skills/links/references/link-options.md, #7231packages/openapi/test/edgeCases.test.ts, #7231packages/openapi/test/edgeCases.test.ts, #7283packages/openapi/test/cyclicTypes.test.ts, …and 1 more2. Multiple packages declare CLI entrypoints in
bin/but fail to includebin/in theirfilesallowlist, causing broken binaries on npm publish. (target: path_scoped_rule, confidence: 0.95).claude/rules/multiple-packages-declare-cli-entrypoints-in-bin-b.instructions.mdpackages/next/package.json, #7252packages/server/package.json, #7252packages/tanstack-react-query/package.json, #7252packages/next/package.json, #7252packages/client/package.json, …and 3 more3. Test files should use the standard
testServerAndClientResourcepattern instead of manually managing server lifecycle and client setup. (target: path_scoped_rule, confidence: 0.85).claude/rules/test-files-should-use-the-standard-testserverandcl.instructions.mdpackages/tests/server/httpSubscriptionLink.fetch.test.ts, #7231packages/openapi/test/generate.test.ts4. Avoid non-null assertions (!) in TypeScript code; use explicit type guards or optional chaining instead. (target: agents, confidence: 0.85)
AGENTS.mdpackages/client/src/createTRPCClient.ts, #7195www/scripts/check-twoslash.ts5. ESLint rules and suppressions must be migrated to Oxlint equivalents before Oxlint is enabled in a package. (target: path_scoped_rule, confidence: 0.75)
.claude/rules/eslint-rules-and-suppressions-must-be-migrated-to.instructions.mdpackages/tanstack-react-query/package.json, #7206packages/react-query/src/internals/context.tsxeslintConfigand use Oxlint in their lint scripts. The pattern is actionable and scoped to packages undergoing this migration, making it a path-scoped rule rather than a general agent instruction.6. Test files should use
await usingpattern withtestServerAndClientResourcedirectly instead ofrun(...)wrapper, and configure client behavior via callback pattern. (target: path_scoped_rule, confidence: 0.85).claude/rules/test-files-should-use-await-using-pattern-with-tes.instructions.mdpackages/tests/server/httpSubscriptionLink.test.ts, #7262packages/tests/server/regression/batchStreamErrorCallIndex.test.tsawait usingoverrun()) and a consistent configuration approach (callback pattern). These are conventions that apply across multiple test files in the same domain.7. @types/node major version must align with engines.node specification across package.json files. (target: path_scoped_rule, confidence: 0.85)
.claude/rules/typesnode-major-version-must-align-with-enginesnod.instructions.mdpackage.json, #7200package.json8. Avoid destructuring directly in function parameter declarations; use property access instead. (target: agents, confidence: 0.85)
AGENTS.mdpackages/openapi/test/types.ts, #7199packages/tests/server/transformer.test.ts9. Directory-read error handling in www/scripts/check-twoslash.ts should only suppress ENOENT errors, not all filesystem errors. (target: path_scoped_rule, confidence: 0.85)
.claude/rules/directory-read-error-handling-in-wwwscriptscheck-t.instructions.mdwww/scripts/check-twoslash.ts, #7196www/scripts/check-twoslash.ts10. Multiple package.json files incorrectly reference non-existent ./bin/intent.js entry points, and workflow paths reference incorrect documentation directory structure. (target: path_scoped_rule, confidence: 0.85)
.claude/rules/multiple-packagejson-files-incorrectly-reference-n.instructions.mdpackages/client/package.json, #7252packages/openapi/package.json, #7252packages/tanstack-react-query/package.json, #7252packages/next/package.json, #7252.github/workflows/notify-intent.yml, …and 1 more11. The
maxBatchSizeparameter must be validated as a finite positive integer to prevent runtime bugs from NaN, Infinity, and invalid values. (target: path_scoped_rule, confidence: 0.85).claude/rules/the-maxbatchsize-parameter-must-be-validated-as-a.instructions.mdpackages/server/src/unstable-core-do-not-import/http/types.ts, #7191packages/server/src/unstable-core-do-not-import/http/contentType.tsmaxBatchSizeparameter that appears in multiple files within the http package. It's not a general coding convention but rather a domain-specific validation requirement for this particular parameter across the http module. The pattern shows the same underlying issue (insufficient input validation) in related files, making it suitable for a path-scoped rule.12. Server-sent events retry logic should not consume retry budget on initial connection and should exclude AbortError from retryable conditions. (target: path_scoped_rule, confidence: 0.85)
.claude/rules/server-sent-events-retry-logic-should-not-consume.instructions.mdpackages/openapi/test/routers/errorFormatterRouter-heyapi/core/serverSentEvents.gen.ts, #7231packages/openapi/test/routers/appRouter-heyapi/core/serverSentEvents.gen.ts13. GitHub Actions workflows using
lerna publishmust either grantpermissions.contents: writeor explicitly use--no-pushand--no-git-tag-versionflags to avoid permission failures. (target: path_scoped_rule, confidence: 0.85).claude/rules/github-actions-workflows-using-lerna-publish-must.instructions.md.github/workflows/release-tmp.yml, #7247.github/workflows/release-canary.yml.github/workflows/that use Lerna for publishing. The pattern identifies a concrete incompatibility between read-only content permissions and Lerna's default git operations. It's not a general coding convention (agents) but rather a path-scoped rule for workflow files that use this tool.14. Multiple @trpc/* packages expose a generic
intentbinary that causes node_modules/.bin collisions and shadows @tanstack/intent; use namespaced binary names instead. (target: path_scoped_rule, confidence: 0.85).claude/rules/multiple-trpc-packages-expose-a-generic-intent-bin.instructions.mdpackages/server/package.json, #7252packages/server/package.json, #7252packages/server/package.json, #7252packages/client/package.json, #7252packages/next/package.json15. Multiple packages incorrectly declare
bin.intententries pointing to non-existent./bin/intent.jsfiles, breaking CLI executables in published packages. (target: path_scoped_rule, confidence: 0.85).claude/rules/multiple-packages-incorrectly-declare-binintent-en.instructions.mdpackages/server/package.json, #7252packages/client/package.json, #7252packages/tanstack-react-query/package.json, #7252packages/client/package.json, #7252packages/next/package.json, …and 5 more16. Test helpers must avoid temporal dead zone errors by declaring subscription variables before subscribe() calls to handle synchronous onError callbacks safely. (target: test, confidence: 0.85)
docs/test-stubs/test-helpers-must-avoid-temporal-dead-zone-errors.mdpackages/tests/server/websockets.test.ts, #7279packages/tests/server/httpSubscriptionLink.test.ts, #7279packages/tests/server/websockets.test.ts17. TanStack React Query test files must use namespace imports for React (import * as React) rather than named imports. (target: path_scoped_rule, confidence: 0.85)
.claude/rules/tanstack-react-query-test-files-must-use-namespace.instructions.mdpackages/tanstack-react-query/test/client.test.tsx, #7362packages/tanstack-react-query/test/polymorphism.test.tsxSafety
needs_human_decisioncandidates included) is committed atdocs/promote/digests/2026-05-26.md.