The snippets, ordered obscure → unmistakable
- Snippet 1(Buffer helpers)
- Snippet 2(EventEmitter shape)
- Snippet 3(Module loader internals)
- Snippet 4(Stream constants)
- Snippet 5(Bootstrap loader)
- Snippet 6(node:process internals)
Why this project gives itself away
The give-away. Snippet 1's FastBuffer name is a Node internal, but generic. Snippet 2's EventEmitter shape is shared with the browser globals, but _events is Node's internal storage key. Snippet 3 names Module.prototype.require and Module._load, which is the CommonJS resolver. Snippet 4's Symbol('kState') private-key convention is unmistakable Node lib/internal/* code. Snippet 5 is process.versions with the v8/uv/node split — only Node ships that. Snippet 6 is the Joyent copyright header that every legacy core file still carries.
Why this style. Node's lib/internal/* uses kFoo symbols as private property keys; the v8/uv pairing in process.versions is unique.
How a Framed puzzle is built
Every Framed project ships exactly six snippets, hand-ordered from deeply obscure to unmistakable. The first snippet must be plausible for a dozen codebases — a generic loop, a small utility, a comment that could appear anywhere. The last snippet carries a project-specific tell: a function name, a code-comment idiom, a file header, a build invocation. Between them sit four snippets that gradually narrow the field. Reading them in order is half the puzzle: a returning Framed player learns to triangulate on indentation conventions, comment voice, naming, and the small-but-distinctive choices that betray a project's era and community.