CodeVetter · Repo Unpack · Contributor handoff
rolldown/rolldown
Future agents should begin with feature-local implementation and lifecycle documentation, then verify it against code. Safe boundaries distinguish public TypeScript sources, NAPI adapters, generated bindings, and Rust core state owners. Tests and CI were inspected, not executed; this brief supplies no passing result and its inventory is bounded. Suggested checks below are for a separately authorized implementation session, not actions performed during this investigation.
- Read the relevant internal-docs feature first, keep it synchronized with implementation changes, and verify proposals against source; lifecycle docs explicitly separate bundler-level from per-build data.
- Do not directly edit binding.cjs, binding.d.cts, debug generated output, or Rollup/test262 submodules; regenerate bindings from Rust through the documented build workflow.
- For public API changes, follow rolldown/index.ts → RolldownBuild → createBundlerOptions → BindingBundler/ClassicBundler, preserving deferred graph construction and fresh-output-build semantics.
- For watch/cache changes, read WatchTask before modifying phase order: it clears resolver/tsconfig caches, registers scan-discovered watches before propagating errors, and branches on skipWrite.
- Follow the path guide's known-UTF-8 convention, consuming rolldown_std_utils helpers for owned paths, absolute explicit cwd arguments, and native separators for module IDs.
- In an authorized implementation session, prefer just recipes: targeted Node runs can use test-node-rolldown-only, Rust fixtures use t-run, and lint-rust includes formatting, locked all-feature/all-target checking, and Clippy with denied warnings.
- Tests and CI were inspected, not executed. Future validation must account for Rust snapshot updates, WASI replacing native dist, browser versus WebContainer fallback paths, and conditional platform lanes; listed test files do not establish a passing result.
- Respect repository compatibility and review conventions: rolldown_* Rust crates do not follow semver, PRs remain drafts until requested otherwise, and concurrent fixtures should use mocks rather than global expect.assertions.