Repository navigation
Conversation
…n input is that input The output check compared real paths, then, for an existing output, a lazily built set of device:inode ids. Ids alone cover both: a symlink stats to its target, a hard link shares the inode, and a missing path falls back to its resolved name. path_real had no other use and goes. main.ts is +37 tokens over main instead of +131.
I pushed f0327f1 on top of this PR. It keeps the same behavior with less code:
Checks on macOS (M-series):
I didn't touch the README note or the ping test. |
|
Thanks. I verified Both the source CLI and a freshly compiled CLI reject Both CLIs can write a fresh output and overwrite an independent existing output; each generated JS consumer prints |
Fixes #1495 and #1694.
Kept Nicolas's
f0327f11file-identity guard and merged current main. It now also remembers each successfully emitted output. A later-oalias fails instead of silently replacing the first program with another format. Recording the identity after emission also catches a dangling symlink to an output that did not exist yet.Added an installed-CLI regression that creates hard-linked JS/C targets, rejects the second write, and runs the surviving JS. The existing input-hardlink regression remains.
Checked both the source CLI and a freshly compiled CLI on Linux: hard links, symlinks, dangling symlinks, repeated paths, protected inputs, and independent JS/C/native outputs. All 12 scenarios passed; the emitted programs printed
7n. Repository gate: 54/54. The full installer/hub gate was not run locally.AI-assisted.