| name | engineering |
| description | Engineering deep-dive for poku covering performance, code, and security patterns, TypeScript config, build pipeline, developer experience, and CI/CD. Use when implementing or optimizing code, writing performance-sensitive logic, touching the build, or applying code-style and security rules. |
Engineering patterns, performance, security, and build/CI. Read the actual source and config to confirm details, since implementations change over time.
1. Performance Patterns
Look in src/services/ and src/polyfills/:
- Each test file runs in its own process via
spawn with shell: false. stdout/stderr are piped. A plugin can request an extra IPC channel via plugin.ipc
- The runner uses a concurrency-bounded promise queue. The default limit is
availableParallelism(). Sequential mode or isolation: none forces a limit of 1
availableParallelism is polyfilled by feature-detecting the native function at runtime and falling back to the CPU count
Authoring rules to respect when writing performance-sensitive code:
- NEVER let extra or uncommon features compromise or pollute the default path. Keep them behind a user-triggered conditional so the code stays unreached ("dead code") until the flag activates it
- ALWAYS early-return to the extreme. The moment a path is decided, leave it with
return, break, or continue before doing any further work, so the common path runs the least code
- Declare each variable ONLY after the guards that could exit, in the narrowest scope that uses it. NEVER allocate on a path that never reaches it
- ALWAYS cache repeated state checks in the
GLOBAL singleton instead of recomputing them
Performance priority order when trade-offs arise:
- Long-term maintainability and readable code
- V8 and JIT optimizations, including minimal memory allocation
- Algorithmic complexity (Big O)
Performance and maintainability must stay in balance with each other.
2. Code Patterns
- Functional composition:
Object.assign(coreFn, { todo, skip, only }) exposes modifiers on it and describe
- Fluent formatter: the
Formatter class implements [Symbol.toPrimitive]() for implicit string coercion
- Promise coordination: a captured resolve callback, no external queue dependency
- GLOBAL singleton: a single object holds runtime config and shared state
- ParentโChild:
POKU_* env vars carry context to child processes
- Timing:
hrtime() (the [seconds, nanoseconds] tuple form) for high-precision durations
- Naming: NEVER use abbreviated variable names, including basic loop counters. Use
index instead of i, element instead of el. Names MUST be fully spelled out and descriptive
- Comments: AVOID them. Clear code, organization, logic, and naming MUST make them unnecessary. The only exception is a public API exposed directly to the end user, which MAY carry objective inline docs
3. Security Patterns
shell: false in spawn() prevents shell injection
escapeRegExp() sanitizes user-supplied filter and pattern input before it becomes a RegExp
- Config auto-discovery only loads an allowlisted set of filenames (an explicit
--config= path bypasses the list)
- Windows path safety: the config loader loads from a
file:// URL on Windows, and the in-process test loader uses pathToFileURL()
- Process kill uses
kill -9 on Unix and taskkill /F /T /PID on Windows
4. TypeScript Configuration
tsconfig.json is the source of truth. The constraint that drives it: output must run on the oldest supported Node, so prefer compatibility over newer language/output targets when changing it.
5. Build Pipeline
scripts/build.sh (wired to the build script in package.json) is the source of truth. It compiles source and tests, then runs post-build fixups. Read it before changing build behavior rather than relying on a description here.
6. Developer Experience (DX)
ALWAYS preserve or improve the developer experience. Read the assertion builder in src/builders/, the formatter and reporters in src/services/, and the runner/output/options parsers in src/parsers/. Key principles:
- Assertion failures must be actionable: file path, code line, operator, and full actual/expected diff (red/green). Non-comparison assertions (
throws, rejects) pass hideDiff: true to keep the output focused
- Visual hierarchy: status icons, colors, and dynamic indentation that tracks
describe/it nesting depth encode test state. Read the reporter and the formatter for the current icon and color mapping
- Output filtering: in non-debug mode only ANSI-colored lines pass through, hiding noisy library output. Debug mode (or a failed file) passes everything through
- Zero friction: TypeScript is auto-detected by file extension (the runner injects
--import=tsx for .ts/.mts/.cts), config files are auto-discovered, and defineConfig() enables IDE autocomplete
- Config auto-discovery order:
poku.config.js, then .pokurc.json, then .pokurc.jsonc, then built-in defaults
- Formatter usage: ALWAYS build output with the fluent
format('text').bold().success() chain, NEVER raw ANSI codes
7. CI/CD
Read .github/workflows/ for the current pipeline. What constrains the work:
- Lint must pass (Biome + Prettier, see
biome.jsonc)
- Coverage has a minimum threshold (
checkCoverage in .nycrc, the source of truth)
- Cross-runtime and multi-version compatibility is enforced. See the workflows and
test/__docker__/node/ for the current runtimes and versions