From 2e73767b5e0a2a4842bb889596bb18e078acff5e Mon Sep 17 00:00:00 2001 From: PhysShell <45852143+PhysShell@users.noreply.github.com> Date: Wed, 21 Oct 2026 04:43:00 +0500 Subject: [PATCH 1/3] =?UTF-8?q?docs(evidence):=20P-014=20reference=20cover?= =?UTF-8?q?age=20=E2=80=94=20pre-registration,=20controls,=20instrument?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Current-state claims checked in main c6e8a3c1 (single compilation, TPA of the net8 extractor process, recursive first-filename-wins ref-dir, no MSBuild evaluation, no binding metric; default parse options, no implicit usings). Five projects chosen by rule (3 sweep repos with assets, 2 desktop pairs), modes A (current) / B (TFM ref packs + assets compile assets, APPROXIMATION: package sha512 differs from the cache) / C (source-set probe), controls K1-K7, GO/KILL thresholds. Fixed before any measuring run. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01TFkNAFFQz9KoTzpPws8vYG --- .../00-preregistration.md | 147 ++++++++++++++++++ .../controls/make_controls.py | 114 ++++++++++++++ .../instrument/P014Bind.csproj | 15 ++ .../instrument/Program.cs | 145 +++++++++++++++++ 4 files changed, 421 insertions(+) create mode 100644 docs/evidence/p014-reference-coverage-2026-10/00-preregistration.md create mode 100644 docs/evidence/p014-reference-coverage-2026-10/controls/make_controls.py create mode 100644 docs/evidence/p014-reference-coverage-2026-10/instrument/P014Bind.csproj create mode 100644 docs/evidence/p014-reference-coverage-2026-10/instrument/Program.cs diff --git a/docs/evidence/p014-reference-coverage-2026-10/00-preregistration.md b/docs/evidence/p014-reference-coverage-2026-10/00-preregistration.md new file mode 100644 index 00000000..e339f9a6 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/00-preregistration.md @@ -0,0 +1,147 @@ +# P-014 reference-resolution coverage — pre-registration + +Written 2026-10-21 04:45 +05, before any measuring run. Budget: 0.25 agent-day to the first GO/KILL decision, +counted from 04:37. Not extended. + +## 0. Current state, checked in code (`main` `c6e8a3c1`, `frontend/roslyn/OwnSharp.Extractor/Program.cs`) + +| Claim | Verdict | Where | +|---|---|---| +| All inputs go into one `CSharpCompilation.Create("own", …)` with default options | confirmed | `:5983-5985` | +| The framework set is the extractor **process's** `TRUSTED_PLATFORM_ASSEMBLIES`; the extractor targets `net8.0`, so on this host that is the Microsoft.NETCore.App **8.0.31 implementation**, not the target TFM's reference pack | confirmed | `:5889-5894`; `OwnSharp.Extractor.csproj:5` | +| `--ref-dir` and the auto-added project `bin/` are loaded recursively, **first simple filename wins**, and any name already in TPA is skipped | confirmed | `:5911-5933`, `:536-547` | +| No MSBuild evaluation: a `.csproj` is resolved by text to a source set | confirmed | `:276-292` | +| No quantitative semantic-binding report; `--stats` counts flow-locals coverage only | confirmed | `:5993-5997` | +| Also seen: trees are parsed with default `CSharpParseOptions`, with no preprocessor symbols; SDK implicit/global usings are not generated | confirmed | `:5867` | + +The last row is a **source-set** effect, not a reference effect. It is measured separately (mode C) and never +credited to references. + +## 1. Inputs (fixed now; chosen by rule, not by expected gain) + +**Rule.** +1. Take every corpus repository that has a `project.assets.json` already on disk and whose sources are present: + the 3 design-B sweep repositories that have one, plus the direction-research pairs whose assets list packages + that all exist by id/version in the local global cache. +2. From the sweep repositories take all 3. From the qualifying pairs take the 2 that are WPF/desktop + applications (BB84.IPTV, FluentFlyout); the other qualifying ones are libraries (LiteDB, MarkView). +3. In each repository take the largest non-test, non-sample project by `.cs` count. + +| # | Project | SHA | Kind | TFM measured | Assets packages / present by id in global cache | +|---|---|---|---|---|---| +| P1 | Flow-Launcher/Flow.Launcher — `Flow.Launcher/Flow.Launcher.csproj` | `2efbf865` | WPF app, 3 project references | `net9.0-windows10.0.19041.0` | 165 / 89 | +| P2 | git-ecosystem/git-credential-manager — `src/Core/Core.csproj` | `e66693fa` | library | `net10.0` | 37 / 17 | +| P3 | nats-io/nats.net — `src/NATS.Client.JetStream/NATS.Client.JetStream.csproj` | `176e52bc` | multi-targeted library, 1 project reference | **`net8.0`** (fixed; of netstandard2.0/2.1/net8.0/net10.0) | 28 / 19 | +| P4 | BoBoBaSs84/BB84.IPTV — `src/BB84.IPTV.M3U.Editor/BB84.IPTV.M3U.Editor.csproj` (pair #36 base) | `e9ab4f28` | desktop app, 3 project references | `net10.0` | 87 / 87 | +| P5 | MERURUXD/FluentFlyout — `FluentFlyoutWPF/FluentFlyout.csproj` (pair #3 base) | `911dfda6` | WPF app | `net10.0-windows10.0.22000.0` (first listed) | 19 / 19 | + +**Provenance of the artifacts** (recorded, not trusted): +- **P1–P3.** The assets were written on 2026-10-17 between 17:22 and 17:30 by CodeQL buildless extraction. That + is before the D13 isolation (2026-10-18). Their `packageFolders` (`codeqldb/working/packages`, the VS shared + folder) no longer hold the packages. +- **P4–P5.** The assets come from the isolated pair restores of 2026-10-18. +- **Package hashes.** For **every** package of all five, the `sha512` in the assets differs from the + `.nupkg.sha512` in the global cache. Same id and version, different package file. Package identity is therefore + **not provable**, and every mode-B reference is labelled `APPROXIMATION`. + +**Local SDK/TFM.** +- Runtimes: NETCore.App 6.0.36 / 8.0.31 / 10.0.12; AspNetCore.App and WindowsDesktop.App 8.0.31 / 10.0.12. +- Reference packs: Microsoft.NETCore.App.Ref, AspNetCore.App.Ref and WindowsDesktop.App.Ref 8.0.31 and 10.0.12; + NETStandard.Library.Ref 2.1.0. +- **There is no 9.0 reference pack**, so P1's exact TFM is `UNAVAILABLE_UNDER_D13`. P1's mode B uses the 10.0.12 + packs and is labelled `TFM-APPROX`. + +## 2. Modes (one instrument, identical sources and options in every mode) + +**Common to all modes.** +- **Sources.** All `.cs` files under the project directory, excluding `bin`/`obj`, as the extractor's `.csproj` + path resolves them. The list is written to disk once and used by every mode. +- **Parse options.** `CSharpParseOptions.Default` (no defines), as the extractor uses. +- **Compilation options.** `new CSharpCompilationOptions(DynamicallyLinkedLibrary)`. + +| Mode | References | +|---|---| +| **A, current** | every DLL of `shared/Microsoft.NETCore.App/8.0.31`, i.e. the extractor process's TPA. Plus the project's `bin/` (absent in all five), first filename wins | +| **B, project-specific (`APPROXIMATION`)** | the target TFM's reference pack(s): NETCore.App.Ref, plus AspNetCore/WindowsDesktop.App.Ref when the assets' `frameworkReferences` name them. Plus, for every package in `targets[]`, its `compile` assets (excluding `_._`) from the global cache. A package missing from the cache is recorded, never substituted. No DLL from another TFM; no name-based replacement of a framework assembly | +| **C, source-set probe (not part of A/B)** | A plus one generated file of the SDK default global usings for the project's SDK. It measures how much binding loss is source-set rather than reference | + +Project-to-project references are not built, so in every mode their types bind only if the project's own sources +declare them. This is recorded as a `source set` cause. + +**R3 (extractor chain).** The unchanged extractor, built offline from `main` with packages from the local cache +only. It runs with `--flow-locals`, as in `own-check`: + +- **A-ext:** as shipped. +- **B-ext:** `OWN_EXTRA_REF_DIRS` = the same framework reference packs as B, plus `--ref-dir` for each package + `compile` folder of B. + + The extractor keeps its TPA first, so B-ext is the best that **today's** extractor can be given, and it is not + identical to B. Both are reported. +- **Core:** the Python reference core (`python -m ownlang ownir`, the `own-check` default). No Rust core is built + on this host, and building one needs cargo dependencies, so that is skipped. + +## 3. Metrics (all with numerators and denominators) + +Per project and mode: +- **Method binding.** `InvocationExpressionSyntax` sites counted as resolved (`Symbol` non-null), + ambiguous/candidates (`CandidateSymbols` > 0, `Symbol` null), or unresolved. +- **Type binding.** `TypeSyntax` in declarations, `new`, base lists, parameters and fields, counted as resolved or + `IErrorTypeSymbol`. +- **Event binding.** `+=`/`-=` whose left side is a member access, counted as `IEventSymbol`, other symbol, or + unresolved. +- **Compiler errors** by code, with CS0012, CS0246, CS0234, CS1061, CS0103 and CS0117 broken out. +- **R2, per site.** Every site whose status differs between A and B, recorded with file:line, expression, both + statuses, `SymbolKind`, containing type, signature and containing assembly. + + Classification: + - `RECOVERED_CORRECT`; + - `RECOVERED_WRONG`: B binds but to a symbol whose containing assembly is not the package or framework assembly + that declares the named type, or A had a different symbol; + - `STILL_UNRESOLVED`; + - `AMBIGUOUS`; + - `NOT_COMPARABLE`. + + A fixed random sample of 10 `RECOVERED` sites per project (seed `20261021`) is checked by reading the code. +- **Cause categories** for sites unresolved in A: fixed by B → `missing/mismatched reference`; fixed by C only → + `source set (implicit usings)`; type declared in a referenced project → `source set (project reference)`; + unresolved in all modes → `still unresolved` (unattributed). The B-vs-A difference attributable to TFM (8.0 + implementation vs target reference pack) is reported where B binds a framework-only member. +- **R3.** Extractor stats, OwnIR fact counts by kind (`functions`, `subscriptions`, `services`, flow `acquire`, + OWN050), and core findings by rule, for A-ext vs B-ext. Every finding change is listed and triaged as TP / FP / + UNCLEAR by reading the code. A chain `reference → symbol → fact → diagnostic` is written for each change, and + where it breaks, the break point is named, including #382-type lowering. + +## 4. Controls (synthetic, in `controls/`, run through the same instrument; written before the first run) + +| # | Control | Expected | +|---|---|---| +| K1 | sources and references already consistent (BCL only) | A == B, no site changes | +| K2 | two emitted assemblies with the same filename `Lib.dll`, different identity/version, in two folders | A's first-filename-wins is recorded; B takes only the one its manifest names | +| K3 | one package with `lib/net8.0` and `lib/netstandard2.0` | B uses only the TFM the manifest selects | +| K4 | two source "projects" declaring the same FQN `Dup.T` | recorded as ambiguous/conflict, never `RECOVERED_CORRECT` | +| K5 | an external `event` and an external `int` field, both used with `+=` | B binds the event as `IEventSymbol` and the field not as an event | +| K6 | a type from an assembly that is not provided | unresolved in A and B; nothing invented | +| K7 | `#if NET8_0 … #else … #endif` | both modes see the same branch (no defines); recorded as a source-set limit | + +## 5. Decision (thresholds fixed now) + +**`GO-P014-BOUNDED-DESIGN` only if all of the following hold:** +1. **N1.** At least 2 independent projects show reference-caused binding loss in A, meaning sites fixed by B and + not by C. The loss must be at least 5% of that project's invocation sites **and** at least 20 sites. +2. **N3.** In each of those projects, at least 9 of the 10 sampled `RECOVERED` sites are `RECOVERED_CORRECT`. + K1–K6 pass. +3. **N4.** At least one triaged useful change in OwnIR facts or core findings, A-ext vs B-ext. That is: a new TP, + or a removed FP, or an OWN050 replaced by a correct fact. A change in compiler diagnostics alone does not count. +4. **N2 and cost.** B's references come from on-disk artifacts without any build, restore or MSBuild evaluation, + and the cost of shipping them is bounded without `MSBuildWorkspace`. + +**`KILL-P014-REFERENCE-INVESTMENT`** if any of: +- fewer than 2 projects meet item 1; +- recovered sites are wrong (item 2 fails), or a control fails; +- the gain stops at compiler diagnostics (item 3 fails); +- B needs a forbidden action; +- the budget runs out. + +**`INCONCLUSIVE-P014`** if item 1 holds for exactly one project and the reason the others cannot be measured is +input availability (packages missing from the cache, or the TFM pack absent), not a measured null effect. The +sample is not widened after the first run. diff --git a/docs/evidence/p014-reference-coverage-2026-10/controls/make_controls.py b/docs/evidence/p014-reference-coverage-2026-10/controls/make_controls.py new file mode 100644 index 00000000..24c5667d --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/controls/make_controls.py @@ -0,0 +1,114 @@ +# ruff: noqa: E501, RUF005 (control sources are inline C# one-liners) +"""Build the synthetic controls K1-K7 (00-preregistration.md §4) into /K/ as +{sources/, refs_A.txt, refs_B.txt, refs_C.txt}. Library DLLs are emitted by the instrument (`emit`). + +usage: python -I make_controls.py --tool --tpa --refpack --out +""" + +from __future__ import annotations + +import argparse +import glob +import os +import subprocess + +LIB_V1 = "namespace Lib { public class Api { public static int V1Only() => 1; public event System.EventHandler? Changed; public int Count; } }" +LIB_V2 = "namespace Lib { public class Api { public static int V2Only() => 2; public event System.EventHandler? Changed; public int Count; } }" +PKG_NET8 = ( + 'namespace Pkg { public static class Tfm { public static string Net8Only() => "net8"; } }' +) +PKG_NS20 = ( + 'namespace Pkg { public static class Tfm { public static string Ns20Only() => "ns20"; } }' +) + +SOURCES = { + "K1": { + "a.cs": "using System.Collections.Generic; class K1 { int M() { var l = new List(); l.Add(1); return l.Count; } }" + }, + "K2": {"a.cs": "class K2 { int M() => Lib.Api.V2Only(); }"}, + "K3": {"a.cs": "class K3 { string M() => Pkg.Tfm.Net8Only(); }"}, + "K4": { + "p1/a.cs": "namespace Dup { public class T { public void One() {} } }", + "p2/b.cs": "namespace Dup { public class T { public void Two() {} } }", + "use.cs": "class K4 { void M() { new Dup.T().One(); } }", + }, + "K5": {"a.cs": "class K5 { void M(Lib.Api a) { a.Changed += (s, e) => { }; a.Count += 1; } }"}, + "K6": {"a.cs": "class K6 { void M() { Missing.Thing.Do(); var x = new Missing.Thing(); } }"}, + "K7": { + "a.cs": "class K7 { void M() {\n#if NET8_0\n System.Console.WriteLine(1);\n#else\n NotDefinedWithoutDefines();\n#endif\n} }" + }, +} + + +def emit(tool: str, refpack: str, name: str, src: str, out_dll: str, version: str) -> None: + os.makedirs(os.path.dirname(out_dll), exist_ok=True) + srcf = out_dll + ".src.cs" + open(srcf, "w", encoding="utf-8").write(src) + subprocess.run(["dotnet", tool, "emit", name, version, srcf, out_dll, refpack], check=True) + + +def main() -> int: + ap = argparse.ArgumentParser() + ap.add_argument("--tool", required=True) + ap.add_argument("--tpa", required=True) + ap.add_argument("--refpack", required=True) + ap.add_argument("--out", required=True) + a = ap.parse_args() + tpa = sorted(glob.glob(os.path.join(a.tpa, "*.dll"))) + rp = sorted(glob.glob(os.path.join(a.refpack, "*.dll"))) + libs = os.path.join(a.out, "_libs") + emit(a.tool, a.refpack, "Lib", LIB_V1, os.path.join(libs, "v1", "Lib.dll"), "1.0.0.0") + emit(a.tool, a.refpack, "Lib", LIB_V2, os.path.join(libs, "v2", "Lib.dll"), "2.0.0.0") + emit( + a.tool, + a.refpack, + "Pkg", + PKG_NET8, + os.path.join(libs, "pkg", "lib", "net8.0", "Pkg.dll"), + "1.0.0.0", + ) + emit( + a.tool, + a.refpack, + "Pkg", + PKG_NS20, + os.path.join(libs, "pkg", "lib", "netstandard2.0", "Pkg.dll"), + "1.0.0.0", + ) + v1, v2 = os.path.join(libs, "v1", "Lib.dll"), os.path.join(libs, "v2", "Lib.dll") + p8 = os.path.join(libs, "pkg", "lib", "net8.0", "Pkg.dll") + p20 = os.path.join(libs, "pkg", "lib", "netstandard2.0", "Pkg.dll") + # mode A mimics the extractor: TPA + recursive first-filename-wins over the extra folders (ordinal sort); + # mode B is the manifest-selected set: reference pack + exactly the assets the manifest names. + refs = { + "K1": (tpa, rp), + "K2": ( + tpa + [v1], + rp + [v2], + ), # ordinal sort puts v1/ before v2/: A gets v1; manifest names v2 + "K3": (tpa + [p8 if p8 < p20 else p20], rp + [p8]), + "K4": (tpa, rp), + "K5": (tpa + [v2], rp + [v2]), + "K6": (tpa, rp), + "K7": (tpa, rp), + } + for k, files in SOURCES.items(): + d = os.path.join(a.out, k) + for rel, text in files.items(): + p = os.path.join(d, "sources", rel) + os.makedirs(os.path.dirname(p), exist_ok=True) + open(p, "w", encoding="utf-8").write(text) + ra, rb = refs[k] + for mode, lst in (("A", ra), ("B", rb), ("C", ra)): + open(os.path.join(d, f"refs_{mode}.txt"), "w", encoding="utf-8").write( + "\n".join(lst) + "\n" + ) + open(os.path.join(d, "sources.txt"), "w", encoding="utf-8").write( + "\n".join(sorted(glob.glob(os.path.join(d, "sources", "**", "*.cs"), recursive=True))) + + "\n" + ) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/docs/evidence/p014-reference-coverage-2026-10/instrument/P014Bind.csproj b/docs/evidence/p014-reference-coverage-2026-10/instrument/P014Bind.csproj new file mode 100644 index 00000000..d954a1c4 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/instrument/P014Bind.csproj @@ -0,0 +1,15 @@ + + + + Exe + net8.0latest + enable + enable + p014bind + + + $(RoslynDir)/Microsoft.CodeAnalysis.dll + $(RoslynDir)/Microsoft.CodeAnalysis.CSharp.dll + + diff --git a/docs/evidence/p014-reference-coverage-2026-10/instrument/Program.cs b/docs/evidence/p014-reference-coverage-2026-10/instrument/Program.cs new file mode 100644 index 00000000..e69745b3 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/instrument/Program.cs @@ -0,0 +1,145 @@ +// P-014 reference-coverage instrument (research only). Same sources, parse and compilation options in every mode; +// only the reference list differs (00-preregistration.md §2). +// +// p014bind emit +// p014bind measure --sources --refs-A --refs-B --refs-C [--c-extra ] --out +using System.Reflection; +using System.Text.Json; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; + +if (args[0] == "emit") +{ + var (name, ver, src, outDll, refDir) = (args[1], args[2], args[3], args[4], args[5]); + var text = $"[assembly: System.Reflection.AssemblyVersion(\"{ver}\")]\n" + File.ReadAllText(src); + var refs = Directory.EnumerateFiles(refDir, "*.dll").Select(p => (MetadataReference)MetadataReference.CreateFromFile(p)); + var c = CSharpCompilation.Create(name, [CSharpSyntaxTree.ParseText(text)], refs, + new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary, nullableContextOptions: NullableContextOptions.Enable)); + var r = c.Emit(outDll); + if (!r.Success) { foreach (var d in r.Diagnostics.Where(d => d.Severity == DiagnosticSeverity.Error)) Console.Error.WriteLine(d); return 1; } + return 0; +} + +string? srcList = null, outDir = null, cExtra = null; +var refLists = new Dictionary(); +for (var i = 1; i < args.Length; i++) +{ + switch (args[i]) + { + case "--sources": srcList = args[++i]; break; + case "--refs-A": refLists["A"] = args[++i]; break; + case "--refs-B": refLists["B"] = args[++i]; break; + case "--refs-C": refLists["C"] = args[++i]; break; + case "--c-extra": cExtra = args[++i]; break; + case "--out": outDir = args[++i]; break; + default: throw new ArgumentException(args[i]); + } +} +Directory.CreateDirectory(outDir!); +var files = File.ReadAllLines(srcList!).Where(l => l.Trim().Length > 0).ToList(); +// identical parse: the extractor's ParseText(text, path) with default options +var trees = files.Select(f => CSharpSyntaxTree.ParseText(File.ReadAllText(f), path: f)).ToList(); +var sites = new SortedDictionary>(StringComparer.Ordinal); +var summary = new Dictionary(); +foreach (var (mode, listPath) in refLists.OrderBy(k => k.Key)) +{ + var refPaths = File.ReadAllLines(listPath).Where(l => l.Trim().Length > 0).ToList(); + var refs = new List(); + var loadFail = 0; + foreach (var p in refPaths) + try { refs.Add(MetadataReference.CreateFromFile(p)); } catch { loadFail++; } + var modeTrees = new List(trees); + if (mode == "C" && cExtra is not null) modeTrees.Add(CSharpSyntaxTree.ParseText(File.ReadAllText(cExtra), path: cExtra)); + var comp = CSharpCompilation.Create("own", modeTrees, refs, new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary)); + var errs = comp.GetDiagnostics().Where(d => d.Severity == DiagnosticSeverity.Error) + .GroupBy(d => d.Id).ToDictionary(g => g.Key, g => g.Count()); + int inv = 0, invOk = 0, invAmb = 0, typ = 0, typOk = 0, ev = 0, evEvent = 0, evOther = 0; + foreach (var t in trees) + { + var sm = comp.GetSemanticModel(t); + var root = t.GetRoot(); + foreach (var n in root.DescendantNodes()) + { + string? kind = null, status = null, detail = ""; + switch (n) + { + case InvocationExpressionSyntax ie: + { + kind = "call"; inv++; + var si = sm.GetSymbolInfo(ie); + if (si.Symbol is { } s) { status = "resolved"; invOk++; detail = Describe(s); } + else if (si.CandidateSymbols.Length > 0) { status = $"ambiguous:{si.CandidateReason}"; invAmb++; detail = string.Join(" | ", si.CandidateSymbols.Take(3).Select(Describe)); } + else status = "unresolved"; + break; + } + case AssignmentExpressionSyntax ae when ae.IsKind(SyntaxKind.AddAssignmentExpression) || ae.IsKind(SyntaxKind.SubtractAssignmentExpression): + { + if (ae.Left is not (MemberAccessExpressionSyntax or IdentifierNameSyntax)) break; + kind = "plus_eq"; ev++; + var s = sm.GetSymbolInfo(ae.Left).Symbol; + if (s is IEventSymbol) { status = "event"; evEvent++; } + else if (s is not null) { status = $"other:{s.Kind}"; evOther++; } + else status = "unresolved"; + detail = s is null ? "" : Describe(s); + break; + } + case TypeSyntax ts when IsTypePosition(ts) && !ts.IsVar: + { + kind = "type"; typ++; + var tt = sm.GetTypeInfo(ts).Type ?? sm.GetSymbolInfo(ts).Symbol as ITypeSymbol; + if (tt is not null && tt.TypeKind != TypeKind.Error) { status = "resolved"; typOk++; detail = Describe(tt); } + else status = "unresolved"; + break; + } + } + if (kind is null) continue; + var pos = n.GetLocation().GetLineSpan().StartLinePosition; + var key = $"{t.FilePath}\t{pos.Line + 1}\t{pos.Character + 1}\t{kind}"; + if (!sites.TryGetValue(key, out var row)) + sites[key] = row = new Dictionary { ["expr"] = Snip(n) }; + row[mode] = status!; + row[mode + "_sym"] = detail; + } + } + summary[mode] = new + { + references = refPaths.Count, load_failures = loadFail, errors = errs, + calls = inv, calls_resolved = invOk, calls_ambiguous = invAmb, + types = typ, types_resolved = typOk, plus_eq = ev, plus_eq_event = evEvent, plus_eq_other = evOther, + }; +} +File.WriteAllText(Path.Combine(outDir!, "summary.json"), JsonSerializer.Serialize(summary, new JsonSerializerOptions { WriteIndented = true })); +var modes = refLists.Keys.OrderBy(k => k).ToList(); +using (var w = new StreamWriter(Path.Combine(outDir!, "sites.tsv"))) +{ + w.WriteLine("file\tline\tcol\tkind\texpr\t" + string.Join('\t', modes.SelectMany(m => new[] { m, m + "_sym" }))); + foreach (var (k, row) in sites) + w.WriteLine(k + "\t" + row["expr"] + "\t" + string.Join('\t', modes.SelectMany(m => new[] { row.GetValueOrDefault(m, "-"), row.GetValueOrDefault(m + "_sym", "") }))); +} +Console.Error.WriteLine($"p014bind: {files.Count} files, {sites.Count} sites, modes {string.Join(",", modes)}"); +return 0; + +static bool IsTypePosition(TypeSyntax ts) => ts.Parent switch +{ + VariableDeclarationSyntax v => v.Type == ts, + ObjectCreationExpressionSyntax o => o.Type == ts, + SimpleBaseTypeSyntax => true, + ParameterSyntax p => p.Type == ts, + PropertyDeclarationSyntax pd => pd.Type == ts, + MethodDeclarationSyntax md => md.ReturnType == ts, + _ => false, +}; + +static string Describe(ISymbol s) +{ + var asm = s.ContainingAssembly is { } a ? $"{a.Identity.Name}/{a.Identity.Version}" : "?"; + var ct = s.ContainingType?.ToDisplayString() ?? s.ContainingNamespace?.ToDisplayString() ?? ""; + return $"{s.Kind}|{ct}|{s.ToDisplayString().Replace('\t', ' ')}|{asm}"; +} + +static string Snip(SyntaxNode n) +{ + var s = string.Join(' ', n.ToString().Split((char[])['\r', '\n', '\t'], StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim())); + return s.Length > 100 ? s[..100] + "…" : s; +} From 6c0e782fcdbdc01147e58eaf279522ff599f80e9 Mon Sep 17 00:00:00 2001 From: PhysShell <45852143+PhysShell@users.noreply.github.com> Date: Wed, 21 Oct 2026 04:52:34 +0500 Subject: [PATCH 2/3] =?UTF-8?q?docs(evidence):=20P-014=20reference=20cover?= =?UTF-8?q?age=20=E2=80=94=20GO-P014-BOUNDED-DESIGN?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mode A (today's compilation) binds 32-48% of call sites in 4 of 5 projects; project-specific references from existing project.assets.json + TFM reference packs (APPROXIMATION: package sha512 differs from the cache) recover 5-31% of calls in P1/P3/P4/P5 (1,240 calls overall), 50/50 sampled recoveries correct, 0 bindings lost; A also binds net8-only overloads for a net9 project. Controls pass; K4 shows the single-compilation model hides duplicate definitions. Through the unchanged extractor: OWN050 -24, +9 findings (1 actionable TP, 2 minor, 6 co-lifetime FP). Implicit usings (source set) are a comparable, separate lever. Instrument fixes before scoring disclosed in REPORT §4. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01TFkNAFFQz9KoTzpPws8vYG --- .../p014-reference-coverage-2026-10/REPORT.md | 204 +++++++++++++++ .../data/controls/K1.sites.tsv | 4 + .../data/controls/K2.sites.tsv | 3 + .../data/controls/K3.sites.tsv | 3 + .../data/controls/K4.sites.tsv | 6 + .../data/controls/K5.sites.tsv | 5 + .../data/controls/K6.sites.tsv | 4 + .../data/controls/K7.sites.tsv | 3 + .../data/manifest.json | 201 +++++++++++++++ .../data/manifest_B_P1.tsv | 15 ++ .../data/manifest_B_P2.tsv | 5 + .../data/manifest_B_P3.tsv | 4 + .../data/manifest_B_P4.tsv | 85 ++++++ .../data/manifest_B_P5.tsv | 23 ++ .../data/r0_r1_summary_P1.json | 109 ++++++++ .../data/r0_r1_summary_P2.json | 105 ++++++++ .../data/r0_r1_summary_P3.json | 101 ++++++++ .../data/r0_r1_summary_P4.json | 67 +++++ .../data/r0_r1_summary_P5.json | 111 ++++++++ .../data/r2_review_sample.tsv | 51 ++++ .../data/r2_summary.tsv | 16 ++ .../data/r2_symbol_changed.tsv | 161 ++++++++++++ .../data/r3/r3_P1.json | 127 +++++++++ .../data/r3/r3_P2.json | 38 +++ .../data/r3/r3_P3.json | 38 +++ .../data/r3/r3_P4.json | 59 +++++ .../data/r3/r3_P5.json | 140 ++++++++++ .../instrument/Program.cs | 2 +- .../scripts/build_modes.py | 244 ++++++++++++++++++ .../scripts/classify.py | 108 ++++++++ .../scripts/run_r3.py | 171 ++++++++++++ 31 files changed, 2212 insertions(+), 1 deletion(-) create mode 100644 docs/evidence/p014-reference-coverage-2026-10/REPORT.md create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/controls/K1.sites.tsv create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/controls/K2.sites.tsv create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/controls/K3.sites.tsv create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/controls/K4.sites.tsv create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/controls/K5.sites.tsv create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/controls/K6.sites.tsv create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/controls/K7.sites.tsv create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/manifest.json create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P1.tsv create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P2.tsv create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P3.tsv create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P4.tsv create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P5.tsv create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P1.json create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P2.json create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P3.json create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P4.json create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P5.json create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/r2_review_sample.tsv create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/r2_summary.tsv create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/r2_symbol_changed.tsv create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/r3/r3_P1.json create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/r3/r3_P2.json create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/r3/r3_P3.json create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/r3/r3_P4.json create mode 100644 docs/evidence/p014-reference-coverage-2026-10/data/r3/r3_P5.json create mode 100644 docs/evidence/p014-reference-coverage-2026-10/scripts/build_modes.py create mode 100644 docs/evidence/p014-reference-coverage-2026-10/scripts/classify.py create mode 100644 docs/evidence/p014-reference-coverage-2026-10/scripts/run_r3.py diff --git a/docs/evidence/p014-reference-coverage-2026-10/REPORT.md b/docs/evidence/p014-reference-coverage-2026-10/REPORT.md new file mode 100644 index 00000000..95519664 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/REPORT.md @@ -0,0 +1,204 @@ +# P-014 reference-resolution coverage — report + +**Decision: `GO-P014-BOUNDED-DESIGN`**, by the pre-registered thresholds. The GO has narrow content: the measured +gain in Own.NET diagnostics is small (§5). + +Rules: [`00-preregistration.md`](00-preregistration.md), commit `2e73767b` (04:43 +05; the "04:45" in its header is +my clock reading, and the commit time is the authoritative one). Own.NET `main` `c6e8a3c1`; extractor built offline +from that commit. Work: 04:37–04:52 +05 on 2026-10-21, inside the 0.25 agent-day budget. + +No production, OwnIR, golden or CI change. No restore, build or MSBuild evaluation of third-party code, no package +download, no `MSBuildWorkspace`. Only artifacts already on disk were read. + +## 1. The five answers + +**1. How much does Own.NET suffer from wrong references?** At the binding level, a lot. In mode A (today's +compilation) only **32–48% of call sites bind in 4 of 5 projects**; P2 is the exception at 89%. Correct +project-specific references (mode B) recover 5–31% of all call sites in 4 projects. Even after B, 35–52% of calls in +P1, P3, P4 and P5 stay unbound. + +**2. Which diagnostic classes lose coverage?** +- Event-subscription facts are hit hardest: `+=` sites that bind to an `IEventSymbol` go 10→35 in P1, 0→5 in P4 and + 11→48 in P5. The lost ones surface as OWN050 "cannot verify" advisories. +- Disposable fields and locals of external types are also lost: OWN001 on a WinForms dialog and on a + `WindowsMediaController.MediaManager` field appear only with references. +- DI facts did not change in any project. + +**3. How many bindings are recovered correctly?** +- 1,240 call sites, 1,028 type sites and 67 event sites are recovered by references and not by implicit usings + (§3). +- A fixed sample of 50 recovered calls (10 per project) was read: **50/50 correct**. +- No site that bound in A lost its binding in B. +- 160 sites changed symbol. On reading, these are A bindings that were imprecise or **wrong for the target TFM**, + not B errors (§3). + +**4. Does recovery reach the existing diagnostics?** Yes, but thinly. Across 5 projects: +- 24 OWN050 disappear; +- 9 findings appear: 1 actionable TP, 2 minor/benign TPs, 6 FPs; +- 2 projects show no change at all. + +The chain breaks mostly because Own.NET analyses consume only `+=`, `new` of disposables and DI registrations. Most +recovered calls (logging, WPF/Avalonia API, System.CommandLine) feed no analysis (§5). + +**5. What is cheapest?** +- **Build-free resolution from existing `obj/project.assets.json`**, plus the TFM reference packs and + package/framework name-conflict resolution. It recovered the bindings without any build. +- **Ready-made compilation artifacts** (`bin/`, `obj/ref`, `.rsp`, binlog): none of the five projects had them, so + this cannot be measured and is unavailable in practice for scanned repositories. +- **A full project system** (`MSBuildWorkspace`) is not needed for what was measured. + +Two limits of the assets route: +- it works only where a restore has already happened; +- package identity is not provable from the cache (§2). + +A separate, comparably large and cheaper lever is the **source set**: SDK implicit usings recover 172 calls in P3, +330 in P5 and 20 in P4 on their own (mode C). + +## 2. Inputs and what was checked in code + +The current-state claims are confirmed in `main` (pre-registration §0): +- one `CSharpCompilation("own", …)`; +- the framework set is the TPA of the `net8.0` extractor process, i.e. the 8.0.31 implementation assemblies; +- `--ref-dir` and `bin/` are loaded recursively, first filename wins; +- no MSBuild evaluation; +- no binding metric; +- default parse options, so no defines and no implicit usings. + +| # | Project @ SHA | TFM measured | B completeness | +|---|---|---|---| +| P1 | Flow.Launcher `Flow.Launcher.csproj` @ `2efbf865` (WPF) | net9.0-windows… | **TFM-APPROX** (no 9.0 pack, used 10.0.12); 70 packages with compile assets missing from the cache; 47 package assets skipped as framework-name conflicts | +| P2 | git-credential-manager `Core.csproj` @ `e66693fa` | net10.0 | 20 packages missing | +| P3 | nats.net `NATS.Client.JetStream.csproj` @ `176e52bc` (multi-TFM) | net8.0 | 2 packages missing | +| P4 | BB84.IPTV `BB84.IPTV.M3U.Editor.csproj` @ `e9ab4f28` (desktop) | net10.0 | complete | +| P5 | FluentFlyout `FluentFlyout.csproj` @ `911dfda6` (WPF) | net10.0-windows10.0.22000.0 | complete, including Windows SDK projection 10.0.22000.57 | + +**All B references are `APPROXIMATION`.** For every package the `sha512` in the assets differs from the +`.nupkg.sha512` in the global cache: same id and version, a different package file. P1–P3's assets were written by +CodeQL buildless extraction on 2026-10-17, before the D13 isolation, and their package folders are gone. + +Reference manifests with per-DLL SHA-256 prefixes are in `data/manifest_B_P*.tsv`, and the overview is in +`data/manifest.json`. + +## 3. R0–R2: binding coverage (`data/r0_r1_summary_P*.json`, `data/r2_summary.tsv`) + +| Project | Calls bound A / B / C (of all) | Recovered by references | Fixed by usings only | Types A→B | `+=` events A→B | +|---|---|---|---|---|---| +| P1 | 925 / 1373 / 925 (of 2844) | **448 (15.8%)** | 0 (ImplicitUsings off) | 2081→2575 | 10→35 | +| P2 | 3401 / 3462 / 3401 (of 3820) | 61 (1.6%) — below threshold | 0 | 5718→5757 | 6→6 | +| P3 | 353 / 396 / 525 (of 839) | **43 (5.1%)** | 172 | 1293→1323 | 0→0 | +| P4 | 169 / 228 / 189 (of 353) | **59 (16.7%)** | 20 | 267→329 | 0→5 | +| P5 | 643 / 1272 / 973 (of 2003) | **629 (31.4%)** | 330 | 1788→2191 | 11→48 | + +Compiler errors in A versus B (CS0246+CS0234+CS0103+CS1061): + +| Project | A | B | +|---|---|---| +| P1 | 3,429 | 2,106 | +| P4 | 385 | 219 | +| P5 | 2,388 | 1,064 | + +These numbers are context only; they were not used for the verdict. + +**Correctness.** The sample (`data/r2_review_sample.tsv`) was read site by site. Each recovered call binds into the +library the file imports: WPF `PresentationCore`/`PresentationFramework`, Microsoft.Extensions.DI/Logging/ +Configuration/Hosting, System.CommandLine, Avalonia, NLog, NAudio, Windows SDK projections. Some recoveries are +cascades and are also correct, e.g. `window.GetType()` once `window`'s type is known, or an overload that resolves +once its argument types are known. The result is 10/10 in each of P1, P3, P4 and P5, and 10/10 in P2. "Correct" +means the symbol and assembly agree with the code's imports and types. It is not checked against a real build. + +**Symbol changes** (`data/r2_symbol_changed.tsv`, 160 sites): +- 116 are A bindings with error-typed parts made precise by B: 112 generic arguments or types that became known, and + 4 arrays whose element type was an error type that A counted as "resolved". +- The other 44 keep the method name but change the signature. Most are parameter types that became known. +- **The TFM effect.** In P1 `TimeSpan.FromHours(5)` binds `FromHours(double)` in A (.NET 8 TPA) and + `FromHours(int)` in B. That overload exists from .NET 9, and P1 targets net9. **A silently binds an overload the + project does not use.** +- No change was judged `RECOVERED_WRONG`. + +**Controls** (`data/controls/`): + +| Control | Result | +|---|---| +| K1 consistent | no change | +| K2 same filename, different identity | **A's first-filename-wins loads v1, so `V2Only()` is unresolved in A**; B, with the manifest-selected v2, resolves it | +| K3 TFM | B uses the selected TFM | +| K5 | `event` vs `int` field `+=` distinguished in both modes | +| K6 | missing type stays unresolved; nothing invented | +| K7 | both modes see the `#else` branch (no defines): a source-set limit | +| **K4** | two `Dup.T` in one compilation produce no "ambiguous": Roslyn binds the first one, in both modes. Definition conflicts are invisible to the single-compilation model, the extractor's included. Since A == B, no false recovery is claimed | + +## 4. Instrument corrections made before scoring (disclosed) + +1. **Framework/package name conflicts.** B initially referenced package compile assets with the same names as + framework reference-pack assemblies. In P1 this gave 11,574 × CS0518 and 771 × CS0433. The pre-registration + forbids that replacement, so such assets are now skipped (P1 47, P2 3, P4 1) and counted. The first output is + kept as `proj-v1` in the work folder only. P5 still shows 59 × CS0433 between two framework references, which + is not resolved. +2. **Site keys.** Nested invocations starting at the same position overwrote each other, which undercounted calls. + The key now includes the span length, and all projects and controls were re-measured. +3. **Path patterns.** Two path bugs in my own driver were fixed: the `out/obj/` assets layout, and the + Windows SDK projection version match. + +No threshold, input or rule changed. + +## 5. R3: does it reach Own.NET? (`data/r3/r3_P*.json`) + +The unchanged extractor was run with `--flow-locals --stats`, then the Python reference core. No Rust core is built on +this host, so the Rust core was not run. + +- **A-ext:** as shipped. +- **B-ext:** `OWN_EXTRA_REF_DIRS` = B's framework packs, plus `--ref-dir` per package compile folder. The TPA stays + first, so B-ext is the most today's extractor can be given. + +| Project | OWN050 A→B | OWN001 A→B | Other | Facts | +|---|---|---|---|---| +| P1 | 27→16 | 5→8 | — | flow functions 5→6, flow acquires 2→3 | +| P2 | 0→0 | 15→15 | — | unchanged | +| P3 | 5→5 | — | — | unchanged | +| P4 | 1→1 | 6→9 | — | unchanged | +| P5 | 15→2 | 1→3 | OWN014 0→1 | flow functions 1→5 | + +Triage of the 9 new findings (code read): + +| Finding | Verdict | +|---|---| +| P5 OWN014 `SettingsManager.Current.PropertyChanged` (`SettingsWindow.xaml.cs:213`): a closeable window's handler captures `RootNavigation`/`Dispatcher` on a static singleton's event, no unsubscribe (`Closed` only nulls `instance`) | **TP, actionable** | +| P5 OWN001 field `mediaManager` (`MainWindow.xaml.cs:48`), never disposed; cleanup only unsubscribes | TP-benign: the window is app-lived | +| P1 OWN001 WinForms `OpenFileDialog dlg` not disposed (`SettingsPaneGeneralViewModel.cs:360`) | TP-minor (`using`) | +| P1 `ProgressBar.IsVisibleChanged` (own XAML child), P1 `link.Click` (local hyperlink in own document), P5 `window.SourceInitialized` (own window), P4 `dialog.Closed` (local dialog) | FP: same lifetime | +| P4 `desktop.Startup` / `desktop.Exit` | FP: app-lived source | + +**Where the chain `reference → symbol → fact → diagnostic` breaks:** +- **symbol → fact.** Of about 1,240 recovered calls, only a handful are `+=` on events or `new` of disposables. The + rest have no consuming analysis, by design. +- **fact → diagnostic.** The newly visible subscriptions fall mostly into the known co-lifetime FP class (D11/D13 + R5). That precision problem is not a reference problem. +- **#382 (call lowering).** Not separately triggered here. P5's flow functions 1→5 show that newly typed + disposable locals do enter the flow pass. Whether their calls are then lowered to guesses was not measured. + +## 6. Verdict against the thresholds + +| Criterion | Result | +|---|---| +| 1. ≥ 2 projects with reference-caused loss ≥ 5% of calls and ≥ 20 sites | **yes: P1, P3, P4, P5** (P2 no) | +| 2. ≥ 9/10 sampled recoveries correct in those projects; K1–K6 pass | **yes**: 10/10 each; controls pass. K4 shows the conflict blind spot, but no false recovery | +| 3. ≥ 1 useful change in OwnIR facts or findings | **yes**: P5 OWN014 TP; OWN050 replaced by verified facts (P5 `mediaManager` events now seen unsubscribed) | +| 4. B from on-disk artifacts, no forbidden action, bounded cost without MSBuildWorkspace | **yes, as `APPROXIMATION`**: package identity unprovable; needs an existing restore | + +So **`GO-P014-BOUNDED-DESIGN`**. What the GO does and does not support: +- The hidden-limit hypothesis is confirmed **at the binding level**. Own.NET today understands roughly a third to a + half of the calls in 4 of these 5 projects, and its finding counts do not show that. +- The **diagnostic** payoff of fixing references alone is small: +1 actionable TP and 2 minor ones against 6 FPs, + over 5 projects. Better references mainly convert OWN050 into checked facts. +- A design should be scoped as **reading existing `project.assets.json`**: select one TFM, add the reference packs, + apply framework-first conflict resolution, and report binding coverage. It should be measured on implicit usings + too, which are a source-set fix outside P-014's reference scope and an earlier owner decision. + +## 7. Files + +- `00-preregistration.md`, `REPORT.md` +- `instrument/` (Roslyn binding instrument), `controls/make_controls.py` +- `scripts/build_modes.py` (A/B/C inputs), `scripts/classify.py` (R2), `scripts/run_r3.py` (R3) +- `data/`: `manifest.json`, `manifest_B_P*.tsv`, `r0_r1_summary_P*.json`, `r2_summary.tsv`, `r2_review_sample.tsv`, + `r2_symbol_changed.tsv`, `r3/`, `controls/`. Local paths are replaced by ``, ``, `` and + ``. Only short expression excerpts appear; no third-party source files, DLLs or packages are committed. diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/controls/K1.sites.tsv b/docs/evidence/p014-reference-coverage-2026-10/data/controls/K1.sites.tsv new file mode 100644 index 00000000..dd9dfcd3 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/controls/K1.sites.tsv @@ -0,0 +1,4 @@ +file line col kind expr A A_sym B B_sym C C_sym +/p014/controls\K1\sources\a.cs 1 46+3 type int resolved NamedType|System|int|System.Private.CoreLib/8.0.0.0 resolved NamedType|System|int|System.Runtime/8.0.0.0 resolved NamedType|System|int|System.Private.CoreLib/8.0.0.0 +/p014/controls\K1\sources\a.cs 1 68+9 type List resolved NamedType|System.Collections.Generic|System.Collections.Generic.List|System.Private.CoreLib/8.0.0.0 resolved NamedType|System.Collections.Generic|System.Collections.Generic.List|System.Collections/8.0.0.0 resolved NamedType|System.Collections.Generic|System.Collections.Generic.List|System.Private.CoreLib/8.0.0.0 +/p014/controls\K1\sources\a.cs 1 81+8 call l.Add(1) resolved Method|System.Collections.Generic.List|System.Collections.Generic.List.Add(int)|System.Private.CoreLib/8.0.0.0 resolved Method|System.Collections.Generic.List|System.Collections.Generic.List.Add(int)|System.Collections/8.0.0.0 resolved Method|System.Collections.Generic.List|System.Collections.Generic.List.Add(int)|System.Private.CoreLib/8.0.0.0 diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/controls/K2.sites.tsv b/docs/evidence/p014-reference-coverage-2026-10/data/controls/K2.sites.tsv new file mode 100644 index 00000000..a33333fd --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/controls/K2.sites.tsv @@ -0,0 +1,3 @@ +file line col kind expr A A_sym B B_sym C C_sym +/p014/controls\K2\sources\a.cs 1 12+3 type int resolved NamedType|System|int|System.Private.CoreLib/8.0.0.0 resolved NamedType|System|int|System.Runtime/8.0.0.0 resolved NamedType|System|int|System.Private.CoreLib/8.0.0.0 +/p014/controls\K2\sources\a.cs 1 23+16 call Lib.Api.V2Only() unresolved resolved Method|Lib.Api|Lib.Api.V2Only()|Lib/2.0.0.0 unresolved diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/controls/K3.sites.tsv b/docs/evidence/p014-reference-coverage-2026-10/data/controls/K3.sites.tsv new file mode 100644 index 00000000..717fee3d --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/controls/K3.sites.tsv @@ -0,0 +1,3 @@ +file line col kind expr A A_sym B B_sym C C_sym +/p014/controls\K3\sources\a.cs 1 12+6 type string resolved NamedType|System|string|System.Private.CoreLib/8.0.0.0 resolved NamedType|System|string|System.Runtime/8.0.0.0 resolved NamedType|System|string|System.Private.CoreLib/8.0.0.0 +/p014/controls\K3\sources\a.cs 1 26+18 call Pkg.Tfm.Net8Only() resolved Method|Pkg.Tfm|Pkg.Tfm.Net8Only()|Pkg/1.0.0.0 resolved Method|Pkg.Tfm|Pkg.Tfm.Net8Only()|Pkg/1.0.0.0 resolved Method|Pkg.Tfm|Pkg.Tfm.Net8Only()|Pkg/1.0.0.0 diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/controls/K4.sites.tsv b/docs/evidence/p014-reference-coverage-2026-10/data/controls/K4.sites.tsv new file mode 100644 index 00000000..b4b78274 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/controls/K4.sites.tsv @@ -0,0 +1,6 @@ +file line col kind expr A A_sym B B_sym C C_sym +/p014/controls\K4\sources\p1\a.cs 1 41+4 type void resolved NamedType|System|void|System.Private.CoreLib/8.0.0.0 resolved NamedType|System|void|System.Runtime/8.0.0.0 resolved NamedType|System|void|System.Private.CoreLib/8.0.0.0 +/p014/controls\K4\sources\p2\b.cs 1 41+4 type void resolved NamedType|System|void|System.Private.CoreLib/8.0.0.0 resolved NamedType|System|void|System.Runtime/8.0.0.0 resolved NamedType|System|void|System.Private.CoreLib/8.0.0.0 +/p014/controls\K4\sources\use.cs 1 12+4 type void resolved NamedType|System|void|System.Private.CoreLib/8.0.0.0 resolved NamedType|System|void|System.Runtime/8.0.0.0 resolved NamedType|System|void|System.Private.CoreLib/8.0.0.0 +/p014/controls\K4\sources\use.cs 1 23+17 call new Dup.T().One() resolved Method|Dup.T|Dup.T.One()|own/0.0.0.0 resolved Method|Dup.T|Dup.T.One()|own/0.0.0.0 resolved Method|Dup.T|Dup.T.One()|own/0.0.0.0 +/p014/controls\K4\sources\use.cs 1 27+5 type Dup.T resolved NamedType|Dup|Dup.T|own/0.0.0.0 resolved NamedType|Dup|Dup.T|own/0.0.0.0 resolved NamedType|Dup|Dup.T|own/0.0.0.0 diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/controls/K5.sites.tsv b/docs/evidence/p014-reference-coverage-2026-10/data/controls/K5.sites.tsv new file mode 100644 index 00000000..b824be72 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/controls/K5.sites.tsv @@ -0,0 +1,5 @@ +file line col kind expr A A_sym B B_sym C C_sym +/p014/controls\K5\sources\a.cs 1 12+4 type void resolved NamedType|System|void|System.Private.CoreLib/8.0.0.0 resolved NamedType|System|void|System.Runtime/8.0.0.0 resolved NamedType|System|void|System.Private.CoreLib/8.0.0.0 +/p014/controls\K5\sources\a.cs 1 19+7 type Lib.Api resolved NamedType|Lib|Lib.Api|Lib/2.0.0.0 resolved NamedType|Lib|Lib.Api|Lib/2.0.0.0 resolved NamedType|Lib|Lib.Api|Lib/2.0.0.0 +/p014/controls\K5\sources\a.cs 1 32+26 plus_eq a.Changed += (s, e) => { } event Event|Lib.Api|Lib.Api.Changed|Lib/2.0.0.0 event Event|Lib.Api|Lib.Api.Changed|Lib/2.0.0.0 event Event|Lib.Api|Lib.Api.Changed|Lib/2.0.0.0 +/p014/controls\K5\sources\a.cs 1 60+12 plus_eq a.Count += 1 other:Field Field|Lib.Api|Lib.Api.Count|Lib/2.0.0.0 other:Field Field|Lib.Api|Lib.Api.Count|Lib/2.0.0.0 other:Field Field|Lib.Api|Lib.Api.Count|Lib/2.0.0.0 diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/controls/K6.sites.tsv b/docs/evidence/p014-reference-coverage-2026-10/data/controls/K6.sites.tsv new file mode 100644 index 00000000..e42828b8 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/controls/K6.sites.tsv @@ -0,0 +1,4 @@ +file line col kind expr A A_sym B B_sym C C_sym +/p014/controls\K6\sources\a.cs 1 12+4 type void resolved NamedType|System|void|System.Private.CoreLib/8.0.0.0 resolved NamedType|System|void|System.Runtime/8.0.0.0 resolved NamedType|System|void|System.Private.CoreLib/8.0.0.0 +/p014/controls\K6\sources\a.cs 1 23+18 call Missing.Thing.Do() unresolved unresolved unresolved +/p014/controls\K6\sources\a.cs 1 55+13 type Missing.Thing unresolved unresolved unresolved diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/controls/K7.sites.tsv b/docs/evidence/p014-reference-coverage-2026-10/data/controls/K7.sites.tsv new file mode 100644 index 00000000..d38f8e9b --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/controls/K7.sites.tsv @@ -0,0 +1,3 @@ +file line col kind expr A A_sym B B_sym C C_sym +/p014/controls\K7\sources\a.cs 1 12+4 type void resolved NamedType|System|void|System.Private.CoreLib/8.0.0.0 resolved NamedType|System|void|System.Runtime/8.0.0.0 resolved NamedType|System|void|System.Private.CoreLib/8.0.0.0 +/p014/controls\K7\sources\a.cs 5 2+26 call NotDefinedWithoutDefines() unresolved unresolved unresolved diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/manifest.json b/docs/evidence/p014-reference-coverage-2026-10/data/manifest.json new file mode 100644 index 00000000..588d70b3 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/manifest.json @@ -0,0 +1,201 @@ +[ + { + "id": "P1", + "project": "repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher/Flow.Launcher.csproj", + "tfm": "net9.0-windows10.0.19041.0", + "assets": "repos\\sweep\\Flow-Launcher__Flow.Launcher\\Flow.Launcher\\obj\\project.assets.json", + "assets_target": "net9.0-windows10.0.19041.0", + "pack_version": "10.0.12", + "pack_exact": false, + "framework_references": [ + "Microsoft.NETCore.App", + "Microsoft.Windows.SDK.NET.Ref.Windows", + "Microsoft.WindowsDesktop.App.WPF" + ], + "missing_packs": [], + "missing_packages_with_compile_assets": [ + "AvalonEdit/6.3.0.90", + "Ben.Demystifier/0.4.1", + "BitFaster.Caching/2.5.4", + "ChefKeys/0.1.2", + "CommunityToolkit.Mvvm/8.4.0", + "DeltaCompressionDotNet/1.1.0", + "Droplex/1.7.0", + "Fizzler/1.1.0", + "Flow.Launcher.Localization/0.0.6", + "FSharp.Core/9.0.303", + "HtmlAgilityPack/1.11.42", + "ini-parser/2.5.2", + "iNKORE.UI.WPF/1.2.8", + "iNKORE.UI.WPF.Modern/0.10.1", + "InputSimulator/1.0.4", + "JetBrains.Annotations/2025.2.2", + "MdXaml/1.27.0", + "MdXaml.AnimatedGif/1.27.0", + "MdXaml.Html/1.27.0", + "MdXaml.Plugins/1.27.0", + "MdXaml.Svg/1.27.0", + "MemoryPack.Core/1.21.4", + "MessagePack/2.5.192", + "MessagePack.Annotations/2.5.192", + "Meziantou.Framework.Win32.Jobs/3.4.5", + "Microsoft.Extensions.Configuration/9.0.9", + "Microsoft.Extensions.Configuration.Binder/9.0.9", + "Microsoft.Extensions.Configuration.CommandLine/9.0.9", + "Microsoft.Extensions.Configuration.EnvironmentVariables/9.0.9", + "Microsoft.Extensions.Configuration.FileExtensions/9.0.9", + "Microsoft.Extensions.Configuration.Json/9.0.9", + "Microsoft.Extensions.Configuration.UserSecrets/9.0.9", + "Microsoft.Extensions.DependencyInjection/9.0.9", + "Microsoft.Extensions.Diagnostics/9.0.9", + "Microsoft.Extensions.FileProviders.Physical/9.0.9", + "Microsoft.Extensions.FileSystemGlobbing/9.0.9", + "Microsoft.Extensions.Hosting/9.0.9", + "Microsoft.Extensions.Logging/9.0.9", + "Microsoft.Extensions.Logging.Configuration/9.0.9", + "Microsoft.Extensions.Logging.Console/9.0.9", + "Microsoft.Extensions.Logging.Debug/9.0.9", + "Microsoft.Extensions.Logging.EventLog/9.0.9", + "Microsoft.Extensions.Logging.EventSource/9.0.9", + "Microsoft.Extensions.Options.ConfigurationExtensions/9.0.9", + "Microsoft.VisualStudio.Threading.Only/17.14.15", + "Microsoft.VisualStudio.Validation/17.8.8", + "Microsoft.Win32.SystemEvents/7.0.0", + "Mono.Cecil/0.9.6.1", + "Nerdbank.Streams/2.12.87", + "NHotkey/3.0.0", + "NHotkey.Wpf/3.0.0", + "NLog/6.0.4", + "NLog.OutputDebugString/6.0.4", + "PropertyChanged.Fody/4.1.0", + "runtime.osx.10.10-x64.CoreCompat.System.Drawing/5.8.64", + "SemanticVersioning/3.0.0", + "SharpCompress/0.17.1", + "SharpVectors.Wpf/1.8.5", + "Splat/1.6.2", + "squirrel.windows/1.9.0", + "StreamJsonRpc/2.22.11", + "Svg/3.0.84", + "System.Diagnostics.EventLog/9.0.9", + "System.Drawing.Common/7.0.0", + "System.Security.AccessControl/6.0.1", + "TaskScheduler/2.12.2", + "ToolGood.Words.Pinyin/3.1.0.3", + "VirtualizingWrapPanel/2.3.1", + "WpfAnimatedGif/2.0.2", + "YamlDotNet/9.1.0" + ], + "sources": 102, + "refs_A": 180, + "refs_B": 231, + "framework_conflicts_skipped": 47, + "bin_present": false, + "implicit_usings": false + }, + { + "id": "P2", + "project": "repos/sweep/git-ecosystem__git-credential-manager/src/Core/Core.csproj", + "tfm": "net10.0", + "assets": "repos\\sweep\\git-ecosystem__git-credential-manager\\out\\obj\\Core\\project.assets.json", + "assets_target": "net10.0", + "pack_version": "10.0.12", + "pack_exact": true, + "framework_references": [ + "Microsoft.NETCore.App" + ], + "missing_packs": [], + "missing_packages_with_compile_assets": [ + "Avalonia/12.0.5", + "Avalonia.Desktop/12.0.5", + "Avalonia.FreeDesktop/12.0.5", + "Avalonia.FreeDesktop.AtSpi/12.0.5", + "Avalonia.HarfBuzz/12.0.5", + "Avalonia.Native/12.0.5", + "Avalonia.Remote.Protocol/12.0.5", + "Avalonia.Skia/12.0.5", + "Avalonia.Themes.Fluent/12.0.5", + "Avalonia.Win32/12.0.5", + "Avalonia.X11/12.0.5", + "MicroCom.Runtime/0.11.4", + "Microsoft.Identity.Client/4.85.2", + "Microsoft.Identity.Client.Broker/4.85.2", + "Microsoft.Identity.Client.Extensions.Msal/4.85.2", + "Microsoft.Identity.Client.NativeInterop/0.20.6", + "Microsoft.IdentityModel.Abstractions/8.14.0", + "Spectre.Console/0.57.0", + "Spectre.Console.Ansi/0.57.0", + "Tmds.DBus.Protocol/0.92.0" + ], + "sources": 214, + "refs_A": 180, + "refs_B": 171, + "framework_conflicts_skipped": 3, + "bin_present": false, + "implicit_usings": false + }, + { + "id": "P3", + "project": "repos/sweep/nats-io__nats.net/src/NATS.Client.JetStream/NATS.Client.JetStream.csproj", + "tfm": "net8.0", + "assets": "repos\\sweep\\nats-io__nats.net\\src\\NATS.Client.JetStream\\obj\\project.assets.json", + "assets_target": "net8.0", + "pack_version": "8.0.31", + "pack_exact": true, + "framework_references": [ + "Microsoft.NETCore.App" + ], + "missing_packs": [], + "missing_packages_with_compile_assets": [ + "NATS.NKeys/1.0.1", + "System.Diagnostics.DiagnosticSource/9.0.1" + ], + "sources": 133, + "refs_A": 180, + "refs_B": 166, + "framework_conflicts_skipped": 0, + "bin_present": false, + "implicit_usings": true + }, + { + "id": "P4", + "project": "evidence/pairs/BoBoBaSs84_BB84.IPTV__36/base/src/BB84.IPTV.M3U.Editor/BB84.IPTV.M3U.Editor.csproj", + "tfm": "net10.0", + "assets": "evidence\\pairs\\BoBoBaSs84_BB84.IPTV__36\\base\\src\\BB84.IPTV.M3U.Editor\\obj\\project.assets.json", + "assets_target": "net10.0", + "pack_version": "10.0.12", + "pack_exact": true, + "framework_references": [ + "Microsoft.NETCore.App" + ], + "missing_packs": [], + "missing_packages_with_compile_assets": [], + "sources": 23, + "refs_A": 180, + "refs_B": 251, + "framework_conflicts_skipped": 1, + "bin_present": false, + "implicit_usings": true + }, + { + "id": "P5", + "project": "evidence/pairs/MERURUXD_FluentFlyout__3/base/FluentFlyoutWPF/FluentFlyout.csproj", + "tfm": "net10.0-windows10.0.22000.0", + "assets": "evidence\\pairs\\MERURUXD_FluentFlyout__3\\base\\FluentFlyoutWPF\\obj\\project.assets.json", + "assets_target": "net10.0-windows10.0.22000.0", + "pack_version": "10.0.12", + "pack_exact": true, + "framework_references": [ + "Microsoft.NETCore.App", + "Microsoft.Windows.SDK.NET.Ref.Windows", + "Microsoft.WindowsDesktop.App.WPF" + ], + "missing_packs": [], + "missing_packages_with_compile_assets": [], + "sources": 63, + "refs_A": 180, + "refs_B": 239, + "framework_conflicts_skipped": 0, + "bin_present": false, + "implicit_usings": true + } +] \ No newline at end of file diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P1.tsv b/docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P1.tsv new file mode 100644 index 00000000..bd503205 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P1.tsv @@ -0,0 +1,15 @@ +package compile_asset sha256_16 +Microsoft.Windows.SDK.NET.Ref/10.0.19041.57 lib\net8.0\Microsoft.Windows.SDK.NET.dll 0ec371d93798852e +Microsoft.Windows.SDK.NET.Ref/10.0.19041.57 lib\net8.0\Microsoft.Windows.UI.Xaml.dll ebde71d1a781a0c5 +Microsoft.Windows.SDK.NET.Ref/10.0.19041.57 lib\net8.0\WinRT.Runtime.dll bcf3a14e8712a908 +Microsoft.Extensions.Configuration.Abstractions/9.0.9 lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.dll d36225749cf87a41 +Microsoft.Extensions.DependencyInjection.Abstractions/9.0.9 lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll 3f733fa41c8b735c +Microsoft.Extensions.Diagnostics.Abstractions/9.0.9 lib/net9.0/Microsoft.Extensions.Diagnostics.Abstractions.dll b02609a53666238e +Microsoft.Extensions.FileProviders.Abstractions/9.0.9 lib/net9.0/Microsoft.Extensions.FileProviders.Abstractions.dll e1d94ad98e17d027 +Microsoft.Extensions.Hosting.Abstractions/9.0.9 lib/net9.0/Microsoft.Extensions.Hosting.Abstractions.dll 6fb66393099b843f +Microsoft.Extensions.Logging.Abstractions/9.0.9 lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll 622cf6cafd1d5a40 +Microsoft.Extensions.Options/9.0.9 lib/net9.0/Microsoft.Extensions.Options.dll 022e30ae3ce6dd2d +Microsoft.Extensions.Primitives/9.0.9 lib/net9.0/Microsoft.Extensions.Primitives.dll 6bf0052e4045d893 +Microsoft.IO.RecyclableMemoryStream/3.0.1 lib/net6.0/Microsoft.IO.RecyclableMemoryStream.dll 631a5fc41df9498d +Microsoft.Toolkit.Uwp.Notifications/7.1.3 lib/net5.0-windows10.0.17763/Microsoft.Toolkit.Uwp.Notifications.dll e6676557727bc03c +Newtonsoft.Json/13.0.3 lib/net6.0/Newtonsoft.Json.dll 22c649f75fce5be7 diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P2.tsv b/docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P2.tsv new file mode 100644 index 00000000..fea8e7f9 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P2.tsv @@ -0,0 +1,5 @@ +package compile_asset sha256_16 +HarfBuzzSharp/8.3.1.3 lib/net8.0/HarfBuzzSharp.dll 55e72ac23263f8e1 +SkiaSharp/3.119.4 ref/net10.0/SkiaSharp.dll b7bf4279ee2384dd +System.CommandLine/2.0.0-beta4.22272.1 lib/net6.0/System.CommandLine.dll 2158cfc2c484ebde +System.Security.Cryptography.ProtectedData/4.5.0 ref/netstandard2.0/System.Security.Cryptography.ProtectedData.dll db5caea46d138caa diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P3.tsv b/docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P3.tsv new file mode 100644 index 00000000..d788c5d7 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P3.tsv @@ -0,0 +1,4 @@ +package compile_asset sha256_16 +Microsoft.Extensions.Logging.Abstractions/6.0.1 lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll c3e73ec5f2e1f102 +Microsoft.Extensions.Primitives/6.0.0 lib/net6.0/Microsoft.Extensions.Primitives.dll 8ce9a85927ec7507 +System.IO.Pipelines/8.0.0 lib/net8.0/System.IO.Pipelines.dll 86d0f5bfaaf1b2ab diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P4.tsv b/docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P4.tsv new file mode 100644 index 00000000..5d5192ce --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P4.tsv @@ -0,0 +1,85 @@ +package compile_asset sha256_16 +Avalonia/12.1.3 ref/net10.0/Avalonia.Base.dll 19da5129694316c9 +Avalonia/12.1.3 ref/net10.0/Avalonia.Controls.dll 5c8c52b7f2654c42 +Avalonia/12.1.3 ref/net10.0/Avalonia.DesignerSupport.dll 55faf5521a523193 +Avalonia/12.1.3 ref/net10.0/Avalonia.Dialogs.dll de5a1090dd258b29 +Avalonia/12.1.3 ref/net10.0/Avalonia.Markup.Xaml.dll f3d598b6c7823fac +Avalonia/12.1.3 ref/net10.0/Avalonia.Markup.dll 68ba3b93577e9c0c +Avalonia/12.1.3 ref/net10.0/Avalonia.Metal.dll 85097ac74109cf52 +Avalonia/12.1.3 ref/net10.0/Avalonia.MicroCom.dll 6ab477f95d313cb8 +Avalonia/12.1.3 ref/net10.0/Avalonia.OpenGL.dll b3a7b07aa86b9d76 +Avalonia/12.1.3 ref/net10.0/Avalonia.Vulkan.dll 081222ebe324c0be +Avalonia/12.1.3 ref/net10.0/Avalonia.dll 6284f2965b409853 +Avalonia.Controls.DataGrid/12.1.2 lib/net10.0/Avalonia.Controls.DataGrid.dll d9d4ee06f7f7e436 +Avalonia.Desktop/12.1.3 lib/net10.0/Avalonia.Desktop.dll e85fa49a6834fa8e +Avalonia.Fonts.Inter/12.1.3 lib/net10.0/Avalonia.Fonts.Inter.dll 2fd1bbf9b6c62b3b +Avalonia.FreeDesktop/12.1.3 lib/net10.0/Avalonia.FreeDesktop.dll 7c19c897080a2081 +Avalonia.FreeDesktop.AtSpi/12.1.3 lib/net10.0/Avalonia.FreeDesktop.AtSpi.dll df4d3a06c790d89b +Avalonia.HarfBuzz/12.1.3 lib/net10.0/Avalonia.HarfBuzz.dll 62cecb41cdad1ce9 +Avalonia.Native/12.1.3 lib/net10.0/Avalonia.Native.dll 95489e1f24c9c816 +Avalonia.Remote.Protocol/12.1.3 lib/net10.0/Avalonia.Remote.Protocol.dll 6daf7d6e4c3aed54 +Avalonia.Skia/12.1.3 lib/net10.0/Avalonia.Skia.dll 363e384409908043 +Avalonia.Themes.Fluent/12.1.3 lib/net10.0/Avalonia.Themes.Fluent.dll 4edd7c6111992b08 +Avalonia.Win32/12.1.3 lib/net10.0/Avalonia.Win32.Automation.dll da1da0aa60822a9c +Avalonia.Win32/12.1.3 lib/net10.0/Avalonia.Win32.dll 77061ab9ab28aa6d +Avalonia.X11/12.1.3 lib/net10.0/Avalonia.X11.dll c3051166a1e4132c +AvaloniaUI.DiagnosticsSupport/2.2.3 lib/net10.0/AvaloniaUI.DiagnosticsSupport.Avalonia.dll 6ce4138e84b9ed5f +BB84.EntityFrameworkCore.Entities/5.0.916 lib/net10.0/BB84.EntityFrameworkCore.Entities.dll 617e66ca3cca725f +BB84.EntityFrameworkCore.Entities.Abstractions/5.0.916 lib/net10.0/BB84.EntityFrameworkCore.Entities.Abstractions.dll 682a507c8db5b419 +BB84.EntityFrameworkCore.Repositories/5.0.916 lib/net10.0/BB84.EntityFrameworkCore.Repositories.dll a50f823e5ac6c6e6 +BB84.EntityFrameworkCore.Repositories.Abstractions/5.0.916 lib/net10.0/BB84.EntityFrameworkCore.Repositories.Abstractions.dll 0a307b8b2bd38f4d +BB84.Extensions/5.0.916 lib/net10.0/BB84.Extensions.dll 1cb796d865a5215d +BB84.Notifications/5.0.726 lib/net10.0/BB84.Notifications.dll 0db654fbb4099cac +ExCSS/4.3.1 lib/net8.0/ExCSS.dll 6b166e638181eba3 +HarfBuzzSharp/14.2.0 lib/net10.0/HarfBuzzSharp.dll a28c70688886f875 +MicroCom.Runtime/0.11.6 lib/net8.0/MicroCom.Runtime.dll 2538ec6f3c24e901 +Microsoft.Data.Sqlite.Core/10.0.12 lib/net8.0/Microsoft.Data.Sqlite.dll b98d957462be4328 +Microsoft.EntityFrameworkCore/10.0.12 lib/net10.0/Microsoft.EntityFrameworkCore.dll f5b1703d608e2413 +Microsoft.EntityFrameworkCore.Abstractions/10.0.12 lib/net10.0/Microsoft.EntityFrameworkCore.Abstractions.dll 74bc17c936d66ea0 +Microsoft.EntityFrameworkCore.Relational/10.0.12 lib/net10.0/Microsoft.EntityFrameworkCore.Relational.dll a1e4f36208650b15 +Microsoft.EntityFrameworkCore.Sqlite.Core/10.0.12 lib/net10.0/Microsoft.EntityFrameworkCore.Sqlite.dll 69683d0960188b56 +Microsoft.Extensions.Caching.Abstractions/10.0.12 lib/net10.0/Microsoft.Extensions.Caching.Abstractions.dll eb027242c11808fe +Microsoft.Extensions.Caching.Memory/10.0.12 lib/net10.0/Microsoft.Extensions.Caching.Memory.dll dca415c48a9d6af4 +Microsoft.Extensions.Configuration/10.0.12 lib/net10.0/Microsoft.Extensions.Configuration.dll c11796ac536b45b6 +Microsoft.Extensions.Configuration.Abstractions/10.0.12 lib/net10.0/Microsoft.Extensions.Configuration.Abstractions.dll fb45286fa39f58b9 +Microsoft.Extensions.Configuration.Binder/10.0.12 lib/net10.0/Microsoft.Extensions.Configuration.Binder.dll cdb9894a56084206 +Microsoft.Extensions.Configuration.CommandLine/10.0.12 lib/net10.0/Microsoft.Extensions.Configuration.CommandLine.dll f1b5099d9105ae82 +Microsoft.Extensions.Configuration.EnvironmentVariables/10.0.12 lib/net10.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll f9d770c991b8ccd6 +Microsoft.Extensions.Configuration.FileExtensions/10.0.12 lib/net10.0/Microsoft.Extensions.Configuration.FileExtensions.dll bcbdc341e7134c62 +Microsoft.Extensions.Configuration.Json/10.0.12 lib/net10.0/Microsoft.Extensions.Configuration.Json.dll 91238276267ea5ad +Microsoft.Extensions.Configuration.UserSecrets/10.0.12 lib/net10.0/Microsoft.Extensions.Configuration.UserSecrets.dll c235c7a18dcd91cb +Microsoft.Extensions.DependencyInjection/10.0.12 lib/net10.0/Microsoft.Extensions.DependencyInjection.dll 2d0e268bf76b4ce3 +Microsoft.Extensions.DependencyInjection.Abstractions/10.0.12 lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll da04edc338d5aa0f +Microsoft.Extensions.DependencyModel/10.0.12 lib/net10.0/Microsoft.Extensions.DependencyModel.dll afa9a88cc25e3e2a +Microsoft.Extensions.Diagnostics/10.0.12 lib/net10.0/Microsoft.Extensions.Diagnostics.dll c2b5e806a61d40ce +Microsoft.Extensions.Diagnostics.Abstractions/10.0.12 lib/net10.0/Microsoft.Extensions.Diagnostics.Abstractions.dll 623879199a4d9824 +Microsoft.Extensions.FileProviders.Abstractions/10.0.12 lib/net10.0/Microsoft.Extensions.FileProviders.Abstractions.dll 0ad9800893013d1e +Microsoft.Extensions.FileProviders.Physical/10.0.12 lib/net10.0/Microsoft.Extensions.FileProviders.Physical.dll d57f6e1bcf47468a +Microsoft.Extensions.FileSystemGlobbing/10.0.12 lib/net10.0/Microsoft.Extensions.FileSystemGlobbing.dll 56756b08cdffe4f4 +Microsoft.Extensions.Hosting/10.0.12 lib/net10.0/Microsoft.Extensions.Hosting.dll a78489eb8dbc8a90 +Microsoft.Extensions.Hosting.Abstractions/10.0.12 lib/net10.0/Microsoft.Extensions.Hosting.Abstractions.dll 37c244f5685ca031 +Microsoft.Extensions.Http/10.0.12 lib/net10.0/Microsoft.Extensions.Http.dll 5f1f986dda7614d8 +Microsoft.Extensions.Logging/10.0.12 lib/net10.0/Microsoft.Extensions.Logging.dll 05b76234f2a5eb94 +Microsoft.Extensions.Logging.Abstractions/10.0.12 lib/net10.0/Microsoft.Extensions.Logging.Abstractions.dll 7c242f8ca612fa1a +Microsoft.Extensions.Logging.Configuration/10.0.12 lib/net10.0/Microsoft.Extensions.Logging.Configuration.dll 10465e68c4431d3f +Microsoft.Extensions.Logging.Console/10.0.12 lib/net10.0/Microsoft.Extensions.Logging.Console.dll 8564374e3dd121fe +Microsoft.Extensions.Logging.Debug/10.0.12 lib/net10.0/Microsoft.Extensions.Logging.Debug.dll 6f8570299320cb4b +Microsoft.Extensions.Logging.EventLog/10.0.12 lib/net10.0/Microsoft.Extensions.Logging.EventLog.dll bb731e3abd585d69 +Microsoft.Extensions.Logging.EventSource/10.0.12 lib/net10.0/Microsoft.Extensions.Logging.EventSource.dll 0672b48143f7c93d +Microsoft.Extensions.Options/10.0.12 lib/net10.0/Microsoft.Extensions.Options.dll b4ff561da6a7b11b +Microsoft.Extensions.Options.ConfigurationExtensions/10.0.12 lib/net10.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll 460a4ac4770f3e13 +Microsoft.Extensions.Primitives/10.0.12 lib/net10.0/Microsoft.Extensions.Primitives.dll 67642533eb87e8da +Microsoft.IO.RecyclableMemoryStream/3.0.1 lib/net6.0/Microsoft.IO.RecyclableMemoryStream.dll 631a5fc41df9498d +ShimSkiaSharp/5.2.3 lib/net10.0/ShimSkiaSharp.dll d5a801cafed66c27 +SkiaSharp/4.148.0 ref/net10.0/SkiaSharp.dll 6731200c309c5cea +SQLitePCLRaw.bundle_e_sqlite3/2.1.12 lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll 815ce410c9eab531 +SQLitePCLRaw.core/2.1.12 lib/netstandard2.0/SQLitePCLRaw.core.dll af340ac9eb919579 +SQLitePCLRaw.provider.e_sqlite3/2.1.12 lib/net6.0/SQLitePCLRaw.provider.e_sqlite3.dll df996bcae63c2cab +Svg.Animation/5.2.3 lib/net10.0/Svg.Animation.dll 945e0bdda4581007 +Svg.Controls.Skia.Avalonia/12.0.0.17 lib/net10.0/Svg.Controls.Skia.Avalonia.dll 83a8cc9a0e2ddd6a +Svg.Custom/5.2.3 lib/net10.0/Svg.Custom.dll 2d7c63d988eac377 +Svg.Model/5.2.3 lib/net10.0/Svg.Model.dll 4c9a9c65745ce5e1 +Svg.SceneGraph/5.2.3 lib/net10.0/Svg.SceneGraph.dll 010776d45585cae9 +Svg.Skia/5.2.3 lib/net10.0/Svg.Skia.dll 52b6abd42cf1c2f7 +System.Diagnostics.EventLog/10.0.12 lib/net10.0/System.Diagnostics.EventLog.dll 77aae5ac102caa9c +Tmds.DBus.Protocol/0.94.1 lib/net9.0/Tmds.DBus.Protocol.dll 60a1c5255731d8ac diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P5.tsv b/docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P5.tsv new file mode 100644 index 00000000..4fdee08f --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/manifest_B_P5.tsv @@ -0,0 +1,23 @@ +package compile_asset sha256_16 +Microsoft.Windows.SDK.NET.Ref/10.0.22000.57 lib\net8.0\Microsoft.Windows.SDK.NET.dll cb4e0427fe909086 +Microsoft.Windows.SDK.NET.Ref/10.0.22000.57 lib\net8.0\Microsoft.Windows.UI.Xaml.dll cf1de8c2a14fe42e +Microsoft.Windows.SDK.NET.Ref/10.0.22000.57 lib\net8.0\WinRT.Runtime.dll bcf3a14e8712a908 +CommunityToolkit.Mvvm/8.4.2 lib/net8.0-windows10.0.17763/CommunityToolkit.Mvvm.dll 000b7031687712c9 +Dubya.WindowsMediaController/2.5.6 lib/net10.0-windows10.0.22000/WindowsMediaController.dll 4f2fa28e6c72988f +MicaWPF/6.3.2 lib/net9.0-windows7.0/MicaWPF.dll feda2adac203474b +MicaWPF.Core/6.3.2 lib/net9.0-windows7.0/MicaWPF.Core.dll ddbbd9167bfc9e62 +MicaWPFRuntimeComponent/1.1.9 lib/net8.0/MicaWPF.Projection.dll 3297bdd6a807be12 +Microsoft.Extensions.Logging.Abstractions/6.0.0 lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll d575c9d1543ca726 +Microsoft.Toolkit.Uwp.Notifications/7.1.3 lib/net5.0-windows10.0.17763/Microsoft.Toolkit.Uwp.Notifications.dll e6676557727bc03c +NAudio/2.3.0 lib/net6.0-windows7.0/NAudio.dll 99f690cf6cdc829f +NAudio.Asio/2.3.0 lib/net8.0-windows7.0/NAudio.Asio.dll 035c653468ac7037 +NAudio.Core/2.3.0 lib/netstandard2.0/NAudio.Core.dll 4f8d8c4140146674 +NAudio.Midi/2.3.0 lib/netstandard2.0/NAudio.Midi.dll 7796a9ec97a1ff29 +NAudio.Wasapi/2.3.0 lib/netstandard2.0/NAudio.Wasapi.dll a05e371abf961957 +NAudio.WinForms/2.3.0 lib/netcoreapp3.1/NAudio.WinForms.dll 7029d547c9da7fad +NAudio.WinMM/2.3.0 lib/net6.0/NAudio.WinMM.dll 80807335ee64d5bb +NLog/6.1.3 lib/netstandard2.1/NLog.dll 3678b67eea4b5e36 +unchihugo.WPF-UI/4.4.2 lib/net10.0-windows7.0/Wpf.Ui.dll 1ffa806109678b0b +WPF-UI/4.3.0 lib/net10.0-windows7.0/Wpf.Ui.dll 966176695819e397 +WPF-UI.Abstractions/4.3.0 lib/net10.0/Wpf.Ui.Abstractions.dll defcd3554e362ce8 +WPF-UI.Tray/4.3.0 lib/net10.0-windows7.0/Wpf.Ui.Tray.dll e0b83dd37275a43b diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P1.json b/docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P1.json new file mode 100644 index 00000000..76506501 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P1.json @@ -0,0 +1,109 @@ +{ + "A": { + "references": 180, + "load_failures": 0, + "errors": { + "CS0009": 12, + "CS0246": 1215, + "CS0103": 1563, + "CS0234": 257, + "CS0115": 1, + "CS8795": 1, + "CS1069": 16, + "CS1061": 394, + "CS0120": 1, + "CS7036": 2, + "CS0117": 32, + "CS0311": 1, + "CS0021": 1, + "CS0305": 2, + "CS0019": 9, + "CS0118": 1, + "CS1503": 6, + "CS0023": 1, + "CS1729": 1, + "CS8130": 2, + "CS8183": 1, + "CS0165": 1 + }, + "calls": 2844, + "calls_resolved": 925, + "calls_ambiguous": 273, + "types": 2842, + "types_resolved": 2081, + "plus_eq": 82, + "plus_eq_event": 10, + "plus_eq_other": 7 + }, + "B": { + "references": 231, + "load_failures": 0, + "errors": { + "CS0234": 155, + "CS0246": 631, + "CS0115": 15, + "CS8795": 1, + "CS0103": 959, + "CS0120": 7, + "CS8121": 4, + "CS1061": 361, + "CS0117": 35, + "CS1503": 15, + "CS0019": 8, + "CS0311": 3, + "CS1929": 2, + "CS0118": 9, + "CS0119": 5, + "CS8130": 2, + "CS8183": 1, + "CS0023": 1, + "CS1729": 1, + "CS0165": 1, + "CS0039": 2 + }, + "calls": 2844, + "calls_resolved": 1373, + "calls_ambiguous": 267, + "types": 2842, + "types_resolved": 2575, + "plus_eq": 82, + "plus_eq_event": 35, + "plus_eq_other": 7 + }, + "C": { + "references": 180, + "load_failures": 0, + "errors": { + "CS0009": 12, + "CS0246": 1215, + "CS0103": 1563, + "CS0234": 257, + "CS0115": 1, + "CS1069": 16, + "CS8795": 1, + "CS0120": 1, + "CS1061": 394, + "CS0117": 32, + "CS7036": 2, + "CS0021": 1, + "CS0311": 1, + "CS0019": 9, + "CS0305": 2, + "CS8130": 2, + "CS8183": 1, + "CS0118": 1, + "CS1503": 6, + "CS0023": 1, + "CS1729": 1, + "CS0165": 1 + }, + "calls": 2844, + "calls_resolved": 925, + "calls_ambiguous": 273, + "types": 2842, + "types_resolved": 2081, + "plus_eq": 82, + "plus_eq_event": 10, + "plus_eq_other": 7 + } +} \ No newline at end of file diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P2.json b/docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P2.json new file mode 100644 index 00000000..80b405b3 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P2.json @@ -0,0 +1,105 @@ +{ + "A": { + "references": 180, + "load_failures": 0, + "errors": { + "CS0106": 2, + "CS1519": 7, + "CS8124": 3, + "CS1002": 1, + "CS0116": 4, + "CS1022": 4, + "CS0009": 12, + "CS0234": 30, + "CS0246": 316, + "CS0227": 39, + "CS0534": 4, + "CS1520": 2, + "CS0710": 1, + "CS0708": 5, + "CS1729": 6, + "CS0103": 144, + "CS1061": 15, + "CS0311": 5, + "CS7036": 2, + "CS0117": 17, + "CS1503": 2 + }, + "calls": 3820, + "calls_resolved": 3401, + "calls_ambiguous": 38, + "types": 5896, + "types_resolved": 5718, + "plus_eq": 22, + "plus_eq_event": 6, + "plus_eq_other": 14 + }, + "B": { + "references": 171, + "load_failures": 0, + "errors": { + "CS0106": 2, + "CS1519": 7, + "CS8124": 3, + "CS1002": 1, + "CS1022": 4, + "CS0116": 4, + "CS0246": 238, + "CS0234": 11, + "CS0534": 4, + "CS0227": 39, + "CS1520": 2, + "CS0710": 1, + "CS0708": 5, + "CS0103": 112, + "CS7036": 2, + "CS0311": 5, + "CS0117": 17, + "CS1061": 5, + "CS1503": 2 + }, + "calls": 3820, + "calls_resolved": 3462, + "calls_ambiguous": 34, + "types": 5896, + "types_resolved": 5757, + "plus_eq": 22, + "plus_eq_event": 6, + "plus_eq_other": 14 + }, + "C": { + "references": 180, + "load_failures": 0, + "errors": { + "CS0106": 2, + "CS1519": 7, + "CS8124": 3, + "CS1002": 1, + "CS1022": 4, + "CS0116": 4, + "CS0009": 12, + "CS0234": 30, + "CS0246": 316, + "CS0227": 39, + "CS0534": 4, + "CS1520": 2, + "CS0710": 1, + "CS0708": 5, + "CS0103": 144, + "CS0311": 5, + "CS1729": 6, + "CS1061": 15, + "CS7036": 2, + "CS0117": 17, + "CS1503": 2 + }, + "calls": 3820, + "calls_resolved": 3401, + "calls_ambiguous": 38, + "types": 5896, + "types_resolved": 5718, + "plus_eq": 22, + "plus_eq_event": 6, + "plus_eq_other": 14 + } +} \ No newline at end of file diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P3.json b/docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P3.json new file mode 100644 index 00000000..50a10473 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P3.json @@ -0,0 +1,101 @@ +{ + "A": { + "references": 180, + "load_failures": 0, + "errors": { + "CS0009": 12, + "CS0234": 49, + "CS0246": 826, + "CS0534": 7, + "CS0103": 229, + "CS1061": 26, + "CS1729": 8, + "CS0161": 25, + "CS0029": 42, + "CS0019": 9, + "CS1955": 2, + "CS0155": 13, + "CS0117": 1, + "CS7036": 1, + "CS1579": 2, + "CS1503": 6, + "CS8410": 1, + "CS1660": 1, + "CS0126": 3, + "CS8716": 1, + "CS9174": 1, + "CS0021": 12 + }, + "calls": 839, + "calls_resolved": 353, + "calls_ambiguous": 60, + "types": 1911, + "types_resolved": 1293, + "plus_eq": 25, + "plus_eq_event": 0, + "plus_eq_other": 15 + }, + "B": { + "references": 166, + "load_failures": 0, + "errors": { + "CS0234": 40, + "CS0246": 796, + "CS0534": 7, + "CS0103": 224, + "CS1061": 26, + "CS0161": 25, + "CS1729": 8, + "CS1955": 2, + "CS0155": 13, + "CS0029": 42, + "CS0117": 1, + "CS7036": 1, + "CS1503": 6, + "CS8410": 1, + "CS0126": 3, + "CS1660": 1, + "CS0019": 9, + "CS1579": 2, + "CS8716": 1, + "CS9174": 1, + "CS0021": 12 + }, + "calls": 839, + "calls_resolved": 396, + "calls_ambiguous": 95, + "types": 1911, + "types_resolved": 1323, + "plus_eq": 25, + "plus_eq_event": 0, + "plus_eq_other": 15 + }, + "C": { + "references": 180, + "load_failures": 0, + "errors": { + "CS0009": 12, + "CS0234": 49, + "CS0246": 202, + "CS0534": 2, + "CS1729": 8, + "CS0029": 45, + "CS7036": 1, + "CS0103": 152, + "CS1061": 34, + "CS0155": 13, + "CS0117": 1, + "CS1503": 7, + "CS0019": 2, + "CS0021": 12 + }, + "calls": 839, + "calls_resolved": 525, + "calls_ambiguous": 33, + "types": 1911, + "types_resolved": 1783, + "plus_eq": 25, + "plus_eq_event": 0, + "plus_eq_other": 15 + } +} \ No newline at end of file diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P4.json b/docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P4.json new file mode 100644 index 00000000..039d2cd1 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P4.json @@ -0,0 +1,67 @@ +{ + "A": { + "references": 180, + "load_failures": 0, + "errors": { + "CS0009": 12, + "CS0246": 236, + "CS0234": 42, + "CS0103": 82, + "CS0126": 1, + "CS0161": 7, + "CS1061": 25, + "CS1674": 1 + }, + "calls": 353, + "calls_resolved": 169, + "calls_ambiguous": 19, + "types": 394, + "types_resolved": 267, + "plus_eq": 6, + "plus_eq_event": 0, + "plus_eq_other": 1 + }, + "B": { + "references": 251, + "load_failures": 0, + "errors": { + "CS0234": 34, + "CS0246": 121, + "CS0534": 1, + "CS0535": 2, + "CS0103": 56, + "CS1061": 8, + "CS0161": 7, + "CS0126": 1, + "CS0311": 3 + }, + "calls": 353, + "calls_resolved": 228, + "calls_ambiguous": 28, + "types": 394, + "types_resolved": 329, + "plus_eq": 6, + "plus_eq_event": 5, + "plus_eq_other": 1 + }, + "C": { + "references": 180, + "load_failures": 0, + "errors": { + "CS0009": 12, + "CS0246": 189, + "CS0234": 42, + "CS0103": 70, + "CS1061": 25, + "CS1674": 1 + }, + "calls": 353, + "calls_resolved": 189, + "calls_ambiguous": 15, + "types": 394, + "types_resolved": 307, + "plus_eq": 6, + "plus_eq_event": 0, + "plus_eq_other": 1 + } +} \ No newline at end of file diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P5.json b/docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P5.json new file mode 100644 index 00000000..6c88f25f --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/r0_r1_summary_P5.json @@ -0,0 +1,111 @@ +{ + "A": { + "references": 180, + "load_failures": 0, + "errors": { + "CS1001": 1, + "CS0009": 12, + "CS0246": 1100, + "CS0103": 996, + "CS0234": 99, + "CS8795": 37, + "CS0267": 104, + "CS0759": 34, + "CS0066": 5, + "CS0227": 2, + "CS1069": 3, + "CS1061": 193, + "CS0126": 8, + "CS0161": 9, + "CS1503": 56, + "CS0019": 53, + "CS0170": 24, + "CS0070": 1, + "CS0117": 1, + "CS0403": 2, + "CS0165": 4, + "CS9174": 1, + "CS8130": 2, + "CS0400": 6 + }, + "calls": 2003, + "calls_resolved": 643, + "calls_ambiguous": 217, + "types": 2460, + "types_resolved": 1788, + "plus_eq": 83, + "plus_eq_event": 11, + "plus_eq_other": 26 + }, + "B": { + "references": 239, + "load_failures": 0, + "errors": { + "CS1001": 1, + "CS0433": 59, + "CS0246": 348, + "CS0066": 5, + "CS0267": 104, + "CS0227": 3, + "CS0759": 34, + "CS0535": 14, + "CS8795": 37, + "CS0103": 673, + "CS1503": 30, + "CS0123": 4, + "CS1061": 43, + "CS0170": 24, + "CS0161": 9, + "CS0019": 4, + "CS0165": 4, + "CS0070": 1, + "CS0126": 8, + "CS4036": 16, + "CS9174": 1, + "CS8130": 2 + }, + "calls": 2003, + "calls_resolved": 1272, + "calls_ambiguous": 242, + "types": 2460, + "types_resolved": 2191, + "plus_eq": 83, + "plus_eq_event": 48, + "plus_eq_other": 26 + }, + "C": { + "references": 180, + "load_failures": 0, + "errors": { + "CS1001": 1, + "CS0009": 12, + "CS0246": 766, + "CS0103": 756, + "CS0234": 101, + "CS0267": 104, + "CS0759": 34, + "CS8795": 37, + "CS0227": 2, + "CS1069": 3, + "CS1061": 180, + "CS1503": 46, + "CS0170": 24, + "CS0019": 53, + "CS0117": 1, + "CS0070": 1, + "CS0165": 4, + "CS0403": 2, + "CS8130": 2, + "CS0400": 6, + "CS1662": 1 + }, + "calls": 2003, + "calls_resolved": 973, + "calls_ambiguous": 197, + "types": 2460, + "types_resolved": 2037, + "plus_eq": 83, + "plus_eq_event": 12, + "plus_eq_other": 26 + } +} \ No newline at end of file diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/r2_review_sample.tsv b/docs/evidence/p014-reference-coverage-2026-10/data/r2_review_sample.tsv new file mode 100644 index 00000000..cfc3df6a --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/r2_review_sample.tsv @@ -0,0 +1,51 @@ +project note file line col kind expr A A_sym B B_sym C +P1 \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\MainWindow.xaml.cs 123 13+28 call _hwndSource.AddHook(WndProc) unresolved resolved Method|System.Windows.Interop.HwndSource|System.Windows.Interop.HwndSource.AddHook(System.Windows.Interop.HwndSourceHook)|PresentationCore/10.0.0.0 unresolved +P1 \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\App.xaml.cs 71 52+1105 call services .AddSingleton(_ => _settings) .AddSingleton(sp => new Updater(sp.GetRequiredService()|Microsoft.Extensions.DependencyInjection.Abstractions/9.0.0.0 unresolved +P1 \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\App.xaml.cs 71 52+1508 call services .AddSingleton(_ => _settings) .AddSingleton(sp => new Updater(sp.GetRequiredService()|Microsoft.Extensions.DependencyInjection.Abstractions/9.0.0.0 unresolved +P1 \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\MainWindow.xaml.cs 1283 13+76 call Storyboard.SetTargetProperty(IconOpacity, new PropertyPath(OpacityProperty)) unresolved resolved Method|System.Windows.Media.Animation.Storyboard|System.Windows.Media.Animation.Storyboard.SetTargetProperty(System.Windows.DependencyObject, System.Windows.PropertyPath)|PresentationFramework/10.0.0.0 unresolved +P1 \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\Resources\Controls\CustomScrollViewerEx.cs 220 21+88 call ScrollToValue(Math.Min(ScrollableWidth, horizontalOffset.Value), Orientation.Horizontal) ambiguous:OverloadResolutionFailure Method|Flow.Launcher.Resources.Controls.CustomScrollViewerEx|Flow.Launcher.Resources.Controls.CustomScrollViewerEx.ScrollToValue(double, Orientation)|own/0.0.0.0 resolved Method|Flow.Launcher.Resources.Controls.CustomScrollViewerEx|Flow.Launcher.Resources.Controls.CustomScrollViewerEx.ScrollToValue(double, System.Windows.Controls.Orientation)|own/0.0.0.0 ambiguous:OverloadResolutionFailure +P1 \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\ReportWindow.xaml.cs 108 13+36 call paragraph.Inlines.Add(textBeforeUrl) unresolved resolved Method|System.Windows.Documents.InlineCollection|System.Windows.Documents.InlineCollection.Add(string)|PresentationFramework/10.0.0.0 unresolved +P1 \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\Notification.cs 117 17+257 call new ToastContentBuilder() .AddText(title, hintMaxLines: 1) .AddText(subTitle) .AddButton(buttonText,… unresolved resolved Method|Microsoft.Toolkit.Uwp.Notifications.ToastContentBuilder|Microsoft.Toolkit.Uwp.Notifications.ToastContentBuilder.AddAppLogoOverride(System.Uri, Microsoft.Toolkit.Uwp.Notifications.ToastGenericAppLogoCrop?, string, bool?)|Microsoft.Toolkit.Uwp.Notifications/7.1.0.0 unresolved +P1 \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\Resources\Controls\PreviewMarkdownScrollViewer.cs 315 13+28 call inlineCollection.Remove(run) unresolved resolved Method|System.Windows.Documents.TextElementCollection|System.Windows.Documents.TextElementCollection.Remove(System.Windows.Documents.Inline)|PresentationFramework/10.0.0.0 unresolved +P1 \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\Resources\Controls\CodeHighlightTheme.cs 90 28+31 call Color.FromRgb(0x4E, 0xC9, 0xB0) unresolved resolved Method|System.Windows.Media.Color|System.Windows.Media.Color.FromRgb(byte, byte, byte)|PresentationCore/10.0.0.0 unresolved +P1 \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\Helper\WindowVisibilityHelper.cs 28 13+17 call window.Activate() unresolved resolved Method|System.Windows.Window|System.Windows.Window.Activate()|PresentationFramework/10.0.0.0 unresolved +P2 \repos/sweep/git-ecosystem__git-credential-manager/src/Core\Authentication\OAuth\OAuth2CryptographicGenerator.cs 73 20+29 call Base64Url.EncodeToString(buf) unresolved resolved Method|System.Buffers.Text.Base64Url|System.Buffers.Text.Base64Url.EncodeToString(System.ReadOnlySpan)|System.Runtime/10.0.0.0 unresolved +P2 \repos/sweep/git-ecosystem__git-credential-manager/src/Core\UI\Commands\OAuthCommand.cs 31 13+75 call this.SetHandler(ExecuteAsync, title, resource, browser, deviceCode, noLogo) unresolved resolved Method|System.CommandLine.Handler|System.CommandLine.Command.SetHandler(System.Func, System.CommandLine.Binding.IValueDescriptor, System.CommandLine.Binding.IValueDescriptor, System.CommandLine.Binding.IValueDescriptor, System.CommandLine.Binding.IValueDescriptor, System.CommandLine.Binding.IValueDescriptor)|System.CommandLine/2.0.0.0 unresolved +P2 \repos/sweep/git-ecosystem__git-credential-manager/src/Core\CommandExtensions.cs 46 82+18 call r.FindResultFor(o) unresolved resolved Method|System.CommandLine.Parsing.SymbolResult|System.CommandLine.Parsing.SymbolResult.FindResultFor(System.CommandLine.Option)|System.CommandLine/2.0.0.0 unresolved +P2 \repos/sweep/git-ecosystem__git-credential-manager/src/Core\Application.cs 78 17+40 call rootCommand.AddGlobalOption(noGuiOption) unresolved resolved Method|System.CommandLine.Command|System.CommandLine.Command.AddGlobalOption(System.CommandLine.Option)|System.CommandLine/2.0.0.0 unresolved +P2 \repos/sweep/git-ecosystem__git-credential-manager/src/Core\UI\Commands\DefaultAccountCommand.cs 22 9+19 call AddOption(userName) unresolved resolved Method|System.CommandLine.Command|System.CommandLine.Command.AddOption(System.CommandLine.Option)|System.CommandLine/2.0.0.0 unresolved +P2 \repos/sweep/git-ecosystem__git-credential-manager/src/Core\Application.cs 128 26+244 call new CommandLineBuilder(rootCommand) .UseDefaults() .UseExceptionHandler(OnException) .AddMiddleware(… unresolved resolved Method|System.CommandLine.Builder.CommandLineBuilderExtensions|System.CommandLine.Builder.CommandLineBuilder.AddMiddleware(System.Action, System.CommandLine.Invocation.MiddlewareOrder)|System.CommandLine/2.0.0.0 unresolved +P2 \repos/sweep/git-ecosystem__git-credential-manager/src/Core\UI\HelperApplication.cs 25 17+31 call rootCommand.AddCommand(command) unresolved resolved Method|System.CommandLine.Command|System.CommandLine.Command.AddCommand(System.CommandLine.Command)|System.CommandLine/2.0.0.0 unresolved +P2 \repos/sweep/git-ecosystem__git-credential-manager/src/Core\Authentication\OAuth\OAuth2CryptographicGenerator.cs 90 32+203 call Base64Url.EncodeToString( sha256.ComputeHash( Encoding.ASCII.GetBytes(codeVerifier) ) ) unresolved resolved Method|System.Buffers.Text.Base64Url|System.Buffers.Text.Base64Url.EncodeToString(System.ReadOnlySpan)|System.Runtime/10.0.0.0 unresolved +P2 \repos/sweep/git-ecosystem__git-credential-manager/src/Core\Interop\Windows\DpapiCredentialStore.cs 69 34+90 call ProtectedData.Protect( plainBytes, null, DataProtectionScope.CurrentUser) unresolved resolved Method|System.Security.Cryptography.ProtectedData|System.Security.Cryptography.ProtectedData.Protect(byte[], byte[], System.Security.Cryptography.DataProtectionScope)|System.Security.Cryptography.ProtectedData/4.0.3.0 unresolved +P2 \repos/sweep/git-ecosystem__git-credential-manager/src/Core\Application.cs 103 17+78 call rootCommand.AddCommand(new UnconfigureCommand(Context, _configurationService)) unresolved resolved Method|System.CommandLine.Command|System.CommandLine.Command.AddCommand(System.CommandLine.Command)|System.CommandLine/2.0.0.0 unresolved +P3 \repos/sweep/nats-io__nats.net/src/NATS.Client.JetStream\Internal\NatsJSPushConsume.cs 195 17+105 call "_logger.LogWarning(NatsJSLogEvents.ProtocolMessage, ""Protocol error: No header found in control mess…" unresolved resolved Method|Microsoft.Extensions.Logging.LoggerExtensions|Microsoft.Extensions.Logging.ILogger.LogWarning(Microsoft.Extensions.Logging.EventId, string?, params object?[])|Microsoft.Extensions.Logging.Abstractions/6.0.0.0 unresolved +P3 \repos/sweep/nats-io__nats.net/src/NATS.Client.JetStream\Internal\NatsJSPushConsume.cs 47 18+33 call _logger.IsEnabled(LogLevel.Debug) unresolved resolved Method|Microsoft.Extensions.Logging.ILogger|Microsoft.Extensions.Logging.ILogger.IsEnabled(Microsoft.Extensions.Logging.LogLevel)|Microsoft.Extensions.Logging.Abstractions/6.0.0.0 unresolved +P3 \repos/sweep/nats-io__nats.net/src/NATS.Client.JetStream\Internal\NatsJSConsume.cs 350 37+226 call "_logger.LogDebug( NatsJSLogEvents.PendingCount, ""Header pending messages current {Pending}"", _pendin…" unresolved resolved Method|Microsoft.Extensions.Logging.LoggerExtensions|Microsoft.Extensions.Logging.ILogger.LogDebug(Microsoft.Extensions.Logging.EventId, string?, params object?[])|Microsoft.Extensions.Logging.Abstractions/6.0.0.0 unresolved +P3 \repos/sweep/nats-io__nats.net/src/NATS.Client.JetStream\Internal\NatsJSConsume.cs 431 25+107 call "_logger.LogDebug(NatsJSLogEvents.NoResponders, ""503 no responders (count: {Count})"", _consecutive503…" unresolved resolved Method|Microsoft.Extensions.Logging.LoggerExtensions|Microsoft.Extensions.Logging.ILogger.LogDebug(Microsoft.Extensions.Logging.EventId, string?, params object?[])|Microsoft.Extensions.Logging.Abstractions/6.0.0.0 unresolved +P3 \repos/sweep/nats-io__nats.net/src/NATS.Client.JetStream\Internal\NatsJSConsume.cs 542 21+117 call "_logger.LogDebug(NatsJSLogEvents.PendingCount, ""Check pending messages {Pending}, {MaxMsgs}"", _pendi…" unresolved resolved Method|Microsoft.Extensions.Logging.LoggerExtensions|Microsoft.Extensions.Logging.ILogger.LogDebug(Microsoft.Extensions.Logging.EventId, string?, params object?[])|Microsoft.Extensions.Logging.Abstractions/6.0.0.0 unresolved +P3 \repos/sweep/nats-io__nats.net/src/NATS.Client.JetStream\Internal\NatsJSPushConsume.cs 189 21+88 call "_logger.LogError(NatsJSLogEvents.ProtocolMessage, ""Can't parse control message headers"")" unresolved resolved Method|Microsoft.Extensions.Logging.LoggerExtensions|Microsoft.Extensions.Logging.ILogger.LogError(Microsoft.Extensions.Logging.EventId, string?, params object?[])|Microsoft.Extensions.Logging.Abstractions/6.0.0.0 unresolved +P3 \repos/sweep/nats-io__nats.net/src/NATS.Client.JetStream\Internal\NatsJSConsume.cs 424 25+66 call "_logger.LogDebug(NatsJSLogEvents.PinIdMismatch, ""Pin ID Mismatch"")" unresolved resolved Method|Microsoft.Extensions.Logging.LoggerExtensions|Microsoft.Extensions.Logging.ILogger.LogDebug(Microsoft.Extensions.Logging.EventId, string?, params object?[])|Microsoft.Extensions.Logging.Abstractions/6.0.0.0 unresolved +P3 \repos/sweep/nats-io__nats.net/src/NATS.Client.JetStream\NatsJSOrderedConsumer.cs 150 37+167 call "_logger.LogWarning(NatsJSLogEvents.Retry, ""Consumer sequence mismatch. Expected {Expected}, was {Seq…" unresolved resolved Method|Microsoft.Extensions.Logging.LoggerExtensions|Microsoft.Extensions.Logging.ILogger.LogWarning(Microsoft.Extensions.Logging.EventId, string?, params object?[])|Microsoft.Extensions.Logging.Abstractions/6.0.0.0 unresolved +P3 \repos/sweep/nats-io__nats.net/src/NATS.Client.JetStream\Internal\NatsJSConsume.cs 418 25+71 call "_logger.LogDebug(NatsJSLogEvents.LeadershipChange, ""Leadership Change"")" unresolved resolved Method|Microsoft.Extensions.Logging.LoggerExtensions|Microsoft.Extensions.Logging.ILogger.LogDebug(Microsoft.Extensions.Logging.EventId, string?, params object?[])|Microsoft.Extensions.Logging.Abstractions/6.0.0.0 unresolved +P3 \repos/sweep/nats-io__nats.net/src/NATS.Client.JetStream\Internal\NatsJSOrderedConsume.cs 186 37+226 call "_logger.LogDebug( NatsJSLogEvents.PendingCount, ""Header pending messages current {Pending}"", _pendin…" unresolved resolved Method|Microsoft.Extensions.Logging.LoggerExtensions|Microsoft.Extensions.Logging.ILogger.LogDebug(Microsoft.Extensions.Logging.EventId, string?, params object?[])|Microsoft.Extensions.Logging.Abstractions/6.0.0.0 unresolved +P4 \evidence/pairs/BoBoBaSs84_BB84.IPTV__36/base/src/BB84.IPTV.M3U.Editor\App.axaml.cs 125 10+54 call _host!.Services.GetRequiredService() unresolved resolved Method|Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions|System.IServiceProvider.GetRequiredService()|Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0.0 unresolved +P4 \evidence/pairs/BoBoBaSs84_BB84.IPTV__36/base/src/BB84.IPTV.M3U.Editor\Extensions\HostBuilderExtensions.cs 34 4+33 call builder.AddEnvironmentVariables() unresolved resolved Method|Microsoft.Extensions.Configuration.EnvironmentVariablesExtensions|Microsoft.Extensions.Configuration.IConfigurationBuilder.AddEnvironmentVariables()|Microsoft.Extensions.Configuration.EnvironmentVariables/10.0.0.0 unresolved +P4 \evidence/pairs/BoBoBaSs84_BB84.IPTV__36/base/src/BB84.IPTV.M3U.Editor\Extensions\HostBuilderExtensions.cs 32 4+62 call "builder.AddJsonFile($""{FileName}.{FileExtension}"", true, true)" unresolved resolved Method|Microsoft.Extensions.Configuration.JsonConfigurationExtensions|Microsoft.Extensions.Configuration.IConfigurationBuilder.AddJsonFile(string, bool, bool)|Microsoft.Extensions.Configuration.Json/10.0.0.0 unresolved +P4 \evidence/pairs/BoBoBaSs84_BB84.IPTV__36/base/src/BB84.IPTV.M3U.Editor\App.axaml.cs 110 14+58 call _host.Services.GetRequiredService() unresolved resolved Method|Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions|System.IServiceProvider.GetRequiredService()|Microsoft.Extensions.DependencyInjection.Abstractions/10.0.0.0 unresolved +P4 \evidence/pairs/BoBoBaSs84_BB84.IPTV__36/base/src/BB84.IPTV.M3U.Editor\Services\FileDialogService.cs 69 49+77 call storageProvider .OpenFolderPickerAsync(options) .ConfigureAwait(true) unresolved resolved Method|System.Threading.Tasks.Task>|System.Threading.Tasks.Task>.ConfigureAwait(bool)|System.Runtime/10.0.0.0 unresolved +P4 \evidence/pairs/BoBoBaSs84_BB84.IPTV__36/base/src/BB84.IPTV.M3U.Editor\Services\FileDialogService.cs 54 15+18 call .TryGetLocalPath() unresolved resolved Method|Avalonia.Platform.Storage.StorageProviderExtensions|Avalonia.Platform.Storage.IStorageItem.TryGetLocalPath()|Avalonia.Base/12.1.3.0 unresolved +P4 \evidence/pairs/BoBoBaSs84_BB84.IPTV__36/base/src/BB84.IPTV.M3U.Editor\Services\LogoImageService.cs 96 36+20 call SvgSource.Load(path) unresolved resolved Method|Avalonia.Svg.Skia.SvgSource|Avalonia.Svg.Skia.SvgSource.Load(string, System.Uri?, Svg.Model.SvgParameters?)|Svg.Controls.Skia.Avalonia/12.0.0.17 unresolved +P4 \evidence/pairs/BoBoBaSs84_BB84.IPTV__36/base/src/BB84.IPTV.M3U.Editor\Extensions\HostBuilderExtensions.cs 33 4+107 call "builder.AddJsonFile($""{FileName}.{context.HostingEnvironment.EnvironmentName}.{FileExtension}"", true…" unresolved resolved Method|Microsoft.Extensions.Configuration.JsonConfigurationExtensions|Microsoft.Extensions.Configuration.IConfigurationBuilder.AddJsonFile(string, bool, bool)|Microsoft.Extensions.Configuration.Json/10.0.0.0 unresolved +P4 \evidence/pairs/BoBoBaSs84_BB84.IPTV__36/base/src/BB84.IPTV.M3U.Editor\Services\NotificationService.cs 68 6+106 call Dispatcher.UIThread.InvokeAsync(() => ShowDialogAsync(new MessageDialog(message, caption, kind, butt… unresolved resolved Method|Avalonia.Threading.Dispatcher|Avalonia.Threading.Dispatcher.InvokeAsync>(System.Func>)|Avalonia.Base/12.1.3.0 unresolved +P4 \evidence/pairs/BoBoBaSs84_BB84.IPTV__36/base/src/BB84.IPTV.M3U.Editor\App.axaml.cs 216 30+172 call Host.CreateDefaultBuilder(args) .RegisterAppSettingsConfiguration() .ConfigureServices((context, ser… unresolved resolved Method|Microsoft.Extensions.Hosting.IHostBuilder|Microsoft.Extensions.Hosting.IHostBuilder.ConfigureServices(System.Action)|Microsoft.Extensions.Hosting.Abstractions/10.0.0.0 unresolved +P5 \evidence/pairs/MERURUXD_FluentFlyout__3/base/FluentFlyoutWPF\Classes\WindowHelper.cs 48 85+16 call handle.ToInt64() unresolved resolved Method|nint|nint.ToInt64()|System.Runtime/10.0.0.0 unresolved +P5 \evidence/pairs/MERURUXD_FluentFlyout__3/base/FluentFlyoutWPF\Pages\SystemPage.xaml.cs 19 45+34 call LogManager.GetCurrentClassLogger() unresolved resolved Method|NLog.LogManager|NLog.LogManager.GetCurrentClassLogger()|NLog/6.0.0.0 unresolved +P5 \evidence/pairs/MERURUXD_FluentFlyout__3/base/FluentFlyoutWPF\Classes\Services\UpdateCheckerService.cs 18 45+34 call LogManager.GetCurrentClassLogger() unresolved resolved Method|NLog.LogManager|NLog.LogManager.GetCurrentClassLogger()|NLog/6.0.0.0 unresolved +P5 \evidence/pairs/MERURUXD_FluentFlyout__3/base/FluentFlyoutWPF\Classes\Visualizer.cs 316 27+10 call .Dispose() unresolved resolved Method|NAudio.CoreAudioApi.MMDevice|NAudio.CoreAudioApi.MMDevice.Dispose()|NAudio.Wasapi/2.3.0.0 unresolved +P5 \evidence/pairs/MERURUXD_FluentFlyout__3/base/FluentFlyoutWPF\Classes\ThemeManager.cs 68 17+69 call MicaWPFServiceUtility.ThemeService.ChangeTheme(/*WindowsTheme.Auto*/) unresolved resolved Method|MicaWPF.Core.Services.IThemeService|MicaWPF.Core.Services.IThemeService.ChangeTheme(MicaWPF.Core.Enums.WindowsTheme)|MicaWPF.Core/1.0.0.0 unresolved +P5 \evidence/pairs/MERURUXD_FluentFlyout__3/base/FluentFlyoutWPF\MainWindow.xaml.cs 923 17+142 call taskbarWindow.UpdateUi(tbSongInfo.Title, tbSongInfo.Artist, tbThumbnail, selectedPlaybackInfo?.Playb… ambiguous:OverloadResolutionFailure Method|FluentFlyout.Windows.TaskbarWindow|FluentFlyout.Windows.TaskbarWindow.UpdateUi(string, string, BitmapImage?, GlobalSystemMediaTransportControlsSessionPlaybackStatus?, GlobalSystemMediaTransportControlsSessionPlaybackControls?)|own/0.0.0.0 resolved Method|FluentFlyout.Windows.TaskbarWindow|FluentFlyout.Windows.TaskbarWindow.UpdateUi(string, string, System.Windows.Media.Imaging.BitmapImage?, Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackStatus?, Windows.Media.Control.GlobalSystemMediaTransportControlsSessionPlaybackControls?)|own/0.0.0.0 ambiguous:OverloadResolutionFailure +P5 \evidence/pairs/MERURUXD_FluentFlyout__3/base/FluentFlyoutWPF\Classes\LicenseManager.cs 299 37+77 call _storeContext.GetStoreProductsAsync(new[] { productKind }, new[] { addOnId }) unresolved resolved Method|Windows.Services.Store.StoreContext|Windows.Services.Store.StoreContext.GetStoreProductsAsync(System.Collections.Generic.IEnumerable, System.Collections.Generic.IEnumerable)|Microsoft.Windows.SDK.NET/10.0.22000.38 unresolved +P5 \evidence/pairs/MERURUXD_FluentFlyout__3/base/FluentFlyoutWPF\Windows\TaskbarWindow.xaml.cs 69 41+45 call PresentationSource.FromDependencyObject(this) unresolved resolved Method|System.Windows.PresentationSource|System.Windows.PresentationSource.FromDependencyObject(System.Windows.DependencyObject)|PresentationCore/10.0.0.0 unresolved +P5 \evidence/pairs/MERURUXD_FluentFlyout__3/base/FluentFlyoutWPF\Classes\WindowHelper.cs 48 52+16 call window.GetType() unresolved resolved Method|object|object.GetType()|System.Runtime/10.0.0.0 unresolved +P5 \evidence/pairs/MERURUXD_FluentFlyout__3/base/FluentFlyoutWPF\ViewModels\VolumeMixerViewModel.cs 211 14+46 call string.IsNullOrWhiteSpace(session.DisplayName) ambiguous:OverloadResolutionFailure Method|string|string.IsNullOrWhiteSpace(string?)|System.Private.CoreLib/8.0.0.0 resolved Method|string|string.IsNullOrWhiteSpace(string?)|System.Runtime/10.0.0.0 ambiguous:OverloadResolutionFailure diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/r2_summary.tsv b/docs/evidence/p014-reference-coverage-2026-10/data/r2_summary.tsv new file mode 100644 index 00000000..5532f270 --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/r2_summary.tsv @@ -0,0 +1,16 @@ +project kind sites A_ok B_ok C_ok recovered_by_refs recovered_also_by_usings fixed_by_usings_only lost_in_B symbol_changed still_unresolved B_ambiguous recovered_by_refs_pct +P1 call 2844 925 1373 925 448 0 0 0 24 1471 267 15.8 +P1 type 2842 2081 2575 2081 494 0 0 0 4 267 0 17.4 +P1 plus_eq 82 10 35 10 25 0 0 0 0 47 0 30.5 +P2 call 3820 3401 3462 3401 61 0 0 0 12 358 34 1.6 +P2 type 5896 5718 5757 5718 39 0 0 0 3 139 0 0.7 +P2 plus_eq 22 6 6 6 0 0 0 0 0 16 0 0.0 +P3 call 839 353 396 525 43 0 172 0 0 271 95 5.1 +P3 type 1911 1293 1323 1783 30 0 490 0 0 98 0 1.6 +P3 plus_eq 25 0 0 0 0 0 0 0 0 25 0 0.0 +P4 call 353 169 228 189 59 0 20 0 8 105 28 16.7 +P4 type 394 267 329 307 62 0 40 0 9 25 0 15.7 +P4 plus_eq 6 0 5 0 5 0 0 0 0 1 0 83.3 +P5 call 2003 643 1272 973 629 0 330 0 30 401 242 31.4 +P5 type 2460 1788 2191 2037 403 0 249 0 70 20 0 16.4 +P5 plus_eq 83 11 48 12 37 0 1 0 0 34 0 44.6 diff --git a/docs/evidence/p014-reference-coverage-2026-10/data/r2_symbol_changed.tsv b/docs/evidence/p014-reference-coverage-2026-10/data/r2_symbol_changed.tsv new file mode 100644 index 00000000..2c2f11dd --- /dev/null +++ b/docs/evidence/p014-reference-coverage-2026-10/data/r2_symbol_changed.tsv @@ -0,0 +1,161 @@ +project note file line col kind expr A A_sym B B_sym C +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\App.xaml.cs 316 51+21 call TimeSpan.FromHours(5) resolved Method|System.TimeSpan|System.TimeSpan.FromHours(double)|System.Private.CoreLib/8.0.0.0 resolved Method|System.TimeSpan|System.TimeSpan.FromHours(int)|System.Runtime/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\App.xaml.cs 334 51+21 call TimeSpan.FromHours(5) resolved Method|System.TimeSpan|System.TimeSpan.FromHours(double)|System.Private.CoreLib/8.0.0.0 resolved Method|System.TimeSpan|System.TimeSpan.FromHours(int)|System.Runtime/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\Converters\CornerRadiusFilterConverter.cs 58 20+40 call GetDoubleValue(cornerRadius, filterType) resolved Method|Flow.Launcher.Converters.CornerRadiusFilterConverter|Flow.Launcher.Converters.CornerRadiusFilterConverter.GetDoubleValue(CornerRadius, Flow.Launcher.Converters.CornerRadiusFilterKind)|own/0.0.0.0 resolved Method|Flow.Launcher.Converters.CornerRadiusFilterConverter|Flow.Launcher.Converters.CornerRadiusFilterConverter.GetDoubleValue(System.Windows.CornerRadius, Flow.Launcher.Converters.CornerRadiusFilterKind)|own/0.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\Converters\CornerRadiusFilterConverter.cs 61 16+33 call Convert(cornerRadius, filterType) resolved Method|Flow.Launcher.Converters.CornerRadiusFilterConverter|Flow.Launcher.Converters.CornerRadiusFilterConverter.Convert(CornerRadius, Flow.Launcher.Converters.CornerRadiusFilterKind)|own/0.0.0.0 resolved Method|Flow.Launcher.Converters.CornerRadiusFilterConverter|Flow.Launcher.Converters.CornerRadiusFilterConverter.Convert(System.Windows.CornerRadius, Flow.Launcher.Converters.CornerRadiusFilterKind)|own/0.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\Helper\AutoStartup.cs 179 96+23 call TimeSpan.FromSeconds(2) resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(double)|System.Private.CoreLib/8.0.0.0 resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(long)|System.Runtime/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\Helper\WallpaperPathRetrieval.cs 98 25+34 call WallpaperCache.Remove(oldestCache) resolved Method|System.Collections.Generic.Dictionary<(string, System.DateTime), ImageBrush>|System.Collections.Generic.Dictionary<(string, System.DateTime), ImageBrush>.Remove((string, System.DateTime))|System.Private.CoreLib/8.0.0.0 resolved Method|System.Collections.Generic.Dictionary<(string, System.DateTime), System.Windows.Media.ImageBrush>|System.Collections.Generic.Dictionary<(string, System.DateTime), System.Windows.Media.ImageBrush>.Remove((string, System.DateTime))|System.Collections/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\HotkeyControlDialog.xaml.cs 196 9+15 call Save(sender, e) resolved Method|Flow.Launcher.HotkeyControlDialog|Flow.Launcher.HotkeyControlDialog.Save(object, RoutedEventArgs)|own/0.0.0.0 resolved Method|Flow.Launcher.HotkeyControlDialog|Flow.Launcher.HotkeyControlDialog.Save(object, System.Windows.RoutedEventArgs)|own/0.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\MainWindow.xaml.cs 1165 50+31 call TimeSpan.FromMilliseconds(1600) resolved Method|System.TimeSpan|System.TimeSpan.FromMilliseconds(double)|System.Private.CoreLib/8.0.0.0 resolved Method|System.TimeSpan|System.TimeSpan.FromMilliseconds(long)|System.Runtime/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\MessageBoxEx.xaml.cs 34 68+58 call Show(messageBoxText, caption, button, icon, defaultResult) resolved Method|Flow.Launcher.MessageBoxEx|Flow.Launcher.MessageBoxEx.Show(string, string, MessageBoxButton, MessageBoxImage, MessageBoxResult)|own/0.0.0.0 resolved Method|Flow.Launcher.MessageBoxEx|Flow.Launcher.MessageBoxEx.Show(string, string, System.Windows.MessageBoxButton, System.Windows.MessageBoxImage, System.Windows.MessageBoxResult)|own/0.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\MessageBoxEx.xaml.cs 52 25+31 call SetImageOfMessageBoxAsync(icon) resolved Method|Flow.Launcher.MessageBoxEx|Flow.Launcher.MessageBoxEx.SetImageOfMessageBoxAsync(MessageBoxImage)|own/0.0.0.0 resolved Method|Flow.Launcher.MessageBoxEx|Flow.Launcher.MessageBoxEx.SetImageOfMessageBoxAsync(System.Windows.MessageBoxImage)|own/0.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\MessageBoxEx.xaml.cs 54 17+56 call SetButtonVisibilityFocusAndResult(button, defaultResult) resolved Method|Flow.Launcher.MessageBoxEx|Flow.Launcher.MessageBoxEx.SetButtonVisibilityFocusAndResult(MessageBoxButton, MessageBoxResult)|own/0.0.0.0 resolved Method|Flow.Launcher.MessageBoxEx|Flow.Launcher.MessageBoxEx.SetButtonVisibilityFocusAndResult(System.Windows.MessageBoxButton, System.Windows.MessageBoxResult)|own/0.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\Msg.xaml.cs 30 126+23 call TimeSpan.FromSeconds(5) resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(double)|System.Private.CoreLib/8.0.0.0 resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(long)|System.Runtime/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\MsgWithButton.xaml.cs 30 126+23 call TimeSpan.FromSeconds(5) resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(double)|System.Private.CoreLib/8.0.0.0 resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(long)|System.Runtime/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\PublicAPIInstance.cs 557 13+71 call MessageBoxEx.Show(messageBoxText, caption, button, icon, defaultResult) resolved Method|Flow.Launcher.MessageBoxEx|Flow.Launcher.MessageBoxEx.Show(string, string, MessageBoxButton, MessageBoxImage, MessageBoxResult)|own/0.0.0.0 resolved Method|Flow.Launcher.MessageBoxEx|Flow.Launcher.MessageBoxEx.Show(string, string, System.Windows.MessageBoxButton, System.Windows.MessageBoxImage, System.Windows.MessageBoxResult)|own/0.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\ReleaseNotesWindow.xaml.cs 111 13+31 call RaiseMouseWheelEvent(sender, e) resolved Method|Flow.Launcher.ReleaseNotesWindow|Flow.Launcher.ReleaseNotesWindow.RaiseMouseWheelEvent(object, MouseWheelEventArgs)|own/0.0.0.0 resolved Method|Flow.Launcher.ReleaseNotesWindow|Flow.Launcher.ReleaseNotesWindow.RaiseMouseWheelEvent(object, System.Windows.Input.MouseWheelEventArgs)|own/0.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\ReleaseNotesWindow.xaml.cs 116 13+31 call RaiseMouseWheelEvent(sender, e) resolved Method|Flow.Launcher.ReleaseNotesWindow|Flow.Launcher.ReleaseNotesWindow.RaiseMouseWheelEvent(object, MouseWheelEventArgs)|own/0.0.0.0 resolved Method|Flow.Launcher.ReleaseNotesWindow|Flow.Launcher.ReleaseNotesWindow.RaiseMouseWheelEvent(object, System.Windows.Input.MouseWheelEventArgs)|own/0.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\SettingPages\ViewModels\SettingsPaneAboutViewModel.cs 118 32+23 call TimeSpan.FromMinutes(1) resolved Method|System.TimeSpan|System.TimeSpan.FromMinutes(double)|System.Private.CoreLib/8.0.0.0 resolved Method|System.TimeSpan|System.TimeSpan.FromMinutes(long)|System.Runtime/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\SettingWindow.xaml.cs 235 13+30 call ContentFrame_Loaded(sender, e) resolved Method|Flow.Launcher.SettingWindow|Flow.Launcher.SettingWindow.ContentFrame_Loaded(object, RoutedEventArgs)|own/0.0.0.0 resolved Method|Flow.Launcher.SettingWindow|Flow.Launcher.SettingWindow.ContentFrame_Loaded(object, System.Windows.RoutedEventArgs)|own/0.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\ViewModel\MainViewModel.cs 320 43+23 call TimeSpan.FromSeconds(1) resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(double)|System.Private.CoreLib/8.0.0.0 resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(long)|System.Runtime/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\ViewModel\PluginStoreItemViewModel.cs 50 67+20 call TimeSpan.FromDays(7) resolved Method|System.TimeSpan|System.TimeSpan.FromDays(double)|System.Private.CoreLib/8.0.0.0 resolved Method|System.TimeSpan|System.TimeSpan.FromDays(int)|System.Runtime/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\ViewModel\PluginStoreItemViewModel.cs 55 59+20 call TimeSpan.FromDays(7) resolved Method|System.TimeSpan|System.TimeSpan.FromDays(double)|System.Private.CoreLib/8.0.0.0 resolved Method|System.TimeSpan|System.TimeSpan.FromDays(int)|System.Runtime/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\ViewModel\ResultViewModel.cs 248 31+76 call LoadImageInternalAsync(imagePath, iconDelegate, false).ConfigureAwait(false) resolved Method|System.Threading.Tasks.Task|System.Threading.Tasks.Task.ConfigureAwait(bool)|System.Private.CoreLib/8.0.0.0 resolved Method|System.Threading.Tasks.Task|System.Threading.Tasks.Task.ConfigureAwait(bool)|System.Runtime/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\ViewModel\ResultViewModel.cs 263 36+86 call LoadImageInternalAsync(badgeImagePath, badgeIconDelegate, false).ConfigureAwait(false) resolved Method|System.Threading.Tasks.Task|System.Threading.Tasks.Task.ConfigureAwait(bool)|System.Private.CoreLib/8.0.0.0 resolved Method|System.Threading.Tasks.Task|System.Threading.Tasks.Task.ConfigureAwait(bool)|System.Runtime/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\ViewModel\ResultViewModel.cs 278 38+75 call LoadImageInternalAsync(imagePath, iconDelegate, true).ConfigureAwait(false) resolved Method|System.Threading.Tasks.Task|System.Threading.Tasks.Task.ConfigureAwait(bool)|System.Private.CoreLib/8.0.0.0 resolved Method|System.Threading.Tasks.Task|System.Threading.Tasks.Task.ConfigureAwait(bool)|System.Runtime/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\Helper\WallpaperPathRetrieval.cs 19 29+42 type Dictionary<(string, DateTime), ImageBrush> resolved NamedType|System.Collections.Generic|System.Collections.Generic.Dictionary<(string, System.DateTime), ImageBrush>|System.Private.CoreLib/8.0.0.0 resolved NamedType|System.Collections.Generic|System.Collections.Generic.Dictionary<(string, System.DateTime), System.Windows.Media.ImageBrush>|System.Collections/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\PublicAPIInstance.cs 610 16+22 type ValueTask resolved NamedType|System.Threading.Tasks|System.Threading.Tasks.ValueTask|System.Private.CoreLib/8.0.0.0 resolved NamedType|System.Threading.Tasks|System.Threading.Tasks.ValueTask|System.Runtime/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\Resources\MarkupExtensions\CollapsedWhenExtension.cs 11 13+8 type Binding? resolved NamedType|System|Binding?|System.Private.CoreLib/8.0.0.0 resolved NamedType|System.Windows.Data|System.Windows.Data.Binding|PresentationFramework/10.0.0.0 resolved +P1 LOST_OR_CHANGED \repos/sweep/Flow-Launcher__Flow.Launcher/Flow.Launcher\ViewModel\ResultViewModel.cs 218 23+17 type Task resolved NamedType|System.Threading.Tasks|System.Threading.Tasks.Task|System.Private.CoreLib/8.0.0.0 resolved NamedType|System.Threading.Tasks|System.Threading.Tasks.Task|System.Runtime/10.0.0.0 resolved +P2 LOST_OR_CHANGED \repos/sweep/git-ecosystem__git-credential-manager/src/Core\ApplicationBase.cs 108 30+23 call TimeSpan.FromSeconds(1) resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(double)|System.Private.CoreLib/8.0.0.0 resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(long)|System.Runtime/10.0.0.0 resolved +P2 LOST_OR_CHANGED \repos/sweep/git-ecosystem__git-credential-manager/src/Core\Authentication\OAuth\Json\DeviceAuthorizationEndpointResponseJson.cs 28 86+37 call TimeSpan.FromSeconds(PollingInterval) resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(double)|System.Private.CoreLib/8.0.0.0 resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(long)|System.Runtime/10.0.0.0 resolved +P2 LOST_OR_CHANGED \repos/sweep/git-ecosystem__git-credential-manager/src/Core\Authentication\OAuth\Json\DeviceAuthorizationEndpointResponseJson.cs 30 29+31 call TimeSpan.FromSeconds(ExpiresIn) resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(double)|System.Private.CoreLib/8.0.0.0 resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(long)|System.Runtime/10.0.0.0 resolved +P2 LOST_OR_CHANGED \repos/sweep/git-ecosystem__git-credential-manager/src/Core\Authentication\OAuth\Json\TokenEndpointResponseJson.cs 30 50+37 call TimeSpan.FromSeconds(ExpiresIn.Value) resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(double)|System.Private.CoreLib/8.0.0.0 resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(long)|System.Runtime/10.0.0.0 resolved +P2 LOST_OR_CHANGED \repos/sweep/git-ecosystem__git-credential-manager/src/Core\Authentication\OAuth\OAuth2Client.cs 347 67+23 call TimeSpan.FromSeconds(5) resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(double)|System.Private.CoreLib/8.0.0.0 resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(long)|System.Runtime/10.0.0.0 resolved +P2 LOST_OR_CHANGED \repos/sweep/git-ecosystem__git-credential-manager/src/Core\Authentication\OAuth\OAuth2DeviceCodeResult.cs 12 43+23 call TimeSpan.FromSeconds(5) resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(double)|System.Private.CoreLib/8.0.0.0 resolved Method|System.TimeSpan|System.TimeSpan.FromSeconds(long)|System.Runtime/10.0.0.0 resolved +P2 LOST_OR_CHANGED \repos/sweep/git-ecosystem__git-credential-manager/src/Core\CommandExtensions.cs 29 29+50 call options.Count(o => r.FindResultFor(o) is not null) resolved Method|System.Linq.Enumerable|System.Collections.Generic.IEnumerable