| 1600 | // then (e.g. the Tier-2 special-function kernels) are pruned here against |
| 1601 | // a live stock engine, so the artifact stays in sync with the engine it |
| 1602 | // ships with. (The loader also skips already-defined names at load time — |
| 1603 | // this keeps the artifact, not just the load, accurate.) |
| 1604 | const pruned: CompileResult['declarations'] = {}; |
| 1605 | const builtinProbe = new ComputeEngine(); |
| 1606 | const usedShells = new Set<string>(); |
| 1607 | for (const r of rules) { |
| 1608 | collectSymbols(r.match, usedShells); |
| 1609 | collectSymbols(r.replace, usedShells); |