The snippets, ordered obscure → unmistakable

  1. Snippet 1(Tiny ASCII helper)
  2. Snippet 2(Buffer struct fragment)
  3. Snippet 3(normal-mode dispatch)
  4. Snippet 4(option table fragment)
  5. Snippet 5(yank/put core)
  6. Snippet 6(main.c intro_message)

Why this project gives itself away

The give-away. Snippet 1's vim_isdigit is just a namespaced wrapper, but the vim_ prefix appears throughout the codebase. Snippet 2 reveals `buf_T` + memline_T — Vim's distinctive _T typedef suffix. Snippet 3 names normal_cmd / nv_cmds[] (the normal-mode dispatch). Snippet 4's option-table entries (hlsearch, incsearch, expandtab) match the names of Vim options exactly. Snippet 5 names yankreg_T — yank registers being unique to Vim's editing model. Snippet 6 is Bram Moolenaar's introduction message with the ICCF Uganda appeal, on display every time you launch Vim with no arguments.

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.