)]}'
{
  "log": [
    {
      "commit": "5337c2bc7ab93112e7edd4c772d98987ba596e49",
      "tree": "6e65b6d1f29c19b04742b9f035c5f65776fbfb4b",
      "parents": [
        "c3ec07d0e6f21f3a78888b5128c1f331c5533a99"
      ],
      "author": {
        "name": "Sketch🕴️",
        "email": "skallywag@sketch.dev",
        "time": "Sat Feb 28 20:37:00 2026 +0400"
      },
      "committer": {
        "name": "Sketch🕴️",
        "email": "skallywag@sketch.dev",
        "time": "Sat Feb 28 20:37:00 2026 +0400"
      },
      "message": "ast: add Ident, FuncCall nodes and Statement interface (ExprStmt, FuncDef)\n\n- Ident{Name}: variable reference node (sealed, implements Node)\n- FuncCall{Name, Args}: function call node (sealed, implements Node)\n- Statement interface: sealed, for top-level REPL input\n- ExprStmt{Expr}: wraps expression as statement\n- FuncDef{Name, Params, Body}: function definition statement\n"
    },
    {
      "commit": "ad74392541b9a72b521e56673cfdd013532fbd4a",
      "tree": "ee34b43689463e1ed0bc533aff7ca4ce6b2c0045",
      "parents": [
        "cdbb189191d122228d802b9964101a751dd30931"
      ],
      "author": {
        "name": "Sketch🕴️",
        "email": "skallywag@sketch.dev",
        "time": "Sat Feb 28 19:11:41 2026 +0400"
      },
      "committer": {
        "name": "Sketch🕴️",
        "email": "skallywag@sketch.dev",
        "time": "Sat Feb 28 19:11:41 2026 +0400"
      },
      "message": "Add AST package: Node interface, NumberLit, BinaryExpr\n\n- Sealed Node interface with unexported marker method\n- NumberLit holds float64 value\n- BinaryExpr holds Op (token.Type), Left and Right children\n- Tests verify interface satisfaction, data integrity, and nesting\n"
    }
  ]
}
