)]}'
{
  "log": [
    {
      "commit": "78de411fa91fb3579c87c645a5366b4117198325",
      "tree": "030a043d5ebfc59e57344a5fab295d1498c4df6b",
      "parents": [
        "0ea9228f67547b7d1dac13155c73dbcb287aaa24"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Mon Jun 22 09:03:41 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 09:03:41 2026 -0600"
      },
      "message": "Reserve LuceneDev1009-LuceneDev1015 and LuceneDev7000-LuceneDev7008 for #1359 (#43)\n\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "0ea9228f67547b7d1dac13155c73dbcb287aaa24",
      "tree": "de75ac4128b60796d9c3b5a2bb2f182ac49cdc0c",
      "parents": [
        "10303697fafdd737e02cddad0157c7eb33be1559"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Mon Jun 22 08:56:37 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 08:56:37 2026 -0600"
      },
      "message": "Revise diagnostic ID reservation process in README (#35)\n\nUpdated instructions for reserving diagnostic IDs due to ASF Infra branch protection of `main`."
    },
    {
      "commit": "10303697fafdd737e02cddad0157c7eb33be1559",
      "tree": "6f2a639fbd25e0dc667cb85d24d1bd0d034ef9b8",
      "parents": [
        "9c50e84f2d84e1d47978c27cead20b11d3d3328c"
      ],
      "author": {
        "name": "Mend Renovate",
        "email": "bot@renovateapp.com",
        "time": "Fri May 29 17:48:16 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 10:48:16 2026 -0600"
      },
      "message": "chore: Update GitHub Action actions/setup-dotnet to 9a946fd (#39)"
    },
    {
      "commit": "9c50e84f2d84e1d47978c27cead20b11d3d3328c",
      "tree": "606567479f6b75e03eecfe24834cac171368230c",
      "parents": [
        "b93abeedc2cf06c683d218360c5327fa6608593a"
      ],
      "author": {
        "name": "Mend Renovate",
        "email": "bot@renovateapp.com",
        "time": "Fri May 29 17:41:50 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 10:41:50 2026 -0600"
      },
      "message": "chore: Update dependency Microsoft.CodeAnalysis.Analyzer.Testing to 1.1.4 (#37)\n\n* chore: Update dependency Microsoft.CodeAnalysis.Analyzer.Testing to 1.1.4\n\n* chore: Update dependency Microsoft.CodeAnalysis.CodeFix.Testing to 1.1.4\n\nBrings CodeFix.Testing in lockstep with Analyzer.Testing 1.1.4 so the\nbuild no longer fails. Incorporates the change from #38.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Paul Irwin \u003cpaulirwin@gmail.com\u003e\nCo-authored-by: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "b93abeedc2cf06c683d218360c5327fa6608593a",
      "tree": "1516136f6e32f3595ec0a4483aac5c5cd2d9b09b",
      "parents": [
        "bd873a5369b3bcb26c336138f3276e5934680f18"
      ],
      "author": {
        "name": "Mend Renovate",
        "email": "bot@renovateapp.com",
        "time": "Fri May 29 17:13:16 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 10:13:16 2026 -0600"
      },
      "message": "chore: Update Test Dependencies (#36)"
    },
    {
      "commit": "bd873a5369b3bcb26c336138f3276e5934680f18",
      "tree": "630e67cbc672a806040e7d0ef2aa1f057f96d3b2",
      "parents": [
        "25632f72398d3edbea3e880e56aea953476a8174"
      ],
      "author": {
        "name": "The Apache Software Foundation",
        "email": "root-asf-gitbox-commits@apache.org",
        "time": "Mon May 18 08:04:44 2026 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 07:04:44 2026 -0600"
      },
      "message": "Set up default protection ruleset for default and release branches (#34)"
    },
    {
      "commit": "25632f72398d3edbea3e880e56aea953476a8174",
      "tree": "20cbdf2146c5d04dff98144ec318b2a68760161d",
      "parents": [
        "d8b63ac30f33504d2cc8cf70dbf23b470a7e54f7"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Mon May 04 12:57:01 2026 -0600"
      },
      "committer": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Mon May 04 12:57:01 2026 -0600"
      },
      "message": "Reserve LuceneDev4003 for #1296\n"
    },
    {
      "commit": "d8b63ac30f33504d2cc8cf70dbf23b470a7e54f7",
      "tree": "52e9044a6b4689e1e05b4e5e943a6672f400c0eb",
      "parents": [
        "6c0d8e7c47a7163a33b51b397cde35f4b173844b"
      ],
      "author": {
        "name": "Mend Renovate",
        "email": "bot@renovateapp.com",
        "time": "Mon May 04 03:08:33 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 03 20:08:33 2026 -0600"
      },
      "message": "chore: Update dependency NUnit to 4.6.0 (#33)"
    },
    {
      "commit": "6c0d8e7c47a7163a33b51b397cde35f4b173844b",
      "tree": "8ecace52cf19def399e4c80f6d5acd2c4331725e",
      "parents": [
        "60a19450722fa8960880ebb0ec940ae0b3dca659"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Sun May 03 20:05:17 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 03 20:05:17 2026 -0600"
      },
      "message": "Skip char overloads in LuceneDev6001/6002 (#32)\n\n* Skip char overloads in LuceneDev6001/6002\n\nThe analyzer\u0027s literal-only guard only suppressed 6001/6002 when the\nfirst argument was a `\u0027x\u0027` char literal or `\"x\"` single-character\nstring literal. Calls like `text.IndexOf(c)` where `c` is a char\nvariable bound to `string.IndexOf(char)` — which has no\nStringComparison sibling — falsely tripped 6001 (#1211).\n\nFilter both the resolved-symbol and ambiguous-candidate paths to\noverloads whose first parameter is `System.String`, so char overloads\nare excluded from the rule entirely instead of relying on syntactic\nliteral recognition.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Address Copilot review: handle non-reduced extension calls\n\nThe previous filter checked Parameters[0], which is correct for\ninstance methods and reduced extension calls (sb.IndexOf(\"x\")) but\nnot for static-form extension calls\n(StringBuilderExtensions.IndexOf(sb, \"x\")) where Parameters[0] is the\nreceiver. The two call shapes resolve to the same underlying API but\nmy filter would silently skip the static form.\n\nUse the same value-parameter-index pattern as LuceneDev6005:\nindex 1 when IsExtensionMethod \u0026\u0026 ReducedFrom \u003d\u003d null, else 0.\n\nAdds tests for both reduced-form (already worked) and static-form\n(was the regression Copilot flagged) calls into a J2N-style\nStringBuilderExtensions stub.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Address Copilot review: pin Net80 refs and fix stale comment\n\n- Skips_StartsWith_CharVariable depends on string.StartsWith(char),\n  which is .NET Core 2.0+. Pin ReferenceAssemblies.Net.Net80 to make\n  the contract explicit and match the precedent set by the 2xxx tests.\n- The \"string first parameter\" comment was stale after the helper\n  was renamed to ValueParameterIsString (which skips the receiver\n  for non-reduced extension calls); reword to \"string value parameter\".\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "60a19450722fa8960880ebb0ec940ae0b3dca659",
      "tree": "18f2ee7402b6508bcf80d52033dd59032b99b851",
      "parents": [
        "36841b1d3eb8691d89a324de0a0bd10bcd25fc86"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Sat May 02 14:29:27 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 02 14:29:27 2026 -0600"
      },
      "message": "RAT cleanup and prepare next alpha release (#31)"
    },
    {
      "commit": "36841b1d3eb8691d89a324de0a0bd10bcd25fc86",
      "tree": "6f15b6d0b79a8c6210be445af87a5b34df657353",
      "parents": [
        "66f539cf5096a878629ff0c2d3d5f8cf8001b021"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Sat May 02 14:14:24 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 02 14:14:24 2026 -0600"
      },
      "message": "Implement LuceneDev4000-4002 NoInlining Analyzers \u0026 CodeFix (#1097) (#30)\n\n* Implement LuceneDev4000-4002 NoInlining Analyzers \u0026 CodeFix (#1097)\n\nAdds three Roslyn analyzers under the new Performance category covering\n[MethodImpl(MethodImplOptions.NoInlining)] usage:\n\n- LuceneDev4000: Reports when NoInlining is applied to an interface or\n  abstract method. The MethodImpl attribute is not inherited, so the\n  attribute has no effect on the implementation.\n- LuceneDev4001: Reports when NoInlining is applied to an empty-bodied\n  method. An empty body cannot appear above any frame in a stack trace,\n  so preventing inlining provides no benefit.\n- LuceneDev4002: Reports when a method referenced by the 2-argument\n  StackTraceHelper.DoesStackTraceContainMethod(className, methodName)\n  overload is missing NoInlining. Without it, the JIT may inline the\n  method out of the stack trace, silently breaking the check.\n\nA code fix is provided for 4000 and 4001 (remove the attribute). 4002\nhas no automated fix because the diagnostic is reported on a method\ndeclaration triggered by an invocation in another scope, which Roslyn\ntreats as a non-local diagnostic and refuses to fix automatically.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Split LuceneDev4002 into its own analyzer class\n\nLuceneDev4002 (StackTraceHelper-driven NoInlining requirement) is a\ndistinct rule from 4000/4001 (NoInlining-as-no-op detection): it has a\ndifferent trigger (invocation vs. method declaration) and no code fix.\nExtract it into its own analyzer + test class. Shared logic for\nrecognising the [MethodImpl(MethodImplOptions.NoInlining)] attribute,\nempty bodies, and interface/abstract methods moves into\nNoInliningAttributeHelper.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Add Sample project entries for LuceneDev4000-4002\n\nDemonstrates each NoInlining diagnostic firing in the sample project:\n4000 on an interface and an abstract method, 4001 on an empty-bodied\nmethod, and 4002 on a method referenced by the 2-arg\nStackTraceHelper.DoesStackTraceContainMethod overload (with a local\nstub mirroring the real type so the sample compiles standalone).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Preserve leading comments and trim attribute indent in 4000/4001 fix\n\nThe previous remove-attribute logic used SyntaxRemoveOptions.KeepNoTrivia\nwhich discarded any comments or blank lines that preceded the attribute,\nor KeepLeadingTrivia which left a stray indent on the next line. Replace\nwith an approach that operates on the parent member declaration directly:\nstrip the attribute list while moving its leading comments (minus the\nfinal whitespace block, which was just the attribute\u0027s own indent) onto\nthe next member\u0027s leading trivia.\n\nAdds tests covering: leading comment preservation, removing one of\nseveral attributes inside a single attribute list, and removing one\nattribute list among multiple sibling lists.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Report LuceneDev4002 at the call site instead of the target method\n\nReporting on the target method declaration produced a non-local\ndiagnostic — the analyzer was visiting an InvocationExpressionSyntax\nbut raising the diagnostic on a syntax tree it had not visited. MSBuild\nran a full compilation and surfaced the warning, but the IDE\u0027s per-file\nlive analysis filtered it out, so the warning never appeared in the\neditor.\n\nMove the report to the DoesStackTraceContainMethod invocation. The\ndiagnostic is now local, shows up in the IDE, and opens the door to a\ncode fix at the call site. The message names the qualified target\n(e.g. \u0027Target.Merge\u0027) so it remains clear which method needs the\nattribute. Test span updated accordingly.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Add code fix for LuceneDev4002\n\nAdds [MethodImpl(MethodImplOptions.NoInlining)] to the target method\nreferenced by a DoesStackTraceContainMethod call. The fix resolves the\ntarget from the call\u0027s nameof() (or string-literal) arguments, locates\nits declaration in source, and edits that document — even when it lives\nin a different file from the call. Adds\n\u0027using System.Runtime.CompilerServices;\u0027 to the target\u0027s compilation\nunit if missing, and prepends the new attribute list ahead of any\nexisting attributes on the method.\n\nPromote NoInliningAttributeHelper from internal to public so the code\nfix project can reuse it. Adds tests covering: target with using\nalready present, target without the using, and target with an existing\nattribute.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Match source line-ending convention in 4002 code fix\n\nThe fix previously emitted \u0027\\n\u0027 line terminators unconditionally, which\nmatched local Mac checkouts (LF) but failed on Linux CI where the\nchecked-out source uses CRLF. Detect the existing line ending from the\ntarget tree\u0027s trivia and reuse it so the fixed output stays consistent\nwith the surrounding file.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Simplify 4002 code fix and rely on Formatter for layout\n\nReplaces hand-rolled trivia construction with a single Formatter pass.\nThe new attribute list and using directive are built without trivia and\nformatted via Formatter.FormatAsync, with the workspace NewLine option\nexplicitly set from the source file\u0027s existing line endings so the\noutput doesn\u0027t mix CRLF and LF on platforms where Environment.NewLine\ndisagrees with the file (e.g. CRLF source on Linux CI).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Address Copilot review on LuceneDev4002\n\nUse a symbol-based attribute check (IMethodSymbol.GetAttributes) instead\nof inspecting AttributeSyntax with a SemanticModel from the wrong tree.\nThe previous code threw \"Syntax node is not within syntax tree\" whenever\nthe target method lived in a different file from the call site and had\nany attribute. Symbol-based lookup also avoids Compilation.GetSemanticModel\nin the analyzer (which trips RS1030).\n\nAlso:\n- Drop the Contains(\"NoInlining\") string fallback in the syntax-based\n  helper; the constant-value path already resolves MethodImplOptions.NoInlining\n  and the fallback false-positives on identifiers like \"NotNoInlining\".\n- Replace the namespace walk in FindSourceTypeByName with\n  Compilation.GetSymbolsWithName to leverage Roslyn\u0027s symbol index.\n- Update the analyzer\u0027s XML doc — the PR adds a code fix; the previous\n  comment claimed there was none.\n- Add cross-document tests for both analyzer and code fix; the analyzer\n  test reproduces the SemanticModel bug above.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "66f539cf5096a878629ff0c2d3d5f8cf8001b021",
      "tree": "5800c1304240baf6c04f2f72e3177b21b2bfdbc4",
      "parents": [
        "14d35564f1d8569e4cfb952cca496b89589bc8ab"
      ],
      "author": {
        "name": "Mend Renovate",
        "email": "bot@renovateapp.com",
        "time": "Thu Apr 30 22:12:09 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 15:12:09 2026 -0600"
      },
      "message": "chore: Update dependency Microsoft.NET.Test.Sdk to 18.5.1 (#29)"
    },
    {
      "commit": "14d35564f1d8569e4cfb952cca496b89589bc8ab",
      "tree": "ac1f1b1b29f728a72a78be9584a138c7cfc62af3",
      "parents": [
        "429d5b2acd65a71a4e0e38fefeece789233140e1"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Thu Apr 30 15:11:15 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 15:11:15 2026 -0600"
      },
      "message": "Implement LuceneDev2000-2008 numeric culture analyzers (apache/lucenenet#924) (#28)\n\n* Reserve LuceneDev2000-2008 for issue #924\n\n* Implement LuceneDev2000-2008 numeric culture analyzers (#924)\n\nAdds nine Roslyn analyzers under the new Globalization category that\nflag culture-sensitive numeric format/parse calls so the Lucene.NET\nteam can audit each one against Java Lucene\u0027s invariant-culture default:\n\n- 2000: BCL Parse/TryParse without IFormatProvider\n- 2001: BCL ToString/TryFormat without IFormatProvider (exempts\n  ToString() overrides)\n- 2002: Convert.ToXxx / Convert.ToString numeric without IFormatProvider\n- 2003: string.Format with numeric arg, no IFormatProvider\n- 2004: J2N.Numerics.* without IFormatProvider\n- 2005: implicit numeric formatting via string concatenation\n- 2006: implicit numeric formatting via string interpolation\n  (skips FormattableString.Invariant and string.Create with\n  InvariantCulture)\n- 2007: explicit IFormatProvider, but not InvariantCulture\n- 2008: explicit InvariantCulture (review-sweep aid; off by default)\n\nAlso adds three CodeFixProviders covering 2000/2001/2002/2004,\n2003, and 2005/2006, and a NumericTypeHelper utility shared by the\nanalyzers.\n\nSample project gets a violation file plus a J2N package reference.\nTests cover positive and negative paths for all analyzers and the\ncodefix outputs (180 tests total, all passing).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Fix LuceneDev2000 codefix to insert IFormatProvider before `out` arg\n\nTryParse signatures place the IFormatProvider before the trailing `out`\nparameter (e.g. `bool TryParse(string, IFormatProvider, out double)`),\nnot at the end. The codefix was appending, producing a call that did\nnot bind to any overload.\n\nAdds a regression test that fixes `double.TryParse(\"1.5\", out _)` and\nexpects the provider to land in the correct slot.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Match document line endings when inserting `using` directive\n\nThe codefix hardcoded `\\n` for the inserted `using System.Globalization;`\ndirective, which mismatched documents using CRLF (the .gitattributes\npolicy for *.cs files in this repo). CI checks out CRLF; local Mac\ncheckouts had LF, so tests passed locally but failed on CI.\n\nDetect the document\u0027s existing line ending from its SourceText and emit\nthe same. Adds a regression test that exercises a CRLF-encoded source.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Address Copilot review: TryFormat, null-provider, comment\n\nThree fixes from PR #28 review:\n\n1. LuceneDev2001 missed `int.TryFormat(buffer, out _)` because the\n   resolved overload declares an *optional* IFormatProvider parameter,\n   and the analyzer bailed whenever the signature had one. Switch to\n   checking whether the invocation actually supplies a provider arg.\n\n2. NumericTypeHelper.GetFormatProviderArgument returned null for `null`\n   literal arguments because GetTypeInfo(...).Type is null for them,\n   so calls like `i.ToString((string)null, null)` slipped past the\n   2007/2008 explicit-culture analyzer. Fall back to ConvertedType so\n   overload-resolution-chosen parameter types are picked up.\n\n3. Stale comment in LuceneDev2003 claimed using-static forms aren\u0027t\n   handled, but the implementation already supports IdentifierNameSyntax\n   and verifies the containing type is System.String. Comment updated.\n\nAdds three regression tests covering each fix.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Cache J2N numeric type lookups per-Compilation\n\nAddress Copilot review: GetJ2NNumericTypes was calling\nGetTypeByMetadataName for all 7 J2N numeric types on every numeric\ninvocation/concat/interpolation node visited. The result is identical\nfor the lifetime of a Compilation, so cache it in a\nConditionalWeakTable keyed by Compilation.\n\nAlso short-circuits IsJ2NNumericType: BCL primitives never live under\nJ2N.Numerics, so checking the containing namespace\u0027s display string up\nfront avoids the symbol-equality loop entirely on the hottest path.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "429d5b2acd65a71a4e0e38fefeece789233140e1",
      "tree": "ce1cedb8d2d5178ca4b9523d586e82a3f518ee19",
      "parents": [
        "68a592223c979571cacf620e63d3cabfca72905b"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Wed Apr 29 19:57:08 2026 -0600"
      },
      "committer": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Wed Apr 29 19:57:08 2026 -0600"
      },
      "message": "Reserve LuceneDev4000-4002 for issue #1097\n\nNoInlining dev analyzer rules (Performance category).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "68a592223c979571cacf620e63d3cabfca72905b",
      "tree": "a34bcb09a4a820c7f276a2716652ce853a78cbe6",
      "parents": [
        "3a5a687e156a8205ef7c44b7f57044465abd61f6"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Sun Apr 26 14:19:26 2026 -0600"
      },
      "committer": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Sun Apr 26 14:19:26 2026 -0600"
      },
      "message": "Reserve LuceneDev2000-2008 for issue #924\n"
    },
    {
      "commit": "3a5a687e156a8205ef7c44b7f57044465abd61f6",
      "tree": "aaec45fb89e5eb87e2bb3eb15538cb6df96aaa38",
      "parents": [
        "614bad609ac7e8ede1133b0d21c5722bb4570fa2"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Sun Apr 26 13:54:40 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 26 13:54:40 2026 -0600"
      },
      "message": "Implement LuceneDev1007, 1008, 6000 Analyzers \u0026 CodeFix with Unit Tests (#27)\n\n* Implement LuceneDev1007, 1008, 6000 Analyzers \u0026 CodeFix with Unit Tests\n\nAdds diagnostics for dictionary indexer usage ported from Java:\n\n- LuceneDev1007 (Design/Warning): generic IDictionary\u003c,\u003e / IReadOnlyDictionary\u003c,\u003e\n  indexer read with a value-type value — may throw KeyNotFoundException.\n- LuceneDev1008 (Design/Warning): same, but reference-type value; fix should also\n  null-check the result.\n- LuceneDev6000 (Usage/Info): non-generic IDictionary indexer read, which returns\n  null for missing keys and should be reviewed.\n\nIncludes a code fix for LuceneDev1007/1008 that rewrites the common\n`return dict[key];` pattern into\n`return dict.TryGetValue(key, out var value) ? value : default;`.\n\nCloses #1168.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n* Address Copilot review feedback on PR #27\n\n- Code fix: only offer TryGetValue rewrite when receiver type exposes\n  an accessible public instance TryGetValue(TKey, out TValue) method,\n  to avoid generating non-compiling code when the method is only\n  available via explicit interface implementation.\n- Add unit test verifying PickLocalName collision-avoidance produces\n  a unique name (value1) when \u0027value\u0027 is already in scope.\n- Fix misleading comment in DictionaryTypeHelper.IsGenericDictionaryIndexer\n  to match actual behavior.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "614bad609ac7e8ede1133b0d21c5722bb4570fa2",
      "tree": "64217fccd7037f12204f885d0e383ba31f987e9d",
      "parents": [
        "216a1d19ec79363d54ee283e9a3b0eda79f73c2a"
      ],
      "author": {
        "name": "Mend Renovate",
        "email": "bot@renovateapp.com",
        "time": "Fri Apr 24 04:47:48 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 21:47:48 2026 -0600"
      },
      "message": "chore: Update GitHub Action actions/setup-dotnet to c2fa09f (#17)"
    },
    {
      "commit": "216a1d19ec79363d54ee283e9a3b0eda79f73c2a",
      "tree": "ca709c8d4c4e86f8cafd5bbbe9ad65b3889b2f23",
      "parents": [
        "998cc9312cb9748a3668fd2ddf263f867f6feefe"
      ],
      "author": {
        "name": "Nehan Khan Pathan",
        "email": "pathannehan26@gmail.com",
        "time": "Fri Apr 24 09:05:25 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 21:35:25 2026 -0600"
      },
      "message": "Implement LuceneDev6001, 6002, 6003 Analyzers \u0026 CodeFixes with Unit Tests (#14)\n\n* Add analyzers, codefixes, sample and test files for 6001, 6002, 6003\n\n* feat(analyzers): smart Span fixes, char optimizations,NRT updatesand add Documentation as per suggestion\n\n* Address LuceneDev600x review feedback and fix tests\n\n- LuceneDev6003 code fix: use getInnermostNodeForTie + descendant\n  fallback so FindNode resolves to the LiteralExpressionSyntax.\n- LuceneDev6003 analyzer: detect char overload correctly for spans.\n  ReadOnlySpan\u003cT\u003e.IndexOf(T) / LastIndexOf(T) are MemoryExtensions\n  extensions, so the previous search on the containing type missed\n  them. StartsWith/EndsWith intentionally remain excluded (no char\n  overload exists for spans).\n- LuceneDev6001 analyzer: pass the invalid StringComparison value\n  name to Diagnostic.Create so the {1} placeholder in the message\n  format is substituted (previously rendered as literal \"{1}\").\n- LuceneDev6001 code fix: use continue instead of return inside the\n  diagnostic loop so multiple diagnostics in one file all get fixes\n  offered.\n- Sample project: uncomment violating examples so the diagnostics\n  fire live in the IDE (matches the existing LuceneDevXxxxSample\n  convention). Add .editorconfig to downgrade error-severity rules\n  to warning in the sample project so it still compiles.\n- LuceneDev6003 sample: rewrite to use the analyzer\u0027s target methods\n  (IndexOf/LastIndexOf/StartsWith/EndsWith) rather than string.Equals,\n  including a ReadOnlySpan\u003cchar\u003e example.\n- Clean up excessive blank lines in 6002 code fix and a stray\n  trailing space in a variable name.\n- Update 6001 tests to include the comparison-value argument.\n- Fix off-by-one spans in 6003 code fix tests and add a span test.\n\n* Renumber LuceneDev6xxx rules to contiguous IDs\n\nReplace the underscore-suffixed IDs (6001_1, 6001_2, 6002_1, 6002_2)\nwith contiguous numeric IDs matching the rest of the Lucene.NET\nanalyzer taxonomy:\n\n  6001_1 -\u003e 6001  Missing StringComparison on String overload\n  6001_2 -\u003e 6002  Invalid StringComparison on String overload\n  6002_1 -\u003e 6003  Redundant Ordinal on span overload\n  6002_2 -\u003e 6004  Invalid StringComparison on span overload\n  6003   -\u003e 6005  Single-character string literal\n\nEach analyzer class still bundles the two related diagnostics that\nshare symbol resolution; files are named with the ID range\n(e.g., LuceneDev6001_6002_StringComparisonAnalyzer.cs) and the\nLuceneDev6005 analyzer stands alone.\n\nUpdate Descriptors, Resources.resx, AnalyzerReleases.Unshipped.md,\nDiagnosticCategoryAndIdRanges.txt, samples, editorconfig overrides,\nand tests to reference the new IDs. Tighten the 6005 summary doc\nto note that spans only have char overloads for IndexOf/LastIndexOf.\n\n---------\n\nCo-authored-by: Paul Irwin \u003cpaulirwin@gmail.com\u003e"
    },
    {
      "commit": "998cc9312cb9748a3668fd2ddf263f867f6feefe",
      "tree": "7699b1eb5207380e15c650b8ae67f919b55fd56a",
      "parents": [
        "aab1a363115fdcc29a117c860dd64ee0821ce212"
      ],
      "author": {
        "name": "Mend Renovate",
        "email": "bot@renovateapp.com",
        "time": "Fri Apr 24 03:23:37 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 20:23:37 2026 -0600"
      },
      "message": "chore: Update GitHub Actions (#15)"
    },
    {
      "commit": "aab1a363115fdcc29a117c860dd64ee0821ce212",
      "tree": "68f8c388624ceb9aecf340a465398b3337d96d93",
      "parents": [
        "a51d0ccac7ad659b1be4c370acffca78f4582c14"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Thu Apr 23 20:22:55 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 20:22:55 2026 -0600"
      },
      "message": "Update GitHub macOS x64 runner to macos-15-intel (#26)"
    },
    {
      "commit": "a51d0ccac7ad659b1be4c370acffca78f4582c14",
      "tree": "a97a43a0742797f7a21e06144c9d6ac87d92558a",
      "parents": [
        "91e39be83385386afb2762a38105c124d92d0115"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Tue Apr 21 07:07:10 2026 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 07:07:10 2026 -0600"
      },
      "message": "Upgrade NuGet packages (#24)\n\n* Upgrade NuGet packages\n\n* Fix whitespace changes from IDE"
    },
    {
      "commit": "91e39be83385386afb2762a38105c124d92d0115",
      "tree": "61f59d7d1a0e34c908c8bd99810254140a7e18f9",
      "parents": [
        "d17a2643232ab21ebd6c05ad3a313ab73e8492f3"
      ],
      "author": {
        "name": "Mend Renovate",
        "email": "bot@renovateapp.com",
        "time": "Sat Oct 18 22:07:41 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 18 15:07:41 2025 -0600"
      },
      "message": "chore: Update GitHub Action softprops/action-gh-release to 6da8fa9 (#11)\n\n"
    },
    {
      "commit": "d17a2643232ab21ebd6c05ad3a313ab73e8492f3",
      "tree": "0683de98b350295328c3235f6217f2ba261a85b2",
      "parents": [
        "df79b0d37acfe14ec7274d377bce89533e779e3b"
      ],
      "author": {
        "name": "Nehan Khan Pathan",
        "email": "pathannehan26@gmail.com",
        "time": "Fri Oct 17 17:07:32 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 17 18:37:32 2025 +0700"
      },
      "message": "Reserve LuceneDev6001-6003 and add initial entries for string/span/char analyzer rules (#13)\n\n* Reserve LuceneDev6001-6003 and add initial entries for string/span/char analyzer rules\n\n* Reserve LuceneDev6001-6003 and add initial entries for string/span/char analyzer rules\n\n* fix: correct table format in AnalyzerReleases.Unshipped.md to resolve build warning"
    },
    {
      "commit": "df79b0d37acfe14ec7274d377bce89533e779e3b",
      "tree": "28c759801b2702d33a8c5d6b5f24492f2649161d",
      "parents": [
        "159656b983b6af003c87a16402f5e82bc19e1b71"
      ],
      "author": {
        "name": "Mend Renovate",
        "email": "bot@renovateapp.com",
        "time": "Wed Oct 08 04:34:24 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 07 21:34:24 2025 -0600"
      },
      "message": "chore: Update dependency NUnit3TestAdapter to 5.2.0 (#10)\n\n"
    },
    {
      "commit": "159656b983b6af003c87a16402f5e82bc19e1b71",
      "tree": "92cec58629941840e91f721b8ad5ec1eb05a961d",
      "parents": [
        "d58325dd8a8852b58b9709bfaec50b34d1b88b91"
      ],
      "author": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Tue Oct 07 13:48:38 2025 +0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 07 13:48:38 2025 +0700"
      },
      "message": "Reserved LuceneDev1007, LuceneDev1008, and LuceneDev6000 for https://github.com/apache/lucenenet/issues/1168 (#12)\n\n"
    },
    {
      "commit": "d58325dd8a8852b58b9709bfaec50b34d1b88b91",
      "tree": "b60d11541c5a7f25bfa52077df36da6bbdabb6f7",
      "parents": [
        "78b18f4b5030f14bc93b827058578973ea5776ee"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Sun Oct 05 16:14:36 2025 -0600"
      },
      "committer": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Sun Oct 05 16:14:36 2025 -0600"
      },
      "message": "Move LuceneDev1005-LuceneDev1006 to shipped analyzers\n"
    },
    {
      "commit": "78b18f4b5030f14bc93b827058578973ea5776ee",
      "tree": "0aaf65adc1567589c30af570a105658aa9733500",
      "parents": [
        "ba3ba010f554036b382c012d3f0798dd813df014"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Sun Oct 05 16:12:41 2025 -0600"
      },
      "committer": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Sun Oct 05 16:12:41 2025 -0600"
      },
      "message": "Exclude .asf.yaml from RAT\n"
    },
    {
      "commit": "ba3ba010f554036b382c012d3f0798dd813df014",
      "tree": "4de42b57c451609a226112e09ee14677a8d2bf3d",
      "parents": [
        "dea6328cb0183b91d76a4b1252cee5ffcc49650b"
      ],
      "author": {
        "name": "Sanjeev Kumar",
        "email": "ksanjeev284@gmail.com",
        "time": "Sun Oct 05 21:29:27 2025 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 05 22:59:27 2025 +0700"
      },
      "message": "Add analyzer and code fix for floating point string formatting (#9)\n\n* Add analyzer and code fix for floating point string formatting\n\nIntroduces LuceneDev1006 analyzer to detect floating point values embedded in strings via concatenation or interpolation, and updates the code fix provider to suggest using J2N.Numerics Single/Double.ToString methods. Adds supporting resources, descriptors, utility methods, sample usage, and comprehensive tests for both analyzer and code fix behaviors.\n\n* LuceneDev1006Sample.cs: Fixed issue with doubling of quotes that caused the sample not to compile.\n\n* Preserve alignment clause in interpolation code fix\n\nEnsures that the alignment clause is retained when replacing interpolation expressions in LuceneDev1001_FloatingPointFormattingCSCodeFixProvider. Also fixes string formatting in LuceneDev1006Sample to use correct quotes and spacing.\n\n* Preserve interpolation alignment and add coverage\n\n---------\n\nCo-authored-by: Shad Storhaug \u003cshad@shadstorhaug.com\u003e"
    },
    {
      "commit": "dea6328cb0183b91d76a4b1252cee5ffcc49650b",
      "tree": "5baa97faa0f914559a0d5a34e2480df6cf60b63b",
      "parents": [
        "764624a0e6f69fc9325d46f8761fad8b02c3dcbc"
      ],
      "author": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Sun Oct 05 18:49:52 2025 +0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 05 18:49:52 2025 +0700"
      },
      "message": "Update .asf.yaml\n\nAdded code-analysis label"
    },
    {
      "commit": "764624a0e6f69fc9325d46f8761fad8b02c3dcbc",
      "tree": "5845dee384e21e27a4f4081c5fc87a2fca195d9e",
      "parents": [
        "445a08bbd65516d8a866b6997a02909d9f905cd5"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Sat Oct 04 15:09:22 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 04 15:09:22 2025 -0600"
      },
      "message": "Update ID range for Design category (#8)\n\n"
    },
    {
      "commit": "445a08bbd65516d8a866b6997a02909d9f905cd5",
      "tree": "89fe3ca4007d1a4b5b62f5023ea9e46e80f39e62",
      "parents": [
        "df8e076095d3937ab72fb1876412c4a27ad5d4b5"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Sat Oct 04 15:02:48 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 04 15:02:48 2025 -0600"
      },
      "message": "Add analyzer and code fix for public types in Lucene.Net.Support, #1100 (#2)\n\n* Add analyzer for public types in Support namespace\n\n* Remove migrated resource for code fix title\n\n* Remove .globalconfig file\n\n* Upgrade RAT to 0.16.1, clean up line endings after running\n\n* Fix casing of code fix provider name\n\n* Fix code fix with partial classes\n\n* Revert Markdown changes and exclude from RAT\n\n* RAT exclude only AnalyzerReleases files; fix warning about AnalyzerReleases version number\n\n* Use MajorMinorVersion instead of Version\n\n* Fix code fix to preserve license headers and comments\n\nThe code fix was stripping leading trivia (license headers, comments) when changing public to internal. The fix now preserves both leading trivia from the first modifier and trailing trivia from the accessibility modifier being replaced.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-Authored-By: Claude \u003cnoreply@anthropic.com\u003e\n\n---------\n\nCo-authored-by: Claude \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "df8e076095d3937ab72fb1876412c4a27ad5d4b5",
      "tree": "9899ab47bdb89c8eeb2458589a4d909ac457cc1d",
      "parents": [
        "5a8d49491691d3926a355686ebad39410dbd2b96"
      ],
      "author": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Sat Oct 04 18:39:42 2025 +0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 04 18:39:42 2025 +0700"
      },
      "message": "Update .asf.yaml"
    },
    {
      "commit": "5a8d49491691d3926a355686ebad39410dbd2b96",
      "tree": "e5974c32c7cb45c1c01b8ac397709ac2a4b45361",
      "parents": [
        "42faee8b9cdcc5d315fe44951d2fa8123ada243e"
      ],
      "author": {
        "name": "Mend Renovate",
        "email": "bot@renovateapp.com",
        "time": "Sat Oct 04 12:14:28 2025 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 04 18:14:28 2025 +0700"
      },
      "message": "chore: Update dependency Microsoft.NET.Test.Sdk to v18 (#6)\n\n"
    },
    {
      "commit": "42faee8b9cdcc5d315fe44951d2fa8123ada243e",
      "tree": "bade8e5e7adaf7308da470dbd0de5d5b0934663e",
      "parents": [
        "94791653e4ad745e06263fb31daad8c1a4e1abd3"
      ],
      "author": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Sat Oct 04 14:20:46 2025 +0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 04 14:20:46 2025 +0700"
      },
      "message": "Create .asf.yaml (#7)\n\n"
    },
    {
      "commit": "94791653e4ad745e06263fb31daad8c1a4e1abd3",
      "tree": "c091d74f28c71543528d504c982e74c8309c3f61",
      "parents": [
        "f55b6eb7a436d7289e8eee98a70fb61282458fe8",
        "64095be98d0caf2845b2d30bec7d6c058aea8f82"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Fri Sep 26 19:14:13 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 26 19:14:13 2025 -0600"
      },
      "message": "Merge pull request #5 from renovate-bot/renovate/nerdbank.gitversioning-3.x\n\nchore: Update dependency Nerdbank.GitVersioning to 3.8.118"
    },
    {
      "commit": "f55b6eb7a436d7289e8eee98a70fb61282458fe8",
      "tree": "695d155784bd915d61fed68b6b93e25d306898a7",
      "parents": [
        "7186facabf2b6affba248956894936d5f392260d",
        "b5ca07a187340fe3b3f7bdae6fc500ad5153c1f3"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Fri Sep 26 19:07:08 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 26 19:07:08 2025 -0600"
      },
      "message": "Merge pull request #4 from renovate-bot/renovate/github-actions-all\n\nchore: Update GitHub Action actions/cache to 0057852"
    },
    {
      "commit": "64095be98d0caf2845b2d30bec7d6c058aea8f82",
      "tree": "da0c13828e31557d7d4e29e43bda3c7b965ffdb2",
      "parents": [
        "5bcf37fa4747ca14304a9a60a074c8afd2af939d"
      ],
      "author": {
        "name": "Mend Renovate",
        "email": "bot@renovateapp.com",
        "time": "Fri Sep 26 17:44:28 2025 +0000"
      },
      "committer": {
        "name": "Mend Renovate",
        "email": "bot@renovateapp.com",
        "time": "Fri Sep 26 17:44:28 2025 +0000"
      },
      "message": "chore: Update dependency Nerdbank.GitVersioning to 3.8.118\n"
    },
    {
      "commit": "b5ca07a187340fe3b3f7bdae6fc500ad5153c1f3",
      "tree": "38e005cf1b998129e4a6e8b8c8b62bf5bdd9f379",
      "parents": [
        "5bcf37fa4747ca14304a9a60a074c8afd2af939d"
      ],
      "author": {
        "name": "Mend Renovate",
        "email": "bot@renovateapp.com",
        "time": "Fri Sep 26 12:26:09 2025 +0000"
      },
      "committer": {
        "name": "Mend Renovate",
        "email": "bot@renovateapp.com",
        "time": "Fri Sep 26 12:26:09 2025 +0000"
      },
      "message": "chore: Update GitHub Action actions/cache to 0057852\n"
    },
    {
      "commit": "7186facabf2b6affba248956894936d5f392260d",
      "tree": "aa2797e4e86c28913a6a74e5231f553af002c24d",
      "parents": [
        "5bcf37fa4747ca14304a9a60a074c8afd2af939d"
      ],
      "author": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Thu Sep 25 14:49:47 2025 +0700"
      },
      "committer": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Thu Sep 25 14:49:47 2025 +0700"
      },
      "message": "docs/make-release.md: Changed docs to reflect the fact that release builds are made from git tags rather than branches.\n"
    },
    {
      "commit": "5bcf37fa4747ca14304a9a60a074c8afd2af939d",
      "tree": "fc185e7e79f0169cd4814ce9ed6ea7af86849d3f",
      "parents": [
        "4355d89a298eb80eed7e9d4c74a446b65745e891"
      ],
      "author": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Thu Sep 25 02:30:13 2025 +0700"
      },
      "committer": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Thu Sep 25 02:30:13 2025 +0700"
      },
      "message": "AnalyzerReleases.Shipped.md: Updated release version\n"
    },
    {
      "commit": "4355d89a298eb80eed7e9d4c74a446b65745e891",
      "tree": "b8c850a095af715203abc6d696919c1fa9c52244",
      "parents": [
        "3b9987f6bb0ffaa625d420ab92afd307ed8d9429"
      ],
      "author": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Thu Sep 25 02:23:31 2025 +0700"
      },
      "committer": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Thu Sep 25 02:23:31 2025 +0700"
      },
      "message": ".github/workflows/ci.yml: Ensure that the tags are fetched when doing builds. Also, simplified command to lookup nbgv version.\n"
    },
    {
      "commit": "3b9987f6bb0ffaa625d420ab92afd307ed8d9429",
      "tree": "e86f3117c777c1607efd8d76158518f8643afcbf",
      "parents": [
        "89474c9cbc46c85bfeaa2a17a5a3169275f56d88"
      ],
      "author": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Thu Sep 25 02:20:54 2025 +0700"
      },
      "committer": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Thu Sep 25 02:20:54 2025 +0700"
      },
      "message": "version.json: Updated ref spec so tags can be built as releases. GitHub Actions checks out the tag when a tag is pushed, so this will ensure it has the same version as the local branch does.\n"
    },
    {
      "commit": "89474c9cbc46c85bfeaa2a17a5a3169275f56d88",
      "tree": "73ebfb86073c2830df5432b52b1132454b35f7c3",
      "parents": [
        "1c3d67d084e0908d5212612d3723dcc839ddb1e5"
      ],
      "author": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Wed Sep 24 21:49:33 2025 +0700"
      },
      "committer": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Wed Sep 24 21:49:34 2025 +0700"
      },
      "message": "AnalyzerReleases.*.md: Moved the analyzers LuceneDev1000-1004 to released state.\n"
    },
    {
      "commit": "1c3d67d084e0908d5212612d3723dcc839ddb1e5",
      "tree": "ff75d7c6cd45d4f3eceb2b1628e6e33339e16bee",
      "parents": [
        "d7db8e118cd802eae41d9f0decf91e6ca9a3d96a"
      ],
      "author": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Wed Sep 24 20:50:24 2025 +0700"
      },
      "committer": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Wed Sep 24 20:50:24 2025 +0700"
      },
      "message": ".rat-excludes: Added exception for release-build-outcomes.svg and release-workflow.svg\n"
    },
    {
      "commit": "d7db8e118cd802eae41d9f0decf91e6ca9a3d96a",
      "tree": "707b0281d78ab62351d5f389a6dbea1ee777d455",
      "parents": [
        "1eddb1df3a7fed0837a9bf52bd97f5f50b45000f"
      ],
      "author": {
        "name": "Paul Irwin",
        "email": "paulirwin@gmail.com",
        "time": "Tue Sep 23 00:06:39 2025 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 13:06:39 2025 +0700"
      },
      "message": "Update project for initial Apache release (#1)\n\n* Upgrade NuGet packages, add Sample project and enable debugging, remove VSIX, fix unit tests and analyser warnings\n\n* Add remaining samples\n\n* Add github action file\n\n* Fix comment generation in Resources.Designer.cs, remove from source control\n\n* Rename unit test project\n\n* Add more detail to analyzer titles\n\n* Rename GitHub workflow file\n\n* Change GitHub Actions triggers\n\n* Add strong name key signing\n\n* Add README and Diagnostic IDs reservations file\n\n* Fix NuGet pack output path and settings\n\n* Added Dirctory.Build.props, Directory.Build.targets. and Directory.Packages.props files to share common settings and enable Central Package Management.\n\n* Added version.json file for Nerdbank.GitVersioning\n\n* Added Lucene.Net.CodeAnalysis.Dev.Package project to provide centralized packaging for analyzers, code fixes, and the sample project\n\n* Added Lucene.Net.CodeAnalysis.Dev.Vsix project for Visual Studio live debugging\n\n* Renamed Helpers namespace to Utility\n\n* Migrated DiagnosticDescriptor declarations to their own Descriptors class\n\n* SWEEP: Converted all tests to use Microsoft.CodeAnalysis.Analyzer.Testing\n\n* Lucene.Net.CodeAnalysis.Dev.sln: Added Solution Items folder\n\n* Lucene.Net.CodeAnalysis.Dev.sln: Added .github, docs, and eng folders as .folderproj (NoTargets) projects that allow the IDE to edit the underlying file structure\n\n* Moved Lucene.Net.snk file to the eng directory\n\n* Lucene.Net.CodeAnalysis.Dev.sln: Added Directory.Build.targets and Directory.Build.props files to src and tests folders\n\n* Added GitHub workflows for build/release automation\n\n* docs: Added building-and-testing, make-release, and visual-studio-debugging documentation\n\n* Added Powershell script to run the Release Audit Tool\n\n* rat.ps1: Changed RAT version to 0.13, since that is what we know works\n\n* SWEEP: Ran the Apache Release Audit Tool to add missing license headers\n\n* docs/make-release.md: Added section for Release Audit Tool\n\n* Added .editorconfig and .gitattributes for most often hand-edited files\n\n* Added Lucene.Net.CodeAnalysis.Dev.CodeFixes project and Lucene.Net.CodeAnalysis.Dev.CodeFixes.Tests\n\n* Lucene.Net.CodeAnalysis.Dev.CodeFixes: Fixed CodeFixResources.resx code generation so it is not a committed file\n\n* LuceneDev1001_FloatingPointFormattingCSCodeFixProvider: Dynamically build title based off of localized resource and actual code element.\n\n* LuceneDev1001_FloatingPointFormattingCSCodeFixProvider: Refactored to make use of shared TryGetJ2NTypeAndMember() method to reduce duplicated code.\n\n* Lucene.Net.CodeAnalysis.Dev.CodeFixes.csproj: Removed unnecessary PackageReference on Microsoft.CodeAnalysis.CSharp\n\n* tests/Directory.Build.targets: Set IsPublishable\u003dtrue if IsTestProject is true\n\n* Lucene.Net.CodeAnalysis.Dev.Tests.csproj: Enabled nullable reference type support\n\n* Lucene.Net.CodeAnalysis.Dev.Utilty.Descriptors: Use static fields instead of properties for DiagnosticDescriptors or the AnalyzerReleases release management analyzers do not recognize the diagnositic ids as being implemented.\n\n* Lucene.Net.CodeAnalysis.Dev: Cleaned up usings\n\n* Lucene.Net.CodeAnalysis.Dev: Removed AnalyzerReleases from AdditionalFiles, as it is only necessary if these are needed within one of our analyzers\n\n* SWEEP: Moved all analyzers, code fixes, and analyzer/code fix tests into organizational LuceneDev1xxx folders.\n\n* SWEEP: Added Apache 2.0 license headers to all .props, .targets, and .*proj files\n\n* SWEEP: Added Apache 2.0 license headers to all .yml and .ps1 files\n\n* SWEEP: Added Apache 2.0 license headers to all .md files (except AnalyzerReleases which require a specific format to be parsed)\n\n* eng/nuget.props: Added LICENSE.txt and NOTICE.txt to the NuGet package.\n\n* eng/nuget.props: Resolved conflict - cannot specify PackageLicenseExpression and PackageLicenseFile at the same time. Removed the PackageLicenseFile property, but kept the automation to pack the file into the NuGet package.\n\n* Lucene.Net.CodeAnalysis.Dev.sln: Added .editorconfig and .gitattributes files to Solution Items\n\n* Added Git commit hook to insert the current NuGetPackageVersion into a placeholder token {{vnext}} in the AnalyzerReleases.Shipped.md file, only if preceeded by \"## Release \".\n\n* docs/make-release.md: Simplified release procedure and included step to update AnalyzerReleases documents.\n\n* version.json: Updated version.json to enforce 3-component release branch numbers.\n\n* docs/make-release: Added workflow for release build outcomes. Also corrected release branching info to show branches with 3 version components.\n\n* docs/make-release.md: Added info about deciding between major, minor, patch, and prerelease when choosing a version number.\n\n* release-build-outcomes.md: Updated Mermaid markup to reflect the same state as the release-build-outcomes.svg file.\n\n* Markdown-Formatting.Tests.ps1: Removed stray assert\n\n* .github/workflows/ci.yml: Removed x86 tests and SDK setup\n\n* docs/make-release.md: Corrected slash in release branch notes\n\n* docs/make-release.md: Added info about how to check the version of the current commit\n\n* nuget.props: Converted to nuget.targets and added target to set \u003cPackageReleaseNotes\u003e after Nerdbank.GitVersioning injects the PackageVersion into the pipeline.\n\n* renovate.json: Disabled dependency dashboard issue and enabled fork processing for Forking Renovate\n\n* .github/workflows/renovate-dependencies.yml: deleted, since we will be using Forking Renovate and we probably won\u0027t be able to run this workflow, anyway.\n\n* Lucene.Net.CodeAnalysis.Dev.Package.csproj: Removed conditions for CodeFixes project and fixed paths to include (future) code fix resource files in the package if we ever localize it.\n\n* Lucene.Net.CodeAnalysis.Dev.Vsix/source.extension.vsixmanifest: Changed Publisher attribute to Apache Software Foundation\n\n---------\n\nCo-authored-by: Shad Storhaug \u003cshad@shadstorhaug.com\u003e"
    },
    {
      "commit": "1eddb1df3a7fed0837a9bf52bd97f5f50b45000f",
      "tree": "9cd344070e0c6ba639ea6485c2e152e839edac58",
      "parents": [
        "584f539657d109de965b86e9dc46b3c07b1a1bb2"
      ],
      "author": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Fri Nov 17 12:32:59 2023 +0700"
      },
      "committer": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Fri Nov 17 12:32:59 2023 +0700"
      },
      "message": "source.extension.vsixmanifest: Updated to include VS2022 as well as pro and community editions\n"
    },
    {
      "commit": "584f539657d109de965b86e9dc46b3c07b1a1bb2",
      "tree": "cb20e70e84570be7b760a379cc47ce0cb1c1d388",
      "parents": [],
      "author": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Thu Nov 16 00:14:14 2023 +0700"
      },
      "committer": {
        "name": "Shad Storhaug",
        "email": "shad@shadstorhaug.com",
        "time": "Thu Nov 16 00:14:14 2023 +0700"
      },
      "message": "Added solution structure for Lucene.Net.CodeAnalysis.Dev\n"
    }
  ]
}
