)]}'
{
  "log": [
    {
      "commit": "5b6f03d8a9a7e5794c32527aef4f804e2ae75833",
      "tree": "dbe46e76ee602aab05cda6a6c15d6962ae73556a",
      "parents": [
        "6442527c6c6dafc1f0a42d7e19ad22143ba2a078"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Jul 07 16:17:06 2026 +0200"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Jul 07 16:17:06 2026 +0200"
      },
      "message": "Remove gh-pages here as it\u0027s managed by ossie-website\n"
    },
    {
      "commit": "6442527c6c6dafc1f0a42d7e19ad22143ba2a078",
      "tree": "15c97c474e3a77d8043dcb5061f4424d80c65402",
      "parents": [
        "c7fc1169e12c9dbd45972418501d645d26f8ea7c"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Jul 07 16:16:13 2026 +0200"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue Jul 07 16:16:13 2026 +0200"
      },
      "message": "Remove branch protection for now\n"
    },
    {
      "commit": "c7fc1169e12c9dbd45972418501d645d26f8ea7c",
      "tree": "90b0322010ce9a80c5e2a77fb99a43b2dc268b3f",
      "parents": [
        "8268b7bf80780eb58339fb43b396b848e87dfe31"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Mon Jul 06 08:58:24 2026 +0200"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Mon Jul 06 08:58:24 2026 +0200"
      },
      "message": "Fix .asf.yaml\n"
    },
    {
      "commit": "8268b7bf80780eb58339fb43b396b848e87dfe31",
      "tree": "aa442fb4904e160331e4aa95882cb7cc4e59d97d",
      "parents": [
        "121c40fae125ec39ab844e038ff2d82acd6d4d3c"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Mon Jul 06 08:57:07 2026 +0200"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Mon Jul 06 08:57:07 2026 +0200"
      },
      "message": "Welcome Apache Ossie (incubating)\n"
    },
    {
      "commit": "121c40fae125ec39ab844e038ff2d82acd6d4d3c",
      "tree": "e6c31ba54f536854ce9bcead5ff539d7c17bde59",
      "parents": [
        "9f6f4f63e892df8df28a970cffd77e87d6f7a014",
        "c9fd1a79df2afc4853e9eb8a044ef146a57f2380"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Tue Jun 16 12:19:54 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 12:19:54 2026 -0700"
      },
      "message": "Merge pull request #157 from RussellSpitzer/cursor/relicense-docs-apache-2.0\n\nRelicense Documentation to ASF 2.0"
    },
    {
      "commit": "c9fd1a79df2afc4853e9eb8a044ef146a57f2380",
      "tree": "e6c31ba54f536854ce9bcead5ff539d7c17bde59",
      "parents": [
        "9cfc1e8d1c7f907e734561a27de9cb3264034531"
      ],
      "author": {
        "name": "Russell Spitzer",
        "email": "russell.spitzer@gmail.com",
        "time": "Tue Jun 16 09:53:14 2026 -0500"
      },
      "committer": {
        "name": "Russell Spitzer",
        "email": "russell.spitzer@gmail.com",
        "time": "Tue Jun 16 09:53:14 2026 -0500"
      },
      "message": "Relicense CONTRIBUTING.md notice under Apache License 2.0\n\nUpdates the License section in CONTRIBUTING.md (added upstream after\nthe original relicense commit was authored) to drop the CC BY 4.0\nreference for the specification and documentation.\n"
    },
    {
      "commit": "9cfc1e8d1c7f907e734561a27de9cb3264034531",
      "tree": "27ae1b0c6f2abed74552dc7649ea87d65a9dcc3f",
      "parents": [
        "9f6f4f63e892df8df28a970cffd77e87d6f7a014"
      ],
      "author": {
        "name": "Russell Spitzer",
        "email": "russell.spitzer@gmail.com",
        "time": "Tue Jun 16 09:51:57 2026 -0500"
      },
      "committer": {
        "name": "Russell Spitzer",
        "email": "russell.spitzer@gmail.com",
        "time": "Tue Jun 16 09:52:31 2026 -0500"
      },
      "message": "Relicense docs and specification under Apache License 2.0\n\nDrops the separate CC BY 4.0 license previously applied to the\nspecification and documentation so that the entire repository is\ngoverned by a single Apache 2.0 license. Removes LICENSE-Docs and\nupdates the license sections in README.md and docs/index.md.\n"
    },
    {
      "commit": "9f6f4f63e892df8df28a970cffd77e87d6f7a014",
      "tree": "f9e1a1b55936cc641e8a8373392b2df49839e858",
      "parents": [
        "04ce9e83784cccb1b3faa0092b4ada5cfedf7f41",
        "75da5a65f612bd91c4d5af8842a794d858306492"
      ],
      "author": {
        "name": "Quigley Malcolm",
        "email": "QMalcolm@users.noreply.github.com",
        "time": "Tue Jun 02 11:49:22 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 11:49:22 2026 -0700"
      },
      "message": "Merge pull request #116 from open-semantic-interchange/feat/dbt-converter-migration\n\nInitial OSI \u003c\u003e dbt Semantic Layer converters"
    },
    {
      "commit": "75da5a65f612bd91c4d5af8842a794d858306492",
      "tree": "f9e1a1b55936cc641e8a8373392b2df49839e858",
      "parents": [
        "4afc54ff92642512811bd8283477c58d6adc1051"
      ],
      "author": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Tue Jun 02 11:41:20 2026 -0700"
      },
      "committer": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Tue Jun 02 11:41:20 2026 -0700"
      },
      "message": "Make OSIDimension.is_time optional per spec\n\nThe spec marks is_time as optional, but the Pydantic model had it as a\nrequired bool. Aligning to Optional[bool] \u003d None so documents that omit\nis_time validate correctly.\n"
    },
    {
      "commit": "4afc54ff92642512811bd8283477c58d6adc1051",
      "tree": "1982f8bcc1979ad1db717925b81b731ae0b67d12",
      "parents": [
        "65391341414e06e8999da71fe752fe33c7e43897"
      ],
      "author": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Mon Jun 01 17:19:10 2026 -0700"
      },
      "committer": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Mon Jun 01 17:21:46 2026 -0700"
      },
      "message": "Bump project version to 0.2.0.dev0\n\nThe OSI project as a whole has advanced to 0.2.0.dev0. Updates all version\nreferences across the spec, schema, examples, Python packages, and tests.\n"
    },
    {
      "commit": "65391341414e06e8999da71fe752fe33c7e43897",
      "tree": "b9688ed3a48a6d272117019968e1e5b5ba67a635",
      "parents": [
        "45f64f58632878098e86d92145ecfa71462c9189"
      ],
      "author": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Mon Jun 01 14:56:13 2026 -0700"
      },
      "committer": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Mon Jun 01 17:21:46 2026 -0700"
      },
      "message": "Add GOODDATA to OSIVendor enum\n\nGOODDATA appears in OSI examples but was missing from the enum, causing\nvalidation failures for any document that references GoodData extensions.\n"
    },
    {
      "commit": "45f64f58632878098e86d92145ecfa71462c9189",
      "tree": "3f17a9dba7775f830565a42cba828a7825beb736",
      "parents": [
        "109edc8ae2021f8e558cc257fba8e9a8eaaf012f"
      ],
      "author": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Mon Jun 01 14:50:35 2026 -0700"
      },
      "committer": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Mon Jun 01 17:21:46 2026 -0700"
      },
      "message": "Add MAQL to OSIDialect enum\n\nMAQL is present in the OSI schema\u0027s Dialect definition but was missing\nfrom the Python enum, making it impossible to represent GoodData expressions\nin the Python SDK.\n"
    },
    {
      "commit": "109edc8ae2021f8e558cc257fba8e9a8eaaf012f",
      "tree": "f35c291d674ef7287e12580d7bd2d8f0af4736eb",
      "parents": [
        "fdc13ce8247f68096a94d8dc368a23bc96850ebd",
        "04ce9e83784cccb1b3faa0092b4ada5cfedf7f41"
      ],
      "author": {
        "name": "Quigley Malcolm",
        "email": "QMalcolm@users.noreply.github.com",
        "time": "Mon Jun 01 12:29:00 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 12:29:00 2026 -0700"
      },
      "message": "Merge branch \u0027main\u0027 into feat/dbt-converter-migration"
    },
    {
      "commit": "04ce9e83784cccb1b3faa0092b4ada5cfedf7f41",
      "tree": "2784a8056b82e4e7ef4d961b661773ab54feaa7a",
      "parents": [
        "74669972a7305e6a159a827958764b532957d21a",
        "12d773bc98a6cfc93c7d6e1e77a8f0b09e2e8039"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Mon Jun 01 10:59:39 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 10:59:39 2026 -0700"
      },
      "message": "Merge pull request #140 from open-semantic-interchange/chore/update-slack-invite-link\n\nRefresh expired Slack invite link"
    },
    {
      "commit": "74669972a7305e6a159a827958764b532957d21a",
      "tree": "80def94936e94cf2eadaf13241d4a28baecb6bba",
      "parents": [
        "12d1ed49815ccce7c167177787eec7faa929be06"
      ],
      "author": {
        "name": "Kurt Stirewalt",
        "email": "kurt.stirewalt@relational.ai",
        "time": "Fri May 29 12:02:41 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 18:02:41 2026 +0200"
      },
      "message": "Add support for ontologies and schema mappings from semantic models to ontologies (#133)\n\n* First draft adding support for ontologies to the core spec.\n\n* Checkpointing\n\n* Checkpointing\n\n* Checkpointing after improving description of mappings\n\n* Ready for review\n\n* Small fix\n\n* Fixed some typos\n\n* Reverting previous changes to core spec in favor of a new first-class ontology spec that refs the core spec so that both may evolve independently.\n\n* Updated schema to reflect discussions with governance team\n\n* Small change to JSON schema\n\n* Checkpointing changes\n\n* Checkpointing for final review\n\n* Final version ready for review\n\n* Addressed Kuhshboo\u0027s comment on naming of the semantic model reference\n\n* Fixing inconsistency found with markdown and JSON schema\n\n* Now each spec defines one ontology (not an array of ontologies) to mirror changes to the core semantic model spec.\n\n* Mirroring changes to the core semantic model spec.\n\n* Fixed title\n\n* Bumped version\n\n* Fixed typos and incorporated other reviewer comments and suggestions"
    },
    {
      "commit": "12d773bc98a6cfc93c7d6e1e77a8f0b09e2e8039",
      "tree": "361ee733868e5eda2d6e9f731c1a841e839eb125",
      "parents": [
        "2d4c77752d908c8c1e28fabe40a2226bea2792ec"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.bhatia@snowflake.com",
        "time": "Thu May 28 20:10:18 2026 -0700"
      },
      "committer": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.bhatia@snowflake.com",
        "time": "Thu May 28 20:10:18 2026 -0700"
      },
      "message": "docs: update working group Slack channels\n\nUpdate channel names for the Metric Language and Ontology working\ngroups to match the actual Slack channels in use.\n"
    },
    {
      "commit": "2d4c77752d908c8c1e28fabe40a2226bea2792ec",
      "tree": "c40bb9d3b8dce272e2381b07bb8a8a53a86782e5",
      "parents": [
        "12d1ed49815ccce7c167177787eec7faa929be06"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.bhatia@snowflake.com",
        "time": "Thu May 28 20:09:09 2026 -0700"
      },
      "committer": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.bhatia@snowflake.com",
        "time": "Thu May 28 20:09:09 2026 -0700"
      },
      "message": "chore: refresh expired Slack invite link\n\nThe previous Slack invite link (zt-3pq1j0lid) had expired. Replace all\noccurrences with the new invite link across README, CONTRIBUTING, and\ndocs.\n"
    },
    {
      "commit": "12d1ed49815ccce7c167177787eec7faa929be06",
      "tree": "c374118961c69e8dba9f7f3424dd70012f299dc6",
      "parents": [
        "a984cc7de7a2aa98b00d86396320369a020c978a",
        "c2233f0255ba5ba2dbda1afb50e54f8302930a63"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Thu May 28 13:28:28 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 13:28:28 2026 -0700"
      },
      "message": "Merge pull request #137 from open-semantic-interchange/chore/remove-top-level-dialects-vendors\n\nRemove top-level dialects and vendors from the json schema"
    },
    {
      "commit": "c2233f0255ba5ba2dbda1afb50e54f8302930a63",
      "tree": "c374118961c69e8dba9f7f3424dd70012f299dc6",
      "parents": [
        "a984cc7de7a2aa98b00d86396320369a020c978a"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.bhatia@snowflake.com",
        "time": "Wed May 27 13:09:59 2026 -0700"
      },
      "committer": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.bhatia@snowflake.com",
        "time": "Thu May 28 13:28:02 2026 -0700"
      },
      "message": "chore: remove unused top-level dialects and vendors from osi-schema\n\nThese top-level enumeration properties were not referenced by any example\nor downstream consumer. validate.py only reads dialects from each\nexpression\u0027s per-dialect entries via the Expression definition. Removing\nthem keeps the root schema focused on version and semantic_model. The\nDialect and Vendor $defs are retained for use within Expression and\ncustom extensions.\n\nAlso reorganize the Vendors content in spec.md: it no longer fits under\nthe Enumerations section because vendor_name has been a free-form string\nsince #91. Moved it under Custom Extensions as a \"Vendor Names\"\nsubsection listing well-known examples. Refreshed the stale \"Must be one\nof the values from \u0027vendors\u0027 enum above\" comments in spec.yaml so they\ndescribe vendor_name as a free-form vendor identifier.\n\n.... Generated with [Cortex Code](https://docs.snowflake.com/en/user-guide/cortex-code/cortex-code)\n\nCo-Authored-By: Cortex Code \u003cnoreply@snowflake.com\u003e\n"
    },
    {
      "commit": "a984cc7de7a2aa98b00d86396320369a020c978a",
      "tree": "2ae5fbd01d2b831c671d90710ceebc23a181d80b",
      "parents": [
        "9695e81dee0dfe9c99391b1e88eec2b1d8390e13"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Wed May 27 07:46:44 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 07:46:44 2026 +0200"
      },
      "message": "Add working groups page (#123)"
    },
    {
      "commit": "9695e81dee0dfe9c99391b1e88eec2b1d8390e13",
      "tree": "03e12da94130becd37a909564fd4eb93903b1da5",
      "parents": [
        "09d375e3d8c450c0816098bb6bc3f91458cd287d"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Tue May 26 22:46:15 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 07:46:15 2026 +0200"
      },
      "message": "docs: expand README with repo overview and contribution pointers (#134)\n\n* docs: expand README with repo overview and contribution pointers\n\nAdd a brief section describing what\u0027s in the repository and link to\nCONTRIBUTING.md and ROADMAP.md so new contributors can easily find how\nto get involved and what\u0027s planned.\n\n* docs: rewrite fragmentation sentence for parallelism and clarity\n\nMake the symptom list parallel (all -ing clauses) and reflect that the\nspec ships as both JSON Schema and YAML.\n\n* docs: reorder fragmentation sentence — solution first, symptoms after colon\n\n* docs: add Slack join link to Get involved section\n\n* docs: rename Chat bullet to \u0027Join the Slack community\u0027\n\n---------\n\nCo-authored-by: Khushboo Bhatia \u003ckhushboo.bhatia@snowflake.com\u003e"
    },
    {
      "commit": "09d375e3d8c450c0816098bb6bc3f91458cd287d",
      "tree": "b2b60f6231e658508bf7d474cc21e6f3a615e659",
      "parents": [
        "53c446ebb9914fa2a56274f07def546cb7187a11",
        "327b59a00c1656ddd42767d6ed33fcd2112df5cd"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Fri May 22 09:07:31 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 09:07:31 2026 -0700"
      },
      "message": "Merge pull request #122 from jbonofre/contributing\n\nAdd CONTRIBUTING.md"
    },
    {
      "commit": "53c446ebb9914fa2a56274f07def546cb7187a11",
      "tree": "1632f0e00f3888abe490dde27e0759006c0afc49",
      "parents": [
        "fdd0b1c5ad7b06129cc372122f06e3fdd3b11723",
        "b1f67b5c8ee9a227bbab5f81c6bbcf05e19b9e1d"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Thu May 21 14:39:42 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 14:39:42 2026 -0700"
      },
      "message": "Merge pull request #91 from jochenchrist/vendor-name-free-form-string\n\nChange vendor_name from enum to free-form string"
    },
    {
      "commit": "b1f67b5c8ee9a227bbab5f81c6bbcf05e19b9e1d",
      "tree": "1632f0e00f3888abe490dde27e0759006c0afc49",
      "parents": [
        "5d47c636059467616ecaa848e7de2a27c8a8f63c"
      ],
      "author": {
        "name": "jochen",
        "email": "jochen.christ@entropy-data.com",
        "time": "Mon Mar 23 13:50:19 2026 +0100"
      },
      "committer": {
        "name": "jochen",
        "email": "jochen.christ@entropy-data.com",
        "time": "Thu May 21 08:49:19 2026 +0200"
      },
      "message": "Improve vendors array description in osi-schema.json\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "5d47c636059467616ecaa848e7de2a27c8a8f63c",
      "tree": "f8475af768ace4f59905719bf2ea0a6784ab1ca6",
      "parents": [
        "7e984cb15815e4c9efc5885aa753163afb83106d"
      ],
      "author": {
        "name": "jochen",
        "email": "jochen.christ@entropy-data.com",
        "time": "Mon Mar 23 13:49:13 2026 +0100"
      },
      "committer": {
        "name": "jochen",
        "email": "jochen.christ@entropy-data.com",
        "time": "Thu May 21 08:49:19 2026 +0200"
      },
      "message": "Fix remaining enum references for vendor_name\n\n- Update vendors array description in osi-schema.json to reflect\n  non-exhaustive examples instead of enumeration definition\n- Update spec.md custom extensions schema comment from \"Must be from\n  vendors enum\" to \"Free-form string identifying the vendor\"\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "7e984cb15815e4c9efc5885aa753163afb83106d",
      "tree": "5e99502f0a583479984ad522e40f075a59bf7efd",
      "parents": [
        "fdd0b1c5ad7b06129cc372122f06e3fdd3b11723"
      ],
      "author": {
        "name": "jochen",
        "email": "jochen.christ@entropy-data.com",
        "time": "Sat Mar 21 11:12:41 2026 +0100"
      },
      "committer": {
        "name": "jochen",
        "email": "jochen.christ@entropy-data.com",
        "time": "Thu May 21 08:49:19 2026 +0200"
      },
      "message": "Change vendor_name from enum to free-form string\n\nAllow any vendor or organization to define custom extensions without\nrequiring changes to the core specification. Existing vendor names\n(COMMON, SNOWFLAKE, SALESFORCE, DBT, DATABRICKS) are preserved as\nexamples.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "fdd0b1c5ad7b06129cc372122f06e3fdd3b11723",
      "tree": "a6738f6f74a257912c904472254e8f11a16066b1",
      "parents": [
        "58c41fab5063a872aabcdf55dbb13fabfb576b70",
        "f325bbdc8dfaa0eea7a592c1ec7f4dde030c49ad"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Wed May 20 15:56:42 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 15:56:42 2026 -0700"
      },
      "message": "Merge pull request #129 from open-semantic-interchange/bump-version-0.2.0.dev0\n\nBump version to 0.2.0.dev0 on main (post-0.1.1 release branch)"
    },
    {
      "commit": "58c41fab5063a872aabcdf55dbb13fabfb576b70",
      "tree": "31fc11f6b68813a7cbb8990485fa96b6d1d95122",
      "parents": [
        "87afffbfd0add2e450a437210945911218f78465",
        "53637bd8b361b1294f73d238c93340d8d5657df6"
      ],
      "author": {
        "name": "liorebel-dev",
        "email": "liorebel@gmail.com",
        "time": "Wed May 20 17:22:51 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 17:22:51 2026 +0300"
      },
      "message": "Merge pull request #130 from open-semantic-interchange/fix-salesforce-osi-schema-copy\n\nsalesforce: copy core-spec/osi-schema.json into classpath at build time"
    },
    {
      "commit": "53637bd8b361b1294f73d238c93340d8d5657df6",
      "tree": "31fc11f6b68813a7cbb8990485fa96b6d1d95122",
      "parents": [
        "87afffbfd0add2e450a437210945911218f78465"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.bhatia@snowflake.com",
        "time": "Tue May 19 17:47:52 2026 -0700"
      },
      "committer": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.bhatia@snowflake.com",
        "time": "Tue May 19 17:47:52 2026 -0700"
      },
      "message": "salesforce: copy core-spec/osi-schema.json into classpath at build time\n\nThe Salesforce module\u0027s SchemaValidator loads the OSI schema from\nclasspath at /schemas/osi-schema.json, but no such file was checked\ninto src/main/resources/schemas/. Tests would either:\n- silently skip (mvn clean test on main: 28 of 28 skipped via\n  test-skip Assumptions when the schema isn\u0027t found), or\n- pass against a stale uncommitted target/classes/schemas/osi-schema.json\n  left over from a previous local build (hiding the missing source).\n\nThis wires the maven-resources-plugin to copy the canonical\ncore-spec/osi-schema.json into target/classes/schemas/osi-schema.json\nduring the process-resources phase. Single source of truth stays in\ncore-spec/; no duplicate to drift out of sync.\n\nAfter this change, \u0027mvn clean test\u0027:\n- before: 28 tests, 28 skipped, 0 executed\n- after:  28 tests, 14 skipped, 14 passing\nThe 14 still-skipped tests need the upstream Salesforce schema\n(salesforce-semantic-model-schema.json), which is a separate manual\ndownload requirement and out of scope for this PR.\n"
    },
    {
      "commit": "f325bbdc8dfaa0eea7a592c1ec7f4dde030c49ad",
      "tree": "060e3827e28a9a43e4511359b8139227533a148d",
      "parents": [
        "3f220303fd842157e4d2fed31b9380341f001fa5"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.bhatia@snowflake.com",
        "time": "Tue May 19 17:33:45 2026 -0700"
      },
      "committer": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.bhatia@snowflake.com",
        "time": "Tue May 19 17:33:45 2026 -0700"
      },
      "message": "Drop version.txt; add DRAFT marker to spec.yaml and spec.md\n\n- Remove root version.txt: keeping component-level versions in\n  pyproject.toml / spec files is sufficient; we\u0027ll revisit a root\n  bundle/train marker if/when it\u0027s actually needed.\n- Add a \u0027DRAFT version\u0027 comment in core-spec/spec.yaml directly above\n  the version field.\n- Add a visible blockquote \u0027DRAFT version\u0027 note in core-spec/spec.md\n  directly above the **Version:** line, so readers of the rendered\n  spec see clearly that this is in-development.\n"
    },
    {
      "commit": "3f220303fd842157e4d2fed31b9380341f001fa5",
      "tree": "adabcd80ab5b78c359ea80a91ad1b1a9e36f0017",
      "parents": [
        "87afffbfd0add2e450a437210945911218f78465"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.bhatia@snowflake.com",
        "time": "Tue May 19 17:21:49 2026 -0700"
      },
      "committer": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.bhatia@snowflake.com",
        "time": "Tue May 19 17:21:49 2026 -0700"
      },
      "message": "Bump version to 0.2.0.dev0 on main\n\nNow that release/0.1.1 has been cut and tagged (osi-0.1.1-rc1), main\nis open for breaking changes targeting 0.2.0. This bump marks main as\nin-development so consumers of main don\u0027t mistake it for the released\n0.1.1 artifacts.\n\nUses PEP 440 canonical form (0.2.0.dev0) consistently across:\n- core-spec (spec.yaml, spec.md, osi-schema.json) - spec version\n- examples/tpcds_semantic_model.yaml\n- docs/index.md (with explicit \u0027latest released: 0.1.1\u0027 callout)\n- All converter SUPPORTED_VERSION / OSI_VERSION constants\n  (gooddata, snowflake, salesforce, polaris)\n- gooddata pyproject.toml package version\n- All tests that assert on the version string\n- New root version.txt for parity with Polaris release convention\n\nThe historical 0.1.1 changelog entry in spec.md is preserved; an\n\u0027Unreleased / 0.2.0.dev0\u0027 entry is added above it.\n\nCherry-pick policy from now on: bug fixes land on main first, then\nget cherry-picked to release/0.1.1 (never the reverse).\n"
    },
    {
      "commit": "87afffbfd0add2e450a437210945911218f78465",
      "tree": "280b1eee423b6da176b71d7ee9fc95fc6b18a2ba",
      "parents": [
        "36b9f65e8600585f0808cd2ecbd133b8e0d84c7f",
        "ee22bd5129399dfdd540aacce8368233568d4ab8"
      ],
      "author": {
        "name": "jklahr",
        "email": "jklahr@yahoo.com",
        "time": "Tue May 19 09:30:03 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 09:30:03 2026 -0700"
      },
      "message": "Merge pull request #126 from jklahr/update-roadmap\n\nAdd ontology section and update roadmap with latest discussions "
    },
    {
      "commit": "ee22bd5129399dfdd540aacce8368233568d4ab8",
      "tree": "280b1eee423b6da176b71d7ee9fc95fc6b18a2ba",
      "parents": [
        "e8c6f351858b7540280f295ec790a2b5ed964e2a"
      ],
      "author": {
        "name": "Josh Klahr",
        "email": "josh.klahr+snow@snowflake.com",
        "time": "Tue May 19 08:55:22 2026 -0700"
      },
      "committer": {
        "name": "Josh Klahr",
        "email": "josh.klahr+snow@snowflake.com",
        "time": "Tue May 19 08:55:22 2026 -0700"
      },
      "message": "Remove PR references from roadmap\n\nKeep the roadmap focused on discussions, issues, and deliverables\nrather than tracking in-flight PRs which change frequently.\n\nMade-with: Cursor\n"
    },
    {
      "commit": "e8c6f351858b7540280f295ec790a2b5ed964e2a",
      "tree": "7f86b45739354b5b41231a9bfda0fcf000ba413d",
      "parents": [
        "36b9f65e8600585f0808cd2ecbd133b8e0d84c7f"
      ],
      "author": {
        "name": "Josh Klahr",
        "email": "josh.klahr+snow@snowflake.com",
        "time": "Mon May 18 13:39:06 2026 -0700"
      },
      "committer": {
        "name": "Josh Klahr",
        "email": "josh.klahr+snow@snowflake.com",
        "time": "Mon May 18 13:42:30 2026 -0700"
      },
      "message": "Add ontology section and update roadmap with latest discussions and PRs\n\nAdd Ontology \u0026 Semantic Interoperability as a top-level current effort\nwith links to discussions #22, #101, #108, #68 and PRs #124, #125.\n\nUpdate existing sections with recently opened discussions, PRs, and\nconverters: metric trees (#40), primary key semantics (#15, #119),\nreusable datasets (#103, #109), datatype/is_time reframe (PR #113),\nspatial dimension types (#114), default_aggregation (#115), positive\ndirection (#41), physical metadata (#110), and new converter PRs for\nSalesforce (#118), dbt (#116), and Databricks (#120). Also adds\nCONTRIBUTING.md (#122) and working groups page (#123) to Developer\nExperience, and lists merged converters as existing artifacts.\n\nMade-with: Cursor\n"
    },
    {
      "commit": "327b59a00c1656ddd42767d6ed33fcd2112df5cd",
      "tree": "a2b463a86be23f9bcf497bbaa1490a461bf75a9f",
      "parents": [
        "7b753aa1acd2a221f48df6e05af1c3093ea8bd1d"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue May 12 18:24:39 2026 +0200"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue May 12 18:24:39 2026 +0200"
      },
      "message": "Add CONTRIBUTING.md\n"
    },
    {
      "commit": "36b9f65e8600585f0808cd2ecbd133b8e0d84c7f",
      "tree": "ff547cc4cc217d024e708f6701406715063060ed",
      "parents": [
        "2625271a7ab7a574d3d5d95bfa11434fbb7c50ff"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Tue May 12 18:23:11 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 12 18:23:11 2026 +0200"
      },
      "message": "Add Apache Polaris converter module (#94)\n\nIntroduces a Java/Maven converter under converters/polaris/ that provides\ntwo-way conversion between OSI semantic models and Apache Polaris catalogs\nvia the Iceberg REST Catalog API.\n\nImport mode reads Polaris namespaces and tables, mapping Iceberg schemas\nto OSI datasets and fields. Export mode creates Polaris namespaces and\nIceberg tables from OSI semantic models with type inference."
    },
    {
      "commit": "2625271a7ab7a574d3d5d95bfa11434fbb7c50ff",
      "tree": "bcc397583f18b7755b8fdff7d7f54dd749f5bc83",
      "parents": [
        "cd74bb50f05e24c54696fd6fd720c6e3a056dd03",
        "6a06f34f5c3f71fab48508649ed75a05f0d48ce9"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Thu May 07 09:55:15 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 07 09:55:15 2026 -0700"
      },
      "message": "Merge pull request #96 from jaceksan/gooddata-support\n\nAdd GoodData support: MAQL dialect, vendor registration, and bidirectional LDM converter"
    },
    {
      "commit": "cd74bb50f05e24c54696fd6fd720c6e3a056dd03",
      "tree": "19a12e77aea9c7a12e957d7e9f492987213a9db9",
      "parents": [
        "ac335938339d369e74febe49ca1ebfd3a0fb2a8e",
        "354320aaabce712435dde131272a4990f9be6180"
      ],
      "author": {
        "name": "jklahr",
        "email": "jklahr@yahoo.com",
        "time": "Wed May 06 14:41:34 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 14:41:34 2026 -0700"
      },
      "message": "Merge pull request #112 from jklahr/add-roadmap\n\nAdd community-informed roadmap"
    },
    {
      "commit": "354320aaabce712435dde131272a4990f9be6180",
      "tree": "4e59a47bfa951e32e853108510bda525b7e76d64",
      "parents": [
        "b7f5a2406966294398605865e89e9682433b3ec0"
      ],
      "author": {
        "name": "Josh Klahr",
        "email": "josh.klahr+snow@snowflake.com",
        "time": "Mon May 04 18:40:28 2026 -0700"
      },
      "committer": {
        "name": "Josh Klahr",
        "email": "josh.klahr+snow@snowflake.com",
        "time": "Mon May 04 18:40:28 2026 -0700"
      },
      "message": "Address review feedback: consolidate roadmap sections\n\nMerge Metric Semantics \u0026 Core Semantic Model into one section,\nmerge Inbound Semantic Query Language \u0026 Reference Engine into one\nsection, move Dimension Groups/Audiences/Filters to their appropriate\nsections, and delete the now-empty Additional Modeling Constructs\nsection.\n\nMade-with: Cursor\n"
    },
    {
      "commit": "ac335938339d369e74febe49ca1ebfd3a0fb2a8e",
      "tree": "f633303bc8a708e56229fdce47ecddb904e15771",
      "parents": [
        "7b753aa1acd2a221f48df6e05af1c3093ea8bd1d",
        "b39421dc9ea49aa3db15a66c1316e20603634451"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Fri May 01 14:20:13 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 01 14:20:13 2026 -0700"
      },
      "message": "Merge pull request #118 from deutschn/deutschn-salesforce-converter\n\nAdd OSI-Salesforce converter module"
    },
    {
      "commit": "b39421dc9ea49aa3db15a66c1316e20603634451",
      "tree": "f633303bc8a708e56229fdce47ecddb904e15771",
      "parents": [
        "7b753aa1acd2a221f48df6e05af1c3093ea8bd1d"
      ],
      "author": {
        "name": "Nechama Deutsch",
        "email": "lerner.nechama@gmail.com",
        "time": "Thu Apr 30 20:27:14 2026 +0300"
      },
      "committer": {
        "name": "Nechama Deutsch",
        "email": "lerner.nechama@gmail.com",
        "time": "Thu Apr 30 20:27:14 2026 +0300"
      },
      "message": "Add OSI-Salesforce converter module\n"
    },
    {
      "commit": "fdc13ce8247f68096a94d8dc368a23bc96850ebd",
      "tree": "fd80d275c815fecebb7377b4cc073c501faa4501",
      "parents": [
        "3a0080b27639fea5e4ff86b1badfc720c55de4ea"
      ],
      "author": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Wed Apr 29 12:37:18 2026 -0500"
      },
      "committer": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Wed Apr 29 12:37:18 2026 -0500"
      },
      "message": "Improve CLI warning messages with drop reason and verb\n"
    },
    {
      "commit": "3a0080b27639fea5e4ff86b1badfc720c55de4ea",
      "tree": "d6c634520d21c607334f72e69a713c2f985f41b6",
      "parents": [
        "88b8a56e4cc37b94fe15046a9668b0c5fc9e08a0"
      ],
      "author": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Wed Apr 29 11:51:11 2026 -0500"
      },
      "committer": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Wed Apr 29 12:17:03 2026 -0500"
      },
      "message": "Add README for osi-dbt converter\n\nCovers installation, CLI usage for both conversion directions, Python API\nusage, conversion loss notes (what gets dropped and why), and development\nsetup.\n"
    },
    {
      "commit": "88b8a56e4cc37b94fe15046a9668b0c5fc9e08a0",
      "tree": "6a8ba0d1ced3ee2e2086ee2e4f90e464b647fb59",
      "parents": [
        "d8a265b5c51d960933c2125d1bf858929a1b79c3"
      ],
      "author": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Wed Apr 29 11:30:47 2026 -0500"
      },
      "committer": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Wed Apr 29 11:30:47 2026 -0500"
      },
      "message": "Add osi-dbt converter tests (converters/dbt/tests/)\n\nMigrates tests from tests_metricflow_semantic_interfaces/osi/ into the\nOSI repository.\n\nImport changes from metricflow:\n- `metricflow.converters.models` → `osi`\n- `metricflow.converters.msi_to_osi` → `osi_dbt.msi_to_osi`\n- `metricflow.converters.osi_to_msi` → `osi_dbt.osi_to_msi`\n- `tests_metricflow_semantic_interfaces.osi.helpers` → `tests.helpers`\n\nSnapshot testing: replaced metricflow\u0027s `assert_object_snapshot_equal` +\n`SnapshotConfiguration` with syrupy\u0027s `snapshot` fixture. Snapshot\nassertions compare `result.to_osi_yaml()` (a stable string representation)\nrather than the raw Pydantic object. Syrupy was chosen over the metricflow\nhelper because it has no dependency on the metricflow test infrastructure\nand stores snapshots as plain text files in the repository.\n\n`[tool.pytest.ini_options]` added to pyproject.toml to point pytest at the\n`tests/` directory.\n"
    },
    {
      "commit": "d8a265b5c51d960933c2125d1bf858929a1b79c3",
      "tree": "3adebe9bbcdf16141f3b50bb118b408535c10b96",
      "parents": [
        "6a222cc7093cd3bf7620e796a18a4fffa76b4d2d"
      ],
      "author": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Wed Apr 29 11:30:40 2026 -0500"
      },
      "committer": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Wed Apr 29 11:30:40 2026 -0500"
      },
      "message": "Add osi-dbt converter package (converters/dbt/)\n\nMigrates the dbt↔OSI converters from metricflow/metricflow/converters/\ninto the OSI repository as the osi-dbt package.\n\nSource changes from metricflow:\n- converter_issues.py: direct copy; drop `from __future__ import annotations`\n- expression_utils.py: direct copy\n- filter_utils.py: direct copy\n- msi_to_osi.py: update imports from `metricflow.converters.models` → `osi`;\n  replace all `LazyFormat(...)` calls with f-strings (no metricflow dep)\n- osi_to_msi.py: same import updates as msi_to_osi.py\n- cli.py: new file; file-driven CLI for both conversion directions using\n  `parse_manifest_from_dbt_generated_manifest` from metricflow_semantics\n\nThe `osi-dbt` package depends on `osi-python` (the shared OSI types added\nin the previous commit) and `metricflow` directly, since\n`metricflow-semantic-interfaces` is not separately published on PyPI.\n\nBuild tooling: uv + hatchling, matching the pattern from osi-python.\n"
    },
    {
      "commit": "6a222cc7093cd3bf7620e796a18a4fffa76b4d2d",
      "tree": "710df6ae0024b91e762f2ada384370ad64b64087",
      "parents": [
        "7b753aa1acd2a221f48df6e05af1c3093ea8bd1d"
      ],
      "author": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Wed Apr 29 11:12:29 2026 -0500"
      },
      "committer": {
        "name": "Quigley Malcolm",
        "email": "quigley.malcolm@dbtlabs.com",
        "time": "Wed Apr 29 11:12:29 2026 -0500"
      },
      "message": "Add osi-python package with Pydantic v2 OSI type definitions\n\nIntroduces the shared Python type library for the OSI specification,\nestablishing it as the canonical Python representation of the core spec.\nAll future Python converters will depend on this package rather than\ndefining their own OSI types.\n\nKey decisions:\n- Pydantic v2 native (no shim): OSI has no obligation to support\n  dbt-core\u0027s Pydantic v1/v2 compatibility constraints\n- Python 3.11+ minimum: clean modern syntax, no __future__ annotations\n- uv + hatchling: consistent with the data tooling ecosystem\n- PyPI name `osi-python`, import namespace `osi`\n- `to_osi_yaml()` added alongside `to_osi_json()` since YAML is OSI\u0027s\n  native serialization format\n- OSIRelationship.from_dataset aliased to `from` (YAML/JSON key) via\n  Field(alias\u003d\"from\") with populate_by_name\u003dTrue so Python callers can\n  use the non-keyword name\n"
    },
    {
      "commit": "b7f5a2406966294398605865e89e9682433b3ec0",
      "tree": "5c12acb246b3309c1773a48a10973e1485b75401",
      "parents": [
        "37b712c83bf79b0beab3fe0d1a9551d25f0efa17"
      ],
      "author": {
        "name": "Josh Klahr",
        "email": "josh.klahr+snow@snowflake.com",
        "time": "Wed Apr 22 10:10:10 2026 -0700"
      },
      "committer": {
        "name": "Josh Klahr",
        "email": "josh.klahr+snow@snowflake.com",
        "time": "Wed Apr 22 10:10:10 2026 -0700"
      },
      "message": "Add related issues, PRs, and repo artifacts to roadmap\n\nLink open GitHub issues, in-flight PRs, and existing repo artifacts\n(validator, converters, schema, examples) to their corresponding\nroadmap sections for easier cross-referencing.\n\nMade-with: Cursor\n"
    },
    {
      "commit": "37b712c83bf79b0beab3fe0d1a9551d25f0efa17",
      "tree": "3f22f7f340df21608574e8d36b2d1c22edbda674",
      "parents": [
        "7b753aa1acd2a221f48df6e05af1c3093ea8bd1d"
      ],
      "author": {
        "name": "Josh Klahr",
        "email": "josh.klahr+snow@snowflake.com",
        "time": "Wed Apr 22 09:56:21 2026 -0700"
      },
      "committer": {
        "name": "Josh Klahr",
        "email": "josh.klahr+snow@snowflake.com",
        "time": "Wed Apr 22 09:56:21 2026 -0700"
      },
      "message": "Add community-informed roadmap\n\nIntroduces ROADMAP.md synthesizing community discussions and voting\nsignals into a structured plan with three categories: current working\ngroup efforts, future strategic initiatives, and incremental\nenhancements/additions.\n\nMade-with: Cursor\n"
    },
    {
      "commit": "6a06f34f5c3f71fab48508649ed75a05f0d48ce9",
      "tree": "5967ce0842a6d520378492408cbbbd2d99c1a861",
      "parents": [
        "ee5e9469015ccb941a26345db785325b45b14d6f"
      ],
      "author": {
        "name": "Jan Soubusta",
        "email": "jan.soubusta@gooddata.com",
        "time": "Tue Apr 21 13:45:29 2026 +0200"
      },
      "committer": {
        "name": "Jan Soubusta",
        "email": "jan.soubusta@gooddata.com",
        "time": "Tue Apr 21 13:45:29 2026 +0200"
      },
      "message": "Drop unused jsonschema dependency\n\nThe dep was added with the intent to validate OSI output against\ncore-spec/osi-schema.json, but never wired up. Removing it for now;\nvalidation will be addressed via a shared library (separate discussion).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "ee5e9469015ccb941a26345db785325b45b14d6f",
      "tree": "63b173d0de2ceaa3cf0ccf6b1d939cd217537eab",
      "parents": [
        "8cd55e86907c52fb8e9c069018bf67c46f5abf9e"
      ],
      "author": {
        "name": "Jan Soubusta",
        "email": "jan.soubusta@gooddata.com",
        "time": "Mon Apr 20 23:05:02 2026 +0200"
      },
      "committer": {
        "name": "Jan Soubusta",
        "email": "jan.soubusta@gooddata.com",
        "time": "Mon Apr 20 23:05:02 2026 +0200"
      },
      "message": "Address review: use new GoodData reference format, fix OSI enums, CI-friendly uv\n\n- Reference model: drop legacy deprecated sourceColumns; require the new\n  sources[] form with explicit per-column targets (attribute id or date\n  instance). Raise a clear error on legacy input to force LDM upgrade.\n- gooddata_to_osi: resolve reference target columns via target dataset\u0027s\n  attribute id -\u003e source_column map so OSI relationship to_columns hold\n  real physical columns (fixes from/to column mismatch bug).\n- osi_to_gooddata: emit sources[] with target grain ids; date dim targets\n  use type\u003ddate.\n- pyproject.toml: drop uv python-preference\u003donly-system (breaks CI).\n- spec.yaml: add MAQL dialect and GOODDATA vendor to match osi-schema.json.\n- Fixtures updated to the new format; tests pass.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "7b753aa1acd2a221f48df6e05af1c3093ea8bd1d",
      "tree": "e6aa1a9376cfb3732f456cf515c75478edf6aab3",
      "parents": [
        "43075315fcb59c9d6c596a5f00407458fed03557",
        "1e36581154e2897c4a2e6af97bde923f61b2b2a8"
      ],
      "author": {
        "name": "Tian Gao",
        "email": "tian.gao@snowflake.com",
        "time": "Mon Apr 20 12:04:04 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 12:04:04 2026 -0700"
      },
      "message": "Merge pull request #98 from open-semantic-interchange/tgao-snowflake-converter\n\nOSI-\u003eSnowflake YAML Converter Script"
    },
    {
      "commit": "8cd55e86907c52fb8e9c069018bf67c46f5abf9e",
      "tree": "d30e46cee182b78a1d9ec0afae2c87636ff13960",
      "parents": [
        "f63de9900237855d2f7f97f666774baf3d20301e"
      ],
      "author": {
        "name": "Jan Soubusta",
        "email": "jan.soubusta@gooddata.com",
        "time": "Tue Apr 07 09:55:15 2026 +0200"
      },
      "committer": {
        "name": "Jan Soubusta",
        "email": "jan.soubusta@gooddata.com",
        "time": "Mon Apr 20 20:51:54 2026 +0200"
      },
      "message": "Fix remaining convertor -\u003e converter typos in file contents\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "f63de9900237855d2f7f97f666774baf3d20301e",
      "tree": "03569755e617bc46c2df6ad485355b606cbfab09",
      "parents": [
        "ff4ed495dc2644e549f784f6dfc0c94e313bc911"
      ],
      "author": {
        "name": "Jan Soubusta",
        "email": "jan.soubusta@gooddata.com",
        "time": "Wed Apr 01 16:15:07 2026 +0200"
      },
      "committer": {
        "name": "Jan Soubusta",
        "email": "jan.soubusta@gooddata.com",
        "time": "Mon Apr 20 20:51:54 2026 +0200"
      },
      "message": "Rename convertors to converters, remove __pycache__ from tracking\n\nAddress PR review feedback: fix spelling of \"convertors\" directory\nto \"converters\", remove committed __pycache__ .pyc files, and add\n__pycache__/ to .gitignore.\n\nCo-Authored-By: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "ff4ed495dc2644e549f784f6dfc0c94e313bc911",
      "tree": "32fd7675d5b2b452a2948cd7b0432478907c351d",
      "parents": [
        "057d2db662ebc04a413ab72b4be19ebc515d23f9"
      ],
      "author": {
        "name": "Jan Soubusta",
        "email": "jan.soubusta@gooddata.com",
        "time": "Tue Mar 24 11:10:02 2026 +0100"
      },
      "committer": {
        "name": "Jan Soubusta",
        "email": "jan.soubusta@gooddata.com",
        "time": "Mon Apr 20 20:51:54 2026 +0200"
      },
      "message": "Add GoodData LDM \u003c-\u003e OSI bidirectional convertor\n\nPython project (uv + hatchling) in convertors/gooddata/ with:\n- GoodData declarative LDM dataclasses matching the real API format\n- GoodData → OSI: datasets, attributes/facts as fields, references\n  as relationships, date instances, dual ANSI_SQL+MAQL expressions\n- OSI → GoodData: dimension-based attribute/fact classification,\n  MAQL pattern detection, date dimension support via custom_extensions\n- 28 tests: unit tests for both directions + round-trip tests\n- Metrics intentionally excluded (MAQL is context-aware, OSI metric\n  model is SQL-expression-based — requires spec evolution)\n"
    },
    {
      "commit": "057d2db662ebc04a413ab72b4be19ebc515d23f9",
      "tree": "2a845a2bd8f528a84e52ed7723a7b0373a461ffd",
      "parents": [
        "43075315fcb59c9d6c596a5f00407458fed03557"
      ],
      "author": {
        "name": "Jan Soubusta",
        "email": "jan.soubusta@gooddata.com",
        "time": "Tue Mar 24 11:09:49 2026 +0100"
      },
      "committer": {
        "name": "Jan Soubusta",
        "email": "jan.soubusta@gooddata.com",
        "time": "Mon Apr 20 20:51:54 2026 +0200"
      },
      "message": "Add GoodData vendor and MAQL dialect to OSI spec\n\n- Add MAQL to Dialect enum (osi-schema.json, spec.md)\n- Add GOODDATA to Vendor enum (osi-schema.json, spec.md)\n- Add MAQL to validator skip list (same treatment as MDX/TABLEAU)\n"
    },
    {
      "commit": "1e36581154e2897c4a2e6af97bde923f61b2b2a8",
      "tree": "3c80dfa1fa2217940896954e5ce7edd7f88eebf6",
      "parents": [
        "b776acd217bbda3bbed85a5828193a981d99b0f7"
      ],
      "author": {
        "name": "Tian Gao",
        "email": "tian.gao@snowflake.com",
        "time": "Tue Mar 31 18:17:30 2026 +0000"
      },
      "committer": {
        "name": "Tian Gao",
        "email": "tian.gao@snowflake.com",
        "time": "Tue Mar 31 18:17:30 2026 +0000"
      },
      "message": "address comments\n"
    },
    {
      "commit": "43075315fcb59c9d6c596a5f00407458fed03557",
      "tree": "b61d230fcf61a04d593110af2864bb2269bb54f5",
      "parents": [
        "89c6c92eec50a13c8805a41e528065813a5ae3e3"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Mon Mar 30 10:13:09 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 30 10:13:09 2026 +0200"
      },
      "message": "Bootstrap repo resources, including project governance (#89)\n\n* Bootstrap repo resources, including project governance\n\n* Remove roadmap section.\nClarify vote/binding vote.\nRemove the multiple datasets join for now.\n\n* Add Slack invite"
    },
    {
      "commit": "b776acd217bbda3bbed85a5828193a981d99b0f7",
      "tree": "76f5d0bf4b6c03d0404b00212a587002f9897792",
      "parents": [
        "5aac76387e41df5884b890b5ad10bc0782ac32ad"
      ],
      "author": {
        "name": "Tian Gao",
        "email": "tian.gao@snowflake.com",
        "time": "Thu Mar 26 20:34:15 2026 +0000"
      },
      "committer": {
        "name": "Tian Gao",
        "email": "tian.gao@snowflake.com",
        "time": "Thu Mar 26 20:34:15 2026 +0000"
      },
      "message": "remove pycache\n"
    },
    {
      "commit": "5aac76387e41df5884b890b5ad10bc0782ac32ad",
      "tree": "f7be961296b2610bac0bcd22e01ea7465836c68b",
      "parents": [
        "4457f99edb857ce7d6ede9ec18aa92a3f2b0d7af"
      ],
      "author": {
        "name": "Tian Gao",
        "email": "tian.gao@snowflake.com",
        "time": "Thu Mar 26 20:31:04 2026 +0000"
      },
      "committer": {
        "name": "Tian Gao",
        "email": "tian.gao@snowflake.com",
        "time": "Thu Mar 26 20:31:04 2026 +0000"
      },
      "message": "tests\n"
    },
    {
      "commit": "89c6c92eec50a13c8805a41e528065813a5ae3e3",
      "tree": "d2c53f59955eb96e6182c6748a7bbaacf687c8fa",
      "parents": [
        "e3bdd7f64fcf36c792f94560b8923df9b15ec7b9",
        "a63a9b34e09b34a30cef6bd4cea4f5f3910d55d5"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Thu Mar 26 12:03:27 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 26 12:03:27 2026 -0700"
      },
      "message": "Merge pull request #99 from michael-the1/fix-changelog-year\n\nfix: 0.1.1 release year from 2024 -\u003e 2025"
    },
    {
      "commit": "a63a9b34e09b34a30cef6bd4cea4f5f3910d55d5",
      "tree": "d2c53f59955eb96e6182c6748a7bbaacf687c8fa",
      "parents": [
        "e3bdd7f64fcf36c792f94560b8923df9b15ec7b9"
      ],
      "author": {
        "name": "Michael The",
        "email": "michael.the@teampicnic.com",
        "time": "Thu Mar 26 10:35:55 2026 +0100"
      },
      "committer": {
        "name": "Michael The",
        "email": "michael.the@teampicnic.com",
        "time": "Thu Mar 26 10:35:55 2026 +0100"
      },
      "message": "fix: 0.1.1 release year from 2024 -\u003e 2025\n"
    },
    {
      "commit": "4457f99edb857ce7d6ede9ec18aa92a3f2b0d7af",
      "tree": "f123a1677cd780519794c2a766a1befe5ab3e502",
      "parents": [
        "8c52967178b034f3b7c1d231863226608d1f0350"
      ],
      "author": {
        "name": "Tian Gao",
        "email": "tian.gao@snowflake.com",
        "time": "Tue Mar 24 23:56:17 2026 +0000"
      },
      "committer": {
        "name": "Tian Gao",
        "email": "tian.gao@snowflake.com",
        "time": "Tue Mar 24 23:56:17 2026 +0000"
      },
      "message": "snowflake converter v0\n"
    },
    {
      "commit": "8c52967178b034f3b7c1d231863226608d1f0350",
      "tree": "39db0662beb77e03a34dcdd0ce157c5b5cfad6e6",
      "parents": [
        "b14e342bb6f38ff16c932e29f6b99a2d437bcfc7"
      ],
      "author": {
        "name": "Tian Gao",
        "email": "tian.gao@snowflake.com",
        "time": "Tue Mar 24 23:32:38 2026 +0000"
      },
      "committer": {
        "name": "Tian Gao",
        "email": "tian.gao@snowflake.com",
        "time": "Tue Mar 24 23:32:38 2026 +0000"
      },
      "message": "snowflake converter\n"
    },
    {
      "commit": "b14e342bb6f38ff16c932e29f6b99a2d437bcfc7",
      "tree": "8acabaf2944f5dc8a35a358dc15ebe32f36ca954",
      "parents": [
        "e3bdd7f64fcf36c792f94560b8923df9b15ec7b9"
      ],
      "author": {
        "name": "Tian Gao",
        "email": "tian.gao@snowflake.com",
        "time": "Tue Mar 24 23:07:17 2026 +0000"
      },
      "committer": {
        "name": "Tian Gao",
        "email": "tian.gao@snowflake.com",
        "time": "Tue Mar 24 23:07:17 2026 +0000"
      },
      "message": "snowflake converter\n"
    },
    {
      "commit": "e3bdd7f64fcf36c792f94560b8923df9b15ec7b9",
      "tree": "37db518cca39f0b65af3a8b40beead5945dd0002",
      "parents": [
        "29c5a091f6a9a41d476d12986bc8615fa53e0742",
        "24a32766943eea80379195a61aa5d96bd898a3c7"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Fri Mar 20 10:49:03 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 20 10:49:03 2026 -0700"
      },
      "message": "Merge pull request #90 from krisajenkins/patch-1\n\nSmall syntax bugfix for `spec.yaml`"
    },
    {
      "commit": "24a32766943eea80379195a61aa5d96bd898a3c7",
      "tree": "37db518cca39f0b65af3a8b40beead5945dd0002",
      "parents": [
        "29c5a091f6a9a41d476d12986bc8615fa53e0742"
      ],
      "author": {
        "name": "Kris Jenkins",
        "email": "krisajenkins@gmail.com",
        "time": "Fri Mar 20 15:40:49 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 20 15:40:49 2026 +0000"
      },
      "message": "Small syntax bugfix for `spec.yaml`\n\nThe `semantic_model.relationships` entry didn\u0027t have a space after the `:`. This is technically mandatory, and some parsers can\u0027t read the file without it."
    },
    {
      "commit": "29c5a091f6a9a41d476d12986bc8615fa53e0742",
      "tree": "6857819ad41068e487ad66ea94614ca013fd0229",
      "parents": [
        "05178aaa702db7d528111ffc56afb3791cbb0b44",
        "0d72160f4ad725c49290904ce56678301a168659"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Thu Mar 19 13:03:45 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 19 13:03:45 2026 -0700"
      },
      "message": "Merge pull request #88 from jbonofre/NOTICE\n\nAdd simple `NOTICE` file"
    },
    {
      "commit": "0d72160f4ad725c49290904ce56678301a168659",
      "tree": "6857819ad41068e487ad66ea94614ca013fd0229",
      "parents": [
        "05178aaa702db7d528111ffc56afb3791cbb0b44"
      ],
      "author": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Thu Mar 19 13:23:40 2026 +0100"
      },
      "committer": {
        "name": "JB Onofré",
        "email": "jbonofre@apache.org",
        "time": "Thu Mar 19 13:23:40 2026 +0100"
      },
      "message": "Add simple NOTICE file\n"
    },
    {
      "commit": "05178aaa702db7d528111ffc56afb3791cbb0b44",
      "tree": "9639cffc7fab2f878ebaaea9c6d7b3dd1570ecd9",
      "parents": [
        "d90b31a367108c56dd5af0107e9d5d9b26a71109",
        "2af09b20b8ff5641c3780a9940dc0c94249ae1b3"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Mon Mar 09 16:43:15 2026 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 09 16:43:15 2026 -0700"
      },
      "message": "Merge pull request #83 from open-semantic-interchange/kbhatia_version_change\n\nVersion change from 1.0 to 0.1.1"
    },
    {
      "commit": "2af09b20b8ff5641c3780a9940dc0c94249ae1b3",
      "tree": "9639cffc7fab2f878ebaaea9c6d7b3dd1570ecd9",
      "parents": [
        "d90b31a367108c56dd5af0107e9d5d9b26a71109"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.bhatia@snowflake.com",
        "time": "Mon Mar 09 16:41:08 2026 -0700"
      },
      "committer": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.bhatia@snowflake.com",
        "time": "Mon Mar 09 16:41:08 2026 -0700"
      },
      "message": "Version change from 1.0 to 0.1.1\n"
    },
    {
      "commit": "d90b31a367108c56dd5af0107e9d5d9b26a71109",
      "tree": "57d3922869cf95bdd225cbaec0b977444c303431",
      "parents": [
        "863e6206dedc42a3e365facced2f87e300819881",
        "be0f996cfa7dee181ee1ae920fc3d4df399e3558"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Thu Feb 26 16:30:55 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 26 16:30:55 2026 -0800"
      },
      "message": "Merge pull request #79 from karanasher/main\n\nRemove CLA workflow and CLA document"
    },
    {
      "commit": "be0f996cfa7dee181ee1ae920fc3d4df399e3558",
      "tree": "57d3922869cf95bdd225cbaec0b977444c303431",
      "parents": [
        "863e6206dedc42a3e365facced2f87e300819881"
      ],
      "author": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Thu Feb 26 16:21:54 2026 -0800"
      },
      "committer": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Thu Feb 26 16:21:54 2026 -0800"
      },
      "message": "Remove CLA workflow and CLA document\n\nRemove the CLA Assistant workflow and CLA.md as they are no longer needed.\n\nMade-with: Cursor\n"
    },
    {
      "commit": "863e6206dedc42a3e365facced2f87e300819881",
      "tree": "1f5023938771b72bc0869110953bb35d71ada300",
      "parents": [
        "22bf559286744032c8036ab0d4ae0e76f5a4b4da",
        "3e1a0f8d9564fa3f19d346b6b1ad20e7ab82b588"
      ],
      "author": {
        "name": "Karan Asher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 14:38:21 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 14:38:21 2026 -0800"
      },
      "message": "Merge pull request #77 from karanasher/main\n\nAdd trailing newline to CLA.md"
    },
    {
      "commit": "3e1a0f8d9564fa3f19d346b6b1ad20e7ab82b588",
      "tree": "1f5023938771b72bc0869110953bb35d71ada300",
      "parents": [
        "22bf559286744032c8036ab0d4ae0e76f5a4b4da"
      ],
      "author": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 14:37:41 2026 -0800"
      },
      "committer": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 14:37:41 2026 -0800"
      },
      "message": "Add trailing newline to CLA.md\n\nMade-with: Cursor\n"
    },
    {
      "commit": "22bf559286744032c8036ab0d4ae0e76f5a4b4da",
      "tree": "b00bb5ff02edab658b46bcc815f5b3eab1e96b58",
      "parents": [
        "9a610cf787fe950a3c3a840537651b3dbbfe438d",
        "7c88b2ed4383f5dfc57077a593906f27655288cc"
      ],
      "author": {
        "name": "Karan Asher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 14:36:44 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 14:36:44 2026 -0800"
      },
      "message": "Merge pull request #76 from karanasher/main\n\nRemove trailing newline from CLA.md"
    },
    {
      "commit": "7c88b2ed4383f5dfc57077a593906f27655288cc",
      "tree": "b00bb5ff02edab658b46bcc815f5b3eab1e96b58",
      "parents": [
        "37adea429d9a2ccef0b056eda133a653ecad1f9e"
      ],
      "author": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 14:35:16 2026 -0800"
      },
      "committer": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 14:35:16 2026 -0800"
      },
      "message": "Remove trailing newline from CLA.md\n\nMade-with: Cursor\n"
    },
    {
      "commit": "9a610cf787fe950a3c3a840537651b3dbbfe438d",
      "tree": "1f5023938771b72bc0869110953bb35d71ada300",
      "parents": [
        "64a4b58cf82e679d947dd7078cf8e0a5818aa082",
        "37adea429d9a2ccef0b056eda133a653ecad1f9e"
      ],
      "author": {
        "name": "Karan Asher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 14:34:00 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 14:34:00 2026 -0800"
      },
      "message": "Merge pull request #75 from karanasher/main\n\nAdd trailing newline to CLA.md"
    },
    {
      "commit": "37adea429d9a2ccef0b056eda133a653ecad1f9e",
      "tree": "1f5023938771b72bc0869110953bb35d71ada300",
      "parents": [
        "64a4b58cf82e679d947dd7078cf8e0a5818aa082"
      ],
      "author": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 14:32:45 2026 -0800"
      },
      "committer": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 14:32:45 2026 -0800"
      },
      "message": "Add trailing newline to CLA.md\n\nMade-with: Cursor\n"
    },
    {
      "commit": "64a4b58cf82e679d947dd7078cf8e0a5818aa082",
      "tree": "b00bb5ff02edab658b46bcc815f5b3eab1e96b58",
      "parents": [
        "73ef42244741943c7383dccb6322e839c47c749b",
        "a19e695cee5f6d7d25c7636613bc816fd9e202bd"
      ],
      "author": {
        "name": "Karan Asher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 14:31:33 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 14:31:33 2026 -0800"
      },
      "message": "Merge pull request #74 from karanasher/main\n\nRemove trailing newline from CLA.md"
    },
    {
      "commit": "a19e695cee5f6d7d25c7636613bc816fd9e202bd",
      "tree": "b00bb5ff02edab658b46bcc815f5b3eab1e96b58",
      "parents": [
        "73ef42244741943c7383dccb6322e839c47c749b"
      ],
      "author": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 14:28:56 2026 -0800"
      },
      "committer": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 14:28:56 2026 -0800"
      },
      "message": "Remove trailing newline from CLA.md\n\nMade-with: Cursor\n"
    },
    {
      "commit": "73ef42244741943c7383dccb6322e839c47c749b",
      "tree": "1f5023938771b72bc0869110953bb35d71ada300",
      "parents": [
        "aeccda4f1d53e8bedf7062990ce306b4d694151a",
        "57083871190dbfc1a07f47881d6d236e14c48f6d"
      ],
      "author": {
        "name": "Karan Asher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 14:26:13 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 14:26:13 2026 -0800"
      },
      "message": "Merge pull request #73 from karanasher/main\n\nTest latest CLA workflow changes"
    },
    {
      "commit": "57083871190dbfc1a07f47881d6d236e14c48f6d",
      "tree": "1f5023938771b72bc0869110953bb35d71ada300",
      "parents": [
        "aeccda4f1d53e8bedf7062990ce306b4d694151a"
      ],
      "author": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 14:14:39 2026 -0800"
      },
      "committer": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 14:14:39 2026 -0800"
      },
      "message": "Add trailing newline to CLA.md\n\nMade-with: Cursor\n"
    },
    {
      "commit": "aeccda4f1d53e8bedf7062990ce306b4d694151a",
      "tree": "b00bb5ff02edab658b46bcc815f5b3eab1e96b58",
      "parents": [
        "28bf8c09938c447fdafd6747daad5c2f5713c37a",
        "abf2be0792d00f89d5add152b8eaa6bde24d9e40"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Wed Feb 25 14:01:28 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 14:01:28 2026 -0800"
      },
      "message": "Merge pull request #72 from karanasher/main\n\nAdd CLA Assistant workflow"
    },
    {
      "commit": "abf2be0792d00f89d5add152b8eaa6bde24d9e40",
      "tree": "b00bb5ff02edab658b46bcc815f5b3eab1e96b58",
      "parents": [
        "28bf8c09938c447fdafd6747daad5c2f5713c37a"
      ],
      "author": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 13:55:17 2026 -0800"
      },
      "committer": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Wed Feb 25 13:55:17 2026 -0800"
      },
      "message": "Update CLA workflow to reference OSI repository\n\nPoint path-to-document and CLA hyperlink to the main\nopen-semantic-interchange/OSI repo instead of testing repo.\n\nMade-with: Cursor\n"
    },
    {
      "commit": "28bf8c09938c447fdafd6747daad5c2f5713c37a",
      "tree": "8c833b2391fc0d261596bf3ea9cfcc80982df434",
      "parents": [
        "421ca3db770602b4630a294f404513f2efe01e04",
        "ff6b0a6a438879b85d62d6bedb3e5e0fe13a060f"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Wed Feb 25 13:40:47 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 13:40:47 2026 -0800"
      },
      "message": "Merge pull request #71 from karanasher/main\n\nAdd Contributor License Agreement (CLA)"
    },
    {
      "commit": "ff6b0a6a438879b85d62d6bedb3e5e0fe13a060f",
      "tree": "8c833b2391fc0d261596bf3ea9cfcc80982df434",
      "parents": [
        "5e0cf9d3342b841a61167ad13d79b3843c4855fe"
      ],
      "author": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Tue Feb 24 18:10:22 2026 -0800"
      },
      "committer": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Tue Feb 24 18:10:22 2026 -0800"
      },
      "message": "Add Snowflake Individual Contributor License Agreement\n\nReplace placeholder with full CLA text covering copyright and patent\nlicense grants, representation of rights, and contribution guidelines.\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "5e0cf9d3342b841a61167ad13d79b3843c4855fe",
      "tree": "e276b8f051e846e7648ca6448575ef37c38bbe5e",
      "parents": [
        "7762d5b5755c51624f786bbae4ce315ec48b580b"
      ],
      "author": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Tue Feb 24 18:04:42 2026 -0800"
      },
      "committer": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Tue Feb 24 18:04:42 2026 -0800"
      },
      "message": "Add trailing newline to CLA.md\n\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e\n"
    },
    {
      "commit": "7762d5b5755c51624f786bbae4ce315ec48b580b",
      "tree": "5d487cc786eaf7adcd8ceb191125646335defc5c",
      "parents": [
        "35378abee08a47c68b5414124cfa7e26fe99cb7c"
      ],
      "author": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Tue Feb 24 18:00:53 2026 -0800"
      },
      "committer": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Tue Feb 24 18:00:53 2026 -0800"
      },
      "message": "commit\n"
    },
    {
      "commit": "35378abee08a47c68b5414124cfa7e26fe99cb7c",
      "tree": "9ba26bb40850c738ff997361884495d08471fa40",
      "parents": [
        "c8db1f465ceec99fce4411b63261c071bc4be66c"
      ],
      "author": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Tue Feb 24 17:58:36 2026 -0800"
      },
      "committer": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Tue Feb 24 17:58:36 2026 -0800"
      },
      "message": "testing again\n"
    },
    {
      "commit": "c8db1f465ceec99fce4411b63261c071bc4be66c",
      "tree": "66b82374782db4a10f564d3042b810ea29fddfe4",
      "parents": [
        "22b47050ccea8cff7b185600be1ad6c0f75d830f"
      ],
      "author": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Tue Feb 24 17:54:56 2026 -0800"
      },
      "committer": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Tue Feb 24 17:54:56 2026 -0800"
      },
      "message": "Testing again\n"
    },
    {
      "commit": "22b47050ccea8cff7b185600be1ad6c0f75d830f",
      "tree": "5cc8cce5c6d5ad6e7c92681033507ae49d40e083",
      "parents": [
        "8f7178e59196d71c213e5048abc09a0a1ffbb53e"
      ],
      "author": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Tue Feb 24 17:52:49 2026 -0800"
      },
      "committer": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Tue Feb 24 17:52:49 2026 -0800"
      },
      "message": "Testing a new line\n"
    },
    {
      "commit": "8f7178e59196d71c213e5048abc09a0a1ffbb53e",
      "tree": "0535d477c09b81154d4b1e30844a02b4616e0278",
      "parents": [
        "421ca3db770602b4630a294f404513f2efe01e04"
      ],
      "author": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Tue Feb 24 17:50:37 2026 -0800"
      },
      "committer": {
        "name": "karanasher",
        "email": "karanasher@gmail.com",
        "time": "Tue Feb 24 17:50:37 2026 -0800"
      },
      "message": "Creating CLA.md\n"
    },
    {
      "commit": "421ca3db770602b4630a294f404513f2efe01e04",
      "tree": "57d3922869cf95bdd225cbaec0b977444c303431",
      "parents": [
        "076a4c7d7e68ca9335f5ff7562a6ad2900cdd9a6",
        "ebfb0e9c0990d04e700301c3a7f59b3ab6d836e4"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Mon Feb 16 21:05:11 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 16 21:05:11 2026 -0800"
      },
      "message": "Merge pull request #65 from open-semantic-interchange/khush-bhatia-patch-1\n\nAdd version to spec.yaml"
    },
    {
      "commit": "ebfb0e9c0990d04e700301c3a7f59b3ab6d836e4",
      "tree": "57d3922869cf95bdd225cbaec0b977444c303431",
      "parents": [
        "076a4c7d7e68ca9335f5ff7562a6ad2900cdd9a6"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Mon Feb 16 21:02:29 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 16 21:02:29 2026 -0800"
      },
      "message": "Add version to spec.yaml"
    },
    {
      "commit": "076a4c7d7e68ca9335f5ff7562a6ad2900cdd9a6",
      "tree": "9ffab9ed38d06ebfc7aa071ea6c0b1866081fbac",
      "parents": [
        "45dcb3e0b2067683e535120d8222eeaaf641279d",
        "9ababd93ca58698f6f6601eac7e98b2158bd4cf3"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Mon Feb 16 15:27:38 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Feb 16 15:27:38 2026 -0800"
      },
      "message": "Merge pull request #64 from ralfbecher/json-schema-example-upstream\n\nUpdate TPC-DS example to conform to JSON Schema"
    },
    {
      "commit": "9ababd93ca58698f6f6601eac7e98b2158bd4cf3",
      "tree": "9ffab9ed38d06ebfc7aa071ea6c0b1866081fbac",
      "parents": [
        "45dcb3e0b2067683e535120d8222eeaaf641279d"
      ],
      "author": {
        "name": "Ralf Becher",
        "email": "ralf.becher@web.de",
        "time": "Mon Feb 16 18:30:52 2026 +0100"
      },
      "committer": {
        "name": "Ralf Becher",
        "email": "ralf.becher@web.de",
        "time": "Mon Feb 16 18:35:46 2026 +0100"
      },
      "message": "Update TPC-DS example to conform to JSON Schema\n\nAdd schema reference, required version property, and fix YAML formatting\nfor vendor extension data block.\n"
    },
    {
      "commit": "45dcb3e0b2067683e535120d8222eeaaf641279d",
      "tree": "145e185e8806fc01a76a7f3836f35617a06e77aa",
      "parents": [
        "2ede8f9ea83371e95b30f543686ec48a0161c649",
        "22daadce9f0c6445895f444034345f6991a44ddb"
      ],
      "author": {
        "name": "Khushboo Bhatia",
        "email": "khushboo.kanjani@gmail.com",
        "time": "Fri Feb 13 12:14:11 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 13 12:14:11 2026 -0800"
      },
      "message": "Merge pull request #54 from ralfbecher/json-schema-upstream\n\nAdd JSON Schema and Python validator"
    },
    {
      "commit": "22daadce9f0c6445895f444034345f6991a44ddb",
      "tree": "6129469014264b6d94693eac74cc8ba35edd7d55",
      "parents": [
        "74a7f0aaa773a99f19fc4b138b75c667e8845a1e"
      ],
      "author": {
        "name": "Ralf Becher",
        "email": "ralf.becher@web.de",
        "time": "Fri Feb 13 09:31:07 2026 +0100"
      },
      "committer": {
        "name": "Ralf Becher",
        "email": "ralf.becher@web.de",
        "time": "Fri Feb 13 09:31:07 2026 +0100"
      },
      "message": "Add required version property (1.0) to JSON Schema\n\nAdds a version field with const \"1.0\" to the root schema so YAML files\nmust declare which OSI spec version they conform to. Also updates $id\nto the correct GitHub URL.\n"
    },
    {
      "commit": "2ede8f9ea83371e95b30f543686ec48a0161c649",
      "tree": "101df4725e1e80f99e7d367dd01673ae1335874f",
      "parents": [
        "ea16d2a41cdc443bf0141e46bbdfd31a287f15f4",
        "096a77d5ff5a49b8d59c46df65fa0e87cc403397"
      ],
      "author": {
        "name": "Sue Xia",
        "email": "168785064+sfc-gh-suxia@users.noreply.github.com",
        "time": "Tue Feb 03 13:08:51 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 03 13:08:51 2026 -0800"
      },
      "message": "Merge pull request #56 from open-semantic-interchange/sfc-gh-suxia-patch-1\n\nRename LICENSE-code to LICENSE-docs"
    },
    {
      "commit": "096a77d5ff5a49b8d59c46df65fa0e87cc403397",
      "tree": "101df4725e1e80f99e7d367dd01673ae1335874f",
      "parents": [
        "ea16d2a41cdc443bf0141e46bbdfd31a287f15f4"
      ],
      "author": {
        "name": "Sue Xia",
        "email": "168785064+sfc-gh-suxia@users.noreply.github.com",
        "time": "Tue Feb 03 13:04:44 2026 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 03 13:04:44 2026 -0800"
      },
      "message": "Rename LICENSE-code to LICENSE-docs\n\nUpdating the license file name to accurate reflex that this license (cc by) applies to the documentation, not to the code.  The code is covered by the License file (Apache 2.0)"
    }
  ],
  "next": "74a7f0aaa773a99f19fc4b138b75c667e8845a1e"
}
