REPOSITORY CODING · HARD
Include environment changes and evict reverse dependents
Changing a recipe environment must change its signature. Cleaning a target must also evict all transitive dependents even when their produced content could be reconstructed identically.
Content-addressed build cachingIncremental build laboratory
Work through a real codebase.
Choose an environment, investigate the existing implementation and use the tests to check your change. Sign in to open a workspace; execution and Ono usage follow your plan’s allowances.
Task requirements and environments
Django · 80 minute session
- Implement an offline incremental build system with tenant-scoped files, target definitions, cached signatures and immutable artifacts. Commands write/target/build/clean execute atomically in a persistent workspace. Targets have up to 12 ordered file or @target dependencies, a bounded environment map, tool identity and a declarative recipe. No arbitrary process or shell command is executed.
- Canonicalize relative POSIX paths by removing dot segments and reject root escapes. Files contain at most 1000 Unicode characters; targets and file counts are bounded. Recipes are concat, uppercase, lexically sorted lines and literal replacement, with optional separators and ${ENV} expansion. Artifacts are limited to 5000 characters.
- Plan dependencies in input order, reject cycles and unknown targets, and evaluate each target once per build. A cache signature hashes canonical JSON containing ordered input names/content digests, complete recipe, tool identity and environment. Content hashes are SHA-256 over UTF-8; target dependency signatures use produced artifact content hashes.
- Clean evicts a target and all transitive reverse dependents, preserving other tenants. Build failures, missing inputs and journal outages must roll back every intermediate cache/artifact write and the global revision. Cached builds still produce a journal event, but retain their artifacts.
- Return per-command results, revision, artifacts, cache signatures and audit rows in insertion order. Python, Flask and Django use the same domain engine with native SQLite/ORM transactions, authenticated workspace routes, a public fixture endpoint and a working preview.
Flask · 80 minute session
- Implement an offline incremental build system with tenant-scoped files, target definitions, cached signatures and immutable artifacts. Commands write/target/build/clean execute atomically in a persistent workspace. Targets have up to 12 ordered file or @target dependencies, a bounded environment map, tool identity and a declarative recipe. No arbitrary process or shell command is executed.
- Canonicalize relative POSIX paths by removing dot segments and reject root escapes. Files contain at most 1000 Unicode characters; targets and file counts are bounded. Recipes are concat, uppercase, lexically sorted lines and literal replacement, with optional separators and ${ENV} expansion. Artifacts are limited to 5000 characters.