The snippets, ordered obscure → unmistakable
- Snippet 1(Generic helper)
- Snippet 2(Model definition)
- Snippet 3(View (FBV) + decorator)
- Snippet 4(URL conf)
- Snippet 5(Form/admin)
- Snippet 6(django/__init__.py)
Why this project gives itself away
The give-away. Snippet 1's lazy() proxy generator is from django.utils.functional — generic. Snippet 2's models.CharField, ForeignKey(on_delete=models.CASCADE), and the class Meta: inner class are the Django ORM signature. Snippet 3 reveals get_object_or_404 and @login_required — Django's shortcut + decorator pair. Snippet 4 is urlpatterns with path("admin/", admin.site.urls). Snippet 5's ModelAdmin with prepopulated_fields = {"slug": ("title",)} is the Django admin DSL. Snippet 6 is django/__init__.py with the Django Software Foundation copyright and the (5, 0, 2, "final", 0) version tuple.
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.