The snippets, ordered obscure → unmistakable
- Snippet 1(Generic helper)
- Snippet 2(Validations DSL)
- Snippet 3(Strong params controller)
- Snippet 4(Routes DSL)
- Snippet 5(Active Record migration)
- Snippet 6(railties/lib/rails.rb)
Why this project gives itself away
The give-away. Snippet 1's pluralize extension on Integer is Active Support, Rails's monkey-patched stdlib. Snippet 2's has_many :posts, dependent: :destroy + has_secure_password + scope is pure Active Record DSL. Snippet 3 reveals before_action, set_post, and the strong-params pattern. Snippet 4's resources :posts do member do ... is the Rails-only routing DSL. Snippet 5's ActiveRecord::Migration[7.1] with the versioned migration syntax. Snippet 6 names the Rails module + version constant in railties/lib/rails.rb.
Why this style. No other framework looks like this — Rails monkey-patches Ruby core, exposes DSLs for routes/migrations, and ships a before_action/strong_parameters controller idiom.
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.