)]}'
{
  "log": [
    {
      "commit": "1a9443252331aebbbfbfba983b73e849c5914587",
      "tree": "4298df63387d5a6a92812fe45560a49134b6ffd9",
      "parents": [
        "69492cea372cb8bd7fdf412f0ba1bf53c2951c3e"
      ],
      "author": {
        "name": "Calvin Kirs",
        "email": "kirs@apache.org",
        "time": "Mon Oct 26 21:38:34 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 14:38:34 2026 +0100"
      },
      "message": "Generate field references for all record schemas (#12)\n\nRender each version\u0027s record schemas in the existing field reference,\nwith a separate table per schema. Mark conditionally required fields\nand handle boolean then/else branches without failing generation.\n\nDocument the generation command and the ignored output location.\n\nApache-ai: Yes\nGenerated-by: Codex (GPT-6)\nReviewed-by: Calvin Kirs"
    },
    {
      "commit": "69492cea372cb8bd7fdf412f0ba1bf53c2951c3e",
      "tree": "4a992f6ed4ad88d0c28578f4944b8c84e0f166c7",
      "parents": [
        "8ee2b8a0cc164ce74c3b55520bfe920eeff85332"
      ],
      "author": {
        "name": "Achim Nierbeck",
        "email": "ANierbeck@users.noreply.github.com",
        "time": "Sun Oct 25 14:11:35 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 14:11:35 2026 +0100"
      },
      "message": "State that one IRI denotes one record and references cross record types (#11)\n\nSettled on dev@ (\"Resolving references on read, and what one IRI can\nstand for\"): an IRI denotes exactly one record, of one type, for its\nwhole life. The new section \"One IRI, one record\" says so, says the id\nnames the record and not the model or dataset it describes, and\nstates that references resolve across record types, with the\nreferenced record\u0027s current state reported when the referencing record\nis read (one hop, status only, nothing stored).\n\nA custodyChain agent may now be the id of any Sourcelume record,\nincluding a TrainingProvenanceRecord. The schemas are unchanged: an\nagent is an IRI either way, and data that validated still does.\n\nApache-ai: Yes\nGenerated-by: pi (claude-sonnet-5-5)\nReviewed-by: anierbeck"
    },
    {
      "commit": "8ee2b8a0cc164ce74c3b55520bfe920eeff85332",
      "tree": "5235ecae025ae6645db82914b4865e600b3fd787",
      "parents": [
        "b5ab8e7b36ed84c43c19e7e1b4ae816bee53427c"
      ],
      "author": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Sat Oct 24 12:06:57 2026 -0230"
      },
      "committer": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Sat Oct 24 12:06:57 2026 -0230"
      },
      "message": "Enable github issues support\n"
    },
    {
      "commit": "b5ab8e7b36ed84c43c19e7e1b4ae816bee53427c",
      "tree": "03bf1779a4c772076b1101bee18091044a4359dd",
      "parents": [
        "ce1417d1886afc88407401e613f4f9498c286c8d"
      ],
      "author": {
        "name": "Achim Nierbeck",
        "email": "ANierbeck@users.noreply.github.com",
        "time": "Sun Oct 18 20:44:54 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 16:14:54 2026 -0230"
      },
      "message": "[DISCUSS] Add TrainingProvenanceRecord: which datasets a model was trained on (#10)\n\n* Add the DFM Mímir v1 dataset records as examples\n\nTwelve ProvenanceRecords for datasets that DFM Mímir v1 is trained on,\nauthored from Table 10 (Appendix A) of its technical report, arXiv\n2608.13517. Together they are about 43 percent of the sampled tokens and\ncover every form the report uses for the Danish data: curated,\nreformatted, translated, synthetic and agreement-supplied.\n\nThey come from the stress-test work on the stress-tests branch, which is\nnot merged. The only change is the @context, which is now the canonical\ncontext IRI that the schema requires. The next commit adds a record that\nrefers to them.\n\nApache-ai: Yes\nGenerated-by: pi (claude-sonnet-5-5)\nReviewed-by: anierbeck\n\n* Add TrainingProvenanceRecord: which datasets a model was trained on\n\nA ProvenanceRecord describes a dataset and says nothing about the models\ntrained on it. That is a claim by the model\u0027s producer, so it gets its\nown record type instead of a back-reference on the dataset record.\n\nA TrainingProvenanceRecord describes the model with the terms a dataset\nrecord already uses (identifier, name, version, creator) and lists the\ndatasets in trainingData. Each entry refers to a dataset by IRI, normally\nthe id of a ProvenanceRecord, and may carry a phase, a token count and a\nshare. disclosure states whether the producer lists all, some or none of\nits training data; trainingData may be omitted only for undisclosed.\n\nWhether a referenced record exists, and in which state, is looked up when\nthe model record is read. It is not stored in either record, and there is\nno approved flag, in line with the existing non-goals.\n\n- context: the new type and the terms trainingData, dataset, phase,\n  tokens, share, disclosure and note. share is xsd:double because\n  rdflib creates a decimal literal with a float value for a JSON number,\n  which pyshacl then rejects as xsd:decimal.\n- schema: sourcelume-training.schema.json, separate from the\n  ProvenanceRecord schema, whose type is fixed. ProvenanceRecord and its\n  schema are unchanged.\n- shapes: TrainingProvenanceRecordShape and TrainingDataEntryShape in the\n  existing shapes file. The shapes were checked with pyshacl and with\n  Jena SHACL, which the registry uses: 16 valid documents conform and 9\n  invalid variants are rejected by both.\n- tools/validate.py picks the schema by the record\u0027s type and fails on an\n  unknown type. render-docs.py still renders only the ProvenanceRecord\n  schema.\n- tests: 14 tests that check the schema and the shapes against each other.\n- spec, changelog, README and SPDX crosswalk (trainedOn / testedOn).\n\nThe spec\u0027s non-goal on usage metadata is replaced: training usage is now\ncovered, audit results and weight-level lineage are still out of scope.\n\nApache-ai: Yes\nGenerated-by: pi (claude-sonnet-5-5)\nReviewed-by: anierbeck\n\n* Add TrainingProvenanceRecord examples: DFM Mímir v1 and an undisclosed model\n\ndfm-mimir-v1-training.jsonld describes DFM Mímir v1 and refers to the\ntwelve dataset records from the first commit, with the token counts and\nshares from Table 10 of the technical report. Its disclosure is partial:\nthe report lists 161 datasets and only these 12 have a record, together\nabout 43 percent of the sampled tokens. The record says so in its note.\n\nacme-undisclosed-model.jsonld shows the undisclosed case, which has no\ntrainingData. It uses example.org and a made-up producer; no real model\nis stated to be undisclosed.\n\nBoth are illustrative: they are authored from the public report, not\nattested by the model\u0027s producer.\n\nApache-ai: Yes\nGenerated-by: pi (claude-sonnet-5-5)\nReviewed-by: anierbeck"
    },
    {
      "commit": "ce1417d1886afc88407401e613f4f9498c286c8d",
      "tree": "50ea068011a39f4fcfe03ea2e72bb644012e7a10",
      "parents": [
        "c52b6e59b31a535066bd3a37890090e3aff7359e"
      ],
      "author": {
        "name": "Achim Nierbeck",
        "email": "ANierbeck@users.noreply.github.com",
        "time": "Sun Oct 11 18:54:51 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 11 14:24:51 2026 -0230"
      },
      "message": "Add contentCreatedEnd and require @context (follow-up to #8) (#9)\n\n* Add optional contentCreatedEnd for content created over a period\n\ncontentCreated could only hold one point in time and told authors to\nuse the start of a period, which dropped the end. contentCreatedEnd is\nan optional companion: contentCreated stays the start of the period, so\nexisting records remain valid.\n\nThe SHACL shapes reject an end that lies before the start. The same\nshapes were checked with pyshacl and with Jena SHACL, which the\nregistry uses.\n\nApache-ai: Yes\nGenerated-by: pi (claude-haiku-5-5)\nReviewed-by: anierbeck\n\n* Require @context and assert the record type survives expansion\n\nReview findings on the canonical context change:\n\n- @context is now a required property. The const only applies when the\n  key is present, and tools/validate.py injects the local context, so a\n  record without @context used to pass the command line check although\n  other JSON-LD processors cannot expand it.\n- The valid-record test asserts that the expanded graph contains\n  rdf:type sl:ProvenanceRecord. Without a focus node the SHACL shapes\n  pass vacuously; the assertion fails if the namespace and the shapes\n  drift apart.\n- The context section no longer claims the file is already served at the\n  canonical address; the release process publishes it.\n\nApache-ai: Yes\nGenerated-by: pi (claude-sonnet-5-5)\nReviewed-by: anierbeck"
    },
    {
      "commit": "c52b6e59b31a535066bd3a37890090e3aff7359e",
      "tree": "761a066ffa11aa3e88be86199d0f042498418470",
      "parents": [
        "691d26c3f6ce51f28af381d3b9f1b6ed562d64f1"
      ],
      "author": {
        "name": "Achim Nierbeck",
        "email": "ANierbeck@users.noreply.github.com",
        "time": "Sun Oct 11 18:32:02 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 11 14:02:02 2026 -0230"
      },
      "message": "Pin the canonical context IRI and move to the stable namespace (#8)\n\nRecords may only reference the canonical context IRI\nhttps://sourcelume.apache.org/context/0.0.1/sourcelume.jsonld. The JSON\nSchema rejects inline @context objects and other IRIs, so the meaning of\na record is fixed by the published context.\n\nThe term namespace moves from /ns/0.0.1# to the stable /ns#; the context\nURL stays versioned. tools/validate.py resolves the canonical context\nfrom the bundled copy instead of fetching it.\n\nApache-ai: Yes\nGenerated-by: pi (claude-haiku-5-5)\nReviewed-by: anierbeck"
    },
    {
      "commit": "691d26c3f6ce51f28af381d3b9f1b6ed562d64f1",
      "tree": "9698036e261d7e4516390c4d1c1176bea759e5ed",
      "parents": [
        "b9ad844c2a04af6cdc3eb13fcae6c91cd9770cb0"
      ],
      "author": {
        "name": "NaveenKumar Namachivayam ⚡",
        "email": "catch.nkn@gmail.com",
        "time": "Sun Sep 13 06:59:19 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 13 08:29:19 2026 -0230"
      },
      "message": "CI: add Python validation job (uv, validate.py, unit tests) (#7)\n\nThe existing workflow only ran `mvn -B verify`, so the repo\u0027s own gate —\n`tools/validate.py` plus the validator\u0027s unit tests — was never enforced\non PRs. Adds a python-validate job that installs uv via pipx (already on\nthe runner image, avoids a new third-party action on the ASF allowlist),\nsyncs dev dependencies, validates examples, and runs the unittest suite.\n\nNote: validate.py currently exits 0 vacuously since examples/ is not yet\non main; the job starts validating records automatically once examples\nland. The unit tests provide real signal in the meantime.\n\nApache-ai: Yes\nGenerated-by: Devin (SWE-2 High)\nReviewed-by: nkn"
    },
    {
      "commit": "b9ad844c2a04af6cdc3eb13fcae6c91cd9770cb0",
      "tree": "4c41cec79951e8ab670b0cf55b3c1dbac1aab0db",
      "parents": [
        "7bd01b92d65bc36d5a9aab18afb98d8f6e73f951"
      ],
      "author": {
        "name": "NaveenKumar Namachivayam ⚡",
        "email": "catch.nkn@gmail.com",
        "time": "Sun Sep 13 06:54:20 2026 -0400"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Sep 13 08:24:20 2026 -0230"
      },
      "message": "SETUP.md: document mvn install for downstream Registry builds (#6)\n\nThe setup guide documents `mvn clean verify` but not `mvn install`,\nso a contributor building sourcelume-registry locally hits an\nunresolvable org.apache.sourcelume:sourcelume-spec 0.0.1-SNAPSHOT\ndependency. Clarify that verify builds the JAR under target/ while\ninstall publishes it to ~/.m2 where the Registry resolves it.\n\nApache-ai: Yes\nGenerated-by: Devin (SWE-2 High)\nReviewed-by: nkn"
    },
    {
      "commit": "7bd01b92d65bc36d5a9aab18afb98d8f6e73f951",
      "tree": "92bca7a84709ebb0fbf05643f34f672c7f688587",
      "parents": [
        "db111bfde5d610113cc2c32e8807a7458648eb07"
      ],
      "author": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Sat Sep 12 19:59:32 2026 -0230"
      },
      "committer": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Sat Sep 12 19:59:32 2026 -0230"
      },
      "message": "Update custodyChain usage information\n"
    },
    {
      "commit": "db111bfde5d610113cc2c32e8807a7458648eb07",
      "tree": "cd8ac22732a2125d599fe3af244446fff6e78c8d",
      "parents": [
        "da90d5974e20d0209d34338ef74542cf6eede887"
      ],
      "author": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Sat Sep 12 16:41:06 2026 -0230"
      },
      "committer": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Sat Sep 12 16:41:06 2026 -0230"
      },
      "message": "Update changelog and test_validate\n"
    },
    {
      "commit": "da90d5974e20d0209d34338ef74542cf6eede887",
      "tree": "21a5d7a46ac66d2680fda055af2cae4c3906ae50",
      "parents": [
        "703ce57a467fb9c69793572c8f99d0fd05d204c4"
      ],
      "author": {
        "name": "Achim Nierbeck",
        "email": "ANierbeck@users.noreply.github.com",
        "time": "Sat Sep 12 20:42:33 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 12 16:12:33 2026 -0230"
      },
      "message": "Add 0.0.1 ProvenanceRecord spec (common, model-agnostic parts) (#5)\n\n* Add 0.0.1 ProvenanceRecord spec: schema, context, SHACL, prose, validator, crosswalks\n\nFills in the 0.0.1 skeleton on main with the concrete ProvenanceRecord shape\ndeveloped and stress-tested across four open-model corpora (DFM Mimir, Pleias\nCommon Corpus, BigScience BLOOM/ROOTS, AI2 OLMo/Dolma). The model-specific\nexample records and stress-test notes stay on dedicated branches for dev-list\ndiscussion; only the common, model-agnostic solution parts land here.\n\nWhat lands:\n- schema/0.0.1/sourcelume.schema.json: the ProvenanceRecord JSON Schema. Required\n  fields: id, type, identifier, name, license, creator[], created, added,\n  contentCreated, origin, custodyChain[]. Optional: version, licenseScope,\n  licenseNote, licenseCategory, licenseHistory.\n- schema/0.0.1/sourcelume.shacl.ttl: matching SHACL shapes.\n- context/0.0.1/sourcelume.jsonld: JSON-LD context. Reuses dct:/schema: terms\n  where equivalents exist; keeps the sl: namespace minimal. Uses main\u0027s\n  sl: prefix and version-inclusive namespace IRI (https://sourcelume.apache.org/ns/0.0.1#).\n- spec/0.0.1/index.md: normative prose. Field table + License IRI conventions\n  subsection (CC Public Domain Mark for copyright-expiration PD; sl:agreement-supplied\n  for agreement-gated data). No stress-test or example references.\n- tools/validate.py: Python validator (JSON Schema + SHACL). Exits 0 with\n  \"nothing to validate\" when examples/ is empty, so it is useful on main\n  before any example records land.\n- mappings/: draft crosswalks to Croissant, the SPDX AI Profile, and OTDI.\n- pyproject.toml, uv.lock: Python tooling for the validator.\n\nThe four additive license fields (licenseScope, licenseNote, licenseCategory,\nlicenseHistory) are optional and non-breaking; records that omit them validate.\nlicenseScope qualifies jurisdiction-scoped licenses (especially public-domain\nclaims). licenseNote flags when a license IRI is materially misleading (e.g.\nreflects a processing artifact). licenseCategory classifies the licensing model\n(open-source, open-data, public-domain, agreement-supplied, use-restricted,\nrisk-based, other) so it is checkable at a glance. licenseHistory records prior\nlicenses when a dataset\u0027s own license changed over time.\n\nDescriptive text in schema and spec is generic; no model-specific names appear\nin the common files.\n\nApache-ai: Yes\nGenerated-by: pi (anthropic/claude-opus-4-1)\nReviewed-by: anierbeck\n\n* Restore ASF license header in spec/0.0.1/index.md\n\nThe 0.0.1 spec prose rewrite dropped the ASF license header comment that\nRAT (apache-rat-plugin) enforces on non-excluded files. spec/0.0.1/index.md\nis not in pom.xml\u0027s RAT exclude list (unlike context/**/*.jsonld,\nschema/**/*.{json,ttl}, mappings/**/*.md, uv.lock), so it must carry the\nstandard ASF header. CI failed on PR #5 with \"Files with unapproved licenses:\nspec/0.0.1/index.md\".\n\nNo content change beyond re-prepending the header comment block.\n\nApache-ai: Yes\nGenerated-by: pi (anthropic/claude-opus-4-1)\nReviewed-by: anierbeck"
    },
    {
      "commit": "703ce57a467fb9c69793572c8f99d0fd05d204c4",
      "tree": "3852096070368f63a339c29dbf4a611340d7bae4",
      "parents": [
        "ef140bf7036949bd7d1b0a05fab6b67696eff424",
        "ddd56a1a45d2ec80f64ac5214681c4d8fe6185c8"
      ],
      "author": {
        "name": "Jamie Goodyear",
        "email": "jgoodyear@apache.org",
        "time": "Thu Sep 10 12:11:29 2026 -0230"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 12:11:29 2026 -0230"
      },
      "message": "Merge pull request #4 from CalvinKirs/add-asf-yaml\n\nAdd .asf.yaml with baseline repository configuration"
    },
    {
      "commit": "ddd56a1a45d2ec80f64ac5214681c4d8fe6185c8",
      "tree": "3852096070368f63a339c29dbf4a611340d7bae4",
      "parents": [
        "ef140bf7036949bd7d1b0a05fab6b67696eff424"
      ],
      "author": {
        "name": "Calvin Kirs",
        "email": "kirs@apache.org",
        "time": "Thu Sep 10 21:56:10 2026 +0800"
      },
      "committer": {
        "name": "Calvin Kirs",
        "email": "kirs@apache.org",
        "time": "Thu Sep 10 21:56:10 2026 +0800"
      },
      "message": "Add .asf.yaml with baseline repository configuration\n"
    },
    {
      "commit": "ef140bf7036949bd7d1b0a05fab6b67696eff424",
      "tree": "c87fabe99533abc0f22fc9e4dea05e76f2c892e9",
      "parents": [
        "e463c13963a9a8aae9ffcf22c43bdedeca03a874",
        "10366891bd306294b58cf30c7e9382eea913a00f"
      ],
      "author": {
        "name": "Jamie Goodyear",
        "email": "jgoodyear@apache.org",
        "time": "Thu Sep 10 11:11:01 2026 -0230"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 11:11:01 2026 -0230"
      },
      "message": "Merge pull request #3 from CalvinKirs/rat-check\n\nBind RAT license check into the default build"
    },
    {
      "commit": "10366891bd306294b58cf30c7e9382eea913a00f",
      "tree": "c87fabe99533abc0f22fc9e4dea05e76f2c892e9",
      "parents": [
        "e463c13963a9a8aae9ffcf22c43bdedeca03a874"
      ],
      "author": {
        "name": "Calvin Kirs",
        "email": "kirs@apache.org",
        "time": "Thu Sep 10 21:18:27 2026 +0800"
      },
      "committer": {
        "name": "Calvin Kirs",
        "email": "kirs@apache.org",
        "time": "Thu Sep 10 21:18:27 2026 +0800"
      },
      "message": "Bind RAT license check into the default build\n\nThe Apache parent pom only runs apache-rat:check in the apache-release\nprofile, so plain mvn verify never enforced license headers. Bind an\nexecution to the validate phase so verify (and CI) fails on missing\nheaders. Fix the two existing violations: exclude the generated uv.lock,\nand give AGENTS.md a compact SPDX header comment (the markdown form\nused by Apache Magpie).\n"
    },
    {
      "commit": "e463c13963a9a8aae9ffcf22c43bdedeca03a874",
      "tree": "8720ca67410b803c1ff541acc597db9348d3d844",
      "parents": [
        "d52d3a2943d5956afc94e0ea74cf841eb28ebb7a",
        "98e995495c573508c1fb1bfd1a1686108cf4bb7e"
      ],
      "author": {
        "name": "Jamie Goodyear",
        "email": "jgoodyear@apache.org",
        "time": "Thu Sep 10 10:42:51 2026 -0230"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 10 10:42:51 2026 -0230"
      },
      "message": "Merge pull request #2 from CalvinKirs/checkstyle\n\nAdd Spotless and Checkstyle to the Maven build, with CI"
    },
    {
      "commit": "98e995495c573508c1fb1bfd1a1686108cf4bb7e",
      "tree": "8720ca67410b803c1ff541acc597db9348d3d844",
      "parents": [
        "c5a666e9d6099c6738136491a262e108120eb133"
      ],
      "author": {
        "name": "Calvin Kirs",
        "email": "kirs@apache.org",
        "time": "Thu Sep 10 21:04:54 2026 +0800"
      },
      "committer": {
        "name": "Calvin Kirs",
        "email": "kirs@apache.org",
        "time": "Thu Sep 10 21:04:54 2026 +0800"
      },
      "message": "Add CI workflow running mvn verify\n\nRuns on pushes to main and on pull requests. mvn -B verify covers the\nSpotless and Checkstyle checks, RAT license-header enforcement, and\nresource packaging.\n"
    },
    {
      "commit": "c5a666e9d6099c6738136491a262e108120eb133",
      "tree": "5c997b15cb475bff602a414210453e40b8e22134",
      "parents": [
        "d52d3a2943d5956afc94e0ea74cf841eb28ebb7a"
      ],
      "author": {
        "name": "Calvin Kirs",
        "email": "kirs@apache.org",
        "time": "Thu Sep 10 21:01:28 2026 +0800"
      },
      "committer": {
        "name": "Calvin Kirs",
        "email": "kirs@apache.org",
        "time": "Thu Sep 10 21:03:07 2026 +0800"
      },
      "message": "Add Spotless and Checkstyle to the Maven build\n\nSpotless owns formatting: palantir-java-format (plus import order,\nunused-import removal, and ASF license headers) for Java when it lands,\nand sortPom for pom.xml — which reformats pom.xml in this commit.\nCheckstyle stays deliberately minimal: dev/checkstyle.xml only bans\nJUnit 3/4 imports so tests use JUnit 5 (org.junit.jupiter/platform\nare allowed). Both checks run at the validate phase, so mvn -B verify\nfails on drift; mvn spotless:apply fixes formatting.\n"
    },
    {
      "commit": "d52d3a2943d5956afc94e0ea74cf841eb28ebb7a",
      "tree": "8338a4a11dff7ff21f0290c14925a6cdbae1ebe4",
      "parents": [
        "214ff0e75d83f40abf7f5380705e39f6b2779e29",
        "2f6cc16536af9b6d0f0fa09b8bec12e01fb4bc7d"
      ],
      "author": {
        "name": "Jamie Goodyear",
        "email": "jgoodyear@apache.org",
        "time": "Mon Sep 07 16:53:56 2026 -0230"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 07 16:53:56 2026 -0230"
      },
      "message": "Merge pull request #1 from apache/add-agents-md\n\nAdd AGENTS.md with cross-harness conventions and AI commit-message rule"
    },
    {
      "commit": "2f6cc16536af9b6d0f0fa09b8bec12e01fb4bc7d",
      "tree": "8338a4a11dff7ff21f0290c14925a6cdbae1ebe4",
      "parents": [
        "214ff0e75d83f40abf7f5380705e39f6b2779e29"
      ],
      "author": {
        "name": "anierbeck",
        "email": "achim.nierbeck@codecentric.de",
        "time": "Mon Sep 07 20:33:46 2026 +0200"
      },
      "committer": {
        "name": "anierbeck",
        "email": "achim.nierbeck@codecentric.de",
        "time": "Mon Sep 07 20:38:23 2026 +0200"
      },
      "message": "Add AGENTS.md with cross-harness conventions and AI commit-message rule\n\nCentral place for any coding agent (Claude Code, Cursor, Copilot,\nJunie, Codex, pi, etc.) to find this repo\u0027s conventions: Python/uv for\nvalidation vs Java/Maven for packaging, the versioning and immutability\nrules, the vocabulary-reuse policy, and the PR/dual-hosting notes.\n\nMost important section is the commit-message + AI attribution rule,\nso every harness produces commits that match the existing in-repo\npractice (Apache-ai: Yes / Generated-by: \u003ctool\u003e (\u003cmodel\u003e) / Reviewed-by:\n\u003chuman\u003e) and the ASF rai.apache.org guidance, and knows when to use\nGenerated-by vs Assisted-by.\n\nApache-ai: Yes\nGenerated-by: Claude Code (Sonnet 5)\nReviewed-by: anierbeck\n"
    },
    {
      "commit": "214ff0e75d83f40abf7f5380705e39f6b2779e29",
      "tree": "44e65a81fbf1eeda5230a0744be49114753a559e",
      "parents": [
        "e40e5c741c515595136fa154a5dd37db9508dfc8"
      ],
      "author": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Mon Sep 07 11:38:09 2026 -0230"
      },
      "committer": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Mon Sep 07 11:38:09 2026 -0230"
      },
      "message": "Update change log\n"
    },
    {
      "commit": "e40e5c741c515595136fa154a5dd37db9508dfc8",
      "tree": "fa42c31d51936a934492a9c54687e10188645cea",
      "parents": [
        "8010e95fce912d672035e9b68088fcf8eea141a7"
      ],
      "author": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Mon Sep 07 11:37:28 2026 -0230"
      },
      "committer": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Mon Sep 07 11:37:28 2026 -0230"
      },
      "message": "Add maven resource plugin\n"
    },
    {
      "commit": "8010e95fce912d672035e9b68088fcf8eea141a7",
      "tree": "61928e48152bd0c83e4d970e88eadf210f71a689",
      "parents": [
        "24a31fd13bb7bbae0215ff12eb5fd4560ee5ffb3"
      ],
      "author": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Sat Sep 05 16:06:40 2026 -0230"
      },
      "committer": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Sat Sep 05 16:06:40 2026 -0230"
      },
      "message": "Update ChangeLog\n"
    },
    {
      "commit": "24a31fd13bb7bbae0215ff12eb5fd4560ee5ffb3",
      "tree": "190d2ba94e0e3bdeafc1b18aa72e03963f15bc86",
      "parents": [
        "2b71e517400d6e9cf157b2055a5e70664db8afa7"
      ],
      "author": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Sat Sep 05 16:05:54 2026 -0230"
      },
      "committer": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Sat Sep 05 16:05:54 2026 -0230"
      },
      "message": "Initial content for context, schema, and specification. Initial tooling for validation.\n\nApache-ai: Yes\nGenerated-by: PyCharm AI Assistant (Claude 4.5 Sonnet)\nReviewed-by: jgoodyear\n"
    },
    {
      "commit": "2b71e517400d6e9cf157b2055a5e70664db8afa7",
      "tree": "d131e9f5be900ca7ed9a3b6c26b694df4dad3532",
      "parents": [
        "e64f3a1cff3a2f9452bca6a970b70822fa452e2b"
      ],
      "author": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Sat Sep 05 12:54:07 2026 -0230"
      },
      "committer": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Sat Sep 05 12:54:07 2026 -0230"
      },
      "message": "Adding development setup for Python, versioning information, initial changelog, update to gitignore\n"
    },
    {
      "commit": "e64f3a1cff3a2f9452bca6a970b70822fa452e2b",
      "tree": "6199d210540691fcc11f3f623110c6c056d5dcd5",
      "parents": [
        "8b5474e877522fa727665a8da68f8adb4369a5c1"
      ],
      "author": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Fri Aug 28 08:59:00 2026 -0230"
      },
      "committer": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Fri Aug 28 08:59:00 2026 -0230"
      },
      "message": "Add Notice file, and a pom for making Spec jar\n"
    },
    {
      "commit": "8b5474e877522fa727665a8da68f8adb4369a5c1",
      "tree": "2e8f1647ce1cd6ca61b3a31dbfea311400db2c59",
      "parents": [],
      "author": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Sun Aug 23 15:37:27 2026 -0230"
      },
      "committer": {
        "name": "jgoodyear",
        "email": "jgoodyear@apache.org",
        "time": "Sun Aug 23 15:37:27 2026 -0230"
      },
      "message": "Initial Apache Sourcelume spec repo\n"
    }
  ]
}
