)]}'
{
  "log": [
    {
      "commit": "6c05041d687db55f773b2d059e4ff794d0ec9118",
      "tree": "dbb676528eaa2e3bf3d8c9e1e905fb68c9578fe5",
      "parents": [
        "86f9f417fae726261706ecba7b2d1c31dc93c52f"
      ],
      "author": {
        "name": "Dev-iL",
        "email": "6509619+Dev-iL@users.noreply.github.com",
        "time": "Wed Jun 10 22:33:06 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 20:33:06 2026 +0100"
      },
      "message": "Vectorize pandas and polars DataFrame hashing (#1629)\n\nReplace the per-row Python loops in the DataFrame fingerprinting paths\nwith single-buffer hashing:\n\n- pandas: hash the `hash_pandas_object(obj).values` uint64 buffer in one\n  shot instead of round-tripping through `.to_dict()` and an ordered\n  `hash_mapping`; fold column names + dtypes (schema) into the hash so\n  frames with identical values but different schemas no longer collide;\n  keep the path order-sensitive.\n- polars: hash the `hash_rows().to_numpy()` buffer in one shot instead of\n  `.to_list()` through a per-element `hash_sequence` loop.\n\nBoth paths route through the existing `_hash_bytes` chokepoint, so the\nalgorithm is unchanged here. The DataFrame digest is deliberately not\npinned to a literal (it depends on library-version-specific dtype reprs);\ncoverage is via relational schema-collision, dtype-collision and\norder-sensitivity tests for both backends.\n\nCo-authored-by: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "86f9f417fae726261706ecba7b2d1c31dc93c52f",
      "tree": "4fe86df96aeb60ebd9f47b4ad3e867c59ef33e2b",
      "parents": [
        "14c7c23dde62c85e608ab84b438e27d321204d22"
      ],
      "author": {
        "name": "Pablo Eduardo Diaz",
        "email": "53544279+Exudev@users.noreply.github.com",
        "time": "Wed Jun 10 14:10:20 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 19:10:20 2026 +0100"
      },
      "message": "Fix/python 3.14 test exclusions (#1587)\n\n* [Python 3.14] Exclude incompatible plugins from core test collection\n\n* [Python 3.14] Register asyncio marker in pytest configuration\n\n* [Python 3.14] Update plugin_tests collection exclusions\n\n* test: exclude h_pandera_polars from Python 3.14 tests and override exit status when no tests are collected\n\n* chore: standardize pytest session exit status handling for Python 3.14 and initialize uv lockfile\n\n* test: re-enable plugin integration tests in conftest for Python 3.14+\n\n* chore: remove uv.lock file"
    },
    {
      "commit": "14c7c23dde62c85e608ab84b438e27d321204d22",
      "tree": "7edc76e7485e359d6f659f1ec79db9bf7e745083",
      "parents": [
        "5f9cda08d00e5c7543c694acbbac04d12c89c0fe"
      ],
      "author": {
        "name": "Dev-iL",
        "email": "6509619+Dev-iL@users.noreply.github.com",
        "time": "Mon Jun 08 15:04:16 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 13:04:16 2026 +0100"
      },
      "message": "Centralize hashing through _hash_bytes and tag value types (#1628)\n\nIntroduce a single `_hash_bytes(data: bytes) -\u003e str` helper that all\nfingerprinting paths route through, so the underlying hashing algorithm\ncan later be changed in exactly one place. As part of unifying on a\nsingle chokepoint, the sha224 used in the sequence/mapping/set paths is\nfolded into the md5 already used elsewhere; digest width is unchanged.\n\nClose confirmed fingerprint collisions by tagging primitives and bytes\nwith their type, so `1`, `\"1\"`, `b\"1\"`, `1.0` and `\"1.0\"` hash\ndistinctly. Add a cross-type must-differ test.\n\nRestructure the digest tests: literal-digest pins are kept only for\nversion-portable types (primitives, sequences, mappings, sets, numpy)\nand labelled as an algorithm-portability guard; the numpy case pins its\ndtype so the literal is reproducible across platforms. Version-sensitive\nDataFrame digests are covered by relational must-differ / must-match\ntests instead of brittle literals.\n\nThis is a fingerprint-changing refactor: cached fingerprints from prior\nversions will no longer match and will be recomputed. It is the\ngroundwork that makes vectorized DataFrame hashing and a later\nnon-cryptographic algorithm swap minimal, isolated changes.\n\nCo-authored-by: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "5f9cda08d00e5c7543c694acbbac04d12c89c0fe",
      "tree": "ca992788c62f4f23a613355b84e2e61712539f86",
      "parents": [
        "48108d53d8417db41074f2d43a8c15a664231486"
      ],
      "author": {
        "name": "Asish Kumar",
        "email": "87874775+officialasishkumar@users.noreply.github.com",
        "time": "Mon Jun 08 00:17:29 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 07 19:47:29 2026 +0100"
      },
      "message": "Improve power user mode error for dynamic resolvers (#1604)"
    },
    {
      "commit": "48108d53d8417db41074f2d43a8c15a664231486",
      "tree": "099c1bcae7c5da985b9f4c8ebe8d24284eaf90ae",
      "parents": [
        "aed264ef5eed0c08d94e9ee06e85c1ce57bce8a3"
      ],
      "author": {
        "name": "Arnav Balyan",
        "email": "60175178+ArnavBalyan@users.noreply.github.com",
        "time": "Sun Jun 07 23:19:57 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 07 18:49:57 2026 +0100"
      },
      "message": "fix(tests): tolerate numpy pre-release versions in test_node (#1627)"
    },
    {
      "commit": "aed264ef5eed0c08d94e9ee06e85c1ce57bce8a3",
      "tree": "5e6fd0b0baa1814ac41908a8d4fa4254293a59cd",
      "parents": [
        "718a290f9f5c05c338ff5519276c3132942b739c"
      ],
      "author": {
        "name": "Dev-iL",
        "email": "6509619+Dev-iL@users.noreply.github.com",
        "time": "Sun Jun 07 10:24:59 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 07 15:24:59 2026 +0100"
      },
      "message": "Remove `flit` from prereq check since handled by uvx (#1624)\n\nIn other words - as long as `uv` is present, `flit` is taken care of."
    },
    {
      "commit": "718a290f9f5c05c338ff5519276c3132942b739c",
      "tree": "a58a001b9568e16573fa20a77d4d7db8b3a6d41e",
      "parents": [
        "92133ad0626e7066fb2497e5ba4397ff1cfd5887"
      ],
      "author": {
        "name": "Arnav Balyan",
        "email": "60175178+ArnavBalyan@users.noreply.github.com",
        "time": "Sun Jun 07 19:50:57 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 07 15:20:57 2026 +0100"
      },
      "message": "Fix formatting (#1626)"
    },
    {
      "commit": "92133ad0626e7066fb2497e5ba4397ff1cfd5887",
      "tree": "cb9cd3f86c8b10a938731a8b0888763c77a0b66f",
      "parents": [
        "1a1973a7e4a1a2a7de122298bcb932adc676c375"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Sat Jun 06 15:42:19 2026 -0700"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sat Jun 06 21:39:29 2026 -0700"
      },
      "message": "Exclude compiled frontend from UI source tarball\n\nThe UI sdist was including hamilton_ui/build/** (compiled JS/CSS from\nnpm build), which would require bundling third-party licenses.\n\nFix: build sdist first (without frontend), then npm build, then wheel.\n- pyproject.toml: move hamilton_ui/build/** from include to exclude\n- apache_release_helper.py: split UI build into 3 steps:\n  1. flit build --format sdist (source-only)\n  2. npm install + npm run build → copy to hamilton_ui/build/\n  3. flit build --format wheel (includes frontend assets)\n- test_build.py: update assertion to verify build/ is excluded from sdist\n"
    },
    {
      "commit": "1a1973a7e4a1a2a7de122298bcb932adc676c375",
      "tree": "7e91e3a4d4376122de6988fe9c83a58caed152f0",
      "parents": [
        "1451e8aec4f0ac09a7a019606b3e561dc7af9f14"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Sat Jun 06 15:00:08 2026 -0700"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sat Jun 06 21:39:29 2026 -0700"
      },
      "message": "Add tests verifying sdist includes tests and examples\n\nAdd test_sdist.py for ui/sdk, dev_tools/language_server, and contrib\nthat assert pyproject.toml [tool.flit.sdist] configuration:\n- tests/** is in include (sdk, lsp) or not in exclude (contrib)\n- examples/** is in include (sdk, contrib)\n- scripts/** is in include (contrib) — addresses reviewer feedback\n- Binary files (*.parquet, *.pkl, *.ipynb, *.png) are excluded\n\nAlso add test_flit_sdist_includes_tests to ui/backend/tests/test_build.py\nto match the existing pattern for build/** verification.\n\nInclude contrib/scripts/** in sdist per reviewer request — contains\nversion_check.py used for release validation.\n"
    },
    {
      "commit": "1451e8aec4f0ac09a7a019606b3e561dc7af9f14",
      "tree": "519cdd66835add06daf2d1dc007cae5fb72fcae5",
      "parents": [
        "27f47cee5859bfdf90f43de33b8c8b118e74d471"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Sun May 31 23:54:54 2026 -0700"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sat Jun 06 21:39:29 2026 -0700"
      },
      "message": "Fix verify scripts: prereq check and contrib CWD issue\n\n- Add prerequisite check for gpg, java, flit, uv, svn at script start\n  (fails early with clear error instead of cryptic flit-not-found)\n- Fix contrib verify: cd to /tmp before running python imports to avoid\n  CWD shadowing installed hamilton package with local repo directory\n"
    },
    {
      "commit": "27f47cee5859bfdf90f43de33b8c8b118e74d471",
      "tree": "2d6e4f57c7288130cb8816add36e5cce392a5f25",
      "parents": [
        "b8c8213572bbb40c42fa70d298db1e749aa99a91"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Sun May 31 21:20:04 2026 -0700"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sat Jun 06 21:39:29 2026 -0700"
      },
      "message": "Include tests in sub-package source distributions\n\nPer Apache release policy, tests should be included in the sdist so\nvoters can build from source and run tests to validate.\n\n- ui/sdk: removed tests/** from exclude, added to include\n- dev_tools/language_server: same\n- contrib: removed tests/** from exclude (tests live inside the package)\n- ui/backend: already includes tests/** (no change needed)\n"
    },
    {
      "commit": "b8c8213572bbb40c42fa70d298db1e749aa99a91",
      "tree": "5263cdea63f60bb91676961c78630e31d493c400",
      "parents": [
        "33279aafc2e4683f867f518713e65f8367ccb61c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Jun 06 15:41:10 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 06 15:41:10 2026 -0700"
      },
      "message": "Bump aiohttp from 3.13.4 to 3.14.0 in /ui/backend (#1621)\n\n---\nupdated-dependencies:\n- dependency-name: aiohttp\n  dependency-version: 3.14.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "33279aafc2e4683f867f518713e65f8367ccb61c",
      "tree": "71e86839a366f3ae578f84ac4fbe088c6c4ba288",
      "parents": [
        "96bc551ab0c7b4170e8b7852058a0297d985f3e3"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Jun 06 15:41:03 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 06 15:41:03 2026 -0700"
      },
      "message": "Bump react-router and react-router-dom in /ui/frontend (#1622)\n\nBumps [react-router](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router) to 6.30.4 and updates ancestor dependency [react-router-dom](https://github.com/remix-run/react-router/tree/HEAD/packages/react-router-dom). These dependencies need to be updated together.\n\n\nUpdates `react-router` from 6.30.3 to 6.30.4\n- [Release notes](https://github.com/remix-run/react-router/releases)\n- [Changelog](https://github.com/remix-run/react-router/blob/react-router@6.30.4/packages/react-router/CHANGELOG.md)\n- [Commits](https://github.com/remix-run/react-router/commits/react-router@6.30.4/packages/react-router)\n\nUpdates `react-router-dom` from 6.30.3 to 6.30.4\n- [Release notes](https://github.com/remix-run/react-router/releases)\n- [Changelog](https://github.com/remix-run/react-router/blob/react-router-dom@6.30.4/packages/react-router-dom/CHANGELOG.md)\n- [Commits](https://github.com/remix-run/react-router/commits/react-router-dom@6.30.4/packages/react-router-dom)\n\n---\nupdated-dependencies:\n- dependency-name: react-router\n  dependency-version: 6.30.4\n  dependency-type: indirect\n- dependency-name: react-router-dom\n  dependency-version: 6.30.4\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "96bc551ab0c7b4170e8b7852058a0297d985f3e3",
      "tree": "26b4200d789e42fc8df5ea803401d037b1010c29",
      "parents": [
        "5169672d800438792f8159571f772d526aaa362e"
      ],
      "author": {
        "name": "Arnav Balyan",
        "email": "60175178+ArnavBalyan@users.noreply.github.com",
        "time": "Sun Jun 07 04:02:08 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 06 15:32:08 2026 -0700"
      },
      "message": "update (#1614)"
    },
    {
      "commit": "5169672d800438792f8159571f772d526aaa362e",
      "tree": "ae0bdc0b8547c7720b348c75f94f001af5e5b747",
      "parents": [
        "f4a7030a099c4d13601b4bf99af0c1d0470021cd"
      ],
      "author": {
        "name": "Dev-iL",
        "email": "6509619+Dev-iL@users.noreply.github.com",
        "time": "Sat Jun 06 18:06:17 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 06 15:06:17 2026 -0700"
      },
      "message": "Update/robustify the release scripts for subpackages (apache-hamilton-*) (#1613)\n\n* Add frontend build step to UI release process\n\nThe UI wheel must include compiled frontend assets (hamilton_ui/build/).\nThis directory is gitignored and only exists after npm run build.\n\n- apache_release_helper.py: automatically runs npm install + npm run build\n  and copies output to hamilton_ui/build/ before flit build for the UI package\n- verify-sub-packages.md: documents manual frontend build steps\n- verify_ui.sh: notes that source tarball build is backend-only;\n  functional tests use the pre-compiled wheel from SVN\n\n* Use uvx to run flit\n\nSo flit is not needed as a separate dep\n\n* npm audit fix: 1 moderate severity vulnerability\n\n* uv: add python deps to apache_release_helper.py\n\n* pkg: more informative error in verify_ui.sh\n\n* Add toml verification hook + bump hooks\n\n* release helper: split dry-run into \"no-sign\" and \"no-upload\" modes\n\n* Add dedicated README.md for the ui/backend package\n\n* verify scripts: cd /tmp before functional checks to avoid local checkout shadowing venv packages\n\nPython puts \u0027\u0027 (cwd) at the front of sys.path; when scripts run from the repo root,\nthat resolves to the local hamilton checkout and shadows packages installed in the\ntest venv (e.g. hamilton.contrib.version not found).\n\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\n\n* Update root pyproject extras to point to apache-hamilton-{lsp,sdk,ui}\n\n\nAdd note about keeping contrib versions in sync\n\nCo-authored-by: Dev-iL \u003c6509619+Dev-iL@users.noreply.github.com\u003e\n\n* Fix local package resolution on CI\n\n---------\n\nCo-authored-by: Stefan Krawczyk \u003cstefank@cs.stanford.edu\u003e\nCo-authored-by: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "f4a7030a099c4d13601b4bf99af0c1d0470021cd",
      "tree": "aa06613d81e1e8b900e5cf4c65428c5f5015fa43",
      "parents": [
        "f39b2105d0bf949adf2b7660f0712509f63b7197"
      ],
      "author": {
        "name": "Octopus",
        "email": "liyuan851277048@icloud.com",
        "time": "Sun Jun 07 05:51:19 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 07 07:51:19 2026 +1000"
      },
      "message": "Upgrade MiniMax default model to MiniMax-M3 in dagworks RAG examples (#1620)\n\n* Upgrade MiniMax model default to MiniMax-M3 in dagworks RAG modules\n\nUpdates the default model returned by `model__minimax()` in the\n`conversational_rag` and `faiss_rag` dataflows from `MiniMax-M2.7`\nto `MiniMax-M3`. The base URL (`https://api.minimax.io/v1`) and the\nOpenAI-compatible client wiring stay the same; only the model ID\nconstant and its references in tests/README change.\n\n- contrib/hamilton/contrib/dagworks/conversational_rag/__init__.py:\n  `model__minimax()` now returns `MiniMax-M3`.\n- contrib/hamilton/contrib/dagworks/faiss_rag/__init__.py:\n  `model__minimax()` now returns `MiniMax-M3`.\n- Unit tests updated to assert the new model constant and to pass\n  `MiniMax-M3` into mocked chat completion calls.\n- README config tables and \"uses the [MiniMax-...] model\" lines\n  refreshed to reference MiniMax-M3.\n\nCo-Authored-By: Octopus \u003cliyuan851277048@icloud.com\u003e\nSigned-off-by: Octopus \u003cliyuan851277048@icloud.com\u003e\n\n* docs: correct MiniMax context window (M3\u003d512K, M2.7\u003d192K; was mistakenly 1M)\n\n* docs: correct MiniMax context window (M3\u003d512K, M2.7\u003d192K; was mistakenly 1M)\n\n---------\n\nSigned-off-by: Octopus \u003cliyuan851277048@icloud.com\u003e"
    },
    {
      "commit": "f39b2105d0bf949adf2b7660f0712509f63b7197",
      "tree": "65a7ab87af4ddfd4df7cb81cb9699dd516b7b9c3",
      "parents": [
        "7644a30440dd5142331c43bbe997476ec3a4baaf"
      ],
      "author": {
        "name": "Dev-iL",
        "email": "6509619+Dev-iL@users.noreply.github.com",
        "time": "Mon Jun 01 02:12:07 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 16:12:07 2026 +1000"
      },
      "message": "Allow bypassing data quality checks via a config key (#1598)\n\n* Fix preëxisting issues in test_sklearn_plot_extensions\n\n* Add `disable_data_quality_checks` config key\n\n## Context\n\n`@check_output` and `@check_output_custom` decorators let users attach data validators to function outputs. At graph-construction time, each decorated node is expanded into a subgraph:\n\n- `{name}_raw` — runs the actual function\n- `{name}_{validator}` — one node per validator (tagged `hamilton.data_quality.contains_dq_results`)\n- `{name}` — aggregates validation results and returns the raw output\n\nThis flag is useful for two main reasons:\n1. Validation may be crucial during development, but carries a real runtime cost in production where the pipeline is already trusted. Previously there was no way to turn it off short of removing the decorators from the source code.\n2. When generating graph visualizations and we don\u0027t want to crowd them with validation nodes, passing  `disable_data_quality_checks\u003dTrue` at construction time causes the `_raw` and validator nodes not to be added to the graph - so any visualization of that driver\u0027s graph will only show the \"business logic\" nodes.\n\n## What was changed\n\n### `hamilton/function_modifiers/validation.py`\n\n`BaseDataValidationDecorator` (parent of both `check_output` and `check_output_custom`) now:\n\n1. Overrides `optional_config()` to declare `{\"disable_data_quality_checks\": False}`. This registers the key with Hamilton\u0027s config-filtering pipeline so it is threaded through to `transform_node` automatically — no driver plumbing needed.\n\n3. Adds an early-return guard at the top of `transform_node`:\n\n   ```python\n   if config.get(\"disable_data_quality_checks\", False):\n       return [node_]\n   ```\n\n   When the flag is set, the node is returned unchanged — no `_raw` node, no validator nodes, and no expansion happens. The cost is literally zero: the extra nodes are never created.\n\n### `hamilton/driver.py`\n\n`Builder` gains a convenience method:\n\n```python\ndef with_data_quality_disabled(self) -\u003e \"Builder\":\n    return self.with_config({\"disable_data_quality_checks\": True})\n```\n\nThis is a thin wrapper over `with_config` — discoverable by IDE autocomplete and explicit about intent. Because `with_config` does a dict `.update()`, a later call like `.with_config({\"disable_data_quality_checks\": False})` will re-enable validation, which is the expected last-write-wins behavior.\n\n## Usage\n\n**Via the `Builder` convenience method (recommended):**\n\n```python\ndr \u003d (\n    hamilton.driver.Builder()\n    .with_modules(my_pipeline)\n    .with_data_quality_disabled()\n    .build()\n)\n```\n\n**Via `with_config` directly (equivalent, useful when config is assembled dynamically):**\n\n```python\ndr \u003d (\n    hamilton.driver.Builder()\n    .with_modules(my_pipeline)\n    .with_config({\"disable_data_quality_checks\": True})\n    .build()\n)\n```\n\n**Legacy `Driver` constructor:**\n\n```python\ndr \u003d hamilton.driver.Driver(\n    {\"disable_data_quality_checks\": True},\n    my_pipeline,\n    adapter\u003dDefaultAdapter(),\n)\n```\n\n## Tests added\n\n| File | Test | What it covers |\n|------|------|----------------|\n| `tests/function_modifiers/test_validation.py` | `test_check_output_disabled_via_config_returns_original_node` | `check_output_custom` returns the original node unchanged when flag is set |\n| `tests/function_modifiers/test_validation.py` | `test_check_output_builtin_disabled_via_config_returns_original_node` | `check_output` (built-in validators) also respects the flag |\n| `tests/test_end_to_end.py` | `test_builder_with_data_quality_disabled_removes_validator_nodes` | No DQ-tagged nodes appear in `list_available_variables()` when disabled |\n| `tests/test_end_to_end.py` | `test_builder_with_data_quality_disabled_still_executes_correctly` | Driver executes correctly and returns the function\u0027s real output when disabled |\n| `tests/test_end_to_end.py` | `test_disable_data_quality_checks_config_key_works_directly` | Raw `with_config` path (no convenience method) also suppresses validator nodes |\n\nAll 13 pre-existing validation tests continue to pass.\n\n## Design notes\n\n- **Graph-construction time, not execution time.** Disabling at construction eliminates the extra nodes entirely. An execution-time approach (e.g., a lifecycle adapter) would still pay graph construction and scheduling overhead, and would be harder to reason about.\n\n- **Config key, not a subclass.** A `NoValidationBuilder` subclass was considered. It was rejected: this is a single boolean flag, not a fundamentally different execution model. The existing `Builder` method pattern (`with_config`, `with_adapters`, …) is the right weight here. The `Builder.with_data_quality_disabled()` convenience method is offered as a discoverable alias — if maintainers prefer, the method alone (without the raw config key) or the raw key alone (without the method) is equally viable.\n\n- **`optional_config()` is the correct hook.** Hamilton\u0027s `resolve_config` / `filter_config` machinery passes only declared config keys to each decorator. Registering the key via `optional_config()` means the flag is silently ignored (defaulting to `False`) by all existing drivers that never set it — no breaking change.\n\n## Checklist\n\n- [x] PR has an informative and human-readable title (this will be pulled into the release notes)\n- [x] Changes are limited to a single goal (no scope creep)\n- [x] Code passed the pre-commit check \u0026 code is left cleaner/nicer than when first encountered.\n- [x] Any _change_ in functionality is tested\n- [x] New functions are documented (with a description, list of inputs, and expected output)\n- [x] Placeholder code is flagged / future TODOs are captured in comments\n- [x] Project documentation has been updated if adding/changing functionality."
    },
    {
      "commit": "7644a30440dd5142331c43bbe997476ec3a4baaf",
      "tree": "3e937d7658da6e717bb2219fb3b7b6b6d15f7aba",
      "parents": [
        "78ec446e28e565a9bdeb0c3938bb3eded89058b7"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Fri May 29 15:06:07 2026 -0700"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun May 31 23:09:50 2026 -0700"
      },
      "message": "Include metadata in numpy/polars cache fingerprints to prevent collisions\n\nhash_numpy_array now includes shape and dtype in the hash, preventing\ncollisions between arrays with identical raw bytes but different\nsemantics (e.g., shape\u003d(6,) vs shape\u003d(2,3)).\n\nhash_polars_dataframe now includes column names and dtypes (schema)\nin the hash, preventing collisions between DataFrames with identical\ncell values but different column schemas.\n\nExisting caches will simply miss (different hash \u003d recomputation),\nnot produce incorrect results.\n\nReported-by: Dem0\n"
    },
    {
      "commit": "78ec446e28e565a9bdeb0c3938bb3eded89058b7",
      "tree": "b9c1c05bebc60039f0f6a7fe0a805816e74daa22",
      "parents": [
        "21a4a96f5cc58f253e35e35a9a7950d0bb6cff17"
      ],
      "author": {
        "name": "Naishadam Raghunandan Kumar",
        "email": "RaghunandanKumar@users.noreply.github.com",
        "time": "Fri May 22 18:26:52 2026 -0400"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Wed May 27 22:16:27 2026 -0700"
      },
      "message": "docs: enable source links in API reference\n"
    },
    {
      "commit": "21a4a96f5cc58f253e35e35a9a7950d0bb6cff17",
      "tree": "56beffe19f70ff64f84e7d10aba3b821f201f292",
      "parents": [
        "6c20c0b1704b8611a104d4ed1c1668d0566c5e88"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Mon May 25 12:35:35 2026 -0700"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Mon May 25 19:06:15 2026 -0700"
      },
      "message": "Make verify scripts self-contained with GPG, SHA512, RAT, build, and functional checks\n\nEach verify_*.sh script now:\n- Downloads artifacts from SVN (or accepts local path)\n- Verifies GPG signatures\n- Verifies SHA512 checksums\n- Runs Apache RAT with .rat-excludes\n- Builds from source tarball\n- Installs wheel and runs functional tests\n\nUsage: scripts/verify-sub-packages/verify_sdk.sh 0.9.0 0 [artifacts_dir]\n\nAlso adds verification-sub-packages.sh orchestrator that runs all 4.\n"
    },
    {
      "commit": "6c20c0b1704b8611a104d4ed1c1668d0566c5e88",
      "tree": "71ce0a382b813a894fd3331880483f9a651e8723",
      "parents": [
        "c8b94ec21b3be0398e31f7abe9b584a6a47911a7"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Mon May 25 10:58:43 2026 -0700"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Mon May 25 11:47:55 2026 -0700"
      },
      "message": "Add packaging to runtime dependencies\n\npandas_extensions.py imports packaging.version.Version (added in 4dbaf085\nfor pandas 2.2+ compatibility) but packaging was never added to the\nruntime dependencies. It worked previously because pip/setuptools always\nbring packaging along, but bare uv venvs expose the missing dep.\n"
    },
    {
      "commit": "c8b94ec21b3be0398e31f7abe9b584a6a47911a7",
      "tree": "d82f02b8f89f6cc06a4a09a57bbfefd9cd90a6fc",
      "parents": [
        "1f34764f9beff1b543d9955ad121b30ac9ed373d"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Mon May 25 11:33:51 2026 -0700"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Mon May 25 11:47:37 2026 -0700"
      },
      "message": "Add Apache license headers to SDK CLI template files\n\nThese jinja2 templates were missing license headers, flagged by Apache RAT\nduring release verification.\n"
    },
    {
      "commit": "1f34764f9beff1b543d9955ad121b30ac9ed373d",
      "tree": "45420c208f99bb0f7900ca5d447dd11854227df4",
      "parents": [
        "1eea0805f03e61a5cd8ef20ea0c0f19e4260c3f5"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Mon May 25 11:25:48 2026 -0700"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Mon May 25 11:47:37 2026 -0700"
      },
      "message": "Fix twine-check glob to match sub-package wheels\n\nThe pattern was hardcoded to \u0027apache_hamilton-*.whl\u0027 which only matches\nthe core package. Changed to \u0027apache_hamilton*.whl\u0027 to also match\napache_hamilton_sdk, apache_hamilton_ui, apache_hamilton_lsp, and\napache_hamilton_contrib wheels.\n"
    },
    {
      "commit": "1eea0805f03e61a5cd8ef20ea0c0f19e4260c3f5",
      "tree": "13284580e96514a9c4038553b225fa345830c142",
      "parents": [
        "231122561da0588f463ae052a4041bbbe2bed032"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Sun May 24 21:48:46 2026 -0700"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun May 24 21:56:27 2026 -0700"
      },
      "message": "Fix UI sdist to include tests, exclude untracked hamilton_ui/tests from wheel\n"
    },
    {
      "commit": "231122561da0588f463ae052a4041bbbe2bed032",
      "tree": "dc4ebbf11b05fc7f0b5e44e5074e3e587b8d7c97",
      "parents": [
        "5b8763317b535a81a30d8367f4aed8c93dc22e2e"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Sun May 24 12:38:34 2026 -0700"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun May 24 21:13:26 2026 -0700"
      },
      "message": "Replace elkjs (EPL-2.0) with dagre (MIT) for DAG visualization layout\n\nelkjs uses the Eclipse Public License 2.0 which is Category B under\nApache licensing policy and cannot be bundled in an Apache release.\n\ndagre is MIT licensed (Category A) and supports compound/clustered\ngraphs natively via setParent(), which handles Hamilton\u0027s hierarchical\nnode grouping (by module, namespace, defining function).\n\nThe layout uses dagre\u0027s compound graph mode:\n- Group nodes are added without explicit dimensions (dagre computes\n  bounding boxes from children automatically)\n- Leaf nodes use their measured dimensions\n- All edges are included regardless of group boundaries\n- Positions are converted from dagre\u0027s center-based coordinates to\n  ReactFlow\u0027s top-left relative-to-parent model\n"
    },
    {
      "commit": "5b8763317b535a81a30d8367f4aed8c93dc22e2e",
      "tree": "2df06ca0956ce0ccfb7e0001cdafa5b4c64731ce",
      "parents": [
        "76f98a69a9d0af8fa1498ea5b846ac0024813585"
      ],
      "author": {
        "name": "Dev-iL",
        "email": "6509619+Dev-iL@users.noreply.github.com",
        "time": "Sun May 24 19:22:47 2026 +0300"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun May 24 21:09:37 2026 -0700"
      },
      "message": "Surface schema names in type display + polars LazyFrame support\n\n- get_type_as_string (htypes.py): when a generic has args that all carry\n  __name__, returns \"Base[Arg]\" instead of just \"Base\". LazyFrame[OHLCVSchema]\n  now displays correctly in DAG visualizer, node tables, MCP tool descriptions,\n  and Node.__repr__. Pandera-agnostic — no new import in htypes.py.\n\n- h_pandera.check_output (h_pandera.py): guarded import of pandera.typing.polars\n  (try/except ImportError); get_validators now recognises polars LazyFrame and\n  DataFrame annotations in addition to the existing pandas path.\n\n- pandera_validators.py: added \"polars_lazyframe\" to pandera_supported_extensions\n  so PanderaDataFrameValidator.applies_to accepts polars.LazyFrame-derived types.\n\n- New test file tests/integrations/pandera/test_h_pandera_polars.py (6 tests,\n  gated on polars being installed): get_type_as_string display, validator\n  construction for both polars container types, and end-to-end dr.execute()\n  pass/fail for a schema-decorated LazyFrame function.\n\nCo-Authored-By: Claude Sonnet 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "76f98a69a9d0af8fa1498ea5b846ac0024813585",
      "tree": "642a76a1591be51dbe2333493bc18adf2a3d58e0",
      "parents": [
        "cace245d02c003cc03f16b149be38a3f89ef3b33"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 24 09:35:29 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 24 09:35:29 2026 -0700"
      },
      "message": "Bump urllib3 from 2.6.3 to 2.7.0 in /ui/backend (#1581)\n\nBumps [urllib3](https://github.com/urllib3/urllib3) from 2.6.3 to 2.7.0.\n- [Release notes](https://github.com/urllib3/urllib3/releases)\n- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)\n- [Commits](https://github.com/urllib3/urllib3/compare/2.6.3...2.7.0)\n\n---\nupdated-dependencies:\n- dependency-name: urllib3\n  dependency-version: 2.7.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "cace245d02c003cc03f16b149be38a3f89ef3b33",
      "tree": "2da1a4f6cc9fb858e0d90ff6fb44caf736624819",
      "parents": [
        "de8b1861e3bd57fce1d08cf6f7f7135bcda1e6d6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 24 09:35:25 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 24 09:35:25 2026 -0700"
      },
      "message": "Bump idna from 3.11 to 3.15 in /ui/backend (#1590)\n\nBumps [idna](https://github.com/kjd/idna) from 3.11 to 3.15.\n- [Release notes](https://github.com/kjd/idna/releases)\n- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.md)\n- [Commits](https://github.com/kjd/idna/compare/v3.11...v3.15)\n\n---\nupdated-dependencies:\n- dependency-name: idna\n  dependency-version: \u00273.15\u0027\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "de8b1861e3bd57fce1d08cf6f7f7135bcda1e6d6",
      "tree": "4411d90153a689f35a23639845819e2ac19503ae",
      "parents": [
        "58be48b0b5a8cb8fc9157a1473cba01be754858e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 24 09:35:21 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 24 09:35:21 2026 -0700"
      },
      "message": "Bump webpack-dev-server from 5.2.3 to 5.2.4 in /contrib/docs (#1591)\n\nBumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) from 5.2.3 to 5.2.4.\n- [Release notes](https://github.com/webpack/webpack-dev-server/releases)\n- [Changelog](https://github.com/webpack/webpack-dev-server/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/webpack/webpack-dev-server/compare/v5.2.3...v5.2.4)\n\n---\nupdated-dependencies:\n- dependency-name: webpack-dev-server\n  dependency-version: 5.2.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "58be48b0b5a8cb8fc9157a1473cba01be754858e",
      "tree": "04abff464ea3c94d74707e98b493905703c6d25e",
      "parents": [
        "e52aab8dcfe774ce234d4bde9cb9cb55e84937df"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 24 09:35:16 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 24 09:35:16 2026 -0700"
      },
      "message": "Bump protobufjs from 7.5.5 to 7.6.0 in /ui/frontend (#1592)\n\nBumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.5.5 to 7.6.0.\n- [Release notes](https://github.com/protobufjs/protobuf.js/releases)\n- [Changelog](https://github.com/protobufjs/protobuf.js/blob/protobufjs-v7.6.0/CHANGELOG.md)\n- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.5...protobufjs-v7.6.0)\n\n---\nupdated-dependencies:\n- dependency-name: protobufjs\n  dependency-version: 7.6.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e52aab8dcfe774ce234d4bde9cb9cb55e84937df",
      "tree": "8a0a738f85dc1ff39c9e63b61032ce9d62ef739a",
      "parents": [
        "9ef6cd499960503c4c4fad549a9c771f147390b5"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 24 09:35:12 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 24 09:35:12 2026 -0700"
      },
      "message": "Bump qs and express in /contrib/docs (#1597)\n\nBumps [qs](https://github.com/ljharb/qs) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.\n\nUpdates `qs` from 6.14.2 to 6.15.2\n- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/ljharb/qs/compare/v6.14.2...v6.15.2)\n\nUpdates `express` from 4.22.1 to 4.22.2\n- [Release notes](https://github.com/expressjs/express/releases)\n- [Changelog](https://github.com/expressjs/express/blob/v4.22.2/History.md)\n- [Commits](https://github.com/expressjs/express/compare/v4.22.1...v4.22.2)\n\n---\nupdated-dependencies:\n- dependency-name: qs\n  dependency-version: 6.15.2\n  dependency-type: indirect\n- dependency-name: express\n  dependency-version: 4.22.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "9ef6cd499960503c4c4fad549a9c771f147390b5",
      "tree": "bb10a90f15121043a3c7b75a0af75575124ffa26",
      "parents": [
        "69f3909ebbf18211e1e031f53fe1dfed8234402c"
      ],
      "author": {
        "name": "Arnav Balyan",
        "email": "arnavbalyan1@gmail.com",
        "time": "Tue May 12 15:44:38 2026 +0530"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun May 24 08:58:15 2026 -0700"
      },
      "message": "update\n"
    },
    {
      "commit": "69f3909ebbf18211e1e031f53fe1dfed8234402c",
      "tree": "92fb5bb1353cce349be04aed781dcede544e7d9c",
      "parents": [
        "56652576f863ce550a5d14c4d9954d177ee9f62b"
      ],
      "author": {
        "name": "Arnav Balyan",
        "email": "arnavbalyan1@gmail.com",
        "time": "Wed May 20 19:10:40 2026 +0530"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun May 24 08:47:54 2026 -0700"
      },
      "message": "update\n"
    },
    {
      "commit": "56652576f863ce550a5d14c4d9954d177ee9f62b",
      "tree": "3b24eb98438fdf3087f760c10cce5f94f241b8c7",
      "parents": [
        "24a3d57879d78efe809881432323be9e617f4b92"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Sun May 17 20:48:28 2026 -0700"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun May 24 08:24:18 2026 -0700"
      },
      "message": "Add redirect packages, fix tests, and prep for sub-package release\n\n- Add sf-hamilton-{sdk,ui,lsp,contrib}-redirect packages\n- Fix LSP: pygls\u003e\u003d2.0 compat (remove deprecated loop kwarg)\n- Fix UI: remove broken hamilton-ui entrypoint (use hamilton ui CLI)\n- Fix UI: settings_mini STATICFILES_DIRS to build/assets/ (Vite)\n- Fix UI: ProjectOut.role type annotation for pydantic 2.x\n- Fix SDK test: update polars stats expected values for polars 1.34+\n- Fix UI test: relax build directory string check\n- Add scripts/verify-sub-packages.md for release validation\n"
    },
    {
      "commit": "24a3d57879d78efe809881432323be9e617f4b92",
      "tree": "69287fea283f7dd22c402fbf1e73e2966cb8531f",
      "parents": [
        "59b750e05d149f0bec5db7267df5f2516bc78ca3"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Sat May 16 12:41:01 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 17 05:41:01 2026 +1000"
      },
      "message": "Rename sf hamilton to apache hamilton (#1561)\n\n* Rename sf-hamilton to apache-hamilton across docs, examples, and source\n\nUpdate all references to sf-hamilton package names to use the\napache-hamilton prefix. Covers error messages, install instructions,\nrequirements.txt files, notebooks, CI workflows, VSCode extension,\nand UI components. Import names are unchanged.\n\nThe pyproject.toml extras for lsp/sdk/ui still point to sf-hamilton-*\npackages until stable apache-hamilton-* versions are published to PyPI.\n\n* Update pyproject.toml extras and disable ddtrace pytest plugin\n\n- Point lsp/sdk/ui extras to sf-hamilton-* with TODO to switch once\n  stable apache-hamilton-* versions are published to PyPI\n- Update ui/backend dependency from sf-hamilton to apache-hamilton\n- Disable ddtrace pytest plugin which spawns background threads that\n  prevent clean process exit after the test suite completes\n\n* Fix docusaurus CI build by switching from yarn to npm\n\nThe contrib/docs project uses npm (has package-lock.json, no yarn.lock)\nbut the workflow was using yarn with cache: yarn. This caused webpack\nProgress Plugin validation errors. Switch to npm ci for deterministic\ninstalls matching the lockfile.\n\n* Address review: rename remaining sf-hamilton references in Dockerfile, conda script, and jinja2 template"
    },
    {
      "commit": "59b750e05d149f0bec5db7267df5f2516bc78ca3",
      "tree": "bf312be76aedc5582c8fec05db2b650e1be414f3",
      "parents": [
        "3c85a7133a770b590ddbb92438e5f9ca88d2214e"
      ],
      "author": {
        "name": "Arnav Balyan",
        "email": "arnavbalyan1@gmail.com",
        "time": "Tue May 12 16:22:40 2026 +0530"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sat May 16 11:22:24 2026 -0700"
      },
      "message": "update\n"
    },
    {
      "commit": "3c85a7133a770b590ddbb92438e5f9ca88d2214e",
      "tree": "65d2cdaa85e9bd57052eabe2f2dfe2cc0be50441",
      "parents": [
        "caea104f9aa569a2fa68bfc3bdb24359b91877b3"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 10 21:57:20 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 21:57:20 2026 -0700"
      },
      "message": "Bump postcss from 8.4.33 to 8.5.13 in /dev_tools/vscode_extension (#1567)\n\nBumps [postcss](https://github.com/postcss/postcss) from 8.4.33 to 8.5.13.\n- [Release notes](https://github.com/postcss/postcss/releases)\n- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/postcss/postcss/compare/8.4.33...8.5.13)\n\n---\nupdated-dependencies:\n- dependency-name: postcss\n  dependency-version: 8.5.13\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "caea104f9aa569a2fa68bfc3bdb24359b91877b3",
      "tree": "a97fa88eb99d055d3df4f0a5c96a17ff671ffc2d",
      "parents": [
        "1950787278aa47d955adc491be204fc26e45a116"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 10 21:57:15 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 21:57:15 2026 -0700"
      },
      "message": "Bump lodash from 4.17.23 to 4.18.1 in /dev_tools/vscode_extension (#1568)\n\nBumps [lodash](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.\n- [Release notes](https://github.com/lodash/lodash/releases)\n- [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1)\n\n---\nupdated-dependencies:\n- dependency-name: lodash\n  dependency-version: 4.18.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "1950787278aa47d955adc491be204fc26e45a116",
      "tree": "3d7703d5ee7b545026ee841150ca4c75a0d61eec",
      "parents": [
        "7490986de73f233fb1acfcdd32a9c00a5542d5e1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 10 21:57:11 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 21:57:11 2026 -0700"
      },
      "message": "Bump postcss from 8.5.6 to 8.5.14 in /ui/frontend (#1576)\n\nBumps [postcss](https://github.com/postcss/postcss) from 8.5.6 to 8.5.14.\n- [Release notes](https://github.com/postcss/postcss/releases)\n- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/postcss/postcss/compare/8.5.6...8.5.14)\n\n---\nupdated-dependencies:\n- dependency-name: postcss\n  dependency-version: 8.5.14\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "7490986de73f233fb1acfcdd32a9c00a5542d5e1",
      "tree": "0acdb1cb99bd45c98e641323f088755fbea6b216",
      "parents": [
        "c5873ff8b82ec4f70add5f0442b0637c4d868e52"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 10 21:57:06 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 21:57:06 2026 -0700"
      },
      "message": "Bump fast-uri from 3.1.0 to 3.1.2 in /contrib/docs (#1577)\n\nBumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.0 to 3.1.2.\n- [Release notes](https://github.com/fastify/fast-uri/releases)\n- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.0...v3.1.2)\n\n---\nupdated-dependencies:\n- dependency-name: fast-uri\n  dependency-version: 3.1.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "c5873ff8b82ec4f70add5f0442b0637c4d868e52",
      "tree": "db882e3507bbadf71c3f71c4f669a3293be9ef60",
      "parents": [
        "3ab65d34d09aab6cca38860ed0d08af0576f0756"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 10 21:57:02 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 21:57:02 2026 -0700"
      },
      "message": "Bump django from 5.2.13 to 5.2.14 in /ui/backend (#1578)\n\nBumps [django](https://github.com/django/django) from 5.2.13 to 5.2.14.\n- [Commits](https://github.com/django/django/compare/5.2.13...5.2.14)\n\n---\nupdated-dependencies:\n- dependency-name: django\n  dependency-version: 5.2.14\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "3ab65d34d09aab6cca38860ed0d08af0576f0756",
      "tree": "382493b2864fbe4cd5250f73d9bf6a42f5542a26",
      "parents": [
        "f8f4c0edbce6124aa76b99579742eb5a649f368f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 10 21:56:58 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 21:56:58 2026 -0700"
      },
      "message": "Bump @babel/plugin-transform-modules-systemjs in /contrib/docs (#1579)\n\nBumps [@babel/plugin-transform-modules-systemjs](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-modules-systemjs) from 7.29.0 to 7.29.4.\n- [Release notes](https://github.com/babel/babel/releases)\n- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/babel/babel/commits/v7.29.4/packages/babel-plugin-transform-modules-systemjs)\n\n---\nupdated-dependencies:\n- dependency-name: \"@babel/plugin-transform-modules-systemjs\"\n  dependency-version: 7.29.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "f8f4c0edbce6124aa76b99579742eb5a649f368f",
      "tree": "1ab6c3cb454b6ea0ab4b11678226c91629b7876f",
      "parents": [
        "594e43af2c2f9e56c55ee035c2958d8779a4c0a9"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun May 10 21:56:54 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 21:56:54 2026 -0700"
      },
      "message": "Bump fast-uri from 3.1.0 to 3.1.2 in /dev_tools/vscode_extension (#1580)\n\nBumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.0 to 3.1.2.\n- [Release notes](https://github.com/fastify/fast-uri/releases)\n- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.0...v3.1.2)\n\n---\nupdated-dependencies:\n- dependency-name: fast-uri\n  dependency-version: 3.1.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "594e43af2c2f9e56c55ee035c2958d8779a4c0a9",
      "tree": "10f1f0eb0c3ac5b4f2607b552233bf306d43392c",
      "parents": [
        "b41a1de1973ce4602517794b63010b28a5cb6ced"
      ],
      "author": {
        "name": "Octopus",
        "email": "liyuan851277048@icloud.com",
        "time": "Mon May 11 12:55:03 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 10 21:55:03 2026 -0700"
      },
      "message": "feat: add MiniMax as alternative LLM provider for RAG dataflows (#1523)\n\nAdd MiniMax as an alternative LLM provider alongside OpenAI in faiss_rag and conversational_rag contrib dataflows using Hamilton\u0027s @config.when pattern.\n\n- Add llm_client and model config variants (__openai / __minimax)\n- rag_response and conversational_rag_response take model as a parameter\n- Default (no config) remains OpenAI — backwards compatible\n- MiniMax uses OpenAI-compatible API, no new dependencies\n- Add unit and integration tests for both providers\n- Update valid_configs.jsonl, tags.json, and README for both dataflows"
    },
    {
      "commit": "b41a1de1973ce4602517794b63010b28a5cb6ced",
      "tree": "93855bb438154cc65feba363927cae03cd5b5d4f",
      "parents": [
        "e14969cda60c538778e807f2ec5dae8fcd485b96"
      ],
      "author": {
        "name": "Olajumoke Akinremi",
        "email": "106763970+Hore01@users.noreply.github.com",
        "time": "Wed May 06 08:30:46 2026 +0100"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun May 10 21:47:48 2026 -0700"
      },
      "message": "docs(testing): add testing guide and runnable example (#1044)\n\nHamilton\u0027s DAG model is the backbone of clean ETL, and tests are how that\nbackbone stays honest. This adds a canonical guide and a runnable example\nthat cover the four scenarios called out in #1044:\n\n  1. Unit-testing plain Hamilton functions\n  2. Unit-testing functions that use decorators (@tag, @parameterize,\n     @extract_columns) -- both by calling the underlying callable and by\n     building a Driver to verify the decorator wiring\n  3. Integration-testing the DAG with `Builder().with_modules(...).build()`,\n     including `inputs\u003d` and `overrides\u003d` for short-circuiting upstream nodes\n  4. Driving an in-memory module via `ad_hoc_utils.create_temporary_module`\n     for self-contained tests (e.g. of custom materializers)\n\nThe docs page at `docs/how-tos/test-hamilton-code.rst` uses\n`.. literalinclude::` to pull every snippet from `examples/testing/`, so the\nguide and the example cannot drift out of sync.\n\nCloses #1044\n\nSigned-off-by: Olajumoke Akinremi \u003c106763970+Hore01@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "e14969cda60c538778e807f2ec5dae8fcd485b96",
      "tree": "2d377b59ea4332a1c558e62d9e06d267a9b794f2",
      "parents": [
        "5301a9de0ceaf9b304c558164a43f734bf26bf34"
      ],
      "author": {
        "name": "Arnav Balyan",
        "email": "60175178+ArnavBalyan@users.noreply.github.com",
        "time": "Mon May 11 10:10:18 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 14:40:18 2026 +1000"
      },
      "message": "Fix false multiple decorator error when combining schema.output and tag (#1574)\n\nChanges SchemaOutput inherits from tag and shares its lifecycle name, so multiplicity check tripped on the existing tag instance.\nCount only decorators of the same concrete class as self before raising, independent decorators sharing a lifecycle name now compose."
    },
    {
      "commit": "5301a9de0ceaf9b304c558164a43f734bf26bf34",
      "tree": "4276fe719b0a10f6403aeef7acf143877909ea54",
      "parents": [
        "a9a4e5fcf1289df89c838ecae92a366974279b75"
      ],
      "author": {
        "name": "Arnav Balyan",
        "email": "60175178+ArnavBalyan@users.noreply.github.com",
        "time": "Mon May 11 10:09:21 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 14:39:21 2026 +1000"
      },
      "message": "fix tqdm: Fix progress bar to 100% on successful execution (#1570)\n\nFixes TDQM hook with overrides #845. The h_tqdm.ProgressBar adapter never reached 100% when overrides were passed to .execute() because override nodes are counted in the bar\u0027s total but do not trigger run_after_node_execution, leaving the bar short of total on a successful run.\nOn a successful graph execution we top up progress_bar.n to progress_bar.total inside run_after_graph_execution.. On failure we leave the partial count visible."
    },
    {
      "commit": "a9a4e5fcf1289df89c838ecae92a366974279b75",
      "tree": "1395a27b0c70393da727fba30acce29ea05d7fe2",
      "parents": [
        "e10f6b27ef4fc75e22b1e377399c880b09e743b5"
      ],
      "author": {
        "name": "Dev-iL",
        "email": "6509619+Dev-iL@users.noreply.github.com",
        "time": "Sun May 03 22:31:00 2026 +0300"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun May 10 21:29:15 2026 -0700"
      },
      "message": "Random CI fixes\n"
    },
    {
      "commit": "e10f6b27ef4fc75e22b1e377399c880b09e743b5",
      "tree": "d902f9939756a68b7ecfc40a8bf443a8b3a8ef5e",
      "parents": [
        "d93a7658b7398cb8f4096593a992a312b0aff633"
      ],
      "author": {
        "name": "Dev-iL",
        "email": "6509619+Dev-iL@users.noreply.github.com",
        "time": "Sun Apr 26 15:05:32 2026 +0300"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun May 10 21:29:15 2026 -0700"
      },
      "message": "Upgrade Datadog plugin to ddtrace 4.x public API\n\nddtrace 3.0 removed `Span` and `context` from the top-level package.\nMigrate to the canonical `ddtrace.trace` module, bump the version constraint to `\u003e\u003d4.0,\u003c5`, fix stale `sf-hamilton` package references, and add smoke tests for the plugin.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "d93a7658b7398cb8f4096593a992a312b0aff633",
      "tree": "c50387e397e6fd1e40a0a2c85be44f082d51e498",
      "parents": [
        "2db5c425c48d56356fe6996095833a89b04a48ee"
      ],
      "author": {
        "name": "Arnav Balyan",
        "email": "arnavbalyan1@gmail.com",
        "time": "Tue May 05 10:41:26 2026 +0530"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun May 10 21:24:39 2026 -0700"
      },
      "message": "update\n"
    },
    {
      "commit": "2db5c425c48d56356fe6996095833a89b04a48ee",
      "tree": "5100e65119fdc9dbab782ad1335e939ec699fe17",
      "parents": [
        "f566ba2994df89b59a54f7d58186cde4a0d40ef8"
      ],
      "author": {
        "name": "Olajumoke Akinremi",
        "email": "106763970+Hore01@users.noreply.github.com",
        "time": "Wed May 06 18:13:18 2026 +0100"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sat May 09 12:12:38 2026 -0700"
      },
      "message": "docs(reuse): add User Guide page on reusing functions and nodes (#1045)\n\nWalks through the four Hamilton patterns for reusing the same logic\nacross different data sources, regions, or runtime contexts:\n\n- driving the same function module from multiple Drivers\n  (examples/feature_engineering/feature_engineering_multiple_contexts/)\n- Builder.allow_module_overrides() for swapping same-named functions\n  (examples/module_overrides/)\n- @subdag for repeating a transformation graph inside one Driver\n  (examples/reusing_functions/)\n- @parameterized_subdag for many subdags at once, with the readability\n  warning quoted verbatim from the source docstring\n\nEvery snippet on the page is a literalinclude pulled from the example\nfiles, so the docs and the runnable code can\u0027t drift apart.\n\nCloses #1045\n\nSigned-off-by: Olajumoke Akinremi \u003c106763970+Hore01@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "f566ba2994df89b59a54f7d58186cde4a0d40ef8",
      "tree": "c5a269891281d3e05102d8aebd64627b9a94fdf4",
      "parents": [
        "b3a1ec7fbf36a8fcd870d5f7aca2a0f848b9e2b5"
      ],
      "author": {
        "name": "Max Demers",
        "email": "maxgdemers@gmail.com",
        "time": "Sat Apr 25 14:54:30 2026 -0500"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sat May 02 23:16:16 2026 -0700"
      },
      "message": "feat: support optional flag in from_ extractors\n\n* Add optional flag to ExtractorFactory to skip data loader when target\n  was not found rather than raise exceptions.\n* Add unit tests for optional and non-optional extractors.\n* Add more detailed comments and documentation note.\n"
    },
    {
      "commit": "b3a1ec7fbf36a8fcd870d5f7aca2a0f848b9e2b5",
      "tree": "89cdd86d1d743d7df9af33b47d919e7b3144650b",
      "parents": [
        "3c48005b6f06c7b344716b0fb9e1dfccb210cac8"
      ],
      "author": {
        "name": "Abdeltoto",
        "email": "paypalbio360@gmail.com",
        "time": "Sat Apr 25 20:55:29 2026 -0400"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sat May 02 23:10:52 2026 -0700"
      },
      "message": "Fix resolve docs parameterization example\n\nMade-with: Cursor\n"
    },
    {
      "commit": "3c48005b6f06c7b344716b0fb9e1dfccb210cac8",
      "tree": "361163917e91a9f881e9bbc0cd3cddb6370c4dee",
      "parents": [
        "3050c12a8ec055a703cc375069dcd91bfb1b3c36"
      ],
      "author": {
        "name": "Abdeltoto",
        "email": "paypalbio360@gmail.com",
        "time": "Sat Apr 25 21:38:30 2026 -0400"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sat May 02 23:08:45 2026 -0700"
      },
      "message": "Fix async builder fluent typing\n\nMade-with: Cursor\n"
    },
    {
      "commit": "3050c12a8ec055a703cc375069dcd91bfb1b3c36",
      "tree": "320295939ab948e106d12f9441efc6e6fe5d3092",
      "parents": [
        "bb54dc5531c46722eb2587589bb22ed80e35349f"
      ],
      "author": {
        "name": "Arnav Balyan",
        "email": "arnavbalyan1@gmail.com",
        "time": "Thu Apr 30 20:03:19 2026 +0530"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sat May 02 20:34:22 2026 -0700"
      },
      "message": "update\n"
    },
    {
      "commit": "bb54dc5531c46722eb2587589bb22ed80e35349f",
      "tree": "84f3704c7c6c506b5af8fa7ca3be6f4ba808ab3e",
      "parents": [
        "4b64575a7256b3e0c289562356d7633c94eefad6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat May 02 20:10:23 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 02 20:10:23 2026 -0700"
      },
      "message": "Bump lodash from 4.17.23 to 4.18.1 in /ui/frontend (#1542)\n\nBumps [lodash](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.\n- [Release notes](https://github.com/lodash/lodash/releases)\n- [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1)\n\n---\nupdated-dependencies:\n- dependency-name: lodash\n  dependency-version: 4.18.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "4b64575a7256b3e0c289562356d7633c94eefad6",
      "tree": "35710b48167fbeceb6102f59ae7b651fc09843ad",
      "parents": [
        "ffb75ea12ac3e5bc75d760fc3baacc4da25d8639"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat May 02 20:10:19 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 02 20:10:19 2026 -0700"
      },
      "message": "Bump vite from 6.4.1 to 6.4.2 in /ui/frontend (#1543)\n\nBumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.4.1 to 6.4.2.\n- [Release notes](https://github.com/vitejs/vite/releases)\n- [Changelog](https://github.com/vitejs/vite/blob/v6.4.2/packages/vite/CHANGELOG.md)\n- [Commits](https://github.com/vitejs/vite/commits/v6.4.2/packages/vite)\n\n---\nupdated-dependencies:\n- dependency-name: vite\n  dependency-version: 6.4.2\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "ffb75ea12ac3e5bc75d760fc3baacc4da25d8639",
      "tree": "144874768f50f5eb6741199ac64d23a523a13c77",
      "parents": [
        "e112f52f6668be649ad3836d3b55c229e310c4ed"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat May 02 20:10:15 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 02 20:10:15 2026 -0700"
      },
      "message": "Bump django from 5.2.12 to 5.2.13 in /ui/backend (#1545)\n\nBumps [django](https://github.com/django/django) from 5.2.12 to 5.2.13.\n- [Commits](https://github.com/django/django/compare/5.2.12...5.2.13)\n\n---\nupdated-dependencies:\n- dependency-name: django\n  dependency-version: 5.2.13\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e112f52f6668be649ad3836d3b55c229e310c4ed",
      "tree": "cc606db375c52506587bfb417951ce4cb2ee89f6",
      "parents": [
        "bb42ffe566a2d0128e8aff8d4f9cc46d356da0dc"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat May 02 20:10:10 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 02 20:10:10 2026 -0700"
      },
      "message": "Bump follow-redirects from 1.15.11 to 1.16.0 in /contrib/docs (#1547)\n\nBumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.11 to 1.16.0.\n- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)\n- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.11...v1.16.0)\n\n---\nupdated-dependencies:\n- dependency-name: follow-redirects\n  dependency-version: 1.16.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "bb42ffe566a2d0128e8aff8d4f9cc46d356da0dc",
      "tree": "6090d8ed0533362b4dd5c15064ae31d7a6529e5c",
      "parents": [
        "98457cc4a37792baa39a10d46bdadde4239206bd"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat May 02 20:10:06 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 02 20:10:06 2026 -0700"
      },
      "message": "Bump protobufjs from 7.5.4 to 7.5.5 in /ui/frontend (#1549)\n\nBumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.5.4 to 7.5.5.\n- [Release notes](https://github.com/protobufjs/protobuf.js/releases)\n- [Changelog](https://github.com/protobufjs/protobuf.js/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.5.4...protobufjs-v7.5.5)\n\n---\nupdated-dependencies:\n- dependency-name: protobufjs\n  dependency-version: 7.5.5\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "98457cc4a37792baa39a10d46bdadde4239206bd",
      "tree": "4cfb56fc32791b466e1c7779aa5d239f8d065914",
      "parents": [
        "3e0fa5c44e10903f1e941c382dc38b4b16140197"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat May 02 18:53:48 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 02 18:53:48 2026 -0700"
      },
      "message": "Bump follow-redirects from 1.15.11 to 1.16.0 in /ui/frontend (#1554)\n\nBumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.11 to 1.16.0.\n- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)\n- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.11...v1.16.0)\n\n---\nupdated-dependencies:\n- dependency-name: follow-redirects\n  dependency-version: 1.16.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "3e0fa5c44e10903f1e941c382dc38b4b16140197",
      "tree": "b206a413af10d1b4969b4b51f29b58dd5ae719e3",
      "parents": [
        "cde95ef61bcdebe5c65a6ca875c78b01c77420d4"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat May 02 18:53:27 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 02 18:53:27 2026 -0700"
      },
      "message": "Bump dompurify from 3.3.2 to 3.4.1 in /ui/frontend (#1557)\n\nBumps [dompurify](https://github.com/cure53/DOMPurify) from 3.3.2 to 3.4.1.\n- [Release notes](https://github.com/cure53/DOMPurify/releases)\n- [Commits](https://github.com/cure53/DOMPurify/compare/3.3.2...3.4.1)\n\n---\nupdated-dependencies:\n- dependency-name: dompurify\n  dependency-version: 3.4.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "cde95ef61bcdebe5c65a6ca875c78b01c77420d4",
      "tree": "5727c270709df40b3db3e35e6f1931f58a4f9b01",
      "parents": [
        "7bf8fc23a7ef772a7e64205db3e9468249c74480"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Sat Apr 25 13:12:31 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 26 06:12:31 2026 +1000"
      },
      "message": "Bump apache-hamilton version to 1.90.0 (#1539)\n\n* Bump apache-hamilton version to 1.90.0\n\n* Updates .rat-excludes and scripts/README.md\n\n* Updates verification README\n\nTo more correctly use uv and explain what to do.\n\n* Fix promote_rc.sh to include wheel files during promotion\n\nThe file filter only matched apache-hamilton-* (dashes) but wheels\nuse apache_hamilton-* (underscores per PEP 427). Match both variants\nusing the package name passed as an argument.\n\n* Add RC verification script for validating release candidates\n\nDownloads artifacts from SVN, verifies GPG signatures and checksums,\nruns Apache RAT license checks, builds from source, runs tests, and\nexercises representative examples.\n\n* Add release announcement email generator\n\nGenerates vote result and release announcement emails scoped to\nthe specific package paths that were part of the voted RC tag.\n\n* Add Slack-friendly release announcement to email generator\n\n* Add sf-hamilton redirect package and document post-vote release steps\n\nThe redirect package (sf-hamilton-redirect/) is a thin wrapper that\ndepends on apache-hamilton, forwarding all 23 optional extras so\nexisting sf-hamilton users get the new release seamlessly.\n\nUpdated scripts/README.md with the full post-vote checklist: promote\nRC, upload to PyPI, build/upload sf-hamilton redirect, sanity check,\nsend announcements, and merge the release branch back to main.\n\n* Templatize sf-hamilton redirect and use env vars in release docs\n\nThe pyproject.toml is now a template with VERSION placeholder.\nA build.sh script stamps in the version, builds, and validates.\nRelease docs updated to use shell variables throughout instead of\nhardcoded version numbers.\n\n* Update scripts/README with scripts reference, env vars, and verification docs"
    },
    {
      "commit": "7bf8fc23a7ef772a7e64205db3e9468249c74480",
      "tree": "5e872d30c0a8974c10e97cb3f5775a44c97199f0",
      "parents": [
        "8ba95e0f68c04a2d1ace9372dabb61a7290c42b1"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Sun Apr 19 16:50:33 2026 -0700"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sat Apr 25 12:56:45 2026 -0700"
      },
      "message": "Enforce examples also have static file CI check run\n"
    },
    {
      "commit": "8ba95e0f68c04a2d1ace9372dabb61a7290c42b1",
      "tree": "7677ed1cfd520f5cf9d7e238c4cc5f4c95bfe197",
      "parents": [
        "38f9cdc3ad4e356621647768be5130a60207a97d"
      ],
      "author": {
        "name": "dedyoc",
        "email": "huyhoaius@gmail.com",
        "time": "Tue Apr 14 19:48:26 2026 +0700"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun Apr 19 16:47:45 2026 -0700"
      },
      "message": "Refactor code and docs\n\nPreviously, the PR for this example (#1532) only had a check for building docs, which bypass the pre-commit code format check.\n"
    },
    {
      "commit": "38f9cdc3ad4e356621647768be5130a60207a97d",
      "tree": "79ccc070003b391aca9b8da87bc62a1d1d68b76d",
      "parents": [
        "e1aa04f7fa2913c513d52b13fe1f6f7b4054b5b4"
      ],
      "author": {
        "name": "dedyoc",
        "email": "huyhoaius@gmail.com",
        "time": "Tue Apr 14 19:44:27 2026 +0700"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun Apr 19 16:47:45 2026 -0700"
      },
      "message": "Fix MLFlow run status handling and add tests for None inputs\n"
    },
    {
      "commit": "e1aa04f7fa2913c513d52b13fe1f6f7b4054b5b4",
      "tree": "7d0dd7edb873a5589fae00f4df3bc5478525fe6a",
      "parents": [
        "c8efc20c0a647b8be806108a1f0a5244b61c936a"
      ],
      "author": {
        "name": "Dev-iL",
        "email": "6509619+Dev-iL@users.noreply.github.com",
        "time": "Tue Apr 07 10:16:08 2026 +0300"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Tue Apr 07 11:24:50 2026 -0700"
      },
      "message": "Mock .git folder in cli test\n"
    },
    {
      "commit": "c8efc20c0a647b8be806108a1f0a5244b61c936a",
      "tree": "62232dd706d98baa3f852cc14c697bd282ed4131",
      "parents": [
        "e84ed90b4428d777449b9bfc413ed86ee41a77c9"
      ],
      "author": {
        "name": "Kartikeya Mandhar",
        "email": "37399242+kartikeyamandhar@users.noreply.github.com",
        "time": "Mon Apr 06 00:06:59 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 06 17:06:59 2026 +1000"
      },
      "message": "Add Neo4j GraphRAG example with TMDB movies dataset (#1532)\n\n* Add Neo4j GraphRAG example with TMDB movies dataset\n\nFull pipeline expressed as Hamilton DAGs:\n- Ingestion: TMDB JSON -\u003e Neo4j via batched Cypher MERGE\n  (4,803 movies, 111k+ person edges, 20 genres, 5,047 companies)\n- Embedding: OpenAI text-embedding-3-small on Movie nodes\n  with Neo4j cosine vector index\n- Retrieval: semantic entity resolution + 4-strategy routing\n  (VECTOR / CYPHER / AGGREGATE / HYBRID) with direct Neo4j Cypher\n- Generation: gpt-4o with graph-grounded context\n- Passes 40 test queries across all retrieval categories\n- DAG visualisations in docs/images/\n\n* Fix README image URLs with correct GitHub username\n\n* Fix .gitignore patterns and add DAG images\n\n* Fix `@resolve` decorator not calling `validate()` on returned decorators (#1524)\n\n* call decorator.validate() in resolve.resolve so that delayed evaluation of extract_fields works; add unit test\n\n* fix new failures in delayed resolve tests by defining dummy functions with valid annotations within the test body\n\n* correct probably typo in test name\n\n* add note above the \u0027defensive\u0027 hasattr check to explain its presence\n\n* add additional tests for resolve + extract_fields; test resolve + arbitrary decorator\n\n* add one more test that uses parameterize_sources instead of extract_fields\n\n* Apply suggestion from @skrawcz\n\n---------\n\nCo-authored-by: Stefan Krawczyk \u003cstefan@dagworks.io\u003e\n\n* Various build \u0026 release fixes (#1529)\n\n* Fix release helper: use --no-use-vcs flag and restore twine check\n\n- Switch from FLIT_USE_VCS\u003d0 env var to --no-use-vcs CLI flag\n  (flit 3.12.0 does not respect the env var)\n- Restore twine to prerequisites check\n- Restore verify_wheel_with_twine call before signing\n\nAdd release tooling: verification scripts, build fixes, and docs\n\n- Add verify_apache_artifacts.py for GPG signature, checksum, and license verification\n- Add scripts/README.md with build, release, and voter verification instructions (uv-based)\n- Add .rat-excludes for Apache RAT license header checks\n- Add verify_ui_build.sh with Apache license header\n- Fix release helper: add verify_wheel_with_twine function, --dry-run flag,\n  remove -incubating suffix from wheel (invalid per PEP 427),\n  clean up original flit artifacts after creating incubating copies\n- Add tests, plugin_tests, and representative examples to flit sdist includes\n\n* Adds uv run to examples\n\nadds uv run to examples\n\n\n* Address PR review feedback\n\n- Fix typo: singed -\u003e signed in release helper\n- Use list unpacking instead of concatenation for files_to_upload\n- Validate exactly 1 tarball/wheel from glob (not just non-empty)\n- Add release dependency group (flit, twine) to pyproject.toml\n- Update README to use uv sync --group release and uv sync --group test\n- Fix grammar and add --clean flag to uv venv in README\n- Add uv run prefix to verify_apache_artifacts.py epilog examples\n- Run ruff format on verify_apache_artifacts.py\n\n* Exclude databackend from license check in pre-commit\n\n* Remove license comments from databackend.py (#1535)\n\n* Remove license comments from databackend.py\n\nRemoved Apache License comments from the file.\n\n* Fix pre-commit-config\n\n---------\n\nCo-authored-by: Stefan Krawczyk \u003cstefank@cs.stanford.edu\u003e\n\n* Bump lodash from 4.17.23 to 4.18.1 in /contrib/docs (#1538)\n\nBumps [lodash](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.\n- [Release notes](https://github.com/lodash/lodash/releases)\n- [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1)\n\n---\nupdated-dependencies:\n- dependency-name: lodash\n  dependency-version: 4.18.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\n\n* Bump brace-expansion from 1.1.12 to 1.1.13 in /contrib/docs (#1537)\n\nBumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.12 to 1.1.13.\n- [Release notes](https://github.com/juliangruber/brace-expansion/releases)\n- [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.12...v1.1.13)\n\n---\nupdated-dependencies:\n- dependency-name: brace-expansion\n  dependency-version: 1.1.13\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\n\n* Bump aiohttp from 3.13.3 to 3.13.4 in /ui/backend (#1536)\n\n---\nupdated-dependencies:\n- dependency-name: aiohttp\n  dependency-version: 3.13.4\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\n\n* Bump pygments from 2.19.2 to 2.20.0 in /ui/backend (#1534)\n\nBumps [pygments](https://github.com/pygments/pygments) from 2.19.2 to 2.20.0.\n- [Release notes](https://github.com/pygments/pygments/releases)\n- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)\n- [Commits](https://github.com/pygments/pygments/compare/2.19.2...2.20.0)\n\n---\nupdated-dependencies:\n- dependency-name: pygments\n  dependency-version: 2.20.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\n\n* Bump path-to-regexp from 0.1.12 to 0.1.13 in /contrib/docs (#1533)\n\nBumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) from 0.1.12 to 0.1.13.\n- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)\n- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/v.0.1.13/History.md)\n- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.12...v.0.1.13)\n\n---\nupdated-dependencies:\n- dependency-name: path-to-regexp\n  dependency-version: 0.1.13\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\n\n* Bump brace-expansion in /dev_tools/vscode_extension (#1530)\n\nBumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.12 to 1.1.13.\n- [Release notes](https://github.com/juliangruber/brace-expansion/releases)\n- [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.12...v1.1.13)\n\n---\nupdated-dependencies:\n- dependency-name: brace-expansion\n  dependency-version: 1.1.13\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\n\n* Bump requests from 2.32.5 to 2.33.0 in /ui/backend (#1528)\n\nBumps [requests](https://github.com/psf/requests) from 2.32.5 to 2.33.0.\n- [Release notes](https://github.com/psf/requests/releases)\n- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)\n- [Commits](https://github.com/psf/requests/compare/v2.32.5...v2.33.0)\n\n---\nupdated-dependencies:\n- dependency-name: requests\n  dependency-version: 2.33.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\n\n* Bump picomatch in /ui/frontend (#1526)\n\nBumps  and [picomatch](https://github.com/micromatch/picomatch). These dependencies needed to be updated together.\n\nUpdates `picomatch` from 2.3.1 to 2.3.2\n- [Release notes](https://github.com/micromatch/picomatch/releases)\n- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)\n\nUpdates `picomatch` from 4.0.3 to 4.0.4\n- [Release notes](https://github.com/micromatch/picomatch/releases)\n- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)\n\n---\nupdated-dependencies:\n- dependency-name: picomatch\n  dependency-version: 2.3.2\n  dependency-type: indirect\n- dependency-name: picomatch\n  dependency-version: 4.0.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\n\n* Bump yaml in /ui/frontend (#1525)\n\nBumps  and [yaml](https://github.com/eemeli/yaml). These dependencies needed to be updated together.\n\nUpdates `yaml` from 2.8.2 to 2.8.3\n- [Release notes](https://github.com/eemeli/yaml/releases)\n- [Commits](https://github.com/eemeli/yaml/compare/v2.8.2...v2.8.3)\n\nUpdates `yaml` from 1.10.2 to 1.10.3\n- [Release notes](https://github.com/eemeli/yaml/releases)\n- [Commits](https://github.com/eemeli/yaml/compare/v2.8.2...v2.8.3)\n\n---\nupdated-dependencies:\n- dependency-name: yaml\n  dependency-version: 2.8.3\n  dependency-type: indirect\n- dependency-name: yaml\n  dependency-version: 1.10.3\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\n\n* Bump braces from 3.0.2 to 3.0.3 in /dev_tools/vscode_extension (#1522)\n\nBumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.\n- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)\n\n---\nupdated-dependencies:\n- dependency-name: braces\n  dependency-version: 3.0.3\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e\n\n* Address PR review comments: add Apache 2 headers, remove unused deps, fix image URLs, add .env.example\n\n* Various build \u0026 release fixes (#1529)\n\n* Fix release helper: use --no-use-vcs flag and restore twine check\n\n- Switch from FLIT_USE_VCS\u003d0 env var to --no-use-vcs CLI flag\n  (flit 3.12.0 does not respect the env var)\n- Restore twine to prerequisites check\n- Restore verify_wheel_with_twine call before signing\n\nAdd release tooling: verification scripts, build fixes, and docs\n\n- Add verify_apache_artifacts.py for GPG signature, checksum, and license verification\n- Add scripts/README.md with build, release, and voter verification instructions (uv-based)\n- Add .rat-excludes for Apache RAT license header checks\n- Add verify_ui_build.sh with Apache license header\n- Fix release helper: add verify_wheel_with_twine function, --dry-run flag,\n  remove -incubating suffix from wheel (invalid per PEP 427),\n  clean up original flit artifacts after creating incubating copies\n- Add tests, plugin_tests, and representative examples to flit sdist includes\n\n* Adds uv run to examples\n\nadds uv run to examples\n\n\n* Address PR review feedback\n\n- Fix typo: singed -\u003e signed in release helper\n- Use list unpacking instead of concatenation for files_to_upload\n- Validate exactly 1 tarball/wheel from glob (not just non-empty)\n- Add release dependency group (flit, twine) to pyproject.toml\n- Update README to use uv sync --group release and uv sync --group test\n- Fix grammar and add --clean flag to uv venv in README\n- Add uv run prefix to verify_apache_artifacts.py epilog examples\n- Run ruff format on verify_apache_artifacts.py\n\n* Exclude databackend from license check in pre-commit\n\n* Remove license comments from databackend.py (#1535)\n\n* Remove license comments from databackend.py\n\nRemoved Apache License comments from the file.\n\n* Fix pre-commit-config\n\n---------\n\nCo-authored-by: Stefan Krawczyk \u003cstefank@cs.stanford.edu\u003e\n\n* Add Neo4j GraphRAG example to ecosystem page\n\n---------\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: Joe Marsh Rossney \u003c17361029+jmarshrossney@users.noreply.github.com\u003e\nCo-authored-by: Stefan Krawczyk \u003cstefan@dagworks.io\u003e\nCo-authored-by: Stefan Krawczyk \u003cstefank@cs.stanford.edu\u003e\nCo-authored-by: PJ Fanning \u003cpjfanning@users.noreply.github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e84ed90b4428d777449b9bfc413ed86ee41a77c9",
      "tree": "24edcb3883eda5cfb7ab882235f75c86f3d80de2",
      "parents": [
        "baf51516fe0e0c1e4a757fd8d8cd76c641467d5f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 03 21:16:39 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 21:16:39 2026 -0700"
      },
      "message": "Bump braces from 3.0.2 to 3.0.3 in /dev_tools/vscode_extension (#1522)\n\nBumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.\n- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)\n\n---\nupdated-dependencies:\n- dependency-name: braces\n  dependency-version: 3.0.3\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "baf51516fe0e0c1e4a757fd8d8cd76c641467d5f",
      "tree": "e3b55209e0171f3e6f03a25b2998af4a33a6aa9d",
      "parents": [
        "303583eb5beb7a0b18e607258a5db8a5267b4bab"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 03 21:16:37 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 21:16:37 2026 -0700"
      },
      "message": "Bump yaml in /ui/frontend (#1525)\n\nBumps  and [yaml](https://github.com/eemeli/yaml). These dependencies needed to be updated together.\n\nUpdates `yaml` from 2.8.2 to 2.8.3\n- [Release notes](https://github.com/eemeli/yaml/releases)\n- [Commits](https://github.com/eemeli/yaml/compare/v2.8.2...v2.8.3)\n\nUpdates `yaml` from 1.10.2 to 1.10.3\n- [Release notes](https://github.com/eemeli/yaml/releases)\n- [Commits](https://github.com/eemeli/yaml/compare/v2.8.2...v2.8.3)\n\n---\nupdated-dependencies:\n- dependency-name: yaml\n  dependency-version: 2.8.3\n  dependency-type: indirect\n- dependency-name: yaml\n  dependency-version: 1.10.3\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "303583eb5beb7a0b18e607258a5db8a5267b4bab",
      "tree": "dd938a056028446ec91ff9bcf7f1cc4f9bfe64cb",
      "parents": [
        "d2ed09582b5e5f78eed219568700b9dbdb301dd2"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 03 21:16:34 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 21:16:34 2026 -0700"
      },
      "message": "Bump picomatch in /ui/frontend (#1526)\n\nBumps  and [picomatch](https://github.com/micromatch/picomatch). These dependencies needed to be updated together.\n\nUpdates `picomatch` from 2.3.1 to 2.3.2\n- [Release notes](https://github.com/micromatch/picomatch/releases)\n- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)\n\nUpdates `picomatch` from 4.0.3 to 4.0.4\n- [Release notes](https://github.com/micromatch/picomatch/releases)\n- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/micromatch/picomatch/compare/2.3.1...2.3.2)\n\n---\nupdated-dependencies:\n- dependency-name: picomatch\n  dependency-version: 2.3.2\n  dependency-type: indirect\n- dependency-name: picomatch\n  dependency-version: 4.0.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d2ed09582b5e5f78eed219568700b9dbdb301dd2",
      "tree": "20d1cc2ce9305e919078b7a697127e50aceef821",
      "parents": [
        "fa7c19a6f0534fdce923b9f767fb962f5819a819"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 03 21:16:31 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 21:16:31 2026 -0700"
      },
      "message": "Bump requests from 2.32.5 to 2.33.0 in /ui/backend (#1528)\n\nBumps [requests](https://github.com/psf/requests) from 2.32.5 to 2.33.0.\n- [Release notes](https://github.com/psf/requests/releases)\n- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)\n- [Commits](https://github.com/psf/requests/compare/v2.32.5...v2.33.0)\n\n---\nupdated-dependencies:\n- dependency-name: requests\n  dependency-version: 2.33.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fa7c19a6f0534fdce923b9f767fb962f5819a819",
      "tree": "1d4e810edb3bd8183accc8b35dc521f566bd848d",
      "parents": [
        "5ad4069641bba4526342ef047126f5fe58cb5c8c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 03 21:16:28 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 21:16:28 2026 -0700"
      },
      "message": "Bump brace-expansion in /dev_tools/vscode_extension (#1530)\n\nBumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.12 to 1.1.13.\n- [Release notes](https://github.com/juliangruber/brace-expansion/releases)\n- [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.12...v1.1.13)\n\n---\nupdated-dependencies:\n- dependency-name: brace-expansion\n  dependency-version: 1.1.13\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5ad4069641bba4526342ef047126f5fe58cb5c8c",
      "tree": "fe54567ce96ea4c318be85a95eaff172a51bed01",
      "parents": [
        "190456e9f7003e4837fefe32c38cf98cb3e36f5b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 03 21:16:25 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 21:16:25 2026 -0700"
      },
      "message": "Bump path-to-regexp from 0.1.12 to 0.1.13 in /contrib/docs (#1533)\n\nBumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) from 0.1.12 to 0.1.13.\n- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)\n- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/v.0.1.13/History.md)\n- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.12...v.0.1.13)\n\n---\nupdated-dependencies:\n- dependency-name: path-to-regexp\n  dependency-version: 0.1.13\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "190456e9f7003e4837fefe32c38cf98cb3e36f5b",
      "tree": "5e29ae1b9d4549bda15df237de99833ad0f5f41b",
      "parents": [
        "89c537e6c8f586a8cffd0464d36514671c390c6d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 03 21:16:23 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 21:16:23 2026 -0700"
      },
      "message": "Bump pygments from 2.19.2 to 2.20.0 in /ui/backend (#1534)\n\nBumps [pygments](https://github.com/pygments/pygments) from 2.19.2 to 2.20.0.\n- [Release notes](https://github.com/pygments/pygments/releases)\n- [Changelog](https://github.com/pygments/pygments/blob/master/CHANGES)\n- [Commits](https://github.com/pygments/pygments/compare/2.19.2...2.20.0)\n\n---\nupdated-dependencies:\n- dependency-name: pygments\n  dependency-version: 2.20.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "89c537e6c8f586a8cffd0464d36514671c390c6d",
      "tree": "e38284253c17d20a3ad50559e9cdc477606e0b6c",
      "parents": [
        "f37fb55137857d38ad1189d66733b122aeb0e0f5"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 03 21:16:20 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 21:16:20 2026 -0700"
      },
      "message": "Bump aiohttp from 3.13.3 to 3.13.4 in /ui/backend (#1536)\n\n---\nupdated-dependencies:\n- dependency-name: aiohttp\n  dependency-version: 3.13.4\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "f37fb55137857d38ad1189d66733b122aeb0e0f5",
      "tree": "f0d46ff88aba1be0c30fa4e7d1d585d29beaacee",
      "parents": [
        "e8c4e606f554c0f0247a7f14fffe6b19b1ded791"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 03 21:16:17 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 21:16:17 2026 -0700"
      },
      "message": "Bump brace-expansion from 1.1.12 to 1.1.13 in /contrib/docs (#1537)\n\nBumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 1.1.12 to 1.1.13.\n- [Release notes](https://github.com/juliangruber/brace-expansion/releases)\n- [Commits](https://github.com/juliangruber/brace-expansion/compare/v1.1.12...v1.1.13)\n\n---\nupdated-dependencies:\n- dependency-name: brace-expansion\n  dependency-version: 1.1.13\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e8c4e606f554c0f0247a7f14fffe6b19b1ded791",
      "tree": "a828605abae875d0e3397094166a139da2b32e69",
      "parents": [
        "9bc6da6bddbdaa5ce249f15d9e6fe6306edc2126"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Apr 03 21:16:14 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 21:16:14 2026 -0700"
      },
      "message": "Bump lodash from 4.17.23 to 4.18.1 in /contrib/docs (#1538)\n\nBumps [lodash](https://github.com/lodash/lodash) from 4.17.23 to 4.18.1.\n- [Release notes](https://github.com/lodash/lodash/releases)\n- [Commits](https://github.com/lodash/lodash/compare/4.17.23...4.18.1)\n\n---\nupdated-dependencies:\n- dependency-name: lodash\n  dependency-version: 4.18.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "9bc6da6bddbdaa5ce249f15d9e6fe6306edc2126",
      "tree": "1a481f92429d7d5804e032532e41b49b8f9b98f7",
      "parents": [
        "c966ec22fafa0bb5c5fdc6061da957d2d9483116"
      ],
      "author": {
        "name": "PJ Fanning",
        "email": "pjfanning@users.noreply.github.com",
        "time": "Sat Apr 04 06:06:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 04 15:06:17 2026 +1100"
      },
      "message": "Remove license comments from databackend.py (#1535)\n\n* Remove license comments from databackend.py\n\nRemoved Apache License comments from the file.\n\n* Fix pre-commit-config\n\n---------\n\nCo-authored-by: Stefan Krawczyk \u003cstefank@cs.stanford.edu\u003e"
    },
    {
      "commit": "c966ec22fafa0bb5c5fdc6061da957d2d9483116",
      "tree": "fd5c7deb1a1b7ad648deca222598250592775505",
      "parents": [
        "1476e358cf1e7a40aa1c4c5a761f54f274db4251"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Fri Apr 03 20:53:19 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 04 14:53:19 2026 +1100"
      },
      "message": "Various build \u0026 release fixes (#1529)\n\n* Fix release helper: use --no-use-vcs flag and restore twine check\n\n- Switch from FLIT_USE_VCS\u003d0 env var to --no-use-vcs CLI flag\n  (flit 3.12.0 does not respect the env var)\n- Restore twine to prerequisites check\n- Restore verify_wheel_with_twine call before signing\n\nAdd release tooling: verification scripts, build fixes, and docs\n\n- Add verify_apache_artifacts.py for GPG signature, checksum, and license verification\n- Add scripts/README.md with build, release, and voter verification instructions (uv-based)\n- Add .rat-excludes for Apache RAT license header checks\n- Add verify_ui_build.sh with Apache license header\n- Fix release helper: add verify_wheel_with_twine function, --dry-run flag,\n  remove -incubating suffix from wheel (invalid per PEP 427),\n  clean up original flit artifacts after creating incubating copies\n- Add tests, plugin_tests, and representative examples to flit sdist includes\n\n* Adds uv run to examples\n\nadds uv run to examples\n\n\n* Address PR review feedback\n\n- Fix typo: singed -\u003e signed in release helper\n- Use list unpacking instead of concatenation for files_to_upload\n- Validate exactly 1 tarball/wheel from glob (not just non-empty)\n- Add release dependency group (flit, twine) to pyproject.toml\n- Update README to use uv sync --group release and uv sync --group test\n- Fix grammar and add --clean flag to uv venv in README\n- Add uv run prefix to verify_apache_artifacts.py epilog examples\n- Run ruff format on verify_apache_artifacts.py\n\n* Exclude databackend from license check in pre-commit"
    },
    {
      "commit": "1476e358cf1e7a40aa1c4c5a761f54f274db4251",
      "tree": "e85bc53500fadaab9f5bcde2faec4a21f5bce317",
      "parents": [
        "713980c77568cd6f5d529f235f44fbe86e571f72"
      ],
      "author": {
        "name": "Joe Marsh Rossney",
        "email": "17361029+jmarshrossney@users.noreply.github.com",
        "time": "Sat Apr 04 04:52:06 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 04 14:52:06 2026 +1100"
      },
      "message": "Fix `@resolve` decorator not calling `validate()` on returned decorators (#1524)\n\n* call decorator.validate() in resolve.resolve so that delayed evaluation of extract_fields works; add unit test\n\n* fix new failures in delayed resolve tests by defining dummy functions with valid annotations within the test body\n\n* correct probably typo in test name\n\n* add note above the \u0027defensive\u0027 hasattr check to explain its presence\n\n* add additional tests for resolve + extract_fields; test resolve + arbitrary decorator\n\n* add one more test that uses parameterize_sources instead of extract_fields\n\n* Apply suggestion from @skrawcz\n\n---------\n\nCo-authored-by: Stefan Krawczyk \u003cstefan@dagworks.io\u003e"
    },
    {
      "commit": "713980c77568cd6f5d529f235f44fbe86e571f72",
      "tree": "27cf6ad23655a039b9edb451d64116cf262491c1",
      "parents": [
        "57f7104048d8fe4004d188118e3b6d9062699aa4"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Mon Jan 05 23:12:47 2026 +1100"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun Mar 22 20:25:37 2026 -0700"
      },
      "message": "Adds matomo analytics to docs\n\n   This uses the recommended way to extend the template that furo uses.\n"
    },
    {
      "commit": "57f7104048d8fe4004d188118e3b6d9062699aa4",
      "tree": "82cfa88cb0536fae6190d30f8304e9a950d75aeb",
      "parents": [
        "e6282f13d91604eed9605fee357e29d3b9b6f822"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 23 03:23:26 2026 +0000"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun Mar 22 20:25:08 2026 -0700"
      },
      "message": "Bump prismjs and react-syntax-highlighter in /ui/frontend\n\nBumps [prismjs](https://github.com/PrismJS/prism) to 1.30.0 and updates ancestor dependency [react-syntax-highlighter](https://github.com/react-syntax-highlighter/react-syntax-highlighter). These dependencies need to be updated together.\n\n\nUpdates `prismjs` from 1.27.0 to 1.30.0\n- [Release notes](https://github.com/PrismJS/prism/releases)\n- [Changelog](https://github.com/PrismJS/prism/blob/v2/CHANGELOG.md)\n- [Commits](https://github.com/PrismJS/prism/compare/v1.27.0...v1.30.0)\n\nUpdates `react-syntax-highlighter` from 15.6.6 to 16.1.1\n- [Release notes](https://github.com/react-syntax-highlighter/react-syntax-highlighter/releases)\n- [Changelog](https://github.com/react-syntax-highlighter/react-syntax-highlighter/blob/master/CHANGELOG.MD)\n- [Commits](https://github.com/react-syntax-highlighter/react-syntax-highlighter/compare/v15.6.6...v16.1.1)\n\n---\nupdated-dependencies:\n- dependency-name: prismjs\n  dependency-version: 1.30.0\n  dependency-type: indirect\n- dependency-name: react-syntax-highlighter\n  dependency-version: 16.1.1\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "e6282f13d91604eed9605fee357e29d3b9b6f822",
      "tree": "6964f543868c690643203bb1658d3076c8bfbf1f",
      "parents": [
        "5cbcfbc3d7d2228cf65f63deda9206b079d4da6a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 23 03:23:45 2026 +0000"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun Mar 22 20:24:46 2026 -0700"
      },
      "message": "Bump esbuild from 0.16.17 to 0.25.0 in /dev_tools/vscode_extension\n\nBumps [esbuild](https://github.com/evanw/esbuild) from 0.16.17 to 0.25.0.\n- [Release notes](https://github.com/evanw/esbuild/releases)\n- [Changelog](https://github.com/evanw/esbuild/blob/main/CHANGELOG-2023.md)\n- [Commits](https://github.com/evanw/esbuild/compare/v0.16.17...v0.25.0)\n\n---\nupdated-dependencies:\n- dependency-name: esbuild\n  dependency-version: 0.25.0\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "5cbcfbc3d7d2228cf65f63deda9206b079d4da6a",
      "tree": "2ff78bd72a917bea44dbd82cc685a89b753a709d",
      "parents": [
        "4128dc5295f0832edd5f6141032fabec0d8aff7d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Mar 23 03:24:00 2026 +0000"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun Mar 22 20:24:30 2026 -0700"
      },
      "message": "Bump ws from 8.13.0 to 8.17.1 in /dev_tools/vscode_extension\n\nBumps [ws](https://github.com/websockets/ws) from 8.13.0 to 8.17.1.\n- [Release notes](https://github.com/websockets/ws/releases)\n- [Commits](https://github.com/websockets/ws/compare/8.13.0...8.17.1)\n\n---\nupdated-dependencies:\n- dependency-name: ws\n  dependency-version: 8.17.1\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "4128dc5295f0832edd5f6141032fabec0d8aff7d",
      "tree": "4616d8218006d498274dbab252e8bc388c238e11",
      "parents": [
        "d23a51079d66abe8ef0dea35c3e2704cbad78308"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Mar 06 06:24:55 2026 +0000"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun Mar 22 20:22:49 2026 -0700"
      },
      "message": "Bump dompurify from 3.3.1 to 3.3.2 in /ui/frontend\n\nBumps [dompurify](https://github.com/cure53/DOMPurify) from 3.3.1 to 3.3.2.\n- [Release notes](https://github.com/cure53/DOMPurify/releases)\n- [Commits](https://github.com/cure53/DOMPurify/compare/3.3.1...3.3.2)\n\n---\nupdated-dependencies:\n- dependency-name: dompurify\n  dependency-version: 3.3.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "d23a51079d66abe8ef0dea35c3e2704cbad78308",
      "tree": "3c8af1f32e78b59845f976edcdb6d527d00f0f17",
      "parents": [
        "9f7b4e972af0ba5891f40da0b62cd649b6bba786"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Mar 06 06:09:45 2026 +0000"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun Mar 22 20:22:33 2026 -0700"
      },
      "message": "Bump svgo from 3.3.2 to 3.3.3 in /contrib/docs\n\nBumps [svgo](https://github.com/svg/svgo) from 3.3.2 to 3.3.3.\n- [Release notes](https://github.com/svg/svgo/releases)\n- [Commits](https://github.com/svg/svgo/compare/v3.3.2...v3.3.3)\n\n---\nupdated-dependencies:\n- dependency-name: svgo\n  dependency-version: 3.3.3\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "9f7b4e972af0ba5891f40da0b62cd649b6bba786",
      "tree": "6d804231de05e72a9d624fb5b7942072d924a561",
      "parents": [
        "7c5802651b39eace9c9025a48d6f72804fc11eb4"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Mar 06 06:16:29 2026 +0000"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun Mar 22 20:22:15 2026 -0700"
      },
      "message": "Bump minimatch and serve-handler in /contrib/docs\n\nBumps [minimatch](https://github.com/isaacs/minimatch) and [serve-handler](https://github.com/vercel/serve-handler). These dependencies needed to be updated together.\n\nUpdates `minimatch` from 3.1.2 to 3.1.5\n- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)\n- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5)\n\nUpdates `serve-handler` from 6.1.6 to 6.1.7\n- [Release notes](https://github.com/vercel/serve-handler/releases)\n- [Commits](https://github.com/vercel/serve-handler/compare/6.1.6...6.1.7)\n\n---\nupdated-dependencies:\n- dependency-name: minimatch\n  dependency-version: 3.1.5\n  dependency-type: indirect\n- dependency-name: serve-handler\n  dependency-version: 6.1.7\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "7c5802651b39eace9c9025a48d6f72804fc11eb4",
      "tree": "753ccde1e68eb9b0ba33ff1f9562aa1d2448fd07",
      "parents": [
        "323940156bc14a9c19a4b1f28182491e3737c73d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Mar 06 06:24:41 2026 +0000"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun Mar 22 20:22:01 2026 -0700"
      },
      "message": "Bump minimatch from 3.1.3 to 3.1.5 in /ui/frontend\n\nBumps [minimatch](https://github.com/isaacs/minimatch) from 3.1.3 to 3.1.5.\n- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)\n- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.3...v3.1.5)\n\n---\nupdated-dependencies:\n- dependency-name: minimatch\n  dependency-version: 3.1.5\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "323940156bc14a9c19a4b1f28182491e3737c73d",
      "tree": "dd5e27a1071ac334e9b8514ce4319544107b5b98",
      "parents": [
        "736793fc848118c4f6fd926907e4f34dbd967d31"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Mar 21 07:38:41 2026 +0000"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun Mar 22 20:21:43 2026 -0700"
      },
      "message": "Bump flatted from 3.3.3 to 3.4.2 in /ui/frontend\n\nBumps [flatted](https://github.com/WebReflection/flatted) from 3.3.3 to 3.4.2.\n- [Commits](https://github.com/WebReflection/flatted/compare/v3.3.3...v3.4.2)\n\n---\nupdated-dependencies:\n- dependency-name: flatted\n  dependency-version: 3.4.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "736793fc848118c4f6fd926907e4f34dbd967d31",
      "tree": "e5bbf86fed8582173d6f465cceb8f9e390df207d",
      "parents": [
        "a3a4a891a472f43f42059babce2ad359d641c248"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Mar 06 06:24:35 2026 +0000"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun Mar 22 20:21:07 2026 -0700"
      },
      "message": "Bump @tootallnate/once and @vscode/test-electron\n\nRemoves [@tootallnate/once](https://github.com/TooTallNate/once). It\u0027s no longer used after updating ancestor dependency [@vscode/test-electron](https://github.com/Microsoft/vscode-test). These dependencies need to be updated together.\n\n\nRemoves `@tootallnate/once`\n\nUpdates `@vscode/test-electron` from 2.3.2 to 2.5.2\n- [Changelog](https://github.com/microsoft/vscode-test/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/Microsoft/vscode-test/compare/v2.3.2...v2.5.2)\n\n---\nupdated-dependencies:\n- dependency-name: \"@tootallnate/once\"\n  dependency-version: \n  dependency-type: indirect\n- dependency-name: \"@vscode/test-electron\"\n  dependency-version: 2.5.2\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "a3a4a891a472f43f42059babce2ad359d641c248",
      "tree": "4e43ac0339a6c2f1e5d41a5e432c6ca2d2458b13",
      "parents": [
        "181929a4b16a9a150fefbadb820a109407791b31"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Mar 06 06:24:13 2026 +0000"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun Mar 22 20:20:33 2026 -0700"
      },
      "message": "Bump minimatch from 3.1.2 to 3.1.5 in /dev_tools/vscode_extension\n\nBumps [minimatch](https://github.com/isaacs/minimatch) from 3.1.2 to 3.1.5.\n- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)\n- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5)\n\n---\nupdated-dependencies:\n- dependency-name: minimatch\n  dependency-version: 3.1.5\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "181929a4b16a9a150fefbadb820a109407791b31",
      "tree": "f51f30c9c0d768dc9340ebb73cc8fecf7f22b5e2",
      "parents": [
        "402f2ac6e460e0f951280a355a86e2439525e701"
      ],
      "author": {
        "name": "Yair Halevi (Spock)",
        "email": "3519447+spock-yh@users.noreply.github.com",
        "time": "Mon Mar 23 01:50:00 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 10:50:00 2026 +1100"
      },
      "message": "Fix is_submodule substring match causing spurious DAG nodes (#1485)\n\n* Fix is_submodule substring match causing spurious DAG nodes\n\n* Move test imports to top level per review feedback\n\nMove `ModuleType` import to top-level and use existing `fm` alias\nfor `source`/`value` instead of inline imports.\n\n* Fix github actions due to apache policies\n\n---------\n\nCo-authored-by: spock-abadai \u003cyair.halevi@abad.ai\u003e\nCo-authored-by: Stefan Krawczyk \u003cstefank@cs.stanford.edu\u003e"
    },
    {
      "commit": "402f2ac6e460e0f951280a355a86e2439525e701",
      "tree": "06504482d4a0ce8d870b29baacf77aded33c390d",
      "parents": [
        "9f17a27953066a011c992a47986badf7f3d10a13"
      ],
      "author": {
        "name": "Dev-iL",
        "email": "6509619+Dev-iL@users.noreply.github.com",
        "time": "Mon Mar 23 00:57:37 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 23 09:57:37 2026 +1100"
      },
      "message": "Use a short SPDX license header for LLM-centered files (#1489)\n\n* Use a short SPDX license header where applicable; standard lic elsewhere\n\n- Mark .github as export-ignore in .gitattributes\n- Add short and long license templates for pre-commit hooks\n- Add pre-commit hooks to enforce license headers (replaces CI scripts)\n- Delete scripts/add_license_headers.py and scripts/check_license_headers.py\n- Remove CI license check step from hamilton-lsp workflow\n- Fix inconsistent license header indentation in several files\n- Add missing license headers to PR templates\n- Add vendored code attributions (Open Law Library, Palantir) to NOTICE file\n- Exclude contrib/docs/ from markdown license hook (Docusaurus frontmatter)\n\n* Specify hook stages explicitly\n\n* Fix copyright notices\ndevtools/language_server/ls_setup.py requires retains separate header license."
    },
    {
      "commit": "9f17a27953066a011c992a47986badf7f3d10a13",
      "tree": "3b0223779f02c7b6539e97c1421a378fa0ad63b6",
      "parents": [
        "015cfee2c8aac066f5f622b0965823e061d1f027"
      ],
      "author": {
        "name": "Sergio",
        "email": "c@rct.ai",
        "time": "Sun Mar 08 15:34:00 2026 -0700"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Fri Mar 20 21:51:18 2026 -0700"
      },
      "message": "fix(cli): require typer version with click 8.3 help compatibility\n"
    },
    {
      "commit": "015cfee2c8aac066f5f622b0965823e061d1f027",
      "tree": "9d5b5776938441371b5f497f6f2c9ed5ae4f7f9a",
      "parents": [
        "a96afebc7c2986fa17a8974f718c309725b9ce20"
      ],
      "author": {
        "name": "PJ Fanning",
        "email": "pjfanning@users.noreply.github.com",
        "time": "Tue Mar 17 10:22:21 2026 +0100"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Fri Mar 20 21:46:36 2026 -0700"
      },
      "message": "use HTTPS address to download data\n"
    },
    {
      "commit": "a96afebc7c2986fa17a8974f718c309725b9ce20",
      "tree": "ee36ae77f39a4bc8e1b27477a07e138d2cbf4b34",
      "parents": [
        "64ae591adb667b768d5681571d9ba87105a89fb3"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Mar 19 18:53:09 2026 +0000"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Fri Mar 20 21:45:58 2026 -0700"
      },
      "message": "Bump flatted from 3.2.7 to 3.4.2 in /dev_tools/vscode_extension\n\nBumps [flatted](https://github.com/WebReflection/flatted) from 3.2.7 to 3.4.2.\n- [Commits](https://github.com/WebReflection/flatted/compare/v3.2.7...v3.4.2)\n\n---\nupdated-dependencies:\n- dependency-name: flatted\n  dependency-version: 3.4.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "64ae591adb667b768d5681571d9ba87105a89fb3",
      "tree": "45c8687723fc7f0081be548631799008b2e73cd3",
      "parents": [
        "45673b020f84f23eb982d0a563fe057cd971aeab"
      ],
      "author": {
        "name": "Dev-iL",
        "email": "6509619+Dev-iL@users.noreply.github.com",
        "time": "Mon Mar 09 23:12:06 2026 +0200"
      },
      "committer": {
        "name": "Stefan Krawczyk",
        "email": "stefan@dagworks.io",
        "time": "Sun Mar 15 22:31:29 2026 -0700"
      },
      "message": "Add `marketplace.json`\n"
    },
    {
      "commit": "45673b020f84f23eb982d0a563fe057cd971aeab",
      "tree": "2f682eb835f997a9f2167843f22c0ae7f8cea5e0",
      "parents": [
        "87005ed2e8f604f030e396ada80d32463b8c4ec8"
      ],
      "author": {
        "name": "Stefan Krawczyk",
        "email": "stefank@cs.stanford.edu",
        "time": "Sun Mar 08 15:25:13 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 09 09:25:13 2026 +1100"
      },
      "message": "Remove usage telemetry (PostHog) from Hamilton (#1512)\n\n* Remove usage telemetry (PostHog) from Hamilton\n\nASF policy does not permit phone-home telemetry in released artifacts.\nThis removes all PostHog event tracking while keeping hamilton/telemetry.py\nas a backwards-compatible no-op stub so downstream code that calls\n`telemetry.disable_telemetry()` continues to work without changes.\n\n* Add deprecation decorators to telemetry stub functions\n\nMark disable_telemetry() and is_telemetry_enabled() as deprecated\n(warn at 1.89.0, fail at 2.0.0) so users get a clear signal to\nremove these calls before the next major release."
    },
    {
      "commit": "87005ed2e8f604f030e396ada80d32463b8c4ec8",
      "tree": "56eb7acddd1437ba543a111a1184cbf95cdaabbd",
      "parents": [
        "728400c36ea3445a790738aadb8e21c70e6d375f"
      ],
      "author": {
        "name": "Dev-iL",
        "email": "6509619+Dev-iL@users.noreply.github.com",
        "time": "Sun Mar 08 08:12:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 08 17:12:42 2026 +1100"
      },
      "message": "Expose DAG validation as LLM tools via MCP (#1490)\n\n* Exposes DAG validation as LLM tools via MCP\n\nThis includes 6 tools that leverage Hamilton\u0027s compile-time DAG validation for LLM feedback loops:\n\n1. validate_dag\n2. list_nodes\n3. visualize\n4. execute\n5. get_docs\n6. scaffold\n\nInstall with `pip install \"sf-hamilton[mcp]\"`, run via `hamilton-mcp`.\n\n* Fix SDK tests failing with pandas \u003e\u003d 3.0 due to stale sf-hamilton dep\n\nThe SDK\u0027s requirements.txt referenced `sf-hamilton` (the old package\nname), while the project has been renamed to `apache-hamilton`. Both\npackages provide the `hamilton` Python module, so when pip installed\n`sf-hamilton` from PyPI and then the editable `apache-hamilton` from\nsource, the two coexisted — the old sf-hamilton files in site-packages\nshadowed the editable install\u0027s .pth redirect to the local source.\nThis caused the SDK tests to run against the stale PyPI release, which\nlacks the `pd.__version__ \u003c \"3.0\"` guards added in 157ecd60 for\nkwargs removed in pandas 3.0 (verbose, keep_date_col, delim_whitespace).\n\nChanges:\n- ui/sdk/requirements.txt: sf-hamilton -\u003e apache-hamilton\n- hamilton-sdk.yml: reorder install steps so the editable source install\n  runs after requirements, ensuring it always overrides the PyPI version\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n\n* MCP: add a capability (optional deps) discovery tool/stage\n\n* Add SKILL to accompany the MCP\n\n* MCP: add docs"
    }
  ],
  "next": "728400c36ea3445a790738aadb8e21c70e6d375f"
}
