# StellaOps.Scanner.Analyzers.Lang.DotNet — Agent Charter ## Role Create the .NET analyzer plug-in that inspects `*.deps.json`, `runtimeconfig.json`, assemblies, and RID-specific assets to deliver accurate NuGet components with signing metadata. ## Scope - Parse dependency graphs from `*.deps.json` and merge with `runtimeconfig.json` and bundle manifests. - Capture assembly metadata (strong name, file version, Authenticode) and correlate with packages. - Handle RID-specific asset selection, self-contained apps, and crossgen/native dependency hints. - Package plug-in manifest, determinism fixtures, benchmarks, and Offline Kit documentation. ## Out of Scope - Policy evaluation or Signer integration (handled elsewhere). - Native dependency resolution outside RID mapping. - Windows-specific MSI/SxS analyzers (covered by native analyzer roadmap). ## Expectations - Performance target: multi-target app fixture <1.2 s, memory <250 MB. - Deterministic RID collapsing to reduce component duplication by ≥40 % vs naive approach. - Offline-first; support air-gapped strong-name/Authenticode validation using cached root store. - Rich telemetry (components per RID, strong-name validations) conforming to Scanner metrics. ## Dependencies - Shared language analyzer infrastructure; Worker dispatcher; optional security key store for signature verification. ## Testing & Artifacts - Fixtures for framework-dependent and self-contained apps (linux-musl, win-x64). - Golden outputs capturing signature metadata and RID grouping. - Benchmark comparing analyzer fidelity vs market competitors. ## Required Reading - `docs/modules/scanner/architecture.md` - `docs/modules/platform/architecture-overview.md` ## Working Agreement - 1. Update task status to `DOING`/`DONE` in both correspoding sprint file `/docs/implplan/SPRINT_*.md` and the local `TASKS.md` when you start or finish work. - 2. Review this charter and the Required Reading documents before coding; confirm prerequisites are met. - 3. Keep changes deterministic (stable ordering, timestamps, hashes) and align with offline/air-gap expectations. - 4. Coordinate doc updates, tests, and cross-guild communication whenever contracts or workflows change. - 5. Revert to `TODO` if you pause the task without shipping changes; leave notes in commit/PR descriptions for context.