# TS Memory Baseline

> 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.

- Skill: `victorgarciaesgi/ts-memory-baseline` (Agent Skill)
- Install (CLI): `npx skillmds@latest add victorgarciaesgi/ts-memory-baseline`
- Raw SKILL.md: https://api.skillmd.com/api/skills/victorgarciaesgi/ts-memory-baseline/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: victorgarciaesgi (https://skillmd.com/u/victorgarciaesgi)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/victorgarciaesgi/ts-memory-baseline

---


# 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.

