Empty directories become grammar
Daniel Temkin created Folders in 2015 and updated its project page in 2026. A program is an ordered tree. Folder names do not carry the command, but alphabetical order still decides which branch comes first. The number of directories inside the first child selects a command or expression.[1]
At command level, zero children means if. One means while. Two means declare. Three means let. Four means print. Five means input. Literal values use more nested folders and encode bits through empty or nonempty children.
The Hello World tree shown on the project page has 209 directories and no files. The reference repository adds tiny files at terminal branches so Git can retain a shape that Git would otherwise ignore.[2]
The syntax is visible in the file browser. The behavior still lives in the compiler.
A table is not an execution trace
We inspected the reference repository at commit 015cf65c15ab681f56d59e912e5ad1b8b7672237. Its pure parser sorts directories, counts children, and maps those counts through command and expression enums. The source matches the published command table for if, while, declare, let, print, and input.[3]
One branch deserves a red pen. In ProgramBuilderPure.cs, the Divide case appends a multiplication operator to generated C# at the inspected revision. The language page says that four child folders mean divide. The implementation source appears to emit multiply.
We did not compile or run that project. It targets .NET Framework 4.8 and provides no narrow cross-platform test command. This is a source inspection result, not a runtime verdict. A proper reproducer would transpile one division fixture, inspect the generated C#, and run it in the supported environment.
Give structure a witness
Structure-only code is hard to review in a normal diff. Rename one sibling and its alphabetical position can move. Delete one empty directory and a command can become another command. Git also ignores empty directories, so the repository needs marker files that are not part of the language.
The practical upgrade is a second view. Keep the tree as the source, then generate a readable listing that records the ordered path, child count, decoded token, compiler revision, and output. Review the tree change and the decoded change together.
That rule applies beyond esolangs. Visual workflow files, generated configuration, lockfiles, and agent plans all need a witness that a reviewer can read. If structure carries behavior, the review surface must explain the structure.