CodeVetter · Repo Unpack · Contributor handoff
solidjs/solid
Begin with package exports and build/test configuration before editing runtime behavior, because environment selection changes implementation semantics. Keep client/server parity, owner cleanup, hydration IDs, and store safety guards explicit in any proposed change. Tests and CI were inspected, not executed, and this brief is a bounded source inventory rather than exhaustive coverage or validation.
- Use the repository's pnpm/Turbo workflow: root scripts coordinate build, types, tests, and coverage, and CONTRIBUTING documents pnpm install/build/test for an executable development session.
- Before changing a public API, read its core export, conditional package map, and Rollup target; source tests alias implementations, while consumers load built artifacts selected by environment.
- Treat signal.ts as a shared runtime hotspot: Observer/Listener slots, Owner trees, tentative transition state, and cleanup are coupled across readSignal, writeSignal, completeUpdates, and cleanNode.
- For store changes, read store.ts, modifiers.ts, and server.ts together and preserve unsafe-key traversal/merge guards, deletion semantics, and permitted leaf keys.
- For asynchronous component changes, inspect both lazy implementations, resource/Suspense integration, and rejected-import regressions; the server test verifies a subsequent request retries the rejected module.
- In a separately authorized executable task, use the relevant Vitest file first, then the package test script for both environments and test-types for signature changes; these commands are recommendations, not results from this inspection. (inferred)
- Do not interpret inspected coverage as server validation: the client V8 report excludes server source, and the type-test configuration also excludes test/server.
- Respect test-global interactions: client isolate:false, the MessageChannel replacement, and explicit scheduler resetting in the transition regression can affect scheduling-focused tests.
- Avoid mistaking external adapters for local implementations: DOM, SSR, hyperscript, tagged-template, and universal expression engines are re-exported dependency code; fixes may require dependency-level investigation.
- Keep downloaded integration execution separate from routine import checking: the default integration test uses test:imports, whereas test:integrations invokes a suite with downloads, shell commands, packing, and deletion.
- Follow the established formatting and TypeScript configuration: two-space indentation, semicolons, double quotes, no trailing commas, strict NodeNext resolution, preserved JSX, and declaration generation.
- Release operations are explicit root scripts, and Changesets links solid-js with babel-preset-solid; publishing requires build/types and should not be conflated with local verification.