Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
78390c0
Choose canonical partial representatives (#4914)
Widthdom Aug 1, 2026
7c3b3bc
Preserve partial declaration evidence (#4914)
Widthdom Aug 1, 2026
4fccea0
Merge remote-tracking branch 'origin/main' into fix-issue4914
Widthdom Aug 1, 2026
a697f0e
Keep distinct partial callable identities (#4914)
Widthdom Aug 1, 2026
8fa0d2c
Preserve partial signature fallback (#4914)
Widthdom Aug 1, 2026
47f63f3
Honor partial family review contracts (#4914)
Widthdom Aug 1, 2026
a5274cf
Harden partial family boundaries (#4914)
Widthdom Aug 1, 2026
bb6148b
Merge remote-tracking branch 'origin/main' into fix-issue4914
Widthdom Aug 1, 2026
79d5344
Preserve rooted callable type identity (#4914)
Widthdom Aug 1, 2026
4f4e996
Merge remote-tracking branch 'origin/main' into fix-issue4914
Widthdom Aug 1, 2026
aea29ac
Address partial family review findings (#4914)
Widthdom Aug 1, 2026
f0a397b
Fix canonical partial edge cases (#4914)
Widthdom Aug 1, 2026
0a32ab4
Handle partial declaration trivia edge cases (#4914)
Widthdom Aug 1, 2026
3447bf9
Resolve partial family review edge cases (#4914)
Widthdom Aug 1, 2026
a8599df
Merge remote-tracking branch 'origin/main' into fix-issue4914
Widthdom Aug 1, 2026
95440ed
Resolve final partial family review findings (#4914)
Widthdom Aug 1, 2026
d002333
Resolve adversarial partial header findings (#4914)
Widthdom Aug 1, 2026
3746348
Merge remote-tracking branch 'origin/main' into fix-issue4914
Widthdom Aug 1, 2026
0b58aac
Fix file-local partial family scoping (#4914)
Widthdom Aug 1, 2026
626a03d
Merge remote-tracking branch 'origin/main' into fix-issue4914
Widthdom Aug 1, 2026
d8a68af
Handle reviewed partial family edge cases (#4914)
Widthdom Aug 1, 2026
9b43bf1
Normalize test method partial identities (#4914)
Widthdom Aug 1, 2026
5bb4a3a
Fix reviewed C# declaration classification (#4914)
Widthdom Aug 1, 2026
b8e3548
Preserve nested partial type identities (#4914)
Widthdom Aug 1, 2026
2854940
Resolve reviewed partial nullable identities (#4914)
Widthdom Aug 1, 2026
3b7d490
Resolve adversarial partial grouping findings (#4914)
Widthdom Aug 1, 2026
946a394
Merge remote-tracking branch 'origin/main' into fix-issue4914
Widthdom Aug 1, 2026
65386a9
Fix scoped partial callable identities (#4914)
Widthdom Aug 1, 2026
fddd563
Address adversarial grouping review findings (#4914)
Widthdom Aug 2, 2026
9c4b128
Merge remote-tracking branch 'origin/main' into fix-issue4914
Widthdom Aug 2, 2026
0cea3b5
Fix adversarial partial family edge cases (#4914)
Widthdom Aug 2, 2026
401d242
Fix scoped nullable partial identities (#4914)
Widthdom Aug 2, 2026
ac6c3fb
Merge remote-tracking branch 'origin/main' into fix-issue4914
Widthdom Aug 2, 2026
78954c3
Register partial readiness arity function (#4914)
Widthdom Aug 2, 2026
05f05f3
Avoid duplicate readiness function registration (#4914)
Widthdom Aug 2, 2026
2a45dc5
Register readiness helper for every batch (#4914)
Widthdom Aug 2, 2026
7306a2d
Merge remote-tracking branch 'origin/main' into fix-issue4914
Widthdom Aug 2, 2026
6575932
Fix remaining partial grouping review findings (#4914)
Widthdom Aug 2, 2026
b1bfa0a
Fix adversarial C# partial grouping cases (#4914)
Widthdom Aug 2, 2026
0af4e2d
Handle alias and readiness review cases (#4914)
Widthdom Aug 2, 2026
86f19e1
Canonicalize tuple partial identities (#4914)
Widthdom Aug 2, 2026
2b11acd
Handle partial identity review edge cases (#4914)
Widthdom Aug 2, 2026
75d4a07
Avoid duplicate partial UDF registration (#4914)
Widthdom Aug 2, 2026
d563579
Preserve file-local partial identity facts (#4914)
Widthdom Aug 2, 2026
c3b44b5
Preserve file-local metadata across boundaries (#4914)
Widthdom Aug 2, 2026
28d83c3
Respect project and hook partial boundaries (#4914)
Widthdom Aug 2, 2026
ae8d52b
Rebuild hook partial families and raw readers (#4914)
Widthdom Aug 2, 2026
f96372b
Handle adversarial partial family syntax (#4914)
Widthdom Aug 2, 2026
8665fcc
Fix review regressions for partial family ranking (#4914)
Widthdom Aug 2, 2026
b67f986
Fix record hook containment and readiness reporting (#4914)
Widthdom Aug 2, 2026
620a059
Validate support report family fingerprints (#4914)
Widthdom Aug 2, 2026
183b5ac
Address adversarial review findings (#4914)
Widthdom Aug 2, 2026
225e481
Filter partial callable scans before limits (#4914)
Widthdom Aug 2, 2026
2dd306e
Preserve partial-family graph identity (#4914)
Widthdom Aug 2, 2026
28e2824
Handle C# trivia in partial families (#4914)
Widthdom Aug 2, 2026
0ee6fc6
Validate support report family rows (#4914)
Widthdom Aug 2, 2026
81d4d54
Handle C# directive declaration trivia (#4914)
Widthdom Aug 2, 2026
59b2afd
Guard C# family upgrades and directives (#4914)
Widthdom Aug 2, 2026
310257d
Preserve fresh C# identity readiness (#4914)
Widthdom Aug 2, 2026
0fcb7cb
Guard default C# identity refresh (#4914)
Widthdom Aug 2, 2026
8dcaae8
Handle joined C# conditional modifiers (#4914)
Widthdom Aug 3, 2026
89fb982
Resolve final adversarial review regressions (#4914)
Widthdom Aug 3, 2026
997ff3a
Handle C# record keyword collisions (#4914)
Widthdom Aug 3, 2026
7b61210
Preserve C# partial scope edge cases (#4914)
Widthdom Aug 3, 2026
1538478
Harden C# partial family delimiters (#4914)
Widthdom Aug 3, 2026
68f59ff
Avoid unnecessary C# callable grouping scans (#4914)
Widthdom Aug 3, 2026
cf7cde3
Honor C# project marker casing (#4914)
Widthdom Aug 3, 2026
49514be
Disambiguate C# partial family boundaries (#4914)
Widthdom Aug 3, 2026
e6085cc
Address partial family review findings (#4914)
Widthdom Aug 3, 2026
50e6fd4
Normalize managed function pointer identities (#4914)
Widthdom Aug 3, 2026
cb3220c
Preserve hook-mutated partial family metadata (#4914)
Widthdom Aug 3, 2026
35ea18c
Resolve final partial boundary review findings (#4914)
Widthdom Aug 3, 2026
5158fd1
Preserve persisted Unix path identity (#4914)
Widthdom Aug 3, 2026
305bfee
Harden Windows hook regression fixture (#4914)
Widthdom Aug 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions COMPATIBILITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,17 @@ metadata, unknown-extension counts, filesystem case-sensitivity, MAC profile,
and DB/WAL/status diagnostics. These stamps let readers distinguish a feature
that is absent, stale, or newer than the running binary.

The canonical C# partial-declaration change in #4914 raises
`hotspot_family_version_csharp` from `2` to `14` and the reference-identity
contract from `6` to `8`. The minimum compatible implementation is therefore a
binary that understands hotspot-family contract `14` and reference-identity
contract `8`. Existing databases remain readable, but their C# family and
reference-identity data is reported as stale until a rebuild with
`cdidx index <projectPath> --rebuild` refreshes the persisted partial metadata
and reference candidates.
Older binaries treat those newer stamps as forward-version data and must retain
their normal query degradation and write-refusal behavior.

Reference-extraction cap hits use existing per-file `file_issues` rows rather
than a new schema bit. Current readers aggregate those rows into
`reference_extraction_cap_hits` and set `reference_graph_complete=false`; a
Expand Down Expand Up @@ -121,6 +132,16 @@ metadata、unknown-extension count、filesystem case-sensitivity、MAC profile
DB/WAL/status diagnostics が含まれます。reader はこれらの stamp により、feature
が存在しないのか、stale なのか、実行中 binary より新しいのかを判別できます。

#4914 の canonical C# partial declaration 対応では、
`hotspot_family_version_csharp` を `2` から `14` へ、reference identity contract
を `6` から `8` へ更新します。したがって最低互換実装は hotspot-family contract
`14` と reference-identity contract `8` を理解する binary です。既存 database は
引き続き読み取り可能ですが、`cdidx index <projectPath> --rebuild` で永続 partial
metadata と reference candidate を更新するまでは、C# family / reference identity
data が stale として報告されます。古い binary はこれらの新しい stamp を
forward-version data として扱い、通常の query degradation と write refusal を
維持しなければなりません。

reference-extraction cap hit は新しい schema bit ではなく、既存の file ごとの
`file_issues` row を使います。current reader はそれを `reference_extraction_cap_hits`
へ集約して `reference_graph_complete=false` にします。issue state を確認できない
Expand Down
4 changes: 4 additions & 0 deletions TESTING_GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -562,6 +562,8 @@ Use `docs/test-doc-maintenance-plan.md` before moving oversized suites or adding
indexes one real C# fixture containing user-defined generic classes and delegates, block-comment generic trivia, repeated same-line generic names under indentation, unrelated same-name properties, ordinal-case type/property collisions, `Action<T>` / `Stream` references, and uppercase property receivers split across partial-class and inherited-base files. Keep CLI `references`, `inspect`, and `deps` assertions together with the MCP `references`, `analyze_symbol`, and `deps` wrappers so unresolved diagnostics, generic-arity selection, case-sensitive receiver handling, false dependency-edge suppression, and preservation of real member dependencies cannot drift across surfaces.
- `QueryCommandRunnerTests.ConstructorCommands_KeepCallableAndPartialTypeResultsSeparate_Issue4850`
keeps explicit constructors split across partial declarations in one fixture. Preserve the separate `definition` / `goto --kind function` assertions and the grouped `--kind class --group-partials` assertion so callable constructor results cannot merge back into logical type-family results.
- `QueryCommandRunnerTests.PartialCanonicalRepresentative_UsesSemanticRulesAndExposesFamilyNavigation_Issue4914`, `PartialCanonicalRepresentative_GroupsSplitModifierAndRanksLeadingEvidence_Issue4914`, `PartialCanonicalRepresentative_PersistsSplitModifierAndLeadingSemanticEvidence_Issue4914`, `PartialCanonicalRepresentative_RespectsFileLocalAndLexedEvidence_Issue4914`, `PartialCanonicalRepresentative_HonorsCaseSensitiveProjectMarkerCasing_Issue4914Review`, `GroupPartials_DegradesSafelyWhenCSharpFamilyContractIsStale_Issue4914`, and `PartialCanonicalRepresentative_FallsBackToDesignerPathForOldDatabaseMetadata_Issue4914`
keep canonical partial-family ranking and navigation in one contract. Preserve partial classes, records (stored under the existing C# class kind) whose base lists repeat the declared name, file-local partial hosts that group only within one source file, partial types and containing generic types with distinct arity, case-sensitive project-marker casing when resolving nullable custom types, and declaration/implementation partial methods whose parameter attributes, names, quoted or commented defaults, declaration/type-position comments, comments between the identifier/generic parameters/parameter list, predefined and `dynamic` / `object` aliases, nullable value-type equivalents, predefined reference-type nullable annotations, explicitly global-rooted framework aliases with verbatim segments, shadowable unrooted `System` types, meaningful global-root qualification, qualified type leaves that collide with method generic-parameter names, verbatim method or type escapes, or user-type casing differ; lexer-confirmed identifier columns and semantic evidence when same-name attribute calls or documentation-like block-comment decoys precede the declaration; preceding-line `partial` modifiers across blank or C# comment trivia, modifiers after a balanced same-line attribute list, attributes bound only to their same-line declaration occurrence, repeated same-line declarations with distinct navigation columns, and blank-detached XML documentation that must not rank across extraction-worker transport, post-extraction hook cloning, and DB persistence; conservative physical-row fallback for stale family metadata whose arity-less keys would otherwise collide, while the Issue4850 LSP constructor fixture still distinguishes stale-index partial type targets; the non-C# function-column fallback; generated metadata and designer-name fallback; reversed insertion order and rebuild-stable family IDs; a semantic primary that remains primary after a path rename; normalized identifier-aligned member columns and normalized verbatim-identifier navigation ranges; a bounded family list that retains a late-sorting representative; grouped `definition` metadata; canonical `goto`; and physical `goto --all`. Keep the legacy-column fixture separate so schema initialization cannot silently restore the metadata being tested as absent.
- `LspServerTests.cs`
LSP JSON-RPC behavior and indexed editor semantics. Reference parity coverage must compare LSP locations with the matching CLI candidate bundle, including overload identity and both `includeDeclaration` states. Keep document/workspace identifier ranges and explicit-versus-inferred inlay hints in one source-semantics fixture so persisted-column anchoring, source confirmation, and hint suppression cannot drift independently.
The issue-4870 kind-mapping matrix seeds every registered built-in internal kind plus semantic constructor and enum-member rows, then asserts decoded document-symbol, workspace-symbol, and completion responses. It also feeds real TypeScript, Kotlin, Solidity, Java, Swift, Dart, Visual Basic, Pascal, C#, and Shell extractor output through the shared mapper so keyword, compact, named, dedicated-name, and verbatim-identifier constructors; same-name, return-typed, object/static, and shell non-constructors; decorated, escaped, indirect, and comma-grouped enum entries; and nested enums cannot invert classification. It separately pins the conservative parameter and unknown/plugin fallback. Keep all three protocol surfaces in that one fixture so constructor/import handling and deliberate fallback mappings cannot drift.
Expand Down Expand Up @@ -1518,6 +1520,8 @@ dotnet test --filter "FullyQualifiedName~GitHelperTests"
は user-defined generic class / delegate、generic 間の block comment trivia、indent 下で同一行に反復する同名 generic、無関係な同名 property、大文字小文字だけ異なる type / property collision、`Action<T>` / `Stream` reference、partial class の別ファイルおよび継承 base file に分かれた大文字始まりの property receiver を含む実 C# fixture を1回 index します。CLI の `references`、`inspect`、`deps` と MCP wrapper の `references`、`analyze_symbol`、`deps` を同じ fixture で検証し、unresolved 診断、generic arity による選択、case-sensitive receiver 判定、偽 dependency edge の抑制、実在する member dependency の維持が surface 間でずれないよう維持してください。
- `QueryCommandRunnerTests.ConstructorCommands_KeepCallableAndPartialTypeResultsSeparate_Issue4850`
は partial declaration の別ファイルに分かれた明示 constructor を 1 つの fixture にまとめます。callable constructor result が logical type-family result に再び混在しないよう、`definition` / `goto --kind function` の検証と、`--kind class --group-partials` による grouped type の検証を分離したまま維持してください。
- `QueryCommandRunnerTests.PartialCanonicalRepresentative_UsesSemanticRulesAndExposesFamilyNavigation_Issue4914`、`PartialCanonicalRepresentative_GroupsSplitModifierAndRanksLeadingEvidence_Issue4914`、`PartialCanonicalRepresentative_PersistsSplitModifierAndLeadingSemanticEvidence_Issue4914`、`PartialCanonicalRepresentative_RespectsFileLocalAndLexedEvidence_Issue4914`、`GroupPartials_DegradesSafelyWhenCSharpFamilyContractIsStale_Issue4914`、`PartialCanonicalRepresentative_FallsBackToDesignerPathForOldDatabaseMetadata_Issue4914`
は canonical な partial-family ranking と navigation を1つの契約として維持します。partial class、base list で宣言名が再登場する record(既存の C# class kind として保存)、同一 source file 内だけで集約する file-local partial host、arity が異なる partial type 自身と外側 generic type、parameter attribute・名前・quote または comment を含む default・declaration / type 内の comment・identifier / generic parameter / parameter list 間の comment・predefined alias と `dynamic` / `object` alias・nullable value type の同値表記・predefined reference type の nullable annotation・verbatim segment を含む明示的に global-rooted な framework alias・shadow 可能な root のない `System` type・意味のある global-root 修飾・method generic parameter 名と衝突する qualified type leaf・method または type の verbatim escape・user type の大文字小文字が異なる宣言 / 実装の partial method、同名 attribute call や documentation 風 block-comment decoy が宣言より前にある場合も lexer で確認した identifier column と semantic evidence を使うこと、C# comment を含む前の行へ分割された `partial` 修飾子、balanced な同一行 attribute list 後の modifier、正しい同一行 declaration occurrence だけに属する attribute、別々の navigation column を持つ同一行の反復宣言、先行 XML documentation が extraction-worker 搬送、post-extraction hook の clone、DB 保存を越えて残ること、blank-detached XML documentation は rank しないこと、arity のない key が衝突する stale family metadata では物理 row へ保守的に fallback しつつ Issue4850 の LSP constructor fixture では stale-index の partial type target を区別すること、non-C# function の column fallback、generated metadata と designer filename fallback、挿入順を逆転した再構築でも安定する family ID、path rename 後も primary であり続ける semantic declaration、正規化後の identifier に揃った member column と正規化後の verbatim identifier に揃った navigation range、遅い path の representative を保持する上限付き family list、grouped `definition` metadata、canonical `goto`、物理位置を返す `goto --all` を維持してください。欠落 metadata が schema initialization によって暗黙に復元されないよう、legacy-column fixture は独立したままにしてください。
- `LspServerTests.cs`
LSP の JSON-RPC 挙動と indexed editor semantics のテスト。reference parity coverage では、overload identity と `includeDeclaration` の両状態を含め、LSP location と対応する CLI candidate bundle を比較してください。document/workspace の identifier range と explicit/inferred inlay hint は 1 つの source-semantics fixture にまとめ、保存済み column の anchoring、source 上の確認、hint 抑制が別々に drift しないようにします。
issue-4870 の kind-mapping matrix は、登録済みの全 built-in internal kind に加えて semantic な constructor と enum-member の row を seed し、decode 済みの document-symbol、workspace-symbol、completion response を検証します。また、実際の TypeScript、Kotlin、Solidity、Java、Swift、Dart、Visual Basic、Pascal、C#、Shell extractor 出力を shared mapper に通し、keyword / compact / named / 専用名 / 逐語識別子 constructor、同名 / 戻り値型付き / object・static / shell の非 constructor、annotation 付き / escape 済み / indirect / comma-grouped enum entry、nested enum の分類が逆転しないようにします。保守的な parameter および未知/plugin fallback は別途固定します。constructor/import の処理と意図的な fallback mapping がずれないよう、3つの protocol surface を同じ fixture に維持してください。
Expand Down
Loading
Loading