- name
- ts-memory-baseline
- description
- Measure and compare TypeScript memory usage for @regle/core and test typechecks. Use when checking TS server pressure, type-level perf regressions, or before/after heavy generic typing changes.
- metadata
- {"author":"regle","version":"2026.03.19"}
# TypeScript memory baseline procedure
This skill defines a reproducible process to measure TypeScript memory usage in this repository.
## Hard requirements
1. Use Node 24 for all measurements.
2. Run `pnpm build` before any test-related measurement.
3. `pnpm run test:typecheck` should never fail. If it fails, treat the run as invalid for regression tracking.
## Environment setup
```bash
PATH="/Users/victorgarcia/.nvm/versions/node/v24.15.0/bin:$PATH"
node -v
pnpm -v
```
Expected:
- Node `v24.x`
- pnpm `11.20.0` (or project-compatible version)
## Measurement runbook (must follow)
1. Ensure no extra monorepo tasks are running.
2. Use the exact Node 24 PATH prefix in every command.
3. Run one warm-up pass that is discarded.
4. Run 3 measured passes and compare medians.
5. Save only the final medians in `tests/TS_MEMORY_BASELINE_RESULTS.md`.
## Measurement commands
### A. @regle/core compiler diagnostics
```bash
PATH="/Users/victorgarcia/.nvm/versions/node/v24.15.0/bin:$PATH" \
./node_modules/.bin/tsc -p "packages/core/tsconfig.json" --noEmit --extendedDiagnostics
```
Capture:
- `Memory used`
- `Instantiations`
- `Check time`
### B. Full type tests memory
Run build first:
```bash
PATH="/Users/victorgarcia/.nvm/versions/node/v24.15.0/bin:$PATH" pnpm build
```
Then:
```bash
PATH="/Users/victorgarcia/.nvm/versions/node/v24.15.0/bin:$PATH" \
/usr/bin/time -l pnpm run test:typecheck
```
Capture:
- exit code (must be `0`)
- `maximum resident set size`
- `peak memory footprint`
- `real/user/sys`
Recommended sequence:
```bash
# warm-up (discard)
PATH="/Users/victorgarcia/.nvm/versions/node/v24.15.0/bin:$PATH" \
/usr/bin/time -l corepack pnpm run test:typecheck
# measured runs (collect all 3)
PATH="/Users/victorgarcia/.nvm/versions/node/v24.15.0/bin:$PATH" \
/usr/bin/time -l corepack pnpm run test:typecheck
PATH="/Users/victorgarcia/.nvm/versions/node/v24.15.0/bin:$PATH" \
/usr/bin/time -l corepack pnpm run test:typecheck
PATH="/Users/victorgarcia/.nvm/versions/node/v24.15.0/bin:$PATH" \
/usr/bin/time -l corepack pnpm run test:typecheck
```
## Comparison protocol
Use median deltas because absolute values can vary with machine/CPU load.
1. Compute medians for old baseline and new run.
2. Compute delta % = `(new - old) / old * 100`.
3. Evaluate with these thresholds:
- **Likely noise**: within `±5%` for memory metrics.
- **Watch zone**: `>5%` and `<=10%` increase.
- **Regression candidate**: `>10%` increase.
4. For `Check time` and `real time`, treat as noisy:
- investigate only if increase is `>15%` and reproducible across runs.
5. If `pnpm run test:typecheck` exit code is non-zero, invalidate the run (do not update baseline).
## Results storage
Store only numeric outcomes in:
- `tests/TS_MEMORY_BASELINE_RESULTS.md`
Do not put procedural instructions in the results file.
View on GitHub