Skip to content

[FC-0004] Pilot: Records + optional Mapperly in CSCore inkl. netstandard/CPM-Governance & CI-Gates #112

@tomtastisch

Description

@tomtastisch

Ziel

Proof-of-Value fuer Boilerplate-Reduktion in CSCore via C# Records, Init-Only-Semantik und compile-time Mapping (Mapperly), inkl. auditierbarer Governance und fail-closed CI-Nachweis.

Abhaengigkeiten

Scope

In Scope

  • 1-2 C# Records in CSCore mit validierten Konstruktoren.
  • Mapperly-Mapper (public) fuer deterministische compile-time Mapping-Generierung.
  • netstandard-Compat-Regel (IsExternalInit) und CPM-konforme Paketverwaltung.
  • Governance-Doku fuer Cross-Language-Regeln und Analyzer/Banned-API-Nutzung.

Out of Scope

  • Breite Migration grosser Teile des VB-Codebestands.
  • Runtime-Reflections als Primarmechanismus fuer Mapping.

Kritische technische Regeln

  • Bei Records auf netstandard2.0: IsExternalInit-Polyfill bereitstellen.
  • Mapperly/Analyzer nur CPM-konform einbinden:
    • PackageVersion in Directory.Packages.props
    • PackageReference ohne Version im CSCore-Projekt
    • packages.lock.json konsistent aktualisieren
  • Banned APIs fail-closed ueber Analyzer/AdditionalFiles erzwingen.

Umsetzung (Steps)

  1. Record(s) + Guards in CSCore anlegen.
  2. Mapperly-Mapper implementieren.
  3. Analyzer-Pakete inkl. Banned-API-Konfiguration integrieren.
  4. Governance-Doku und CI-Gates aktualisieren.
  5. Restore/Build/Format/Pack/Consumer-/Security-Checks verifizieren.

Definition of Done (DoD)

  • Mindestens 1 Record + 1 Mapperly-Mapper kompiliert deterministisch.
  • Analyzer-/Banned-API-Regeln sind aktiv und auditierbar.
  • Governance-Doku beschreibt die CSCore-Regeln verbindlich.
  • Required CI-Checks fuer Build/Tests/Security/Pack bestehen.

Evidence

  • Diff fuer CSCore-Modelle/Mapper/Analyzer-Setup
  • Logs fuer Build/Format/Pack/Consumer/Security
  • Governance-Doku-Verweise

Metadata

Metadata

Assignees

No one assigned

    Labels

    ciCI/workflow changetestTest changeversioning:patchFix/Refactor/Docs/CI/Tooling; requires PATCH bump

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions